Intercambio de claves criptográficas
Anteriormente discutimos la diferencia entre el cifrado simétrico y asimétrico, y hoy hablaremos sobre cómo se intercambian realmente las claves.
En general, los protocolos de intercambio de claves criptográficas o intercambio de claves cifradas (EKE) funcionan al permitir que las dos partes generen un secreto compartido sin revelar el secreto a terceros. Esto normalmente se hace usando una combinación de criptografía de clave pública y algoritmos matemáticos. El secreto compartido se puede utilizar como clave para un cifrado simétrico, lo que permite que las dos partes se comuniquen de forma segura.
Uso
Como el método utiliza una clave pública, naturalmente solo se aplica al cifrado asimétrico, ya que en el cifrado simétrico las claves no se comparten, sino que se conocen y acuerdan de antemano.
El intercambio de claves criptográficas es un método de intercambio seguro de claves criptográficas a través de una red. Es un aspecto fundamental de muchos protocolos criptográficos, ya que permite que dos partes establezcan un secreto compartido que se puede utilizar para comunicarse de forma segura entre sí.
El intercambio se utiliza en una variedad de aplicaciones, incluida la comunicación segura, las transacciones en línea seguras y el control de acceso. A menudo se utiliza para establecer una conexión segura entre dos partes, como un cliente y un servidor, o entre dos dispositivos. Por lo tanto, antes de que cualquier archivo pueda enviarse de forma segura a través de protocolos como FTPS, HTTPS y SFTP, las dos partes que se comunican primero deben participar en un intercambio de claves.
Descripción general
En la forma más general de EKE, al menos una parte cifra una clave pública efímera (única) usando una contraseña y la envía a una segunda parte, quien la descifra y la usa para negociar una clave compartida con la primera parte.
Existe otra variación de este esquema, llamada Augmented-EKE. Los métodos aumentados tienen el objetivo adicional de garantizar que un atacante no pueda utilizar los datos de verificación de contraseña robados de un servidor para hacerse pasar por el cliente, a menos que el atacante primero determine la contraseña (por ejemplo, realizando un ataque de fuerza bruta en los datos robados).
Los dos algoritmos de intercambio de claves más populares son RSA y Diffie-Hellman (ahora conocido como Diffie-Helmlman-Merkle). Probablemente no sería demasiado exagerado decir que la llegada de estos dos protocolos de intercambio clave aceleró el crecimiento de Internet, especialmente en lo que respecta a los negocios. Esto se debe a que estos dos protocolos permitieron a los clientes y servidores, así como a servidores y servidores, intercambiar claves criptográficas a través de un medio inseguro (Internet) y, a su vez, permitirles realizar transacciones electrónicas de manera segura.
Últimamente, la aparición de la criptografía de curva elíptica ha introducido nuevos protocolos de intercambio como ECDH (Elliptic Curve Diffie-Hellman) y ECDHE (Elliptic Curve Diffie-Hellman Ephemeral).
Nos centraremos en la familia Diffie-Hellman, conocida como DH-EKE, que ha sobrevivido a múltiples ataques a lo largo de los años y ha dado lugar a variaciones mejoradas.
Diffie-Hellman
En 1976, Whitfield Diffie y Martin Hellman publicaron un protocolo criptográfico llamado intercambio de claves Diffie-Hellman (DH) basado en conceptos desarrollados por Ralph Merkle, estudiante de doctorado de Hellman. El protocolo permite a los usuarios intercambiar claves secretas de forma segura incluso si un oponente está monitoreando ese canal de comunicación. Se basa en la idea de usar la exponenciación en un campo finito para generar un secreto compartido que se puede usar para cifrar y descifrar mensajes.
Aquí hay un ejemplo del proceso de intercambio de claves Diffie-Hellman y como se ilustra en el siguiente diagrama:
Alice y Bob acuerdan un campo finito y un número primo dentro de ese campo (esto se conoce como el "módulo"). Digamos que eligen el cuerpo finito GF(23), p , y el número primo 5, g .
- Alice selecciona un número entero secreto, "a", y Bob selecciona un número entero secreto, "b". Estos enteros se utilizarán para generar el secreto compartido.
- Alice calcula A = 5^a mod 23 y envía A a Bob. Bob calcula B = 5^b mod 23 y envía B a Alice.
- Alice calcula el secreto compartido realizando el siguiente cálculo: sharedSecret = B^a mod 23. Bob calcula el secreto compartido usando el mismo cálculo: sharedSecret = A^b mod 23.
- Tanto Alice como Bob ahora tienen el secreto compartido, que pueden usar como clave para cifrar y descifrar mensajes.
# Alice's side of thNote that in this example, the shared secret is the same for both Alice and Bob, even though they used different secret integers to generate it. This is because the shared secret is generated using a mathematical function that is commutative, meaning that the order of the operands does not affect the result. This property is what allows Alice and Bob to establish a shared secret without revealing their secret integers to each other.e key exchange
# Choose finite field and prime number
field = GF(23)
prime = 5
# Choose secret integer
secretA = 6
# Compute A and send to Bob
A = (prime ^ secretA) mod field
send A to Bob
# Receive B from Bob
B = receive from Bob
# Compute shared secret
sharedSecret = (B ^ secretA) mod field
# Bob's side of the key exchange
# Choose secret integer
secretB = 15
# Compute B and send to Alice
B = (prime ^ secretB) mod field
send B to Alice
# Receive A from Alice
A = receive from Alice
# Compute shared secret
sharedSecret = (A ^ secretB) mod field
Esta propiedad es lo que permite a Alice y Bob establecer un secreto compartido sin revelar sus enteros secretos entre sí.
La razón por la que el intercambio DH funciona es la criptografía de logaritmo discreto, que se basa en la dificultad de resolver el problema del logaritmo discreto.
Brevemente, es un problema matemático que consiste en encontrar el número entero “x” en la ecuación “g^x = y mod p”, donde se conocen “g” e “y”, y “p” es un número primo. Este problema se considera difícil de resolver porque no se conoce un algoritmo eficiente para encontrar el valor de "x" para valores arbitrarios de "g", "y" y "p".
En general, aunque Diffie-Hellman es un protocolo de intercambio de claves efectivo y ampliamente utilizado, existen varias limitaciones prácticas, lo que hace que Elliptic Curve Diffie-Hellman (ECDH) sea una opción preferible, si es posible.
Curva elíptica Diffie-Hellman (ECDH)
Elliptic Curve Diffie-Hellman (ECDH) es una variante del protocolo de intercambio de claves Diffie-Hellman que utiliza criptografía de curva elíptica en lugar de la exponenciación tradicional en un campo finito. ECDH tiene varias ventajas sobre el Diffie-Hellman ordinario:
- ECDH es más eficiente: las operaciones de curva elíptica son generalmente más rápidas y requieren menos poder computacional que las operaciones de campo finito, lo que hace que ECDH sea más eficiente que Diffie-Hellman ordinario. Lee más sobre su funcionamiento y sus ventajas en el artículo anterior .
- ECDH es más seguro: la criptografía de curva elíptica generalmente se considera más segura que la criptografía de campo finito, ya que es más resistente a ciertos tipos de ataques.
- Las claves ECDH son más cortas: debido a que las operaciones de curva elíptica usan números más pequeños, las claves ECDH son generalmente más cortas que las claves Diffie-Hellman ordinarias, lo que las hace más fáciles de transmitir y almacenar.
- ECDH tiene un tamaño de clave más pequeño: debido a que las operaciones de curva elíptica son más eficientes y seguras, ECDH puede lograr el mismo nivel de seguridad que Diffie-Hellman ordinario con un tamaño de clave más pequeño. Esto puede ser particularmente útil en aplicaciones donde el tamaño de la clave es un factor limitante, como en ciertos tipos de dispositivos de hardware.
Curva elíptica Diffie-Hellman Efímera (ECDHE)
Elliptic Curve Diffie-Hellman Ephemeral (ECDHE) es una variante de Elliptic Curve Diffie-Hellman (ECDH), que utiliza claves efímeras.
En ECDHE, cada parte genera un nuevo par de claves de corta duración para cada sesión, en lugar de utilizar un par de claves estáticas de larga duración como en ECDH. Esto tiene varias ventajas:
- Seguridad mejorada: debido a que ECDHE usa claves efímeras que solo se usan para una sola sesión, es más resistente a ciertos tipos de ataques, como los ataques de repetición, en los que un atacante captura y reutiliza una clave de una sesión anterior.
- Secreto directo: en ECDHE, el secreto compartido se deriva de las claves efímeras, que se descartan después de la sesión. Esto significa que incluso si un atacante obtiene una copia de las claves efímeras, no podrá descifrar la comunicación pasada, ya que el secreto compartido ya no se conoce.
- Gestión de claves simplificada: en ECDHE, cada parte genera un nuevo par de claves para cada sesión, en lugar de gestionar un par de claves estáticas de larga duración. Esto puede simplificar la administración de claves y reducir el riesgo de compromiso de claves.

![¿Qué es una lista vinculada, de todos modos? [Parte 1]](https://post.nghiatu.com/assets/images/m/max/724/1*Xokk6XOjWyIGCBujkJsCzQ.jpeg)



































