Protocolo de establecimiento de claves
Un protocolo de establecimiento de claves (key establishment protocols), también llamados protocolos de intercambio de claves (en inglés key exchange protocols) es un protocolo criptográfico en el que se establece una secuencia de pasos entre dos o más participantes a través de la cual los participantes se ponen de acuerdo en el valor de una información secreta compartida. A la información secreta compartida se le suele llamar clave debido a que esa información se suele usar como clave de algún algoritmo criptográfico.
Ejemplos
- Puzzles de Merkle. Fué el primer protocolo de este tipo.
- Protocolo de Diffie-Hellman
- El protocolo ElGamal de negociación de claves provee negociación en un solo paso y autenticación unilateral (del receptor hacia el emisor) si la clave pública del receptor es conocida de antemano por el emisor.
- El protocolo MTI/A0 empleando dos mensajes y sin requerir firmas, proporciona claves de sesión variables en el tiempo con mutua autenticación implícita de claves contra ataques pasivos.
- El protocolo STS es una variante de tres pasos de la versión básica que permite el establecimiento de una clave secreta compartida entre dos partes con mutua autenticación de entidades y mutua autenticación explícita de las claves. El protocolo también facilita el anonimato: las identidades de A y B pueden protegerse contra el adversario E. El método emplea firmas digitales.
Intercambio de claves o acuerdo de clave
Antes de que un cliente y el servidor puedan empezar a intercambiar información protegida por TLS, deben intercambiar en forma segura o acordar una clave de cifrado y una clave para usar cuando se encripte los datos.
Entre los métodos utilizados para el intercambio/acuerdo de claves son:
- Claves públicas: El cifrado asimétrico (también conocido como cifrado con clave pública), utiliza una clave pública para el cifrado y una clave secreta para el descifrado.
- Claves privadas: El cifrado simétrico (también conocido como cifrado de clave privada o crifrado de clave secreta) consiste en utilizar la misma clave para el cifrado y el descifrado.
- Generadas con RSA (denotado TLS_RSA en el protocolo de handshake TLS)
- Diffie-Hellman (llamado TLS_DH)
- Diffie-Hellman efímero (denotado TLS_DHE)
- Diffie-Hellman de Curva Elíptica (denotado TLS_ECDH)
- Diffie-Hellman de Curva Elíptica efímero (TLS_ECDHE)
- Diffie-Hellman anónimo (TLS_DH_anon)
- PSK (TLS_PSK): es una clave compartida.
El método de acuerdo de claves TLS_DH_anon no autentica el servidor o el usuario y por lo tanto rara vez se utiliza. Sólo TLS_DHE y TLS_ECDHE proporcionan “perfect forward secrecy” (siglas PFS), traducido normalmente al castellano por secreto-perfecto-hacia-adelante.
Los certificados de clave pública que se utilizan durante el intercambio/acuerdo también varían en el tamaño de las claves de cifrado públicas/privadas utilizadas durante el intercambio y, por tanto, en la solidez de la seguridad que proveen. En julio de 2013, Google anunció que dejaría de utilizar claves públicas 1024 bits y cambiaría a claves de 2048 bits para aumentar la seguridad de la encriptación TLS que proporciona a sus usuarios.10
Vocabulario:
Perfect Forward Secrecy (siglas PFS), traducido normalmente al castellano por secreto-perfecto-hacia-adelante, es la propiedad de los sistemas criptográficos que garantiza que el descubrimiento de las claves utilizadas actualmente no compromete la seguridad de las claves usadas con anterioridad (no las revela). Por tanto la seguridad de lo que se hizo usando claves antiguas persiste. Cuando un sistema tiene secreto-perfecto-hacia-adelante se dice que el sistema es seguro-hacia-adelante (en inglés forward-secure).
Diffie-Hellman: este algoritmo es un protocolo para realizar el intercambio de claves. Se creó para solucionar el problema de los cifrados de clave privada o simétrica en el intercambio de claves.
RSA: es un algoritmo de cifrado de clave pública (o asimétrica) por bloques, que como todos los cifrados de clave pública tiene dos claves: una pública, que se distribuye a los usuarios que quiera el propietario de ella, y otra privada, la cual es guardada en secreto por su propietario. Así cuando se envía un mensaje, el emisor usa la clave pública de cifrado del receptor para cifrar el mensaje y una vez que dicho mensaje llega al receptor, éste se ocupa de descifrarlo usando su clave oculta.
Cifrado Elgamal: este algoritmo está basado en el algoritmo de Diffie-Hellman para el intercambio de claves.
PSK (en inglés pre-shared key) es una clave secreta compartida con anterioridad entre las dos partes usando algún canal seguro antes de que se utilice. Para crear una clave de secreto compartido, se debe utilizar la función de derivación de claves. Estos sistemas utilizan casi siempre algoritmos criptográficos de clave simétrica o privada. El término PSK se utiliza en cifrado Wi-Fi como WEP o WPA, donde tanto el punto de acceso inalámbrico (AP) como todos los clientes comparten la misma clave.