ECDSA

From Wikipedia, the free encyclopedia

ECDSA (*Elliptic Curve Digital Signature Algorithm*, en español: Algoritmo de Firma Digital de Curva Elíptica) es un algoritmo de firma digital basado en criptografía de curva elíptica. Constituye una variante del algoritmo DSA que emplea operaciones sobre puntos de curvas elípticas en lugar de las exponenciaciones modulares utilizadas por DSA, basadas en el problema del logaritmo discreto en grupos multiplicativos.

La seguridad de ECDSA se fundamenta en la dificultad computacional del problema del logaritmo discreto sobre curvas elípticas (*Elliptic Curve Discrete Logarithm Problem*, ECDLP). La principal ventaja de este esquema es que requiere números de tamaños significativamente menores para brindar el mismo nivel de seguridad que DSA o RSA, lo que se traduce en una mayor eficiencia en términos de almacenamiento, ancho de banda y tiempo de cómputo.

Existen dos tipos principales de curvas elípticas según el campo finito sobre el cual se definan: curvas sobre campos primos GF(p) y curvas sobre campos binarios GF(2m). En la práctica, los estándares modernos favorecen el uso de curvas sobre campos primos debido a su mejor interoperabilidad y a consideraciones de seguridad e implementación.[1]

Historia

La criptografía de curva elíptica fue propuesta de manera independiente por Neal Koblitz y Victor S. Miller en 1985 como una alternativa a los sistemas criptográficos basados en exponenciación modular. A partir de estas ideas, se desarrollaron esquemas de firma digital basados en curvas elípticas durante la década de 1990.

ECDSA fue estandarizado formalmente por el National Institute of Standards and Technology (NIST) en el estándar FIPS 186 y por Certicom en las especificaciones SEC. Desde entonces, ha sido adoptado ampliamente en estándares internacionales, protocolos de seguridad y aplicaciones comerciales.[2]

Proceso de firma y verificación

Generación de llaves

  1. Seleccione una curva elíptica E definida sobre un campo finito.
  2. Seleccione un punto base P perteneciente a E de orden primo n.
  3. Seleccione aleatoriamente un número entero d en el intervalo [1, n − 1].
  4. Calcule Q = dP mediante multiplicación escalar.
  5. El valor d constituye la llave privada.
  6. El punto Q constituye la llave pública.

Proceso de firma

  1. Seleccione un número entero aleatorio k en el intervalo [1, n − 1].
  2. Calcule kP = (x1, y1).
  3. Calcule r = x1 mod n; si r = 0, regrese al primer paso.
  4. Calcule el inverso modular k−1 mod n.
  5. Calcule s = k−1(H(m) + dr) mod n; si s = 0, regrese al primer paso.
  6. La firma del mensaje m está compuesta por el par ordenado (r, s).

Proceso de verificación

  1. Verifique que r y s pertenezcan al intervalo [1, n − 1].
  2. Calcule w = s−1 mod n.
  3. Calcule u1 = H(m)w mod n.
  4. Calcule u2 = rw mod n.
  5. Calcule el punto (x0, y0) = u1P + u2Q.
  6. Calcule v = x0 mod n.
  7. La firma es válida si y solo si v = r.

Comparación con otros algoritmos

ECDSA y DSA

ECDSA y DSA se basan en el problema del logaritmo discreto y comparten una estructura matemática similar. Sin embargo, DSA opera sobre grupos multiplicativos de enteros módulo un primo grande, mientras que ECDSA utiliza grupos de puntos sobre curvas elípticas, permitiendo tamaños de clave mucho menores para un nivel de seguridad equivalente.

ECDSA y RSA

A diferencia de RSA, cuya seguridad se basa en la dificultad de la factorización de números enteros grandes, ECDSA se fundamenta en el ECDLP. Para niveles de seguridad comparables, ECDSA suele ofrecer un mejor rendimiento computacional y menor consumo de recursos, especialmente en sistemas con restricciones de memoria o potencia de cálculo.

Usos

ECDSA es ampliamente utilizado en sistemas y protocolos de seguridad modernos, entre los que se incluyen:

  • Protocolos de comunicación segura como TLS y SSL
  • Autenticación y cifrado en SSH
  • Infraestructuras de clave pública (PKI)
  • Sistemas operativos y dispositivos móviles
  • Tecnologías de cadena de bloques y criptomonedas como Bitcoin, donde se emplea ECDSA para autorizar transacciones y demostrar la posesión de claves privadas[3]

Referencias

Enlaces externos

Related Articles

Wikiwand AI