Una firma digital es un resultado criptográfico que se usa para verificar la autenticidad de los datos. Un algoritmo de firma digital permite realizar dos operaciones distintas:
Una operación de firma, que usa una clave de firma para generar una firma sobre datos sin formato
una operación de verificación, en la que la firma puede validarla una parte que no conoce la clave de firma
Los principales objetivos de una firma digital son los siguientes:
- Verificación de la integridad de los datos firmados
- No repudio si el firmante afirma que la firma no es auténtica
Las firmas digitales se basan en la criptografía asimétrica, también conocida como criptografía de clave pública. Una clave asimétrica consta de un par de claves pública y privada. La clave privada se usa para crear una firma y la clave pública correspondiente se usa para verificar la firma.
Firma digital con criptografía poscuántica
Los ordenadores cuánticos tienen el potencial de descifrar material cifrado con algoritmos de cifrado clásicos, como RSA y ECDSA, que se usan mucho, lo que podría hacer que ese material cifrado sea vulnerable. Los algoritmos criptográficos poscuánticos se han diseñado para usar hardware y software clásicos con el fin de resistir los ataques cuánticos, lo que ayuda a asegurar la validez continua de las firmas digitales. Las firmas PQC se basan en diferentes problemas matemáticos que son difíciles de resolver tanto para ordenadores clásicos como cuánticos.
El NIST ha publicado dos estándares de firma PQC: ML-DSA (FIPS-204)
y SLH-DSA (FIPS-205). Puedes usar las variantes aleatorias puras con Cloud KMS: ML-DSA-65
y SLH-DSA-SHA2-128s
, o la variante aleatoria pre-hash HASH-SLH-DSA-SHA2-128s-SHA256
.
Los estándares del NIST definen los siguientes valores de tamaño para las claves y las firmas (en bytes):
Algoritmo | Clave privada | Clave pública | Firma |
---|---|---|---|
ML_DSA_65 | 4032 | 1952 | 3309 |
SLH_DSA_SHA2_128s | 64 | 32 | 7856 |
HASH_SLH_DSA_SHA2_128s_SHA256 | 64 | 32 | 7856 |
Ejemplos de casos prácticos de una firma digital
Puedes validar compilaciones mediante firmas digitales. Por ejemplo, si tienes un archivo binario firmado digitalmente con una clave privada, puedes comprobar su validez con la clave pública correspondiente. Si la firma del archivo binario no es válida, significa que se ha manipulado o dañado.
Otro ejemplo es validar el asunto de un certificado emitido por una autoridad de certificación (CA). Una AC emite un certificado a un sujeto en función de la propiedad de la parte de la clave privada de una clave pública/privada. El certificado contiene una firma digital creada con la clave privada del sujeto. El certificado también contiene la parte de clave pública del sujeto de la clave pública/privada. Una entidad que interactúa con el sujeto usa la clave pública del sujeto y reglas de verificación de certificados adicionales para validar la firma. Si la firma no se corresponde con los datos en cuestión o si se infringen las reglas de verificación prescritas por el certificado, la firma se considerará no válida.
Flujo de trabajo de firma digital
A continuación, se describe el flujo para crear y validar una firma. Los dos participantes en este flujo de trabajo son el firmante de los datos y el destinatario de los datos.
El firmante crea una clave asimétrica que admite firmas digitales.
El firmante puede usar esta clave para crear varias firmas.
El firmante realiza una operación con la clave privada sobre los datos para crear una firma digital.
El firmante proporciona los datos y la firma digital al destinatario de los datos.
El destinatario usa la parte de la clave pública del par de claves pública/privada del firmante para verificar la firma digital. Si no se puede llevar a cabo la verificación, significa que los datos se han modificado.
Algoritmos de firma
Cloud Key Management Service admite algoritmos de curva elíptica (EC) y RSA para la firma digital. Ambos algoritmos estándar del sector ofrecen opciones de tamaño de clave y algoritmo de resumen.
La criptografía de curva elíptica se basa en funciones hash unidireccionales y en la multiplicación de puntos para calcular puntos en una curva elíptica, combinada con la dificultad de determinar el multiplicando de un punto dada su origen. Esta dificultad para determinar el multiplicando es la ventaja criptográfica de la criptografía de curvas elípticas. Cuanto mayor sea el tamaño de la curva, más difícil será calcular el multiplicando. Una de las ventajas de la criptografía EC es que las claves EC tienen un tamaño menor que las claves RSA, pero ofrecen la misma solidez criptográfica.
La criptografía RSA se basa en la dificultad de factorizar un número entero grande en dos o más factores. Cuanto mayor sea el tamaño de la clave, más difícil será factorizar los números enteros.
Funcionalidad de firma digital de Cloud KMS
Cloud KMS ofrece las siguientes funciones relacionadas con la creación y validación de firmas digitales.
Posibilidad de crear una clave asimétrica con el propósito de la clave de
ASYMMETRIC_SIGN
. Las claves de Cloud KMS para la firma asimétrica admiten tanto algoritmos de firma de curva elíptica como algoritmos de firma RSA.Capacidad para crear una firma digital.
Posibilidad de recuperar la clave pública de una clave asimétrica.
Cloud KMS no ofrece directamente la posibilidad de validar una firma digital. En su lugar, valida una firma digital con SDKs y herramientas disponibles públicamente, como OpenSSL. Estos SDKs y herramientas requieren la clave pública que obtienes de Cloud KMS. Para obtener información sobre cómo usar SDKs y herramientas abiertos, consulta Validar una firma de curva elíptica y Validar una firma RSA.