Esta guía muestra ejemplos prácticos de generación y verificación de firmas ECDSA (algoritmo de firma digital de curva elíptica) mediante OpenSSL.
Paso 1: Generar claves públicas y privadas de la CE
openssl ecparam -name secp384r1 -genkey -noout -out private.keyopenssl ec -in private.key -pubout -out public.pem
Paso 2: Firmar un hash SHA-256
Si ya tienes un hash SHA-256 que quieres firmar, guárdalo en un archivo:
echo "53edc760b7a66e1f4d8b0c5715725ee447b79c02f7759c52ad3d36eadd29c10a" > hash.hexxxd -r -p hash.hex > hash.bin
A continuación, fírmalo con tu clave privada EC:
openssl pkeyutl -sign -inkey private.key -in hash.bin -out signature.bin
Paso 3: inspeccionar la firma (valores R y S)
openssl asn1parse -in signature.bin -inform der
Esto muestra la estructura ASN.1 interna con dos valores INTEGER: R y S.
Paso 4: Verificar la firma
openssl pkeyutl -verify -inkey public.pem -pubin -in hash.bin -sigfile signature.bin
Opcional: firme y verifique el contenido del archivo sin procesar directamente
Firmar un archivo (p. ej., data.txt
):
openssl dgst -sha256 -sign private.key -out signature.bin data.txt
Verifique la firma:
openssl dgst -sha256 -verify public.pem -signature signature.bin data.txt
Extra: lista todas las curvas EC compatibles
openssl ecparam -list_curves
Esto mostrará todas las curvas con nombre compatibles con su versión de OpenSSL, incluidas las familias NIST, SECG y Brainpool.