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 usa 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 è a conoscenza della chiave di firma
Gli scopi principali di una firma digitale sono:
- verifica dell'integrità dei dati firmati
- non rifiuto 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 è composta da una coppia di chiave pubblica/privata. La chiave privata viene utilizzata per creare una firma e la chiave pubblica corrispondente viene utilizzata per verificare la firma.
Esempi di casi d'uso della firma digitale
Puoi convalidare le build utilizzando le firme digitali. Ad esempio, se un programma binario è firmato digitalmente da una chiave privata, puoi verificarne la validità utilizzando la chiave pubblica corrispondente alla chiave privata. Se la firma del programma binario non è valida, significa che è stato manomesso e/o danneggiato.
Un altro esempio è la convalida dell'oggetto di un certificato emesso da un'autorità di certificazione (CA). Una CA rilascia un certificato a un soggetto in base alla sua proprietà della parte della chiave privata di una chiave pubblica/privata. Il certificato contiene una firma digitale creata con la chiave privata dell'oggetto. Il certificato contiene anche la parte della chiave pubblica del soggetto della chiave pubblica/privata. Un'entità che interagisce con l'oggetto utilizza la chiave pubblica dell'oggetto e altre regole di verifica 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 non sarà valida.
Flusso di lavoro della firma digitale
Di seguito viene descritta la procedura per la creazione e la convalida di una firma. I due partecipanti di questo flusso di lavoro sono costituiti dal firmatario dei dati e dal destinatario dei dati.
Il firmatario crea una chiave asimmetrica che supporta la firma digitale.
Il firmatario può utilizzare questa chiave per creare più firme.
Il firmatario esegue un'operazione di chiave privata sui dati per creare una firma digitale.
Il firmatario fornisce i dati e la firma digitale al destinatario dei dati.
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 modificati.
Algoritmi di firma
Cloud Key Management Service supporta gli algoritmi a curva ellittica (EC) e RSA per la firma digitale. Entrambi gli algoritmi standard di settore offrono varie opzioni per la dimensione della chiave e l'algoritmo di sintesi.
La crittografia basata su curve ellittiche si basa su funzioni hash unidirezionali e sulla moltiplicazione di punti per calcolare i punti su una curva ellittica, combinata con l'intrattrazione della determinazione del moltiplicando per un punto in base alla sua origine. Questa difficoltà nel determinare il moltiplicando è il vantaggio crittografico della crittografia EC. Più grande è la dimensione della curva, più difficile sarà calcolare il moltiplicando. Un vantaggio della crittografia EC è che una chiave EC ha dimensioni più ridotte rispetto a una chiave RSA che offre la stessa potenza crittografica.
La crittografia RSA si basa sulla difficoltà nel fattorizzare un numero intero grande in due o più fattori. Più grande è la dimensione della chiave, più difficile è calcolare i numeri interi.
Funzionalità di firma digitale di Cloud KMS
Cloud KMS offre le seguenti funzionalità relative alla creazione e alla convalida delle firme digitali.
Possibilità di creare una chiave asimmetrica con lo scopo chiave di
ASYMMETRIC_SIGN
. Le chiavi Cloud KMS per la firma asimmetrica supportano sia gli algoritmi di firma a curva ellittica sia gli algoritmi di firma RSA.Possibilità di creare una firma digitale.
Possibilità di recuperare la chiave pubblica per una chiave asimmetrica.
Cloud KMS non offre direttamente la possibilità di convalidare una firma digitale. Puoi invece convalidare una firma digitale utilizzando SDK e strumenti disponibili pubblicamente, come OpenSSL. Questi SDK e strumenti richiedono la chiave pubblica che recupera da Cloud KMS. Per informazioni su come utilizzare gli SDK e gli strumenti aperti, consulta la sezione sulla convalida di una firma a curva ellittica e sulla convalida di una firma RSA.