EdDSA

De testwiki
Ir a la navegación Ir a la búsqueda

En criptografía de clave pública, el algoritmo de firma digital de curva de Edwards (EdDSA) es un esquema de firma digital que utiliza una variante de la firma de Schnorr basada en curvas de Edwards torcidas. Está diseñado para ser más rápido que los esquemas de firma digital existentes sin sacrificar la seguridad. Fue desarrollado por un equipo que incluía a Daniel J. Bernstein, Niels Duif, Tanja Lange, Peter Schwabe y Bo-Yin Yang.[1] La implementación de referencia es el software de dominio público.[2]

Resumen

La siguiente es una descripción simplificada de EdDSA, ignorando los detalles de codificación de números enteros y puntos de curva como cadenas de bits; los detalles completos están en los documentos y RFC.[1]

Un esquema de firma EdDSA es una elección:

  • de campo finito 𝔽q sobre potencia prima impar q;
  • de curva elíptica E sobre 𝔽q cuyo grupo E(𝔽q) de -los puntos racionales tienen orden #E(𝔽q)=2c, dónde es un primo grande y 2c se llama el cofactor;
  • de punto base BE(𝔽q) Con orden ; y
  • de la función hash criptográfica H con salidas de 2b bits, donde 2b1>q para que elementos de 𝔽q y puntos de curva en E(𝔽q) pueda ser representado por cadenas de b bits

Estos parámetros son comunes a todos los usuarios del esquema de firma EdDSA. La seguridad del esquema de firma EdDSA depende de manera crítica de las elecciones de parámetros, excepto por la elección arbitraria del punto base; por ejemplo, se espera que el algoritmo rho de Pollard para logaritmos tome aproximadamente π/4 adiciones de curvas antes de que pueda calcular un logaritmo discreto, por lo que debe ser lo suficientemente grande para que esto no sea factible y, por lo general, se considera que supera los Plantilla:Math.[3] La elección de está limitada por la elección de q, ya que por el teorema de Hasse, #E(𝔽q)=2c no puede diferir de q+1 por más de 2q . la función hash H normalmente se modela como un oráculo aleatorio en los análisis formales de la seguridad de EdDSA. En la variante HashEdDSA, una función hash adicional resistente a colisiones H se necesita

Dentro de un esquema de firma EdDSA,

Clave pública
Una clave pública EdDSA es un punto de curva AE(𝔽q), codificado en b bits
Firma
Una firma EdDSA en un mensaje M por clave pública A es el par (R,S), codificado en 2b bits, de un punto de curva RE(𝔽q) y un entero 0<S< satisfaciendo la siguiente ecuación de verificación. denota concatenación.

2cSB=2cR+2cH(RAM)A

Clave privada
Una clave privada EdDSA es una cadena de b bits k que debe elegirse uniformemente al azar. La clave pública correspondiente es A=sB, donde s=H0,,b1(k) es el menos significativo b pedazos de H(k) interpretado como un número entero en little-endian. La firma en un mensaje M es (R,S) dónde R=rB por r=H(Hb,,2b1(k)M), ySr+H(RAM)s(mod).

2cSB=2c(r+H(RAM)s)B=2crB+2cH(RAM)sB=2cR+2cH(RAM)A.

Ed25519

Ed25519 es el esquema de firma EdDSA que utiliza SHA-512 (SHA-2) y Curve25519[1] donde

  • q=225519,
  • E/𝔽q es la curva torcida de Edwards

x2+y2=1121665121666x2y2,

  • =2252+27742317777372353535851937790883648493 y c=3
  • B es el único punto en E(𝔽q) cuyo y coordenada es 4/5 y de quien x coordenada es positiva. "positivo" se define en términos de codificación de bits:
    • Las coordenadas "positivas" son coordenadas pares (se borra el bit menos significativo)
    • Las coordenadas "negativas" son coordenadas impares (se establece el bit menos significativo)
  • H es SHA-512, con b=256 .

La curva E(𝔽q) es biracionalmente equivalente a la curva de Montgomery conocida como Curve25519. La equivalencia es[1][4]x=uv486664,y=u1u+1.

Rendimiento

El equipo original ha optimizado Ed25519 para la familia de procesadores x86-64 Nehalem/Westmere . La verificación se puede realizar en lotes de 64 firmas para un rendimiento aún mayor. Ed25519 está destinado a proporcionar una resistencia a los ataques comparable a los cifrados simétricos de 128 bits.[5] Las claves públicas tienen una longitud de 256 bits y las firmas tienen una longitud de 512 bits.[6]

Codificación segura

Como características de seguridad, Ed25519 no utiliza operaciones de rama ni pasos de indexación de matriz que dependan de datos secretos, a fin de derrotar muchos ataques de canal lateral.

Al igual que otros esquemas de firma basados en registros discretos, EdDSA utiliza un valor secreto llamado nonce único para cada firma. En los esquemas de firma DSA y ECDSA, este nonce se genera tradicionalmente de forma aleatoria para cada firma, y si el generador de números aleatorios alguna vez se rompe y es predecible al realizar una firma, la firma puede filtrar la clave privada, como sucedió con el firmware de Sony PlayStation 3. actualizar la clave de firma.[7][8][9] Por el contrario, EdDSA elige el nonce de manera determinista como el hash de una parte de la clave privada y el mensaje. Por lo tanto, una vez que se genera una clave privada, EdDSA ya no necesita un generador de números aleatorios para hacer firmas, y no hay peligro de que un generador de números aleatorios roto que se usa para hacer una firma revele la clave privada.

Inconsistencias de estandarización e implementación

Tenga en cuenta que hay dos esfuerzos de estandarización para EdDSA, uno de IETF informativo, y uno de NIST como parte de FIPS 186-5 (2019).[10] Se han analizado las diferencias entre los estándares,[11][12] y los vectores de prueba están disponibles.[13]

Software

Los usos notables de Ed25519 incluyen OpenSSH,[14] GnuPG[15] y varias alternativas, y la herramienta signify de OpenBSD.[16] Se ha estandarizado el uso de Ed25519 (y Ed448) en el protocolo SSH. En 2019, una versión preliminar del estándar FIPS 186-5 incluía el Ed25519 determinista como esquema de firma aprobado.[10]

Ed448

Ed448 es el esquema de firma EdDSA que utiliza SHAKE256 y Curve448 definido en la Plantilla:IETF RFC. También ha sido aprobado en el borrador del estándar FIPS 186-5.[10]

Referencias

Plantilla:Listaref

Plantilla:Control de autoridades