¿Cuál es la fuerza de cifrado s/mime en iOS?

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

Si Facebook le da acceso a la NSA a toda la información del lado del servidor, el cifrado de las notificaciones se vuelve mucho menos urgente, ¿no? :-/
Dado que tiene dos respuestas que abordan la generación del certificado en sí y cómo el cliente de correo de iOS usa esa clave (y es poco probable que obtengamos el código que Apple usa internamente , tal vez podría ampliar el "qué sigue" o lo que va a usar esto información para cambiar lo que has hecho. Básicamente, ¿cuál es la aplicación práctica de la respuesta que esperas? (para que pueda guiar a alguien a proporcionar una respuesta que podrías aceptar).
Me pregunto cómo configurar S/MIME en tu iPhone haría que Facebook enviara sus notificaciones encriptadas. ¿Me estoy perdiendo de algo?
@ not2savvy No hará que lo envíen encriptado. Por lo general, hay un archivo adjunto en forma de *.p7ssi recibe un mensaje cifrado donde su cliente no está configurado correctamente para descifrarlo.

Respuestas (2)

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.

Gracias por esa investigación. Es bastante útil. ¿Tuviste alguna idea de los algoritmos de encriptación? Esto es lo que más me interesa de TBH.
@cottsak Todo lo que pude encontrar es esto, escrito en el primer documento al que me he vinculado: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 asn1parsepara 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.

Eso en realidad no ayuda a mi pregunta. De hecho, estoy buscando evidencia de la implementación interna en dispositivos iOS como iPhones y iPads. gracias
El tamaño de la clave lo determina la CA, pero el algoritmo de cifrado lo determina el cliente de correo electrónico. forums.comodo.com/email-certificate/…
Veo. @cottsak está hablando de los algoritmos simétricos/hash utilizados para los datos, no de los algoritmos de clave pública/hash utilizados para la clave (cf en.wikipedia.org/wiki/Hybrid_cryptosystem ). Parece que hice una puñalada en la oscuridad al no hacer esa pregunta y di en el blanco equivocado. Permítanme hacer algunas ediciones aclaratorias, ya que creo que sigue siendo información valiosa, aunque tangencial.
Busqué un poco más y terminé deconstruyendo un mensaje que envié. Echa un vistazo a las últimas ediciones.
Eso es muy interesante... entonces, ¿está sugiriendo que iOS elija el algoritmo de cifrado de mensajes y hash según lo que especifique el certificado de firma?
@cottsak Honestamente, no estoy seguro; No profundicé tanto, solo miré un mensaje que recibí y di los detalles para que tú también pudieras mirar. Aunque esto puede resultar interesante: tools.ietf.org/html/rfc5751#section-2.5.2
La sección 2.7.1 de dicho RFC5751 ( Decidir qué método de cifrado utilizar ) describe en detalle cómo debe decidir el remitente, teniendo en cuenta las capacidades conocidas del cliente receptor (si las conoce). Sin embargo, así es como el remitente DEBE comportarse, no es IMPRESCINDIBLE.