Cifrado utilizado para solicitar el cifrado de datos utilizado por el navegador

6

Tenga en cuenta que no se trata de cómo ocurre la comunicación SSL entre el navegador (lo investigué y lo entendí) y el cliente, sino otros aspectos.

Uso de Explicación del mecanismo SSL de Digicert He entendido cómo se encriptan los datos entre los navegadores y los servidores. A continuación es mi entendimiento.

  1. El navegador enviará una solicitud al servidor para obtener algún recurso. El servidor verifica si el protocolo de la solicitud es HTTPS, si es así, enviará su certificado (este certificado ya está firmado por alguna CA (Autoridad de certificación, como Digicert)) en la respuesta.
  2. El navegador comprobará si el certificado es válido al validar la búsqueda de la autoridad firmante en su grupo de CA válido.
  3. Si el navegador encuentra que este certificado está firmado por una CA válida, genera una clave de sesión y la cifra utilizando la clave pública presente en el certificado.
  4. El navegador enviará esta clave de sesión cifrada al servidor y el servidor descifrará la clave de sesión. El servidor enviará un acuse de recibo al navegador que se cifraría con la clave de sesión.
  5. Los pasos anteriores completan un protocolo de enlace SSL y luego la comunicación segura comienza entre el navegador y el servidor.

Preguntas:
Basado en mi entendimiento anterior:

  1. El navegador generará una clave de sesión y la cifrará utilizando la clave pública del servidor. Pero, ¿qué algoritmo de cifrado (o comúnmente llamado algoritmo de cifrado) utilizará el navegador?
    • ¿Cómo se determina la selección de cifrado, y el navegador y el servidor utilizarán el mismo tamaño de clave / cifrado para el cifrado y descifrado?
  2. Una vez que se completa el protocolo de enlace SSL, todas las comunicaciones se cifrarán utilizando la clave de sesión simétrica, pero nuevamente, ¿qué algoritmo de cifrado utilizará el navegador?
  3. ¿El algoritmo de cifrado utilizado por el navegador de alguna manera depende del certificado recibido del servidor?
    • ¿O todo el cifrado lo realiza el navegador con el mismo algoritmo de cifrado?
  4. Por favor, corríjame si me equivoco, ¿el algoritmo o la información de cifrado también están presentes en el certificado? ¿Cómo se almacena esa información en el certificado?
    • Al generar el certificado, ¿debo indicar qué algoritmo, cuántos bits de cifrado, relleno, etc.?

Sobre la base de la respuesta anterior, tendré la pregunta más importante: supongamos que le estoy proporcionando la clave privada de mi servidor para que él pueda monitorear el tráfico SSL de mi servidor y, además de proporcionarle la clave privada, todo lo demás. Necesito tener cuidado. ¿Y necesito decirle el algoritmo o el cifrado que estoy usando en el servidor?

    
pregunta hagrawal 05.08.2015 - 22:16
fuente

3 respuestas

3
  
  1. El navegador generará una clave de sesión y la cifrará utilizando la clave pública del servidor. Pero qué algoritmo de cifrado (o comúnmente   llamado como algoritmo de cifrado) será utilizado por el navegador?      
    • ¿Cómo se determina la selección de cifrado, y el navegador y el servidor utilizarán el mismo tamaño de clave / cifrado para el cifrado y descifrado?
    •   
  2.   

El navegador enviará una lista de conjuntos de cifrado al servidor que admite. Esta respuesta explicará qué es un conjunto de cifrado en detalle, pero básicamente un conjunto de cifrado es una lista de algoritmos para usar Para la comunicación segura. Una suite de cifrado contiene:

  • Versión TLS
  • Algoritmo de intercambio de claves
  • algoritmo de firma
  • Algoritmo de cifrado simétrico
  • Algoritmo de integridad

Por ejemplo: TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256

El navegador envía una lista de conjuntos de cifrado admitidos al servidor, y el servidor elige el conjunto de cifrado más seguro que admite. Si no admite ninguno en la lista, la conexión falla. El algoritmo de cifrado simétrico es para lo que se utiliza la clave de sesión. En SSL / TLS, las claves se generan desde el secreto maestro previo .

  
  1. Una vez que se completa el protocolo de enlace SSL, todas las comunicaciones se cifrarán utilizando la clave de sesión simétrica, pero nuevamente, ¿qué cifrado?   algoritmo será utilizado por el navegador?
  2.   

De nuevo, el algoritmo simétrico en el conjunto de cifrado se utilizará para la comunicación cifrada. En el ejemplo anterior, sería AES de 128 bits en modo GCM.

  
  1. ¿El algoritmo de cifrado utilizado por el navegador de alguna manera depende del certificado recibido del servidor?      
    • ¿O todo el cifrado lo realiza el navegador con el mismo algoritmo de cifrado?
    •   
  2.   

De ninguna manera depende del certificado. Todo el cifrado se realiza mediante el algoritmo de cifrado simétrico en el conjunto de cifrado elegido por el servidor.

  
  1. Por favor, corríjame si me equivoco, ¿el algoritmo o la información de cifrado también están presentes en el certificado? Como hace eso   ¿Información almacenada en el certificado?      
    • Al generar el certificado, ¿debo indicar qué algoritmo, cuántos bits de cifrado, relleno, etc.?
    •   
  2.   

El algoritmo y el cifrado para la comunicación segura no se encuentran en el certificado, sino como se indica anteriormente dentro del conjunto de cifrado elegido por el servidor. El certificado solo contiene información relacionada con el certificado en sí mismo . Lo que incluye, entre otros, información de validez, algoritmo de firma, información del emisor, etc.

  

Sobre la base de la respuesta anterior, tendré la pregunta más importante:   Supongo que estoy proporcionando la clave privada de mi servidor a alguien para que él   Puedo monitorear el tráfico SSL para mi servidor, luego de proporcionar   Él la clave privada lo que todas las otras cosas que necesito cuidar. Y hacer   ¿Debo decirle el algoritmo o el cifrado que estoy usando en el servidor?

Recomendaría encarecidamente que no proporcione la clave privada de su servidor para el monitoreo del tráfico SSL (por razones fuera del alcance de esta pregunta). Sin embargo, si decide compartir su clave privada, la otra parte no necesita ninguna otra información. Como el algoritmo y el cifrado no se incluyen en el certificado.

    
respondido por el RoraΖ 06.08.2015 - 14:54
fuente
2

Respuesta súper breve: el servidor y el cliente negocian qué algoritmo admiten y posteriormente usan. Se comunica durante el apretón de manos.

    
respondido por el schroeder 05.08.2015 - 22:31
fuente
1

No es una respuesta (@raz consiguió eso) pero algunos errores en su "comprensión" son demasiado grandes para los comentarios IMO:

  

El navegador enviará una solicitud al servidor para obtener algún recurso. El servidor verifica si el protocolo de la solicitud es HTTPS, si es así, enviará su certificado (este certificado ya está firmado por alguna CA (Autoridad de certificación, como Digicert)) en la respuesta.

El protocolo de enlace SSL / TLS se produce antes de que el navegador envíe la solicitud, por lo que la solicitud (incluida la URL) está cifrada. Consulte Si SSL encripta las URL, entonces, ¿cómo están las https? mensajes enrutados? y ¿SSL / TLS (https) oculta las URL? accedido

El navegador comprueba primero el esquema, y (normalmente) se conecta al puerto 443 para https en lugar de 80 para http. Para los servidores modernos que admiten múltiples "hosts virtuales" en una dirección IP, el navegador puede y generalmente envía el parte del host de la URL en una extensión llamada Indicación del nombre del servidor (SNI) para que el servidor pueda seleccionar los certificados correctos para el host deseado.

  

El navegador comprobará si el certificado es válido al validar la búsqueda de la autoridad firmante en su grupo de CA válido.

Como dice correctamente la página de Digicert, el navegador comprueba que el certificado está firmado por una CA en su tienda local y está vigente, no se ha recuperado y [para el host correcto] . La página está desactualizada en un aspecto: en la actualidad, prácticamente todos los certificados de las CA públicas como Digicert utilizan el más flexible La extensión SubjectAlternativeName (a menudo abreviada SAN) en lugar del elemento CommonName del campo Asunto para especificar los nombres de host. El efecto es básicamente el mismo.

  

[Si está bien, el navegador] genera una clave de sesión y la cifra utilizando la clave pública presente en el certificado.
  El navegador enviará esta clave de sesión cifrada al servidor y el servidor descifrará la clave de sesión. [...]

Esto se simplifica demasiado y se vuelve obsoleto. El método de intercambio de claves "RSA" original utiliza el cifrado RSA, pero el valor elegido y cifrado por el cliente no es "la" clave de sesión, sino un secreto de maestro que contribuye a las claves de sesión de múltiples : consulte enlace .

Hoy también es cada vez más común usar (varias variantes de) Diffie-Hellman lo que puede proporcionar secreto hacia adelante como lo comenta @Neil; consulte ¿Cómo funciona SSL / TLS? . El ejemplo del conjunto de cifrado TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 en la respuesta de @raz utiliza el intercambio de claves efímero de curva elíptica de Diffie-Hellman (ECDHE) Autenticado por RSA. Esto NO encripta y desencripta el premaster con RSA; En su lugar, el cliente y el servidor eligen de forma independiente. ordena al azar los elementos en un subgrupo de una curva elíptica y matemáticamente los combina para producir el premaster.

    
respondido por el dave_thompson_085 15.08.2015 - 15:17
fuente

Lea otras preguntas en las etiquetas