Los ingenieros de cifrado han
estado gritando sobre las deficiencias de PGP durante décadas . Cuando los desarrolladores comunes escuchan esto, se sorprenden mucho. ¿Cómo, PGP no es bueno? ¿Por qué entonces aconsejar usarlo? La respuesta es que PGP realmente no es bueno, y nunca debería recomendarse a nadie. El debe desaparecer.
Como pronto verá, PGP tiene muchos problemas. Si no entra en detalles, la razón principal es que el programa se desarrolló en los años 90, antes del advenimiento de la criptografía moderna seria. Ningún ingeniero criptográfico competente de hoy desarrollará un sistema de esta forma y no tolerará la mayoría de sus defectos en ningún otro sistema. Los criptógrafos serios básicamente abandonaron PGP y ya no pasan tiempo en él (con algunas
excepciones notables ). Por lo tanto, los problemas bien conocidos en PGP permanecen sin resolver durante más de diez años.
Dos pequeñas notas. En primer lugar, el artículo fue escrito para ingenieros, y no para abogados y activistas. En segundo lugar, "PGP" puede significar muchas cosas, desde el estándar OpenPGP hasta la implementación de referencia en GnuPG. Usamos el término "PGP" para todo esto.
Los problemas
Complejidad absurda
Por razones que nadie entiende ahora, PGP está basado en paquetes. El mensaje PGP (en el archivo .asc) es un archivo de paquetes escritos. Hay al menos ocho formas diferentes de codificar la longitud de un paquete, dependiendo de si utiliza los paquetes de formato "nuevo" o "antiguo". Los paquetes del "nuevo formato" como BER tienen una longitud variable (intente escribir una implementación PGP, y el estándar de codificación ASN.1 le parecerá agradable). Los paquetes pueden tener subpaquetes. Algunas opciones de paquetes se superponen entre sí. El último ataque al servidor de claves se debe al hecho de que debido a este formato irresponsable, el análisis de claves GnuPG
se deja accidentalmente en tiempo cuadrático .
Y esto es solo una codificación. El sistema real es mucho más complicado. Hay llaves y enchufe. Identificadores clave, servidores clave y firmas clave. Las claves son solo para firma y solo para cifrado. Numerosos llaveros. Revocación de certificados. Tres formatos de compresión diferentes. Que aún no hemos alcanzado el soporte de las tarjetas inteligentes.
Diseño de navaja suiza
Si te pierdes en el bosque y ... No sé, por ejemplo, debes recortar las solapas de los jeans, sí, es muy conveniente que tengas tijeras en el cuchillo. Pero para un trabajo serio, nadie usará regularmente esas tijeras.
Una navaja suiza hace un montón de cosas, y todo está mal. PGP es una herramienta muy mediocre para firmar documentos; encripta relativamente mal con contraseñas y funciona muy mal con claves públicas. PGP no es particularmente bueno para transferencias de archivos seguras. Esta es una manera torpe de firmar paquetes. No es muy bueno para proteger las copias de seguridad. Esta es una forma extremadamente peligrosa de intercambiar mensajes seguros.
En la era de MC Hammer, cuando apareció PGP, el "cifrado" era algo especial en sí mismo; Había una herramienta para enviar archivos, copias de seguridad, para cifrar y firmar archivos. La criptografía moderna no funciona así, necesitamos herramientas especializadas. La criptografía para la mensajería segura es diferente de la criptografía para realizar copias de seguridad o firmar paquetes.
Pantano de compatibilidad con versiones anteriores
PGP precede a la criptografía moderna y está muy desactualizado durante este tiempo. Si tiene suerte, su GnuPG tendrá por defecto una clave RSA de 2048 bits, un cifrado CAST5 de 64 bits en CFB y una suma de verificación OpenPGP MDC (sobre la cual más adelante). Si el cifrado se realiza con una contraseña en lugar de una clave pública, el protocolo OpenPGP establecerá el algoritmo de generación de claves S2K para PGP. Para decirlo suavemente, estas no son las primitivas que un ingeniero de cifrado elegirá para un sistema moderno.
Hemos aprendido mucho desde que el
nerd Steve Urkel decoró el horario estelar en ABC. Aprendimos que los textos cifrados deben autenticarse (y evitar el modo CFB), que los cifrados de bloque de 64 bits son incorrectos, que RSA no es perfecto, que una combinación de compresión y cifrado es peligrosa y que los KDF deben generarse estrictamente tanto en tiempo como en memoria.
No importa lo que diga el RFC de OpenPGP, probablemente no haga nada de esta lista si usa PGP, y es imposible saber cuándo comenzarán a implementarse las recomendaciones. Tome los cifrados AEAD: Sequoia PGP en Rust por defecto en el modo AES-EAX AEAD. Esto es genial Pero ahora nadie puede leer sus mensajes, porque la mayoría de las versiones de PGP no saben qué es el modo EAX, y esto no es muy bueno. En todos los sistemas criptográficos defectuosos, el resultado final es una extensión RFC que admite curvas elípticas o AEAD, para que sus seguidores puedan gritar en los foros que admiten la criptografía moderna. RFC no importa: solo configuraciones reales. Inventamos el cifrado autenticado hace 20 años, y PGP pronto se retirará; suficientes excusas
O tiene compatibilidad con el programa de los años 90 o tiene una buena criptografía;
No puedes conseguir ambos .
Desagradable ux
Es difícil formularlo mejor que Ted Unangst:
Hace unos años, se realizó un estudio de usabilidad de PGP, en el que se colocó a un grupo de expertos técnicos en una habitación con una computadora y se les pidió que configuraran PGP. Dos horas después, ninguno de ellos había respondido todavía.
Si necesita sus propios datos empíricos para confirmar esto, aquí hay un experimento que puede hacer: encontrar un abogado que esté lejos de las computadoras y ayudarlo a instalar Signal por teléfono. Probablemente se las arreglará sin histeria. Ahora intenta hacer esto con PGP.
Secretos a largo plazo
PGP pide a los usuarios que mantengan la clave raíz vinculada a su identidad casi para siempre. La generación e intercambio de claves es engorrosa con estas "partes firmantes de claves" y la "red de confianza", donde las claves dependen de otras claves.
Las claves a largo plazo son casi siempre incómodas . Si continúa utilizando la clave, eventualmente se hace pública. Desde el punto de vista de un diseño de sistema competente, es necesario minimizar el daño y garantizar que el usuario no dude por un segundo al pensar en generar una nueva clave, si hay al menos algunas preocupaciones sobre la seguridad de la actual.
Los fanáticos de PGP responderán de inmediato: "Es por eso que debes mantener las llaves en Yubikey". Pero de acuerdo con una estimación rápida aproximada, casi nadie en el mundo usa Yubikeys caros, y es poco probable que esto cambie en el futuro (apenas podemos implementar U2F, y esas llaves son desechables). No podemos aceptar sistemas criptográficos malos solo para hacer que los nerds de Unix se sientan más cómodos jugando con sus juguetes.
Autenticación rota
Más información sobre las primitivas arcaicas de PGP: en el año 2000, el grupo de trabajo de OpenPGP se dio cuenta de que era necesario autenticar el texto cifrado y que las firmas de PGP no. Por lo tanto, OpenPGP inventó
el sistema MDC : los mensajes PGP con MDC adjuntan el texto sin formato SHA-1 al texto sin formato, que luego se cifra (como de costumbre) en modo CFB.
Si se pregunta cómo PGP maneja esto cuando los sistemas modernos usan esquemas AEAD relativamente complejos (porque no pueden simplemente adjuntar SHA-1 al texto sin formato), entonces esta es una buena pregunta. ¿Cómo describirías esta caricatura? PGP MDC puede borrarse de mensajes: está codificado de tal manera que es bastante simple cortar los últimos 22 bytes del texto cifrado. Para mantener la compatibilidad con mensajes antiguos inseguros, PGP introdujo un nuevo tipo de paquete que indica la necesidad de una verificación MDC. Si usa el tipo incorrecto, MDC no está marcado. Incluso si lo hace, el nuevo formato de paquete SEIP está bastante cerca del formato SE inseguro, lo que podría engañar al destinatario para que reduzca el cifrado;
Trevor Perrin ha reducido SEIP a solo 16 bits de seguridad .
Finalmente, incluso si todo sale bien, la implementación de referencia PGP producirá texto plano no autenticado a petición,
incluso si el MDC no coincide .
Identidades inconsistentes
PGP es una aplicación, un conjunto de integraciones con otras aplicaciones, y un formato de archivo, y una red social y una subcultura.
PGP presenta el concepto de identidad criptográfica. Puede crear una clave, guardarla en un llavero, imprimir su huella digital en una tarjeta de visita y publicarla en el servidor de claves. Firmas las llaves de otra persona. Ellos, a su vez, pueden o no confiar en sus firmas para verificar otras claves. Algunas personas intentan reunirse con otros usuarios de PGP en persona para intercambiar claves y registrarse de forma más segura en esta "red de confianza". Otros organizan fiestas de firma clave. Si imagina toda esta actividad, queda claro lo difícil que es para los fanáticos dedicados de PGP cambiar a nuevas tecnologías.
Pero todo este sistema no funciona en la práctica. Ni una red de confianza con firmas clave, ni servidores clave, ni partes. Las personas comunes confiarán en todo lo que parece una clave PGP, sin importar de dónde provenga: ¿cómo pueden no confiar, incluso si es difícil para un experto formular cómo evaluar la clave? Los expertos no confían en las claves que no recibieron personalmente. Todos los demás confían en servicios centralizados de distribución de claves. Los mecanismos de distribución de claves PGP son un circo.
Fugas de metadatos
Por un segundo, olvídate de la debacle del correo electrónico (volveremos a esto más adelante). PGP en sí mismo puede filtrar metadatos. En uso normal, los mensajes están directamente asociados con identificadores clave que están asociados con el identificador de usuario en toda la red de confianza PGP. Además, una proporción bastante grande de usuarios de PGP usa servidores clave que ellos mismos emiten a la red, los cuales los usuarios de PGP intercambian mensajes entre ellos.
Sin secreto directo
Caso en cuestión: la criptografía para la mensajería segura requiere confidencialidad. El secreto directo significa que si un atacante recibe su clave, aún no podrá leer los mensajes anteriores. En la criptografía moderna, suponemos que el adversario escribe todo en un almacenamiento infinito. Los opositores de PGP incluyen gobiernos mundiales. Por supuesto, algunos de ellos hacen esto. Contra oponentes serios, piratear criptografía sin secreto directo es solo cuestión de tiempo.
Para garantizar el secreto directo en la práctica, generalmente mantiene dos claves secretas: una clave de sesión a corto plazo y una clave confiable a largo plazo. La clave de sesión es efímera (generalmente un producto de intercambio DH), y la clave de confianza la firma, de modo que la persona en el medio no puede usar su propia clave. Teóricamente, el secreto directo se puede realizar con las herramientas PGP. Por supuesto, casi nadie hace esto.
Llaves de hacha
La clave pública significa OpenBSD es una cadena Base64 lo suficientemente corta como para caber en el medio de una oración en un correo electrónico; una clave privada que no es un formato de intercambio es solo una cadena más o menos. Y la clave pública PGP es un gigantesco documento Base64; si los usó con frecuencia, probablemente ya esté acostumbrado a pegarlos en un archivo adjunto en lugar de pegarlos en mensajes para no dañarlos. La clave de significado es generada por el algoritmo avanzado Ed25519, y PGP por el RSA más débil.
Puede pensar que no importa, pero es importante; órdenes de magnitud más personas usan SSH y administran claves SSH que PGP. Las claves SSH son triviales de manejar; PGP - no.
Reconciliacion
PGP admite curvas p ElGamal, RSA, NIST, Brainpool, Curve25519, SHA-1, SHA-2, RIPEMD160, IDEA, 3DES, CAST5, AES. Esta no es una lista completa de lo que PGP admite.
Si en los últimos 20 años hemos aprendido tres cosas importantes sobre la criptografía, al menos dos de ellas, es que la reconciliación y la compatibilidad son malas. Como regla general, las deficiencias de los sistemas criptográficos aparecen en las implementaciones, en lugar de las primitivas, y la criptocompatibilidad expansiva aumenta el número de implementaciones. Los protocolos modernos, como TLS 1.3, buscan deshacerse de la compatibilidad con arcaismos como RSA, en lugar de agregarlo. Los sistemas más nuevos
solo admiten
un conjunto de primitivas y un número de versión simple. Si falla una de estas primitivas, se deshace de esta versión e inmediatamente descarta todo el protocolo anterior.
Si no tenemos suerte y después de 20 años la gente seguirá usando PGP, seguirá siendo la única razón por la cual el estándar CAST5 se aplica al menos en algún lugar. No podemos decir esto más claramente, y debemos repetirlo muchas veces: o tiene compatibilidad con el programa de los años 90 o tiene una buena criptografía; No puedes conseguir ambos.
Código basura
La implementación estándar de facto de PGP es GnuPG. Este programa no está muy bien escrito. Existe una amplia base de código en lenguaje C con duplicación de funcionalidad (por ejemplo, en la descripción de un reciente ataque de denegación de servicio en el análisis SKS se dice que tiene varios analizadores clave) con un largo historial de CVE, que va desde la corrupción de la memoria hasta los ataques criptográficos. a través de canales de terceros. A veces era posible eliminar la autenticación de los mensajes, pero GnuPG no se dio cuenta de esto. Podrías darle las llaves sin la huella digital correcta. En 2018, la vulnerabilidad de Efail fue causada por el hecho de que GnuPG proporcionó texto sin formato no autenticado a pedido. GnuPG no es bueno.
GnuPG es la implementación de referencia para PGP y la base para la mayoría de las otras herramientas de integración de criptografía PGP. El no va a ninguna parte. Confiar en PGP significa confiar en GPG.
Las respuestas
Para convencer a una persona de que renuncie a PGP, es importante explicarle que PGP no tiene nada que reemplazar,
y eso es normal . Una herramienta alternativa depende de la tarea.
Conversaciones
Use Signal. O Wire, WhatsApp u otro mensajero seguro basado en el protocolo Signal.
Los mensajeros seguros modernos están diseñados específicamente para la mensajería. Utilizan apretones de manos de autenticación confidencial, cancelaciones de mensajes,
trinquetes criptográficos , que emiten una clave para cada intercambio de mensajes y, por supuesto, primitivas de cifrado modernas. Los mensajeros son trivialmente fáciles de usar, sin complicaciones con las teclas y subclaves. Si usa Signal, obtiene aún más: obtiene un sistema tan paranoico sobre guardar metadatos privados de los servidores que incluso canaliza las consultas de búsqueda de Giphy para evitar ataques de análisis de tráfico, y hasta hace poco ni siquiera era compatible con los perfiles de usuario.
Cifrado de correo electrónico
No hagas esto.
El correo electrónico no es seguro . Incluso con PGP, este es texto sin formato por defecto, es decir, incluso si hace todo correctamente, un destinatario completamente razonable de la carta, haciendo cosas absolutamente razonables, necesariamente citará el texto sin formato de su mensaje cifrado a otra persona en CC (no conocemos al usuario del correo electrónico Correo PGP, que no se encontró con esto). No hay secreto directo en el correo electrónico PGP. Los metadatos del correo electrónico, incluido el asunto (que es literalmente el contenido del mensaje), siempre se transmiten en texto claro.
Si necesita otra razón, lea el
artículo sobre vulnerabilidad de Efail . La comunidad GnuPG, que
no reveló información sobre Efail , critica este artículo violentamente, pero fue aceptado en Usenix Security (uno de los principales centros académicos para la seguridad del software) y Black Hat USA (la conferencia líder en seguridad de software). Este es uno de los mejores ataques criptográficos en los últimos cinco años, y una bomba bastante destructiva contra el ecosistema PGP. Como verá en el artículo, S / MIME no es mejor.
Nunca se arreglará. Para crear un correo electrónico realmente seguro, debe hacer un túnel con otro protocolo por correo electrónico (seguirá siendo vulnerable a un ataque con análisis de tráfico). Ese es el punto, ¿por qué fingir?
Cifrar correo electrónico es hacer clic en problemas. Alentar a los usuarios a cifrar el correo electrónico si algo los amenaza es una negligencia excepcional. Cualquiera que le informe sobre la seguridad de la comunicación por correo electrónico con cifrado PGP coloca sus preferencias extrañas por encima de su seguridad.
Enviando archivos
Usa el
agujero de gusano mágico . Los clientes de Wormhole usan autenticación de clave única con autenticación de contraseña (PAKE) para cifrar archivos. Es fácil (al menos para los nerds), seguro y divertido: todos a quienes les mostramos el "agujero del topo" inmediatamente comenzaron a pasarlo por todos los archivos seguidos, como nosotros.
Alguien inicia inmediatamente el instalador para Windows en Rust o Go, este es un programa demasiado bueno para no usarlo.
Si habla con abogados, no con ingenieros, Signal hace un gran trabajo de transferencia de archivos. Para informes de errores, publique el número de señal, no la clave PGP.
Cifrado de respaldo
Usa Tarsnap.
Colin explicará cómo Tarsnap está optimizado para proteger las copias de seguridad . O, de hecho, tome cualquier otra herramienta de cifrado de respaldo; no será tan bueno como Tarsnap, pero seguirá siendo mejor que PGP.
¿Necesita copias de seguridad sin conexión? Usar cifrado de imagen de disco; Está integrado en las versiones modernas de Windows, Linux y macOS. El cifrado de disco completo no es muy bueno, pero hace un excelente trabajo en esta tarea, y es más simple y seguro que PGP.
Firma del paquete
Use Signify / Minisign.
Ted Unangst te lo contará todo . Esta herramienta se usa para firmar paquetes en OpenBSD. Es muy simple y aplica firmas modernas. Frank Denis
Minisign (uno de los desarrolladores de libsodium) implementa el mismo diseño en Windows y macOS; Tiene enlaces a Go, Rust, Python, Javascript y .NET; Incluso es compatible con Signify.
Cifrado de datos de la aplicación
Utilice libsodium : esta es una biblioteca universal con una interfaz en la que es difícil cometer un error y no necesita un binario para funcionar.Cifrado de archivos
Esto es realmente un problema. Si tiene / no / copia de seguridad, / no / archivo para almacenamiento fuera de línea a largo plazo, / no / cifrado de archivos para transferencia y / no / cifrado de discos virtuales que monta / desmonta según sea necesario, entonces no hay una buena herramienta para cifrar archivos Para otros fines, Filippo Walsorda está desarrollando una herramienta de edad , parece prometedor, pero aún no está listo.Esperemos que este sea un caso de uso bastante limitado. Trabajamos en el campo de la seguridad del software y procesamos datos confidenciales, incluidos informes de errores (otro caso muy común cuando gritan "¡Necesitamos PGP!"), Pero casi nunca usamos PGP.