2012-06-09 24 views
16

La mayoría de los artículos wiki describen cómo el navegador del cliente usa la clave pública (certificado) encripta los datos confidenciales (como nombre de usuario/contraseña) y envía estos datos cifrados al servidor. El servidor usará una clave privada para descifrarlo. Obtengo esta parte Pero no hay información clara que indique cómo el servidor cifra los datos y los envía al navegador.¿Cómo encripta SSL los datos del servidor al cliente?

utiliza mi banca en línea como ejemplo:

(0) Ya certificado de confianza aceptado (clave pública) de mi banca en línea.

(1) A través de SSL URL, el navegador Mi visita https://myonlinebanking.com

(2) Mecanografié nombre de usuario/contraseña para iniciar sesión. Estos datos están encriptados, por lo que el hombre en el medio solo puede ver datos sin sentido.

(3) El servidor web del banco recibió mis datos encriptados, y usa su clave privada para descifrarlos y autenticar mi cuenta con éxito.

Ahora aquí están mis preguntas:

Cómo banco envía de nuevo mis datos? Banco cifrar los datos de respuesta por qué clave? Si el banco se encripta con "clave pública", el intermediario puede verlo tal como yo lo veo. ¿Entonces el hombre en el medio no sabe mi nombre de usuario/contraseña, pero aún puede ver el saldo de mi cuenta?

Gracias por su ayuda.

+1

Esto no está relacionado con el tema. Si tiene preguntas de programación, stackoverflow es perfecto. Si tiene preguntas de seguridad o criptografía, entonces hay un sitio stackexchange para sus necesidades. No mencionas los artículos de wiki que has estado leyendo, pero el [artículo de Wikipedia sobre TLS] (http://en.wikipedia.org/wiki/Transport_Layer_Security) sin duda responde a tus preguntas. –

+0

@Simon esta es la pregunta perfecta que tenía la intención de hacer (de hecho se parece a la pregunta que hice). Pero no entendí muy bien que la respuesta que aceptaste realmente respondía a tu pregunta: "Si el banco está encriptado con la" clave pública ", el intermediario puede verlo tal como yo lo veo. Entonces, el hombre en el medio no lo hace. ¿Conozco mi nombre de usuario/contraseña, pero aún puede ver el saldo de mi cuenta? Si lo haces correctamente, ¿puedes ayudarme a explicar la siguiente declaración de la respuesta? "su navegador verifica si el certificado está vinculado al host exacto con el que está hablando". – Darshan

Respuesta

7

El proceso TLS handshake establece una clave simétrica entre ambas partes, potencialmente usando asimétrica criptografía en el proceso (los detalles dependen de los algoritmos exactos que se negociaron entre cliente/servidor). De esta manera, la comunicación se encripta en ambos sentidos, no solo en un solo sentido.

Lo que finalmente lo protege de un MITM, es el hecho de que su navegador realiza alguna forma de validación de nombre de host. El certificado presentado por el servidor en el protocolo de enlace se verifica primero para verificar su validez. Si eso tiene éxito, su navegador verifica si el certificado está vinculado al host exacto con el que está hablando. Si se omitiera esta comprobación, un ataque MITM seguiría teniendo éxito, incluso si el resto de la comunicación seguía estrictamente el protocolo, incluidos todos los elementos criptográficos. El atacante podría simplemente pretender ser cualquier host y ejecutar el resto del protocolo diligentemente, no sabría la diferencia.

+3

¿podría explicar más detalladamente cómo el protocolo de enlace TLS encripta la respuesta del servidor? Y si lo hace, ¿cómo lo descifraría el cliente? – supertonsky

6

Usted tiene algunas suposiciones erróneas:

  • Los datos HTTP no siempre está cifrada con la clave pública del servidor, con el fin de enviarlo al servidor
  • La clave pública del servidor sólo se utiliza al principio (protocolo de intercambio) para establecer una clave segura, para el cifrado de clave segura (cifrado simétrico)
  • Toda la comunicación se realiza mediante clave secreta o cifrado de clave simétrica, donde el cliente (navegador) y el servidor utilizan la misma clave secreta para cifrar y descifrar datos.

El protocolo TLS (Transport Layer Secuirty) utiliza una combinación de cifrado asimétrico (clave pública) y cifrado simétrico (clave segura). La comunicación principal con su banco utiliza cifrado simétrico, para el cual las claves de sesión (clave segura) se establecen de forma segura durante el intercambio de señal TLS, utilizando cifrado asimétrico.

Todo está en el protocolo de enlace TLS (Transport Layer Security), que está muy bien explicado en este enlace here.

+0

La clave de sesión nunca se cifra y nunca se envía. Siempre es negociado. RFC 2246 # 8.1. – EJP

Cuestiones relacionadas