Saltar al contenido
ecdsa.com

Verificación de firmas

La comprobación, mediante criptografía de clave pública, de que una firma se generó exactamente sobre este mensaje con la clave privada que corresponde a una clave pública dada, con un algoritmo que el verificador eligió de antemano.
También se escribesignature verificationverify signature

Las entradas son la clave pública, el mensaje (o su resumen), la firma y el algoritmo con sus parámetros; la salida es «válida» o «no válida». Un verificador estricto también rechaza las entradas mal formadas: DER no mínimo, r o s fuera de 1…n−1, un S de EdDSA que no sea menor que el orden del grupo, firmas en bruto de longitud incorrecta, puntos que no están en la curva y claves del tipo incorrecto.

La mayoría de los errores «invalid signature» en producción no son criptográficos: se firmaron bytes distintos (JSON reserializado, espacios en blanco o finales de línea cambiados, falta el salto de línea final), se usó otro hash, una firma DER llegó a un verificador de firmas en bruto o al revés, la curva o la longitud de la sal de PSS difieren, o se seleccionó la clave equivocada. Comprueba cada entrada por separado; el verificador de firmas muestra qué curva, qué hash y qué codificación usó.

Reglas de seguridad que evitan fallos reales: fija el algoritmo en el lado del verificador en lugar de leerlo del mensaje (alg de JWT, RFC 8725 §3.1); verifica antes de analizar la carga útil o de actuar en función de ella; verifica el vínculo entre la clave y la identidad (validación de la ruta de certificados, kid de JWKS, known_hosts), y, en los sistemas de consenso, fija un único conjunto de reglas de verificación, ya que las bibliotecas discrepan en casos límite como las comprobaciones de EdDSA con cofactor.

Estándares y referencias

Todos los términos