Firmas digitales

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.

  1. El firmante crea una clave asimétrica que admite firmas digitales.

    El firmante puede usar esta clave para crear varias firmas.

  2. El firmante realiza una operación con la clave privada sobre los datos para crear una firma digital.

  3. El firmante proporciona los datos y la firma digital al destinatario de los datos.

  4. 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.

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.