¿Cómo negocian dos computadoras una conexión cifrada en Internet para que nadie que capture los paquetes pueda descifrarla?

La respuesta se encuentra en un método conocido como cifrado de clave pública-privada junto con un concepto conocido como ‘la cadena de confianza’. Esta técnica de cifrado utiliza un algoritmo con dos claves:

  • La clave privada: una pieza de información mantenida solo por el propietario.
  • La clave pública: una información que se puede compartir públicamente con cualquier persona.

Las dos claves están relacionadas como parte de un algoritmo de tal manera que se puedan hacer los siguientes tipos de declaraciones:

  1. Cualquiera puede cifrar un mensaje con la clave pública de otra persona, de modo que solo el propietario de la clave privada correspondiente pueda descifrarlo.
  2. Un remitente puede firmar un mensaje con su clave privada para que cualquier persona con la clave pública pueda garantizar que en realidad proviene del remitente y que no ha sido alterado.
  3. Un efecto relacionado con (2) es que los certificados de clave pública pueden ser firmados por una autoridad confiable. Si tiene el certificado público de una autoridad en la que confía, puede confiar en los certificados públicos de otros que esa autoridad ha firmado. Así es como se implementa la ‘cadena de confianza’. Su navegador web (Firefox, Safari, Chrome, etc.) viene preinstalado con los certificados públicos de las ‘autoridades de firma’ confiables, como Verisign y otros que ‘avalan’ los certificados de los sitios web en todas partes.

Dados estos conceptos, se puede establecer una conexión segura de la siguiente manera:

  1. La computadora A publica su certificado público, firmado por una autoridad de certificación de confianza.
  2. Debido a que se comparte públicamente, la computadora B puede obtener una copia del certificado de A y puede confiar en él porque está firmado por una autoridad confiable.
  3. La computadora B usa el certificado público de A para enviar un mensaje cifrado a A que solo A puede decodificar. En este punto, esta es una comunicación segura unidireccional.
  4. Dentro de este canal, B puede enviar un ‘certificado público’ propio para que A lo use al cifrar los datos para enviarlos de vuelta a B. Ahora tenemos una comunicación segura bidireccional.

Hasta ahora, no es necesario que el certificado público que B envió sea firmado y confiable. Literalmente, se puede generar sobre la marcha y siempre que B mantenga la clave privada correspondiente, el canal se puede cifrar de forma segura. Sin embargo, hasta este punto, mientras las comunicaciones están encriptadas, A realmente no sabe quién es B. Para identificar (o “autenticar”) quién es B, A puede

  • solicite a B que se autentique dentro de la conexión segura utilizando un par de nombre de usuario y contraseña o
  • solicite a B que proporcione un certificado público firmado por una autoridad en la que A confía. Este método, dado que involucra a ambas partes que proporcionan un certificado público firmado por una autoridad confiable, se conoce comúnmente como autenticación de certificado ‘mutuo’.

Una vez que A autentica quién es B, puede decidir qué tipo de privilegios de acceso otorgar.

Lo anterior pretende ser una explicación simple de muy alto nivel. A propósito, he omitido todos los detalles de miedo, como certificados x509, archivos PEM, almacenes de claves, cookies, etc., etc. Espero que esto sea útil.

Ya hay algunas buenas respuestas para esto, pero quería mencionar algunos recursos que son útiles para comprender el problema básico y cómo se resuelve.

Lo que se usa en línea se llama criptografía asimétrica o criptografía de clave pública y está diseñado con la idea de que algunos pueden capturar los paquetes y aún así no pueden descifrar los mensajes.

Lo que sucede es que su computadora y el servidor seguro en línea hacen un apretón de manos usando la criptografía de clave pública, y luego, una vez que acuerdan un secreto compartido, cambian al cifrado simétrico usando el secreto compartido.

La mejor manera que he visto para explicar la criptografía asimétrica es mediante el uso de pintura mixta como una alegoría. Lo que suena extraño, pero tiene sentido cuando lo ves como una explicación.

Aquí está la versión corta:

y abajo está la versión más larga.

Solo tenga en cuenta que los ejemplos son simples para que sea fácil entender el punto. Los números reales utilizados son masivos y se eligen de tal manera que se reduzca la probabilidad de que alguien haga una suposición afortunada. Las posibilidades de que un tercero adivine el secreto nunca son cero, pero estadísticamente no va a suceder.

Esto es lo básico y la necesidad de algoritmos de cifrado de clave pública.

No puedo describirlo mejor que Wikipedia. Podría haber copiado y pegado, pero aquí hay una buena descripción …

RSA (criptosistema) – Wikipedia

Seguridad de la capa de transporte – Wikipedia