Las ID de clave corta de OpenPGP son débiles
¿Cómo sucedió esto?
Las ID de clave corta de OpenPGP son demasiado pequeñas para proporcionar una seguridad razonable contra los ataques de colisión. Hay tan pocas como 2^32
de ID de clave corta diferentes, que son menos de 5 mil millones.
Generar una cantidad tan grande de claves requeriría mucho tiempo. Pero, la ID de clave se calcula a partir de la clave pública de OpenPGP (por ejemplo, la clave pública RSA) y el tiempo de generación de clave (como una marca de tiempo de Unix, por lo tanto, el número de segundos desde 1970-01-01 ). Esto permite reducir el número de claves a generar por órdenes de magnitud .
Usando un programa de computadora bastante simple, uno puede generar fácilmente pares de claves, y luego iterar sobre todos los valores razonables de tiempo de creación de claves. Asumamos un período razonable de los últimos cinco años, esto significa 150 millones de ID de claves diferentes. Probablemente un poco subestimado (dividiendo el número de ID de claves cortas posibles por el número de ID de claves por clave generada) que no tiene en cuenta que también tendremos ID de claves duplicadas dentro del conjunto generado, asumiendo que solo necesita generar menos más de 30 teclas "reales", que son cuestión de segundos o minutos.
La charla OHM 2013 Trolling the Web of Trust por Micah Lee presentó esta falla y alguna ejemplo de implementación sobre cómo explotarla. Richard Klafter y Eric Swanson utilizaron esta técnica para replicar el conjunto completo fuerte (el conjunto de claves más grande completamente conectado entre sí, con otras palabras la mayoría de el conjunto de usuarios activos de OpenPGP que realizaron la firma mutua de claves con otros), incluidas las certificaciones y lo publicaron en un servidor de claves (sin sincronización) .
Es solo una cuestión de tiempo hasta que alguien copie la "falsa" red de confianza en los "servidores de claves reales", o simplemente genere su propia "copia".
Brindé una explicación un poco más larga en ¿Qué es una colisión de ID de clave OpenPGP? , especialmente discutiendo las diferentes Los tipos de ID de clave de OpenPGP y cómo se relacionan.
No utilice identificadores de clave cortos
¿Qué puedo hacer al respecto?
Este ataque no solo golpeó tu clave, sino posiblemente todas y cada una. La generación de colisiones no requiere (mucho) conocimiento especial ni hardware específico, cada "usuario avanzado" podrá generar colisiones en las máquinas de productos básicos después de leer un poco de tiempo.
La única forma de salir de esto es dejar de usar las ID de clave corta , especialmente cuando no se realiza una validación posterior de la huella digital. Así:
- Al referirse a su clave OpenPGP, digamos en tarjetas de visita o en su firma de correo, indique su ID de clave larga (64 bits o 16 dígitos hexadecimales), o incluso mejor la huella digital completa.
-
Nunca confíe a una ID de clave corta. Si usa una para obtener la clave de alguien, verifique con la clave larga o la huella digital (si está cansado de escribir la ID de clave larga, pero solo son ocho dígitos más!).
- Habla sobre el problema. Rechace fragmentos / tarjetas de visita / documentos que solo contengan el ID de clave corta. ¡Haga que la gente esté al tanto! Este es un gran momento para educar sobre la red de confianza en general; en mi experiencia, muchos usuarios de OpenPGP no obtuvieron completamente los conceptos básicos de la verificación de la validez de las claves.
¿Tengo que revocar mi clave?
Revocar tu clave OpenPGP no te ayudará, un atacante podrá recrear una nueva clave OpenPGP en colisión en cuestión de segundos o minutos. Más bien, mantendrá tu reputación (certificaciones) en la web de confianza, y Asegúrate de extenderlo!