En criptografía, un protocolo de acuerdo de claves es un protocolo mediante el cual dos (o más) partes generan una clave criptográfica en función de la información proporcionada por cada parte honesta, de modo que ninguna de las partes pueda predeterminar el valor resultante. [1] En particular, todos los participantes honestos influyen en el resultado. Un protocolo de acuerdo de claves es una especialización de un protocolo de intercambio de claves. [2]
Al final del acuerdo, todas las partes comparten la misma clave. Un protocolo de acuerdo de claves impide que terceros no deseados obliguen a las partes a elegir una clave. Un acuerdo de claves seguro puede garantizar la confidencialidad y la integridad de los datos [3] en los sistemas de comunicaciones, desde aplicaciones de mensajería sencillas hasta transacciones bancarias complejas.
El acuerdo seguro se define en relación con un modelo de seguridad, por ejemplo, el Modelo Universal. [2] De manera más general, al evaluar protocolos, es importante indicar los objetivos de seguridad y el modelo de seguridad. [4] Por ejemplo, puede ser necesario que la clave de sesión esté autenticada . Un protocolo puede evaluarse para determinar su éxito solo en el contexto de sus objetivos y su modelo de ataque. [5] Un ejemplo de un modelo adversarial es el modelo Dolev-Yao .
En muchos sistemas de intercambio de claves, una parte genera la clave y la envía a la otra parte; [6] la otra parte no tiene influencia sobre la clave.
El primer protocolo de acuerdo de clave pública conocido públicamente [6] que cumple con los criterios anteriores fue el intercambio de claves Diffie-Hellman , en el que dos partes exponencian conjuntamente un generador con números aleatorios, de tal manera que un espía no puede determinar de manera factible cuál es el valor resultante utilizado para producir una clave compartida.
El intercambio de claves exponencial en sí mismo no requiere ningún acuerdo previo ni autenticación posterior entre los participantes, por lo que se lo ha descrito como un protocolo de acuerdo de claves anónimo.
El acuerdo de clave simétrico (SKA) es un método de acuerdo de claves que utiliza únicamente criptografía simétrica y funciones hash criptográficas como primitivas criptográficas . Está relacionado con el intercambio de claves autenticadas simétricas. [7]
SKA puede asumir el uso de secretos compartidos iniciales [7] o se asume un tercero de confianza con quien las partes acordantes comparten un secreto. [8] Si no hay ningún tercero presente, entonces lograr SKA puede ser trivial: asumimos que dos partes comparten un secreto inicial y han logrado SKA tautológicamente.
El SKA contrasta con los protocolos de acuerdo de claves que incluyen técnicas de criptografía asimétrica , como por ejemplo los mecanismos de encapsulación de claves .
El intercambio inicial de una clave compartida debe realizarse de manera privada y con integridad garantizada. Históricamente, esto se lograba por medios físicos, como por ejemplo mediante un servicio de mensajería de confianza .
Un ejemplo de protocolo SKA es el protocolo de clave simétrica Needham-Schroeder . Este protocolo establece una clave de sesión entre dos partes de la misma red , utilizando un servidor como tercero de confianza. El protocolo Needham-Schroeder original es vulnerable a un ataque de repetición. Se incluyen marcas de tiempo y nonces para solucionar este ataque. Constituye la base del protocolo Kerberos .
Boyd et al. [9] clasifican los protocolos de acuerdo de clave entre dos partes según dos criterios, como sigue:
La clave precompartida puede ser compartida entre dos partes, o cada una de ellas puede compartir una clave con un tercero de confianza. Si no existe un canal seguro (como el que se puede establecer mediante una clave precompartida), es imposible crear una clave de sesión autenticada. [10]
La clave de sesión puede generarse mediante: transporte de claves, acuerdo de claves e híbrido. Si no hay un tercero de confianza, los casos de transporte de claves y generación de claves de sesión híbridas son indistinguibles. SKA se ocupa de protocolos en los que la clave de sesión se establece utilizando únicamente primitivas simétricas.
El intercambio de claves anónimo, como Diffie-Hellman, no proporciona autenticación de las partes y, por lo tanto, es vulnerable a ataques del tipo «man-in-the-middle» .
Se ha desarrollado una amplia variedad de esquemas y protocolos de autenticación criptográfica para proporcionar un acuerdo de clave autenticado que evite ataques de intermediarios y otros ataques similares. Estos métodos generalmente vinculan matemáticamente la clave acordada a otros datos acordados, como los siguientes:
Un mecanismo ampliamente utilizado para derrotar tales ataques es el uso de claves firmadas digitalmente que deben tener integridad asegurada: si la clave de Bob está firmada por un tercero de confianza que avala su identidad, Alice puede tener una confianza considerable en que una clave firmada que recibe no es un intento de interceptación por parte de Eve. Cuando Alice y Bob tienen una infraestructura de clave pública, pueden firmar digitalmente una clave Diffie-Hellman acordada, o claves públicas Diffie-Hellman intercambiadas. Estas claves firmadas, a veces firmadas por una autoridad de certificación , son uno de los principales mecanismos utilizados para el tráfico web seguro (incluidos los protocolos HTTPS , SSL o Transport Layer Security ). Otros ejemplos específicos son MQV , YAK y el componente ISAKMP del conjunto de protocolos IPsec para proteger las comunicaciones del Protocolo de Internet. Sin embargo, estos sistemas requieren cuidado al respaldar la coincidencia entre la información de identidad y las claves públicas por parte de las autoridades de certificación para funcionar correctamente.
Los sistemas híbridos utilizan criptografía de clave pública para intercambiar claves secretas, que luego se utilizan en sistemas de criptografía de clave simétrica. La mayoría de las aplicaciones prácticas de la criptografía utilizan una combinación de funciones criptográficas para implementar un sistema general que proporcione las cuatro características deseables de las comunicaciones seguras (confidencialidad, integridad, autenticación y no repudio).
Los protocolos de acuerdo de claves autenticadas con contraseña requieren el establecimiento por separado de una contraseña (que puede ser más pequeña que una clave) de una manera que sea privada y con integridad asegurada. Estos están diseñados para resistir ataques de intermediarios y otros ataques activos a la contraseña y las claves establecidas. Por ejemplo, DH- EKE , SPEKE y SRP son variaciones autenticadas con contraseña de Diffie-Hellman.
Si se dispone de una forma de verificar una clave compartida en un canal público que garantice la integridad, se puede realizar un intercambio de claves Diffie-Hellman para obtener una clave compartida a corto plazo y, posteriormente, autenticar que las claves coinciden. Una forma de hacerlo es utilizar una lectura de la clave autenticada por voz, como en PGPfone . Sin embargo, la autenticación por voz presupone que no es factible que un intermediario falsifique la voz de un participante a otro en tiempo real, lo que puede ser una suposición indeseable. Dichos protocolos pueden diseñarse para funcionar incluso con un valor público pequeño, como una contraseña. Se han propuesto variaciones sobre este tema para los protocolos de emparejamiento Bluetooth .
En un intento por evitar el uso de factores de autenticación adicionales fuera de banda, Davies y Price propusieron el uso del protocolo de interbloqueo de Ron Rivest y Adi Shamir , que ha sido objeto de ataques y refinamientos posteriores.