Firmar ECDSA

Los pasos del estándar ECDSA están, conceptualmente, estrechamente relacionados con el esquema DSA. Sin embargo, su problema de logaritmo discreto se construye en el grupo de una curva elíptica. Por lo tanto, la aritmética a realizar para calcular realmente una firma ECDSA es completamente diferente de la utilizada para DSA.

El estándar ECDSA se define para curvas elípticas sobre los campos principales Zp y campo de Galois GF(2m). La primera es a menudo preferida en la práctica, y sólo se introducirá esta en lo que sigue.


Generaración de llaves

Las llaves para el ECDSA se calculan de la siguiente manera:

  1. Usar una curva elíptica E con:
    1. Módulo .
    2. Coeficientes y .
    3. Un punto que genera un grupo cíclico de primer orden .
  2. Escoger un número aleatorio tal que .
  3. Calcular .

La llave privada es y la llave pública es .

Tenga en cuenta que se ha configurado un problema de logaritmo discreto donde el entero es la clave privada y el resultado de la multiplicación escalar, punto , es la clave pública. Similar al DSA, el grupo cíclico tiene un orden q que debe tener un tamaño de al menos 160 bits o más para mayores niveles de seguridad.


Generaración de firma

Al igual que DSA, una firma ECDSA consiste en un par de números enteros . Cada valor tiene la misma longitud de bits que , lo que hace que las firmas sean relativamente compactas. Utilizando la clave pública y privada, la firma de un mensaje se calcula de la siguiente manera:

  1. Elija un entero como clave efímera aleatoria con .
  2. Calcular .
  3. Sea .
  4. Calcular .

En el paso 3, la coordenada del punto se asigna a la variable . Del mensaje se obtiene su hash usando la función para calcular . La longitud de salida de la función hash debe ser al menos tan larga como . Sin embargo, por ahora es suficiente saber que la función hash comprime y calcula una huella digital que puede ser vista como un representante de .


Verificar firma

El proceso de verificación de la firma es el siguiente:

  1. Calcular el valor auxiliar .
  2. Calcule el valor auxiliar .
  3. Calcule el valor auxiliar .
  4. Calcule .
  5. Para verificar la firma:
    Si la firma es válida, en caso contrario es inválida.

En el último paso, la notación indica la coordenada del punto . El verificador acepta una firma sólo si el tiene el mismo valor que el parámetro de firma . De lo contrario, la firma debe considerarse no válida.


Por ejemplo

Bob quiere enviar un mensaje a Alice que debe ser firmado con el algoritmo ECDSA. El proceso de firma y verificación es el siguiente:

      Bob:
      1. Escoge E con , , .
      2. con .
      3. Escoge .
      4. Calcular .
      5. Calcular el hash del mensaje .
      6. Escoger .
      7. .
      8. .
      9. .
      Alice:
      1. .
      2. .
      3. .
      4. .

Por lo tanto la firma es válida.


Referencias

  1. Paar C., Pelzl J.. (2010). Understanding Cryptography. Nueva York: Springer-Verlag Berlin Heidelberg. pp.282-285