Articulo de referencia

Diffie-Hellman de curva elíptica

El protocolo Diffie-Hellman de curva elíptica ( ECDH ) es un protocolo de acuerdo de claves que permite a dos partes, cada una con un par de claves pública-privada de curva elíp...

El protocolo Diffie-Hellman de curva elíptica ( ECDH ) es un protocolo de acuerdo de claves que permite a dos partes, cada una con un par de claves pública-privada de curva elíptica , establecer un secreto compartido a través de un canal inseguro . [ 1 ] [ 2 ] [ 3 ] Este secreto compartido puede usarse directamente como clave o para derivar otra clave . La clave, o la clave derivada, puede usarse para cifrar comunicaciones posteriores mediante un cifrado de clave simétrica . Es una variante del protocolo Diffie-Hellman que utiliza criptografía de curva elíptica .

Protocolo de establecimiento de claves

El siguiente ejemplo ilustra cómo se establece una clave compartida. Supongamos que Alice quiere establecer una clave compartida con Bob , pero el único canal disponible para ellos puede ser interceptado por un tercero. Inicialmente, los parámetros del dominio (es decir,(pag,a,b,GRAMO,norte,h){\displaystyle (p,a,b,G,n,h)}en el caso principal o(metro,F(incógnita),a,b,GRAMO,norte,h){\displaystyle (m,f(x),a,b,G,n,h)}(en el caso binario) debe acordarse. Además, cada parte debe tener un par de claves adecuado para la criptografía de curva elíptica, que consiste en una clave privada.d{\displaystyle d}(un número entero seleccionado aleatoriamente en el intervalo[1,norte1]{\displaystyle [1,n-1]}) y una clave pública representada por un puntoQ{\displaystyle Q}(dóndeQ=dGRAMO{\displaystyle Q=d\cdot G}, es decir, el resultado de añadirGRAMO{\displaystyle G}a sí mismod{\displaystyle d}veces). Que el par de llaves de Alice sea(dA,QA){\displaystyle (d_{\text{A}},Q_{\text{A}})}y el par de llaves de Bob es(dB,QB){\displaystyle (d_{\text{B}},Q_{\text{B}})}Cada parte debe conocer la clave pública de la otra parte antes de la ejecución del protocolo.

Alice calcula el punto(incógnitak,yk)=dAQB{\displaystyle (x_{k},y_{k})=d_{\text{A}}\cdot Q_{\text{B}}}Bob calcula el punto(incógnitak,yk)=dBQA{\displaystyle (x_{k},y_{k})=d_{\text{B}}\cdot Q_{\text{A}}}El secreto compartido esincógnitak{\displaystyle x_{k}}(la coordenada x del punto). La mayoría de los protocolos estandarizados basados ​​en ECDH derivan una clave simétrica deincógnitak{\displaystyle x_{k}}utilizando alguna función de derivación de clave basada en hash.

El secreto compartido calculado por ambas partes es igual, porquedAQB=dAdBGRAMO=dBdAGRAMO=dBQA{\displaystyle d_{\text{A}}\cdot Q_{\text{B}}=d_{\text{A}}\cdot d_{\text{B}}\cdot G=d_{\text{B}}\cdot d_{\text{A}}\cdot G=d_{\text{B}}\cdot Q_{\text{A}}}.

La única información sobre su clave que Alice revela inicialmente es su clave pública. Por lo tanto, nadie, excepto Alice, puede determinar la clave privada de Alice (Alice, por supuesto, la conoce al haberla seleccionado), a menos que pueda resolver el problema del logaritmo discreto en una curva elíptica . La clave privada de Bob es igualmente segura. Nadie, aparte de Alice o Bob, puede calcular el secreto compartido, a menos que pueda resolver el problema de Diffie-Hellman en una curva elíptica .

Las claves públicas pueden ser estáticas (y de confianza, por ejemplo, mediante un certificado) o efímeras (también conocidas como ECDHE , donde la 'E' final significa "efímera"). Las claves efímeras son temporales y no necesariamente autenticadas, por lo que, si se desea la autenticación, se deben obtener garantías de autenticidad por otros medios. La autenticación es necesaria para evitar ataques de intermediario . Si una de las claves públicas de Alice o Bob es estática, se frustran los ataques de intermediario. Las claves públicas estáticas no proporcionan ni secreto directo ni resistencia a la suplantación de identidad por compromiso de clave, entre otras propiedades de seguridad avanzadas. Los titulares de claves privadas estáticas deben validar la otra clave pública y aplicar una función de derivación de clave segura al secreto compartido Diffie-Hellman sin procesar para evitar la filtración de información sobre la clave privada estática. Para esquemas con otras propiedades de seguridad, consulte MQV .

Si Alice elige maliciosamente puntos de curva no válidos para su clave y Bob no valida que los puntos de Alice formen parte del grupo seleccionado, ella puede recopilar suficientes residuos de la clave de Bob para derivar su clave privada. Se descubrió que varias bibliotecas TLS eran vulnerables a este ataque. [ 4 ]

El secreto compartido se distribuye uniformemente en un subconjunto de[0,pag){\displaystyle [0,p)}de tamaño(norte+1)/2{\displaystyle (n+1)/2}Por este motivo, el secreto no debe utilizarse directamente como clave simétrica, sino que puede utilizarse como entropía para una función de derivación de clave.

Acuerdo clave Diffie-Hellman sobre las curvas de Montgomery

DejarA,BFpag{\displaystyle A,B\in F_{p}}de tal manera queB(A24)0{\displaystyle B(A^{2}-4)\neq 0}La curva elíptica de forma de MontgomerymiMETRO,A,B{\displaystyle E_{M,A,B}}es el conjunto de todos(incógnita,y)Fpag×Fpag{\displaystyle (x,y)\in F_{p}\times F_{p}}satisfaciendo la ecuaciónBy2=incógnita(incógnita2+Aincógnita+1){\displaystyle By^{2}=x(x^{2}+Ax+1)}junto con el punto en el infinito denotado como{\displaystyle \infty }. Esto se llama la forma afín de la curva. El conjunto de todosFpag{\displaystyle F_{p}}-puntos racionales demiMETRO,A,B{\displaystyle E_{M,A,B}}, denotado comomiMETRO,A,B(Fpag){\displaystyle E_{M,A,B}(F_{p})}es el conjunto de todos(incógnita,y)Fpag×Fpag{\displaystyle (x,y)\in F_{p}\times F_{p}}satisfactorioBy2=incógnita(incógnita2+Aincógnita+1){\displaystyle By^{2}=x(x^{2}+Ax+1)} junto con{\displaystyle \infty }. Bajo una operación de suma adecuadamente definida,miMETRO,A,B(Fpag){\displaystyle E_{M,A,B}(F_{p})}es un grupo con{\displaystyle \infty }como elemento identidad. Se sabe que el orden de este grupo es un múltiplo de 4. De hecho, suele ser posible obtenerA{\displaystyle A}yB{\displaystyle B}de tal manera que el orden demiMETRO,A,B{\displaystyle E_{M,A,B}}es4q{\displaystyle 4q}para un primoq{\displaystyle q}Para discusiones más extensas sobre las curvas de Montgomery y su aritmética, se puede seguir [ 5 ] [ 6 ] [ 7 ]

Para una mayor eficiencia computacional, es preferible trabajar con coordenadas proyectivas. La forma proyectiva de la curva de MontgomerymiMETRO,A,B{\displaystyle E_{M,A,B}}esBY2Z=incógnita(incógnita2+AincógnitaZ+Z2){\displaystyle BY^{2}Z=X(X^{2}+AXZ+Z^{2})}Por un puntoPAG=[incógnita:Y:Z]{\displaystyle P=[X:Y:Z]}enmiMETRO,A,B{\displaystyle E_{M,A,B}}, elincógnita{\displaystyle x}-mapa de coordenadasincógnita{\displaystyle x}es lo siguiente: [ 7 ]incógnita(PAG)=[incógnita:Z]{\displaystyle x(P)=[X:Z]}siZ0{\displaystyle Z\neq 0}yincógnita(PAG)=[1:0]{\displaystyle x(P)=[1:0]}siPAG=[0:1:0]{\displaystyle P=[0:1:0]}Bernstein [ 8 ] [ 9 ] introdujo el mapaincógnita0{\displaystyle x_{0}}como sigue:incógnita0(incógnita:Z)=incógnitaZpag2{\displaystyle x_{0}(X:Z)=XZ^{p-2}}que se define para todos los valores deincógnita{\displaystyle X}yZ{\displaystyle Z}enFpag{\displaystyle F_{p}}Siguiendo a Miller, [ 10 ] Montgomery [ 5 ] y Bernstein, [ 9 ] el acuerdo de clave Diffie-Hellman se puede llevar a cabo en una curva de Montgomery de la siguiente manera. SeaQ{\displaystyle Q}ser un generador de un subgrupo de orden primo de miMETRO,A,B(Fpag){\displaystyle E_{M,A,B}(F_{p})}Alicia elige una llave secretas{\displaystyle s}y tiene clave públicaincógnita0(sQ){\displaystyle x_{0}(sQ)}Bob elige una llave secretat{\displaystyle t}y tiene clave públicaincógnita0(tQ){\displaystyle x_{0}(tQ)}La clave secreta compartida de Alice y Bob esincógnita0(stQ){\displaystyle x_{0}(stQ)}. Utilizando computadoras clásicas, el método más conocido para obtenerincógnita0(stQ){\displaystyle x_{0}(stQ)}deQ,incógnita0(sQ){\displaystyle Q,x_{0}(sQ)}yincógnita0(tQ){\displaystyle x_{0}(tQ)}requiere sobreO(pag1/2){\displaystyle O(p^{1/2})}tiempo utilizando el algoritmo rho de Pollard . [ 11 ]

El ejemplo más famoso de curva de Montgomery es Curve25519 , que fue introducida por Bernstein. [ 9 ] Para Curve25519,pag=225519,A=486662{\displaystyle p=2^{255}-19,A=486662}yB=1{\displaystyle B=1}. La otra curva de Montgomery que forma parte de TLS 1.3 es la Curva448 que fue introducida por Hamburgo. [ 12 ] Para la Curva448,pag=244822241,A=156326{\displaystyle p=2^{448}-2^{224}-1,A=156326}yB=1{\displaystyle B=1}. Se han propuesto un par de curvas de Montgomery llamadas M[4698] y M[4058] competitivas con Curve25519 y Curve448 respectivamente en. [ 13 ] Para M[4698],pag=22519,A=4698,B=1{\displaystyle p=2^{251}-9,A=4698,B=1}y para M[4058],pag=244417,A=4058,B=1{\displaystyle p=2^{444}-17,A=4058,B=1}. En el nivel de seguridad de 256 bits, se han propuesto tres curvas de Montgomery llamadas M[996558], M[952902] y M[1504058] en. [ 14 ] Para M[996558],pag=250645,A=996558,B=1{\displaystyle p=2^{506}-45,A=996558,B=1}, para M[952902],pag=251075,A=952902,B=1{\displaystyle p=2^{510}-75,A=952902,B=1}y para M[1504058],pag=25211,A=1504058,B=1{\displaystyle p=2^{521}-1,A=1504058,B=1}respectivamente. Aparte de estas dos, se pueden encontrar otras propuestas de curvas de Montgomery en. [ 15 ]

Software

Véase también

Referencias

  1. NIST, Publicación especial 800-56A, Recomendación para esquemas de establecimiento de claves por pares que utilizan criptografía de logaritmo discreto , marzo de 2006.
  2. Certicom Research, Estándares para criptografía eficiente, SEC 1: Criptografía de curva elíptica , Versión 2.0, 21 de mayo de 2009.
  3. NSA Suite B Cryptography, Suite B Implementers' Guide to NIST SP 800-56A Archivado el 6 de marzo de 2016 en Wayback Machine , 28 de julio de 2009.
  4. Tibor Jager; Jorg Schwenk; Juraj Somorovsky (04-09-2015). "Ataques prácticos de curvas inválidas en TLS-ECDH" (PDF) . Simposio Europeo sobre Investigación en Seguridad Informática (ESORICS'15) .
  5. 1 2 Montgomery, Peter L. "Acelerando los métodos de factorización de Pollard y de curvas elípticas" (PDF) . Mathematics of Computation, 48(177):243–264, 1987.
  6. Bernstein, Daniel J.; Lange, Tanja (2017). «Curvas de Montgomery y la escalera de Montgomery» . En Joppe W. Bos y Arjen K. Lenstra, editores, Temas de teoría computacional de números inspirados en Peter L. Montgomery, páginas 82-115. Cambridge University Press, 2017.
  7. 1 2 Costello, Craig; Smith, Benjamin (septiembre de 2018). "Curvas de Montgomery y su aritmética: el caso de campos característicos grandes" . Journal of Cryptographic Engineering . 8 (3). J. Cryptographic Engineering, 8(3):227–240, 2018.: 227– 240. arXiv : 1703.01863 . doi : 10.1007/s13389-017-0157-6 .
  8. Bernstein, Daniel J. "¿Podemos evitar las pruebas de cero en la aritmética rápida de curvas elípticas?" (PDF) .
  9. 1 2 3 Bernstein, Daniel J. (2006). "Curve25519: Nuevos récords de velocidad Diffie-Hellman" . Criptografía de clave pública - PKC 2006. Lecture Notes in Computer Science. Vol. 3958. En: Yung, M., Dodis, Y., Kiayias, A., Malkin, T. (eds) Criptografía de clave pública - PKC 2006. Lecture Notes in Computer Science, vol. 3958. Springer, Berlín, Heidelberg. pp. 207–228 . doi : 10.1007/11745853_14 . ISBN   978-3-540-33851-2.
  10. Miller, Victor S. (1986). "Uso de curvas elípticas en criptografía" . Avances en criptología — Actas de CRYPTO '85 . Lecture Notes in Computer Science. Vol. 218. En Avances en criptología - CRYPTO'85, Santa Bárbara, California, EE. UU., 18-22 de agosto de 1985, Actas, páginas 417-426. Springer Berlin Heidelberg, 1985. pp. 417-426 . doi : 10.1007/3-540-39799-X_31 . ISBN   978-3-540-16463-0.
  11. Pollard, John M. "Métodos de Monte Carlo para el cálculo de índices módulo p" (PDF) . Mathematics of Computation, 32:918–924, 1978.
  12. Hamburg, Mike (2015). "Ed448-goldilocks, una nueva curva elíptica" . ACR Cryptology ePrint Archive, 2015:625, 2015.
  13. Nath, Kaushik; Sarkar, Palash (2022). "Compromisos de seguridad y eficiencia para Diffie-Hellman de curva elíptica en los niveles de seguridad de 128 y 224 bits" . Journal of Cryptographic Engineering . 12. J Cryptogr Eng 12, 107–121 (2022): 107–121 . doi : 10.1007/s13389-021-00261-y .El código está disponible en https://github.com/kn-cs/x25519
  14. Nath, Kaushik; Sarkar, Palash (2020). "Cálculo eficiente de Diffie-Hellman de curva elíptica en el nivel de seguridad de 256 bits" . IET Information Security . 14 (6): 633– 640. doi : 10.1049/iet-ifs.2019.0620 .El código está disponible en https://github.com/kn-cs/mont256-dh y https://github.com/kn-cs/mont256-vec
  15. Bernstein, Daniel J.; Lange, Tanja. "Safecurves: elección de curvas seguras para la criptografía de curva elíptica" . Consultado el 15 de abril de 2024 .
  16. JI (13 de octubre de 2015). "Nueva generación de mensajería segura: "Sellado de cartas"Blog de ingenieros de LINE . LINE Corporation. Archivado del original el 1 de febrero de 2019. Consultado el 5 de febrero de 2018 .
Obtenido de " https://en.wikipedia.org/w/index.php?title=Elliptic-curve_Diffie–Hellman&oldid=1346408409 "