En criptografía , el algoritmo de firma digital de curva elíptica ( ECDSA ) ofrece una variante del algoritmo de firma digital (DSA) que utiliza criptografía de curva elíptica .
Tamaños de llaves y firmas
Al igual que con la criptografía de curva elíptica en general, el tamaño en bits de la clave privada que se cree necesaria para ECDSA es aproximadamente el doble del tamaño del nivel de seguridad , en bits. [ 1 ] Por ejemplo, con un nivel de seguridad de 80 bits, lo que significa que un atacante requiere un máximo de aproximadamenteoperaciones para encontrar la clave privada: el tamaño de una clave privada ECDSA sería de 160 bits. Por otro lado, el tamaño de la firma es el mismo tanto para DSA como para ECDSA: aproximadamentebits, dondees el exponente en la fórmula, es decir, unos 320 bits para un nivel de seguridad de 80 bits, lo que equivale aoperaciones.
Algoritmo de generación de firmas
Supongamos que Alice quiere enviar un mensaje firmado a Bob . Inicialmente, deben ponerse de acuerdo en los parámetros de la curva.Además del campo y la ecuación de la curva, necesitamos, un punto base de orden primo en la curva;es el orden aditivo del punto.
El pedidodel punto basedebe ser primo . De hecho, asumimos que cada elemento no nulo del anilloes invertible, de modo quedebe ser un campo . Esto implica quedebe ser primo (cf. identidad de Bézout ).
Alice crea un par de claves, que consiste en una clave privada entera., seleccionado aleatoriamente en el intervalo; y un punto de curva de clave pública. Usamospara denotar la multiplicación de un punto de una curva elíptica por un escalar .
Para que Alice firme un mensajeElla sigue estos pasos:
- Calcular(Aquí, HASH es una función hash criptográfica , como SHA-2 , cuyo resultado se convierte a un número entero).
- Dejarser elpartes más a la izquierda de, dóndees la longitud de bits del orden del grupo. (Tenga en cuenta quepuede ser mayor quepero ya no . [ 2 ] )
- Seleccione un número entero aleatorio criptográficamente seguro.de.
- Calcula el punto de la curva.
- Calcular. Si, vuelve al paso 3.
- Calcular. Si, vuelve al paso 3.
- La firma es el par. (Y(También es una firma válida).
Como indican las notas estándar, no solo se requiere paraser secreto, pero también es crucial seleccionar diferentespara diferentes firmas. De lo contrario, la ecuación del paso 6 se puede resolver para, la clave privada: dadas dos firmasyempleando el mismo desconocidopara diferentes mensajes conocidosy, un atacante puede calcularyy desde entonces(todas las operaciones en este párrafo se realizan módulo) el atacante puede encontrar. DesdeAhora el atacante puede calcular la clave privada..
Este fallo de implementación se utilizó, por ejemplo, para extraer la clave de firma utilizada para la consola de videojuegos PlayStation 3. [ 3 ]
Otra forma en que la firma ECDSA puede filtrar claves privadas es cuandoes generado por un generador de números aleatorios defectuoso . Tal fallo en la generación de números aleatorios provocó que los usuarios de Android Bitcoin Wallet perdieran sus fondos en agosto de 2013. [ 4 ]
Para garantizar quees único para cada mensaje, se puede omitir por completo la generación de números aleatorios y generar firmas deterministas mediante la derivacióntanto del mensaje como de la clave privada. [ 5 ]
Algoritmo de verificación de firma
Para que Bob autentifique la firma de Aliceen un mensaje, debe tener una copia de su punto de curva de clave públicaBob puede verificarloes un punto de curva válido de la siguiente manera:
- Compruébalono es igual al elemento identidad O , y sus coordenadas son válidas en lo demás.
- Compruébalose encuentra en la curva.
- Compruébalo.
Después de eso, Bob sigue estos pasos:
- Verifica que r y s sean enteros enDe lo contrario, la firma no es válida.
- Calculardonde HASH es la misma función utilizada en la generación de la firma.
- Dejarser elbits más a la izquierda de e .
- Calculary.
- Calcula el punto de la curva. SiEntonces la firma no es válida.
- La firma es válida si, de lo contrario no es válido.
Tenga en cuenta que una implementación eficiente calcularía la inversasolo una vez. Además, usando el truco de Shamir, una suma de dos multiplicaciones escalaresse puede calcular más rápido que dos multiplicaciones escalares realizadas de forma independiente. [ 6 ]
Corrección del algoritmo
No es inmediatamente obvio por qué la verificación funciona correctamente. Para ver por qué, denotemos como C el punto de la curva calculado en el paso 5 de la verificación,
A partir de la definición de la clave pública como,
Debido a que la multiplicación escalar de curvas elípticas se distribuye sobre la suma,
Ampliando la definición deydel paso de verificación 4,
Recopilación del término común,
Ampliando la definición de s del paso 6 de la firma,
Dado que el inverso de un inverso es el elemento original, y el producto del inverso de un elemento y el elemento es la identidad, nos queda lo siguiente:
Según la definición de r , este es el paso de verificación 6.
Esto demuestra únicamente que un mensaje firmado correctamente se verificará correctamente; para un algoritmo de firma seguro se requieren otras propiedades, como que los mensajes firmados incorrectamente no se verifiquen correctamente y la resistencia a los ataques criptoanalíticos .
Recuperación de clave pública
Dado un mensaje m y la firma de AliceEn ese mensaje, Bob puede (potencialmente) recuperar la clave pública de Alice: [ 7 ]
- Verifica que r y s sean enteros enDe lo contrario, la firma no es válida.
- Calcular un punto de curvadóndees uno de,,, etc. (siempre queno es demasiado grande para el campo de la curva) yes un valor tal que se satisface la ecuación de la curva. Tenga en cuenta que puede haber varios puntos de la curva que satisfagan estas condiciones, y cada valor de R diferente da como resultado una clave recuperada distinta.
- Calculardonde HASH es la misma función utilizada en la generación de la firma.
- Sea z elbits más a la izquierda de e .
- Calculary.
- Calcula el punto de la curva.
- La firma es válida si, coincide con la clave pública de Alice.
- La firma no es válida si se han probado todos los puntos R posibles y ninguno coincide con la clave pública de Alice.
Tenga en cuenta que una firma no válida, o una firma de un mensaje diferente, dará como resultado la recuperación de una clave pública incorrecta. El algoritmo de recuperación solo puede utilizarse para comprobar la validez de una firma si se conoce de antemano la clave pública del firmante (o su hash).
Corrección del algoritmo de recuperación
Comience con la definición dedel paso 6 de recuperación,
De la definicióndesde el paso 4 de la firma,
Debido a que la multiplicación escalar de curvas elípticas se distribuye sobre la suma,
Ampliando la definición deydel paso 5 de recuperación,
Ampliando la definición de s del paso 6 de la firma,
Dado que el producto del inverso de un elemento y el elemento es la identidad, nos queda lo siguiente:
El primer y el segundo término se anulan mutuamente,
Desde la definición deEsta es la clave pública de Alice.
Esto demuestra que un mensaje firmado correctamente recuperará la clave pública correcta, siempre que se haya compartido información adicional para calcular de forma única el punto de la curva.del valor de firma r .
Seguridad
En diciembre de 2010, un grupo que se hacía llamar fail0verflow anunció la recuperación de la clave privada ECDSA utilizada por Sony para firmar el software de la consola de juegos PlayStation 3. Sin embargo, este ataque solo funcionó porque Sony no implementó correctamente el algoritmo, porqueera estático en lugar de aleatorio. Como se señaló en la sección anterior del algoritmo de generación de firmas , esto hace queresoluble, lo que hace que todo el algoritmo sea inútil. [ 8 ]
El 29 de marzo de 2011, dos investigadores publicaron un artículo en la IACR [ 9 ] que demostraba que era posible recuperar una clave privada TLS de un servidor que utilizaba OpenSSL y que se autenticaba con DSA de curvas elípticas sobre un campo binario mediante un ataque de temporización . [ 10 ] La vulnerabilidad se corrigió en OpenSSL 1.0.0f. [ 11 ]
En agosto de 2013, se reveló que algunos errores en ciertas implementaciones de la clase Java SecureRandom a veces generaban colisiones en el sistema.valor. Esto permitió a los hackers recuperar claves privadas, lo que les otorgó el mismo control sobre las transacciones de bitcoin que tenían los propietarios legítimos de las claves, utilizando la misma vulnerabilidad que se usó para revelar la clave de firma de PS3 en algunas implementaciones de aplicaciones de Android , que usan Java y dependen de ECDSA para autenticar transacciones. [ 12 ]
Este problema puede evitarse mediante la generación determinista de k, como se describe en el RFC 6979.
Preocupaciones
Algunas preocupaciones expresadas sobre ECDSA:
- Preocupaciones políticas : la fiabilidad de las curvas producidas por el NIST se cuestiona tras las revelaciones de que la NSA inserta deliberadamente puertas traseras en software, componentes de hardware y estándares publicados; criptógrafos de renombre [ 13 ] han expresado [ 14 ] [ 15 ] dudas sobre cómo se diseñaron las curvas del NIST, y la contaminación voluntaria ya se ha demostrado en el pasado. [ 16 ] [ 17 ] (Véase también la introducción a libssh curve25519 . [ 18 ] ) Sin embargo, aún falta una prueba de que las curvas del NIST mencionadas exploten una vulnerabilidad poco común.
- Preocupaciones técnicas : la dificultad de implementar correctamente el estándar, su lentitud y los defectos de diseño que reducen la seguridad en implementaciones insuficientemente defensivas. [ 19 ]
Implementaciones
A continuación se muestra una lista de bibliotecas criptográficas que ofrecen soporte para ECDSA:
- Botánica
- Castillo hinchable
- cryptlib
- Cripto++
- API de criptografía (Linux)
- GnuTLS
- libgcrypt
- LibreSSL
- TLS de mbed
- Microsoft CryptoAPI
- OpenSSL
- wolfCrypt
Véase también
Referencias
- ^ Johnson, Don; Menezes, Alfred (1999). "El algoritmo de firma digital de curva elíptica (ECDSA)". Certicom Research. Canadá . CiteSeerX 10.1.1.38.8014 .
- ^ "NIST FIPS 186-4, julio de 2013, págs. 19 y 26" (PDF) . Archivado (PDF) del original el 27 de diciembre de 2016. Recuperado el 17 de marzo de 2014 .
- ^ Hackeo de consolas 2010 - Fracaso épico de PS3 Archivado el 15 de diciembre de 2014 en Wayback Machine , páginas 123-128
- ^ "Vulnerabilidad de seguridad de Android" . Archivado del original el 7 de abril de 2019. Consultado el 24 de febrero de 2015 .
- ^ Pornin, T. (2013). RFC 6979 - Uso determinista del algoritmo de firma digital (DSA) y del algoritmo de firma digital de curva elíptica (ECDSA) (Informe técnico). doi : 10.17487/RFC6979 . Recuperado el 24 de febrero de 2015 .
- ^ "El sistema de numeración de doble base en la criptografía de curva elíptica" (PDF) . Archivado (PDF) del original el 26 de julio de 2011. Recuperado el 22 de abril de 2014 .
- ^ Daniel RL Brown SECG SEC 1: Criptografía de curva elíptica (Versión 2.0) https://www.secg.org/sec1-v2.pdf
- ^ Bendel, Mike (29 de diciembre de 2010). "Los hackers describen la seguridad de la PS3 como un fracaso épico y obtienen acceso sin restricciones" . Exophase.com. Archivado del original el 7 de abril de 2019. Recuperado el 5 de enero de 2011 .
- ^ "Archivo de preimpresiones de criptología: Informe 2011/232" . Archivado del original el 8 de diciembre de 2018. Recuperado el 24 de febrero de 2015 .
- ^ "Nota de vulnerabilidad VU#536044: OpenSSL filtra la clave privada ECDSA mediante un ataque de temporización remota" . www.kb.cert.org . Archivado del original el 7 de abril de 2019. Consultado el 24 de mayo de 2011 .
- ^ "Vulnerabilidades" . Proyecto OpenSSL . Consultado el 13 de junio de 2026 .
- ^ "Un fallo en Android perjudica a las carteras de Bitcoin" . The Register. 12 de agosto de 2013. Archivado del original el 15 de agosto de 2013. Consultado el 27 de agosto de 2017 .
- ^ Schneier, Bruce (5 de septiembre de 2013). "La NSA está rompiendo la mayor parte del cifrado en Internet" . Schneier on Security . Archivado del original el 15 de diciembre de 2017. Recuperado el 11 de enero de 2018 .
- ^ "SafeCurves: elección de curvas seguras para criptografía de curva elíptica" . 25 de octubre de 2013. Archivado del original el 7 de abril de 2019. Consultado el 11 de enero de 2018 .
- ^ Bernstein, Daniel J.; Lange, Tanja (31 de mayo de 2013). "Peligros de seguridad de las curvas NIST" (PDF) . Archivado (PDF) del original el 28 de mayo de 2019. Recuperado el 11 de enero de 2018 .
- ^ Schneier, Bruce (15 de noviembre de 2007). "La extraña historia de Dual_EC_DRBG" . Schneier on Security . Archivado del original el 23 de abril de 2019. Recuperado el 11 de enero de 2018 .
- ^ Greenemeier, Larry (18 de septiembre de 2013). "Los esfuerzos de la NSA para evadir la tecnología de cifrado dañaron el estándar de criptografía de EE . UU." . Scientific American. Archivado del original el 24 de diciembre de 2017. Recuperado el 11 de enero de 2018 .
- ^ "curve25519-sha256@libssh.org.txt\doc - projects/libssh.git" . Repositorio compartido de libssh . Archivado del original el 23 de marzo de 2019 . Recuperado el 11 de enero de 2018 .
- ^ Bernstein, Daniel J. (23 de marzo de 2014). "Cómo diseñar un sistema de firma de curva elíptica" . El blog cr.yp.to. Archivado del original el 23 de marzo de 2014. Recuperado el 11 de enero de 2018 .
Lecturas adicionales
- Comité de Normas Acreditadas X9 , ASC X9 emite un nuevo estándar para criptografía de clave pública/ECDSA , 6 de octubre de 2020. Fuente
- Comité de Normas Acreditadas X9 , Norma Nacional Estadounidense X9.62-2005, Criptografía de Clave Pública para la Industria de Servicios Financieros, Algoritmo de Firma Digital de Curva Elíptica (ECDSA) , 16 de noviembre de 2005.
- 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.
- López, J. y Dahab, R. Una visión general de la criptografía de curva elíptica , Informe técnico IC-00-10, Universidad Estatal de Campinas, 2000.
- Daniel J. Bernstein , Algoritmo de exponenciación de Pippenger , 2002.
- Daniel RL Brown, Grupos genéricos, resistencia a colisiones y ECDSA , Designs, Codes and Cryptography, 35 , 119–152, 2005. Versión ePrint
- Ian F. Blake, Gadiel Seroussi y Nigel Smart , editores, Advances in Elliptic Curve Cryptography , London Mathematical Society Lecture Note Series 317, Cambridge University Press, 2005.
- Hankerson, D.; Vanstone, S .; Menezes, A. (2004). Guía de criptografía de curva elíptica . Springer Professional Computing. Nueva York: Springer . doi : 10.1007/b97644 . ISBN 0-387-95273-X. S2CID 720546 .
Enlaces externos
- Estándar de Firma Digital; incluye información sobre ECDSA.
- El algoritmo de firma digital de curva elíptica (ECDSA) ofrece una guía detallada sobre ECDSA . Enlace a Wayback Machine.
- Criptografía de clave pública
- Criptografía de curva elíptica
- esquemas de firma digital
- Estándar de firma digital