Saltar ao contido

Intercambio de claves Diffie-Hellman

Na Galipedia, a Wikipedia en galego.

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]

Intercambio de claves mediante o protocolo Diffie-Hellman.

Á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.

Ataque man-in-the-middle no protocolo de intercambio de claves Diffie-Hellman.

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]

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]

Véxase tamén

[editar | editar a fonte]

Outros artigos

[editar | editar a fonte]