- En una investigación se identificaron más de 1,700 claves DKIM públicas con menos de 1,024 bits. Las claves RSA con menos de 1,024 bits son vulnerables y su uso quedó discontinuado desde el RFC 8301 de 2018.
- Objetivo del experimento: extraer la clave privada de una clave pública RSA de 512 bits y verificar si pasa la validación DKIM en servicios de correo principales (Gmail, Outlook, Yahoo Mail, etc.)
- Se probó si era posible firmar como si el correo viniera del remitente original.
Decodificación de clave pública RSA y generación de clave
- La clave pública de 512 bits del dominio
Redfin.com está codificada en formato ASN.1 DER y se vuelve a codifica en Base64.
- Proceso de decodificación de clave
- Decodificar con Python la clave pública codificada en Base64 incluida en la etiqueta
p
- Extraer
n (módulo) y e (exponente público)
- Factorización del módulo RSA
- Uso de CADO-NFS: algoritmo basado en Number Field Sieve
- Especificaciones del servidor en la nube: 8 vCPU, 32GB RAM (uso de Hetzner)
- Agregar 32GB de espacio swap y luego ejecutar CADO-NFS
- Resultado: después de unas 86 horas, se logró descomponer
n en dos factores, p y q
- Generación de clave privada RSA
- Generar la clave privada RSA a partir de
p y q
- Usar Python y la librería PyCryptodome para exportar la clave privada en formato PEM
Prueba de firma DKIM
- Integrar la clave privada con OpenDKIM y enviar correos
- Verificar resultados de validación DKIM en varios servicios de hosting de correo
- Resultado de la prueba:
- DKIM aprobado: Yahoo Mail, Mailfence, Tuta
- DKIM fallido: Gmail, Outlook, Zoho, Fastmail, entre otros
- Yahoo, Mailfence y Tuta aprobaron sin notar la debilidad de la clave de 512 bits
Conclusión final
- Vulnerabilidad de la clave RSA de 512 bits
- Lo que hace 30 años era posible con una súpercomputadora ahora puede hacerse en pocas horas en un servidor en la nube por menos de $8
- Al firmar con DKIM, nunca se deben usar claves de menos de 1,024 bits
- Recomendaciones
- Los proveedores de correo deberían rechazar automáticamente firmas DKIM que usen claves RSA de menos de 1,024 bits
- Los propietarios de dominios deben revisar sus registros DKIM y actualizarlos a 1,024 bits o más
- Es posible verificar el tamaño de una clave DKIM por la longitud de la cadena Base64: una clave de 1,024 bits tiene al menos 216 caracteres
1 comentarios
Comentarios de Hacker News
dkim=pass. Me pregunto si Google falló por la firma DKIM o por un fallo de SPF.