Configuré S/MIME en mi iPhone, pero a diferencia de otros clientes de correo, no tengo la opción de seleccionar los algoritmos hash o de encriptación. Supongo que iOS toma esta decisión por mí.
¿Alguien puede decirme qué algoritmos se utilizan y cuáles son los tamaños de clave? Sería bueno saber que la NSA va a tener dificultades para acceder a mis notificaciones de Facebook. :D
SHA-1 es lo más probable. Esto es lo que he encontrado para respaldar esa afirmación:
En el documento de referencia de servicios de sintaxis de mensajes criptográficos , se indica que la versión S/MIME utilizada es 3.1 , que se define aquí y donde se indica que es compatible con SHA-1, SHA-256, SHA-384 y SHA-512, pero :
Los algoritmos SHA-256, SHA-384 y SHA-512 [FIPS180-2] no se recomiendan actualmente en S/MIME y se incluyen aquí para completar.
Más aún, en el documento de referencia de servicios de certificados, claves y confianza (aunque es la versión para Mac), se indica que el algoritmo predeterminado utilizado es el SHA-1 .
En otro documento se dice:
La función hash más común que utilizará es SHA-1 , un algoritmo desarrollado y publicado por el gobierno de los EE. UU. que produce un valor hash de 160 bits a partir de cualquier dato de hasta 2**64 bits de longitud. También hay una serie de algoritmos más exóticos , como SHA-2, algoritmos basados en curvas elípticas, etc.
Para la compatibilidad con los sistemas y la infraestructura existentes, es posible que de vez en cuando necesite usar algoritmos más antiguos, como MD5, pero no se recomienda su uso en nuevos diseños debido a las debilidades conocidas.
Entonces, aunque no pude encontrar ninguna declaración directa que confirme el uso del algoritmo SHA-1, las pistas apuntan en esa dirección.
On CMS terminology, this module performs encryption using the **enveloped-data content** type and signing using the signed-data content type. If the message is both signed and encrypted, it uses **nested ContentInfo** types.
Para un mensaje específico, puede usar openssl asn1parse
para mirar dentro.
Me envié un mensaje usando iOS Mail, firmado y encriptado para mí, y usando la línea de comando
$ openssl smime -pk7out -in message.eml | openssl asn1parse
y el contenido de los resultados mostró que el mensaje parece estar encriptado con 3DES EDE en modo CBC:
913:d=5 hl=2 l= 8 prim: OBJECT :des-ede3-cbc
Encontrar el algoritmo de la firma es otro desafío. Creo que es SHA-1, pero el mensaje descifrado incluye muchas firmas de certificados y no estoy seguro de cuál es el mensaje.
$ openssl smime -decrypt -in smime.eml -recip me.crt -inkey me.key | \
openssl smime -pk7out | openssl asn1parse
…
30:d=5 hl=2 l= 5 prim: OBJECT :sha1
Si bien la pregunta en realidad es sobre el algoritmo simétrico y hash utilizado para cifrar los datos del mensaje, los parámetros para el certificado en sí (que contiene la clave pública utilizada para cifrar la clave simétrica que, a su vez, se utiliza para tratar los datos) son seleccionados en el momento de la generación de claves. He visto esto en acción al generar un nuevo par de claves personales en StartSSL ; la interfaz web solicita el tamaño de la clave RSA y qué algoritmo de firma deseo usar, junto con la advertencia de que elegir SHA-1 lo dejará con un certificado incompatible con algunos sistemas.
Por si sirve de algo, mi propio certificado personal usa RSA de 2048 bits y el algoritmo de firma SHA-1, que he descubierto que funciona bien en varios sistemas diferentes, incluidos OS X Mail.app, iOS Mail y Outlook 2007.
Daniel
bmike
not2savvy
cottsak
*.p7s
si recibe un mensaje cifrado donde su cliente no está configurado correctamente para descifrarlo.