Enlace entre conjuntos de cifrado y clave de certificado

3

Estoy tratando de entender el protocolo SSL / TLS y estoy perdido en un punto específico.

¿Cuál es el enlace entre la clave del servidor público (por ejemplo: "EC 256 bits" o "RSA 2048 bits") y las suites de cifrado?

Esta publicación ofrece una respuesta: certificados SSL y correspondencia de conjuntos de cifrado pero cuando intento analizar las suites de cifrado para enlace , hay algo ilógico para mí. wikipedia.org tiene una clave EC de 256 bits y TLS_RSA_WITH_AES_128_CBC_SHA es un conjunto de cifrado aceptado. De acuerdo con esta publicación certificados SSL y correspondencia de conjuntos de cifrado (si tengo entendido correctamente) no debería ser posible porque

" Para las suites de cifrado TLS_RSA_ *, el intercambio de claves utiliza el cifrado de un valor aleatorio elegido por el cliente con la clave pública RSA del servidor, por lo que la clave pública del servidor debe ser del tipo RSA y debe ser apropiada para el cifrado (el certificado del servidor no debe incluir una clave Extensión de uso que dice "solo firma"). "

Entonces, ¿por qué podemos usar TLS_RSA_WITH_AES_128_CBC_SHA en wikipedia?

    
pregunta Secu Noob 09.08.2016 - 22:45
fuente

3 respuestas

1
  

wikipedia.org tiene una clave EC de 256 bits y TLS_RSA_WITH_AES_128_CBC_SHA es un conjunto de cifrado aceptado. De acuerdo con este post, los certificados SSL y la correspondencia de conjuntos de cifrado (si lo comprendo correctamente) no debería ser posible

En realidad, wikipedia.org tiene certificados ECDSA y RSA y los usa según los cifrados que ofrece el cliente. Cuando el cliente admite cifrados ECDSA, obtiene el certificado EC256:

 $ openssl s_client -connect www.wikipedia.org:443 -cipher 'ECDSA' |\
     openssl x509 -text -noout
 ...
    Subject Public Key Info:
        Public Key Algorithm: id-ecPublicKey
            Public-Key: (256 bit)

Si, en cambio, está aplicando sistemas de cifrado con autenticación RSA, obtiene un certificado diferente que utiliza una clave RSA 2048:

 $ openssl s_client -connect www.wikipedia.org:443 -cipher 'RSA' |\
     openssl x509 -text -noout
 ...
    Subject Public Key Info:
        Public Key Algorithm: rsaEncryption
            Public-Key: (2048 bit)

Tal configuración no es infrecuente, ya que ECDSA ofrece un mejor rendimiento con la misma seguridad, pero no todos los clientes son compatibles con ECDSA todavía. No todos los servidores web admiten una configuración con certificados duales, pero tiene soporte en servidores ampliamente utilizados como nginx y < a href="https://www.tbs-certificates.co.uk/FAQ/en/apache-dual-rsa-ecc.html"> apache .

    
respondido por el Steffen Ullrich 10.08.2016 - 04:48
fuente
2

El conjunto de cifrado TLS_RSA_WITH_AES_128_CBC_SHA usa RSA para la autenticación y el intercambio de claves. La longitud de la clave no se especifica, pero el estándar actual es de 2048 bit RSA claves, por lo que es probable que se utilice en este caso.

Para otros conjuntos de cifrado, puede ver componentes que diferencian entre el algoritmo de intercambio de claves y el algoritmo de autenticación. TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 sería un ejemplo de esto, donde ECDHE (Elliptic Curve Diffe Hellman Ephemeral) es el algoritmo de intercambio de claves, pero la clave en el certificado es para el algoritmo de firma digital de curva elíptica.

Entonces, si el conjunto de cifrado que se usó para su sesión TLS fue TLS_RSA_WITH_AES_128_CBC_SHA , fue para un certificado RSA, no para un certificado ECDSA. En ese caso, necesitarías usar un conjunto de cifrado diferente.

    
respondido por el Xander 09.08.2016 - 23:46
fuente
1

Demasiado tiempo para un comentario, así que publícalo aquí.

Acabo de hacer esto, por lo que no estoy seguro de a qué se refiere:

  

$ openssl s_client -connect www.wikipedia.org:443

---                                                                                                                        │ SSL handshake has read 3278 bytes and written 441 bytes             
     

│In [12]: (1072759 + 626961) * 8

     

--- │ New, TLSv1/SSLv3, Cipher is ECDHE-ECDSA-AES128-GCM-SHA256
  │Out [12]: 13597760 La clave pública del servidor es de 256 bits
  │ Se admite la renegociación segura
  │En [13]: de marathon_test Compression: NONE
  │marathon_test Expansión: NINGUNA
  │ No se negocia ALPN
  │In [13]: SSL-Session:
  │

Recuerde que el servidor puede anunciar la compatibilidad con diferentes protocolos (como RSA que usted resalta). El protocolo acordado es uno de los varios que admiten el cliente y los servidores.

    
respondido por el sandyp 09.08.2016 - 23:49
fuente

Lea otras preguntas en las etiquetas