¿Cómo se intercambia la clave en un protocolo de cifrado de clave privada?


12

Windows NT utilizó un protocolo punto a punto donde un cliente puede comunicarse "de forma segura" con un servidor mediante el uso de un cifrado de flujo para cifrar una matriz de mensajes con alguna clave . El servidor también cifra su respuesta con la misma clave k . Pero, ¿cómo es consciente de esta clave?kk

Más general: si Alice y Bob usan algún algoritmo de cifrado / descifrado que funciona con la misma clave privada k , ¿cuál es una forma segura de intercambiar esta clave? (sin usar una clave diferente por supuesto)

Esto es algo que siempre me he preguntado mientras estudiaba criptografía de clave privada.


Respuestas:


6

La mayoría de los algoritmos de clave privada se basan en la inviabilidad de ciertos cálculos, como la factorización de un número en sus factores primos dada la infraestructura informática actual.

Al mismo tiempo, la mayoría de ellos también son computacionalmente intensivos cuando se usan para el cifrado y descifrado y, por lo tanto, la secuencia de mensajes completa no se cifra utilizando las claves privadas. Por el contrario, el mensaje se cifra utilizando algún otro algoritmo (menos intensivo) y la clave utilizada para ese cifrado se cifra utilizando la clave privada.

Por supuesto, como usted señala, el intercambio seguro de claves sigue siendo un problema que puede ser abordado en cierta medida por:

  • Intercambio de claves Diffie-Hellman : utiliza artimética modular para intercambiar claves de forma segura.
  • Centro de distribución de clave única / múltiple (KDC) : utiliza un sistema confiable de venta de entradas basado en terceros.
  • Protocolo de autenticación Kerberos : un protocolo relativamente complejo basado en KDC.

7

Siempre que Alice y Bob quieran ponerse de acuerdo sobre una misma clave privada, el método más popular es usar Diffie-Hellman . Funciona de la siguiente manera:

  1. Dos valores públicos se eligen primero permite decir y . (Estos son generalmente números primos muy grandes y conocidos por todos los que usan ese protocolo).g = 17n=13g=17

  2. Alice elige un valor privado y Bob elige un valor privado . Estos son privados para ellos mismos.b = 7a=3b=7

  3. Alice calcula: y Bob calcula: , en este caso y e intercambian valores entre sí (puede ser a través del chat), es decir, todo el mundo sabe los valores de y .A=gamodnB=gbmodnA=12B=4AB

  4. Alice calcula: y Bob calcula: , en este caso .K=BamodnK=AbmodnK=12

Ahora Alice y Bob han acordado el valor como su clave. Tenga en cuenta que dado que el valor y y números primos muy grandes es casi imposible que un intruso que factorizar ellos y calcular la clave de sí mismo.Kng

Un problema en la criptografía de clave privada es el ataque man-in-the-middle y esa es una de las principales razones para elegir la criptografía de clave pública sobre la criptografía de clave privada.


5

Primero, un punto de terminología: lo que describe es cifrado simétrico , y una clave que se comparte entre los participantes generalmente se conoce como clave secreta; “Clave privada” generalmente significa la parte de una clave en la criptografía de clave pública que solo un participante conoce.

Hay dos formas de difundir una clave secreta: puede transportarse de una manera físicamente segura, o puede transportarse utilizando alguna otra forma de cifrado, comúnmente criptografía de clave pública.

Hay formas de intercambiar una clave secreta que no requiere un canal de comunicación secreto. El más popular es el protocolo de intercambio de claves Diffie-Hellman. El principio de Diffie-Hellman es que cada participante genera su propio par de claves, y hay una operación matemática que construye un gran número a partir de una clave pública y una clave privada. Esta operación matemática tiene una propiedad muy interesante: el gran número puede construirse a partir de la clave privada de Alice y la clave pública de Bob, o de la clave privada de Bob y la clave pública de Alice; obtienes el mismo número de cualquier manera. Entonces, Alice y Bob intercambian sus claves públicas, y ambas partes conocen el gran número, que luego puede usarse como una clave secreta. Un espía puede encontrar ambas claves públicas, pero es imposible¹ encontrar el gran número solo de las claves públicas.

El intercambio de claves Diffie-Hellman permite a dos partes intercambiar un secreto, sin importar quién esté escuchando. Sin embargo, no autentica a Alice a Bob o viceversa. Por lo tanto, es susceptible de un ataque de hombre en el medio : Mallory realiza el intercambio de claves con Alice (que cree que está hablando con Bob) y por separado con Bob (que cree que está hablando con Alice), y así decide o menos sabe el secreto.

Cuando el atacante puede interceptar e inyectar mensajes, se necesita más criptografía para que los participantes se autentiquen entre sí. (Un atacante pasivo significa efectivamente que el protocolo de transporte subyacente proporciona autenticación). La manera fácil es que cada participante ya conozca la clave pública del otro. Si Alice conoce la clave pública de Bob:

  • Alice puede autenticar a Bob enviándole un desafío: un valor aleatorio (un nonce ) encriptado con la clave pública de Bob. Si Bob puede descifrar ese valor y devolverlo, Alice sabe que realmente está hablando con Bob.
  • Bob puede autenticarse con Alice enviándole un mensaje firmado con su clave pública. Alice verifica la firma para verificar que realmente está hablando con Bob.

Hay muchas variantes que usan uno de estos métodos (u otra variante) en una dirección y el mismo método o uno diferente en la otra dirección, o que se autentican en una sola dirección. Por ejemplo, SSL / TLS (la capa de criptografía para muchos protocolos como HTTPS, SMTPS, IMAPS, etc.) puede usar varias combinaciones de cifrado diferentes y, por lo general, autentica el servidor al cliente, pero opcionalmente también puede autenticarlo. Diffie-Hellman es lento y engorroso para esta aplicación; El algoritmo más ampliamente utilizado con la distribución de claves públicas es RSA .

Por supuesto, Alice y Bob podrían no conocer la clave pública del otro de antemano. Por lo tanto, confían en una cadena de confianza: Bob le envía a Alice su clave pública, junto con una declaración firmada de un tercero que afirma que esta clave es realmente la clave pública de Bob. Esta declaración firmada se denomina certificado y la tercera parte es una autoridad de certificación . El tercero puede ser conocido por Bob, o su identidad puede ser confirmada por un tercero, y así sucesivamente. Eventualmente, esta cadena de confianza (... se vale de Dominique para Charlie, que se hace cargo de Bob) debe llegar a una parte de Ron en la que Bob ya confía, lo que significa que Bob tiene la clave pública de Ron y confía en que Ron solo firme certificados válidos.

Existen protocolos que no dependen de la criptografía de clave pública. En particular, el protocolo Kerberos se usa tanto en redes basadas en Unix como en Windows para establecer conexiones entre un cliente y un servidor. Kerberos usa un servidor de autenticación central llamado centro de distribución de claves (KDC). El KDC debe tener la contraseña del usuario almacenada en una base de datos, y el cliente normalmente le pide al usuario la contraseña. Para evitar exponer la contraseña, el protocolo no usa la contraseña directamente, sino un hash criptográfico o, más generalmente, una función de derivación de clave aplicada a la contraseña.

Con este secreto compartido, el cliente y el KDC establecen un canal seguro y el KDC envía al cliente un "ticket". El ticket contiene una clave de sesión (es decir, una clave secreta recién generada), así como una copia de la clave que se cifra con otra clave simétrica compartida entre el KDC y el servidor con el que el cliente desea contactar. El cliente reenvía esta copia cifrada al servidor. El servidor descifra este mensaje para obtener la clave de sesión y genera un nonce que cifra con la clave de sesión y envía de vuelta al cliente. Luego, el cliente inicia un canal seguro con el servidor, encriptado con la clave de sesión, y comienza mostrando que podría descifrar el nonce: esto autentica al cliente en el servidor. El establecimiento de una sesión Kerberos es una variante del protocolo Needham-Schroeder .

¹ En el sentido de que los criptógrafos se han esforzado mucho, pero la mejor manera en que lo han encontrado requiere una cantidad inalcanzable de potencia informática.



3

Siempre existe la solución trivial: los usuarios se encuentran e intercambian claves. Esto no es muy práctico para muchos casos, pero es posible.

Además del protocolo de intercambio de claves Diffie-Hellman (DH), también hay protocolos de distribución de claves cuánticas . Uno de los protocolos QKD más conocidos es el protocolo Bennett-Brassard, BB84 .

La ventaja de BB84 sobre DH es que DH es seguro solo si el logaritmo discreto no se puede hacer de manera eficiente (vea la suposición de logaritmo discreto y también la suposición DDH relacionada ). Sin embargo, BB84 es teóricamente seguro de información. Es decir, incluso si , BB84 todavía sería seguro (pero DH no).P=NP

Por otro lado, el ataque MITM también es un problema para BB84, y uno debe suponer que los usuarios usan un canal autenticado para superar este problema (pero esto generalmente requiere que compartan previamente una clave de autenticación, y volvemos al punto de partida).

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.