Firme digitali

Una firma digitale è un output crittografico utilizzato per verificare l'autenticità dei dati. Un algoritmo di firma digitale consente due operazioni distinte:

  • un'operazione di firma, che utilizza una chiave di firma per produrre una firma su dati non elaborati

  • un'operazione di verifica, in cui la firma può essere convalidata da una parte che non conosce la chiave di firma

Gli scopi principali di una firma digitale sono:

  • verifica dell'integrità dei dati firmati
  • non ripudio se il firmatario afferma che la firma non è autentica

Le firme digitali si basano sulla crittografia asimmetrica, nota anche come crittografia a chiave pubblica. Una chiave asimmetrica è costituita da una coppia di chiave pubblica/privata. La chiave privata viene utilizzata per creare una firma, mentre la chiave pubblica corrispondente viene utilizzata per verificarla.

Firma digitale con crittografia post-quantistica (PQC)

I computer quantistici hanno il potenziale per decriptare materiale criptato da algoritmi di crittografia classici come RSA ed ECDSA, ampiamente utilizzati, il che potrebbe rendere vulnerabile questo materiale criptato. Gli algoritmi crittografici post-quantistici sono progettati per utilizzare hardware e software classici per resistere agli attacchi quantistici, contribuendo a garantire la validità continua delle firme digitali. Le firme PQC si basano su diversi problemi matematici difficili da risolvere sia per i computer classici che per quelli quantistici.

Il NIST ha pubblicato due standard di firma PQC: ML-DSA (FIPS-204) e SLH-DSA (FIPS-205). Puoi utilizzare le varianti puramente randomizzate con Cloud KMS: ML-DSA-65 e SLH-DSA-SHA2-128s oppure la variante randomizzata pre-hash HASH-SLH-DSA-SHA2-128s-SHA256. Gli standard NIST definiscono i seguenti valori di dimensione per chiavi e firme (in byte):

Algoritmo Chiave privata Chiave pubblica Firma
ML_DSA_65 4032 1952 3309
SLH_DSA_SHA2_128s 64 32 7856
HASH_SLH_DSA_SHA2_128s_SHA256 64 32 7856

Esempi di casi d'uso per una firma digitale

Puoi convalidare le build utilizzando le firme digitali. Ad esempio, dato un binario firmato digitalmente da una chiave privata, puoi verificarne la validità utilizzando la chiave pubblica corrispondente alla chiave privata. Se la firma del binario non è valida, il binario è stato manomesso e/o danneggiato.

Un altro esempio è la convalida del soggetto di un certificato emesso da un'autorità di certificazione (CA). Una CA rilascia un certificato a un soggetto in base alla proprietà della parte di chiave privata di una chiave pubblica/privata. Il certificato contiene una firma digitale creata con la chiave privata del soggetto. Il certificato contiene anche la parte della chiave pubblica del soggetto della chiave pubblica/privata. Un'entità che interagisce con il soggetto utilizza la chiave pubblica del soggetto e regole di verifica aggiuntive del certificato per convalidare la firma. Se la firma non corrisponde ai dati in questione o se le regole di verifica prescritte dal certificato vengono violate, la firma verrà considerata non valida.

Flusso di lavoro di firma digitale

Di seguito viene descritto il flusso per la creazione e la convalida di una firma. I due partecipanti a questo flusso di lavoro sono il firmatario dei dati e il destinatario dei dati.

  1. Il firmatario crea una chiave asimmetrica che supporta la firma digitale.

    Il firmatario può utilizzare questa chiave per creare più firme.

  2. Il firmatario esegue un'operazione con la chiave privata sui dati per creare una firma digitale.

  3. Il firmatario fornisce i dati e la firma digitale al destinatario dei dati.

  4. Il destinatario utilizza la parte della chiave pubblica della coppia di chiave pubblica/privata del firmatario per verificare la firma digitale. Se la verifica non va a buon fine, i dati sono stati alterati.

Algoritmi di firma

Cloud Key Management Service supporta gli algoritmi a curva ellittica (EC) e RSA per la firma digitale. Entrambi questi algoritmi standard del settore offrono scelte di dimensioni della chiave e algoritmo di hashing.

La crittografia ellittica si basa su funzioni hash unidirezionali e sulla moltiplicazione di punti per calcolare i punti su una curva ellittica, combinata con la difficoltà di determinare il moltiplicando per un punto data la sua origine. Questa difficoltà nel determinare il moltiplicando è il vantaggio crittografico della crittografia EC. Più grande è la dimensione della curva, più difficile è calcolare il moltiplicando. Un vantaggio della crittografia EC è che una chiave EC ha una dimensione più piccola rispetto a una chiave RSA che offre la stessa robustezza crittografica.

La crittografia RSA si basa sulla difficoltà di fattorizzare un numero intero grande in due o più fattori. Maggiore è la dimensione della chiave, più difficile è fattorizzare gli interi.

Funzionalità di firma digitale di Cloud KMS

Cloud KMS fornisce le seguenti funzionalità relative alla creazione e alla convalida delle firme digitali.

Cloud KMS non offre direttamente la possibilità di convalidare una firma digitale. Invece, convalidi una firma digitale utilizzando SDK e strumenti disponibili pubblicamente, come OpenSSL. Questi SDK e strumenti richiedono la chiave pubblica recuperata da Cloud KMS. Per informazioni su come utilizzare SDK e strumenti aperti, consulta Convalida di una firma con curva ellittica e Convalida di una firma RSA.