Intercambio de claves Diffie-Hellman
O protocolo de intercambio de claves Diffie-Hellman foi o primeiro algoritmo de clave pública. Foi desenvolvido por Whitfield Diffie e Martin Hellman en 1976, e baséase nas propiedades dos logaritmos discretos. É un protocolo de intercambio de clave simétrica, é dicir, emprégase para acordar unha clave común, , entre interlocutores, pero non para cifrar e descifrar. Utilízase cando a canle de comunicacións para intercambiar a clave simétrica non é segura.[1]
Descrición do algoritmo
[editar | editar a fonte]Definición matemática xeral
[editar | editar a fonte]Sexa un grupo multiplicativo e sexa un xerador de . Tense que o par é a clave pública e que a clave privada é un enteiro aleatorio que selecciona cada individuo e que manteñen en segredo. Sexa o enteiro que selecciona un individuo e o enteiro que selecciona o outro. Cada un envíalle ao outro ou , respectivamente. Deste xeito, cada un deles pode obter a clave de forma independente, pois, facendo as operacións dentro do grupo, tense que .[2]
Definición habitual
[editar | editar a fonte]Como caso particular, adóitase empregar como grupo multiplicativo o grupo , con primo. É dicir, o grupo é o conxunto de números comprendidos entre e , ambos incluídos. Como xerador, utilízase un . Así, o par é a clave pública. Agora, cada usuario escolle un número aleatorio dentro do grupo, e , e envíalle ao outro usuario, e , respectivamente. Para obter a clave , cada un deles ten que facer, respectivamente, a operación e .[2]
Exemplo
[editar | editar a fonte]
Ánxela e Breixo queren acordar unha clave simétrica para utilizar no cifrado simétrico. Para iso, acordan publicamente dous números: o primo e o xerador . Toman e .
Agora, Ánxela escolle un número aleatorio , calcula , é dicir, , e envíallo a Breixo. Por outra banda, Breixo escolle tamén un número aleatorio, neste caso, , e envíalle a Ánxela , é dicir, .
A continuación, Ánxela calcula , e Breixo calcula . Como vemos, ambos números son iguais, polo que é a clave que poden empregar para o cifrado simétrico.
Características
[editar | editar a fonte]A vantaxe deste algoritmo é que obter a clave sen coñecer algún dos números privados é computacionalmente inviable cando se fai moi grande. Porén, hai que ter coidado na escolla do grupo, pois en función de como se seleccione, pode ser que descompoñer a orde do grupo sexa relativamente sinxelo. O exemplo anterior deu como clave , pois Ánxela, ao facer a primeira operación, obtivo como resultado un . Neste caso, Ánxela tería que escoller outro número privado, pois no caso de que algunha das operacións dea ( ou ), é sinxelo descompoñer a orde do grupo, facilitando ataques computacionais. O grupo máis empregado (sen ter en conta o mundo das curvas elípticas) é , onde e é un primo de Sophie-Germain.
Outra característica deste protocolo é que serve para transmitir información por canles non seguras. Isto débese a que aínda que se poidan ver os números e que viaxan pola rede, ao non coñecer e , é imposible coñecer a clave.[2]
Susceptible a ataques man-in-the-middle
[editar | editar a fonte]Este algoritmo só funciona correctamente se hai a certeza de que quen está enviando a información é quen di ser. Pero isto non ten por que ser sempre así, xa que pode ser que no momento de transmitir os datos do algoritmo, alguén os intercepte e os modifique. Este tipo de ataque chámase atacante no medio, comunmente coñecido en inglés como man-in-the-middle.

Na imaxe pódese observar como o atacante intercepta os datos e engana aos interlocutores. Ánxela pensa que lle está enviando o valor a Breixo, pero en realidade, estallo enviando ao atacante, pois este interceptou a mensaxe. O atacante tamén colleu un número privado, igual que Ánxela e Breixo: . Agora, o atacante calcula co seu número privado , e envíalle a Ánxela . A continuación, Ánxela calcula , pensando que é o valor que lle devolveu Breixo. Así, o atacante e Ánxela xa teñen unha clave coa que poden cifrar e descifrar mensaxes, pero Ánxela pensa que está compartindo a clave con Breixo, non co atacante.
De igual modo ocorre con Breixo. Este mándalle a Ánxela o valor , mais o atacante no medio intercéptao e recíbeo. Fai a operación e envíalle a Breixo . Breixo, que pensa que este número foi o que lle mandou Ánxela, calcula , polo que agora Breixo e o atacante teñen unha clave única coa que cifrar mensaxes.
Así, cando Breixo lle mande unha mensaxe a Ánxela, cífraa coa clave , o atacante intercéptaa, descífraa coa clave e ve o contido da mensaxe. Despois de lela, cifra a mensaxe coa clave e mándalla a Ánxela. Deste xeito, a comunicación entre Ánxela e Breixo xa non é privada. Se o que quere o atacante é modificar a información en vez de lela, unha vez descifre coa clave de Breixo, pode escoller outro texto distinto, cifralo coa clave de Ánxela e enviarllo. Así, Ánxela pensa que foi Breixo quen mandou esas mensaxes, mais están modificadas polo atacante.[3]
Evitar o ataque man-in-the-middle
[editar | editar a fonte]Para evitar o ataque anteriormente mencionado é necesario estar seguros de que a persoa que nos manda a información é quen di ser. Isto pódese solucionar cun protocolo de firma de clave pública ou transmitindo as mensaxes por unha canle segura, onde os atacantes non poidan capturar as mensaxes intercambiadas.[3]
Usos
[editar | editar a fonte]O protocolo Diffie-Hellman úsase para intercambiar claves simétricas, que logo se usarán para cifrar mensaxes, cando a canle de comunicación non é segura. Para que un protocolo sexa seguro, a información ten que ir cifrada. Xeralmente cífrase co protocolo de clave simétrica, onde se precisa unha clave común entre os usuarios que realizan a comunicación. Os integrantes da comunicación teñen que compartir esa clave dalgún xeito entre eles, e se a canle de comunicación non é segura, calquera pode interceptala, podendo descifrar as mensaxes posteriores que se cifren con ela. Por tanto, utilízase este protocolo ao inicio das comunicacións para intercambiar as claves, pois non é necesario unha canle segura para que ambas partes obteñan a clave.
O intercambio de claves Diffie-Hellman utilízase na maioría de protocolos seguros. Algúns deles son SSL e TLS, SSH, SecureFTP ou IPsec.[4]
Notas
[editar | editar a fonte]- ↑ "Algoritmo Diffie-Hellman". CCN-CERT CNI (en castelán). Consultado o 17-06-2025.
- 1 2 3 Whitfield, Diffie; Martin, Hellman (Novembro, 1976). "New Directions in Cryptography" [Novas direccións en criptografía] (PDF). IEEE Transactions on information Theory (en inglés) 22 (6): 644–654. doi:10.1109/TIT.1976.1055638.
- 1 2 "Understanding Diffie-Hellman Key Exchange and Man-in-the-Middle Attacks" [Entendendo o protocolo de intercambio de claves Diffie-Hellman e o ataque do atacante no medio]. Medium (en inglés). Consultado o 17-06-2025.
- ↑ "Qué es el intercambio de claves Diffie-Hellman y cómo funciona" [Que é o intercambio de claves Diffie-Hellman e como funciona]. Ciberseguridad (en castelán). Consultado o 17-06-2025.
Véxase tamén
[editar | editar a fonte]| Wikimedia Commons ten máis contidos multimedia na categoría: Intercambio de claves Diffie-Hellman |