Poiché molte organizzazioni passano dai documenti cartacei ai documenti digitali, le firme digitali sono necessarie per gestire tutti i documenti digitali sensibili. Le firme digitali possono essere utilizzate per autenticare la fonte del messaggio, in modo tale che il destinatario possa decidere se fidarsi o meno del mittente. Al giorno d'oggi è più ampiamente utilizzato per la distribuzione di software e le transazioni finanziarie.
Nella crittografia a chiave pubblica, è possibile utilizzare una chiave privata per firmare un file. Chiunque abbia la chiave pubblica corrispondente può verificare se il file è stato firmato dalla chiave privata. Chiunque non disponga della chiave privata non può falsificare tale firma.
Le firme digitali possono essere utilizzate per l'autenticazione del mittente e il non ripudio. Il firmatario non può affermare di non aver firmato il documento.
Oggigiorno, le firme digitali svolgono un ruolo chiave nella distribuzione del software. Quando installi qualsiasi software dal mirror debian, una volta scaricato il software, verificherà se il software proviene da una fonte attendibile verificando la firma, assicurando così che il pacchetto provenga da una fonte attendibile.
Ora vedremo i vari metodi per firmare documenti usando lo strumento GnuPG.
Se non conosci lo strumento GnuPG, dovresti prima capire come usare i comandi di base di gpg.
Una firma digitale, certifica e marca un documento. Se il documento viene alterato in qualsiasi modo, la verifica della firma non andrà a buon fine.
1. Crea firma digitale per un file
Per firmare digitalmente un documento viene utilizzata l'opzione di firma. Ti verrà chiesto di inserire la tua passphrase per sbloccare la chiave privata utilizzata per la firma del documento.
$ gpg --sign file.txt You need a passphrase to unlock the secret key for user: "lakshmanan (This is lakshmans key) " 2048-bit RSA key, ID 3630F8D6, created 2012-12-30 Enter passphrase:
Ora creerà un file chiamato "file.txt.gpg" in formato binario. Il file di input viene compresso prima di firmare il file.
2. Verifica la firma digitale
Dato un documento firmato, puoi verificare la firma usando l'opzione –verify.
$ gpg --verify file.txt.gpg gpg: Signature made Saturday 12 January 2013 11:17:46 PM IST using RSA key ID 3630F8D6 gpg: Good signature from "lakshmanan (This is lakshmans key) "
Il comando precedente verifica che la firma effettuata sia corretta.
3. Estrarre il documento dal file
Per estrarre il documento originale dal file firmato, utilizzare l'opzione –decrypt. È possibile utilizzare –output per specificare il file di output in cui memorizzare il contenuto effettivo del file.
$ gpg --output doc.txt --decrypt file.txt.gpg gpg: Signature made Saturday 12 January 2013 11:17:46 PM IST using RSA key ID 3630F8D6 gpg: Good signature from "lakshmanan (This is lakshmans key) "
Ora il documento vero e proprio verrà salvato nel file doc.txt.
4. Per cancellare firmare i documenti
Un uso comune delle firme digitali è l'invio di e-mail. In tal caso, non è consigliabile comprimere il file in binario e firmarlo. Puoi usare l'opzione –clearsign per rendere il file racchiuso in firme corazzate ASCII.
$ gpg --output file.sig --clearsign file.txt
Ora verrà creato un file ASCII denominato file.sig che contiene la firma digitale e il file stesso.
$ cat file.sig -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 This is a test file -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.11 (GNU/Linux) iQEcBAEBAgAGBQJQ8af1AAoJEHUf3BE2MPjWJ6QIAIoM7vZlvVD4PR4TgqKkUAr5 S4Pc/7tjkEquBcPfzHgm6MPdTd7kIvUzwHNkkST0FyB2cLzvx8wNf7Zp/kDYL0Uz /7UCocMPsDBYHasUY4XRfCDUkF0ER/NAFdiL9AUTvQf6oQxwuQG9sWxb6tcK8eiV U7BBvQvMl6RszP+e7VXgcDbNeYMrTDwrivP9BKwAFuBtZmRg0vQKnjenUyVJL6gJ tndkwtOd1XGpc5ZKCTRSKOoTonuUQAD1q0Pi6nmeaNskSqwVOxzQcV6lQ8nHJTh2 XfKSAopNriv405YfC1KO5H2Ffzee2jx+o3HqxfU1vQbHtP7uf4QqxUc2HtDnRNQ= =PN+K -----END PGP SIGNATURE-----
La verifica del documento firmato in chiaro è simile alla verifica del documento firmato binario.
5. Crea firma staccata
In caso di firme staccate, viene creato un nuovo file come firma. Puoi usare l'opzione –detach-sign per creare una firma separata.
$ gpg --armor --detach-sig file.txt
Ora verrà creato un file ASCII denominato file.txt.asc che contiene la firma staccata. È possibile utilizzare –output per modificare il nome del file della firma scollegata.
6. Verifica la firma staccata
Per verificare una firma staccata, è necessario disporre sia del file della firma che del file dei dati.
$ gpg --verify file.txt.asc file.txt gpg: Signature made Sunday 13 January 2013 12:13:59 AM IST using RSA key ID 3630F8D6 gpg: Good signature from "lakshmanan (This is lakshmans key) "
Proviamo a modificare il file.txt. Aggiungi del contenuto al file.txt e prova a verificare la firma.
$ echo "Append" >> file.txt $ gpg --verify file.txt.asc file.txt gpg: Signature made Sunday 13 January 2013 12:13:59 AM IST using RSA key ID 3630F8D6 gpg: BAD signature from "lakshmanan (This is lakshmans key) "
Ora la verifica è fallita dicendo firma BAD poiché il contenuto è stato modificato.
7. Crittografa e firma un documento
In uno dei nostri post precedenti, abbiamo anche discusso in dettaglio su come crittografare e decrittografare un file usando GnuPG. Tuttavia, se desideri crittografare e firmare un documento allo stesso tempo, procedi come segue:
$ gpg --sign --encrypt --recipient raman file.txt
Il comando precedente crittografa il file.txt e firma il documento digitalmente. Il destinatario può verificare la firma e decrittografare il documento utilizzando l'opzione –decrypt.