Comprensión de SSL de 2048 bits y cifrado de 256 bits

57

En la página de DigiCert, anuncian un SSL de 2048 bits con un cifrado de 256 bits: enlace

¿Cuál es exactamente la diferencia aquí y por qué se hace referencia a dos bits de cifrado?

Aquí hay una captura de pantalla del anuncio:

En el anuncio Premium SSL de Geotrust, lo anuncian como:

Security: domain control validation, strong 256-bit encryption, 2048-bit root

Entonces, ¿cuál es la diferencia entre el cifrado de 256 bits y la raíz de 2048 bits?

Espero que se aclare la pregunta.

    
pregunta JohnJ 30.08.2012 - 16:48
fuente

3 respuestas

61

Los 2048 bits se refieren al par de claves RSA: las claves RSA son objetos matemáticos que incluyen un entero grande, y una "clave de 2048 bits" es una clave tal que el entero grande es más grande que 2 2047 pero más pequeño que 22048 .

El 256-bit es sobre SSL. En SSL, la clave del servidor se usa solo para transmitir una clave aleatoria de 256 bits ( que no tiene estructura matemática, es solo un conjunto de bits); En términos generales, el cliente genera una clave aleatoria de 256 bits, la cifra con la clave pública RSA del servidor (la que está en el certificado del servidor y es una "clave de 2048 bits"), y envía el resultado al servidor. El servidor utiliza su clave RSA privada para revertir la operación, y así obtener la clave de 256 bits elegida por el cliente. Posteriormente, el cliente y el servidor utilizan 256 bits para realizar el cifrado simétrico y las verificaciones de integridad, y RSA no se usa más para esa conexión.

Consulte esta respuesta para más detalles. Esta configuración a menudo se llama "cifrado híbrido". Esto se hace porque RSA no es apropiado para el cifrado masivo, pero el cifrado simétrico no puede hacer el negocio público / privado inicial que se necesita para comenzar.

(SSL puede realizar el intercambio de claves con otros algoritmos distintos de RSA, por lo que he simplificado un poco la descripción en el texto anterior, pero esa es la esencia de la idea).

    
respondido por el Thomas Pornin 30.08.2012 - 17:14
fuente
12

Para agregar un poco más de detalle, la clave RSA de 2048 bits es algo que se llama criptografía asimétrica. Se utiliza para validar la identidad (firma) y para garantizar que solo un destinatario pueda acceder a la información enviada (cifrado). Se compone de dos piezas, una clave pública y una clave privada. Las claves están realmente relacionadas entre sí, pero como están relacionadas por dos números pseudo-primarios muy grandes (primos entre sí) son muy difíciles de descifrar la clave privada del público.

Dicho esto, porque el algoritmo se basa en algo que es realmente difícil de entender (pero es solucionable), es menos seguro que un algoritmo simétrico basado en un secreto compartido, que no es matemáticamente solucionable y no se basa en sobre la complejidad de un problema de matemáticas para la seguridad (más sobre esto más adelante). Esta es la razón por la cual la clave es mucho más grande que la contraparte simétrica (que solo es de 256 bits). Para que la ecuación sea difícil de resolver, se requiere una clave mucho más grande y además, cuanto más información se transmita con la clave asimétrica, mayor será la posibilidad de que se rompa (también, el cifrado / descifrado es más intenso para el procesador).

Por esta razón, SSL solo utiliza RSA para las fases de validación e intercambio de claves. En su lugar, se genera una clave simétrica (en este caso de 256 bits si es compatible con el navegador del cliente) y se transmite al servidor a través del cifrado RSA y luego el resto de los datos se intercambian a través de la clave compartida y un algoritmo simétrico.

Esto ocurre cuando el cliente primero decodifica la respuesta a un desafío que el servidor cifra con su clave privada, luego el cliente puede mirar la clave pública del servidor (que está firmada por una clave raíz conocida que la CA) (en este caso DigiCert) se ha incluido con la mayoría de los navegadores). Cuando la respuesta descodificada coincide con el desafío, el cliente sabe que el servidor respondió a la solicitud (aunque puede haber un intermediario que la retransmita). Luego, el cliente genera la clave simétrica de 256 bits y la cifra con la clave pública del servidor y la envía al servidor. Debido a que la clave está cifrada con la clave pública del servidor, solo el servidor (que conoce la clave privada) puede descifrarla. Esto significa que cualquier intermediario en el paso anterior no puede conocer la nueva clave compartida. El cliente ahora puede confiar en que la información enviada a través de la clave compartida solo proviene del servidor deseado.

    
respondido por el AJ Henderson 30.08.2012 - 19:19
fuente
6

Solo para agregar algunos detalles a las respuestas existentes ...

  

mi pregunta es ¿cómo sabría el cliente generar una clave aleatoria de 256 bits? (¿Por qué no 128?).

Esto depende de la suite de cifrado que se negocia. La lista de los definidos como parte de TLS 1.1 se encuentra en RFC 4346 Apéndice A.5 . Por ejemplo, TLS_RSA_WITH_AES_128_CBC_SHA usará una clave de 128 bits, mientras que TLS_DHE_RSA_WITH_AES_256_CBC_SHA usará una clave de 256 bits.

El paquete de cifrado que se negocia dependerá de la configuración del cliente y del servidor, no del certificado instalado en el servidor. Cuando el cliente inicia la conexión con un mensaje Client Hello , envía una lista de conjuntos de cifrado que admite. Luego, el servidor elige el que desea y lo dice en su mensaje Server Hello .

Este conjunto de cifrado determina cómo se comparten finalmente estas claves simétricas. El propósito inmediato del protocolo de enlace SSL / TLS es establecer un secreto maestro previo para compartir entre el cliente y el servidor. Esto se conoce más ampliamente como intercambio de claves (consulte RFC 4346 Apéndice F.1.1) .

Esto se divide en dos categorías (excluyendo el intercambio de claves anónimas):

  • Intercambio de claves RSA (por ejemplo, TLS_RSA_WITH_AES_128_CBC_SHA ): el cliente cifra el secreto maestro previo utilizando la clave pública del servidor (que se encuentra en el certificado).
  • Intercambio de claves DH (E) (por ejemplo, TLS_DHE_RSA_WITH_AES_256_CBC_SHA ): tiene lugar un intercambio de claves Diffie-Hellman. El servidor firma sus parámetros DH y el cliente verifica la firma con la clave pública en el certificado del servidor. (Tener un certificado basado en RSA no implica un intercambio de claves RSA).

Al final del protocolo de enlace, cualquiera de estos dos pasos se utilizaron, el cliente y el servidor están en posesión de un pre-master secret común, del cual derivan un master secreto (consulte RFC 4346 Sección 8.1 ).

A partir de ese master secret , ambas partes pueden derivar las claves de cifrado (y los secretos de MAC), como se describe en RFC 4346 Sección 6.3 .

Además del tipo de clave (RSA o DSS), no hay nada en esto que haga que el tamaño de la clave de cifrado dependa del certificado. Además, ambos tipos tienen conjuntos de cifrado que utilizan claves de 256 bits: por ejemplo, TLS_DHE_DSS_WITH_AES_256_CBC_SHA y TLS_DHE_RSA_WITH_AES_256_CBC_SHA . (DSS es un algoritmo de firma exclusiva, por lo que no obtendría un intercambio de claves similar a RSA para cifrar el secreto pre-maestro).

El tamaño de la clave en el certificado solo importa para evitar la falsificación del intercambio de claves (o para poder descifrar el tráfico registrado): si alguien pudo encontrar la clave privada de la clave pública en el certificado, podrían actuar como un MITM para hacerse pasar por el servidor real o podrían descifrar el secreto maestro maestro cifrado (y, por lo tanto, el tráfico registrado) al usar un intercambio de claves RSA (los conjuntos de cifrado DHE están diseñados precisamente para evitar el acceso al servidor - secreto del maestro, incluso si el atacante obtiene la clave privada y el tráfico registrado, consulte esta pregunta ). Por eso es importante una clave asimétrica suficientemente grande.

Las Autoridades de Certificación tienden a poner "256 bits" en sus sitios web porque se ve bien desde un punto de vista de marketing.

No está mal, pero puede ser engañoso para las personas que no entienden que lo que importa es la forma en que se configura su servidor y lo que apoyan sus clientes.

    
respondido por el Bruno 31.08.2012 - 20:20
fuente

Lea otras preguntas en las etiquetas