semnături digitale cu GnuPG

într-un articol anterior, am introdus GnuPG verificând un fișier semnat și criptând un fișier pentru un destinatar utilizând o cheie publică. De asemenea, am împărtășit cum să creăm o pereche de chei și să exportăm o cheie publică, astfel încât să putem primi mesaje criptate. În acest articol, voi demonstra cum să semneze fișiere înainte de partajare prin e-mail sau publicarea pe un site web.

cu GnuPG, există mai multe metode de semnare a unui fișier.

$ gpg --help | grep -i signSign, check, encrypt or decrypt -s, --sign make a signature --clear-sign make a clear text signature -b, --detach-sign make a detached signature --verify verify a signature

pe măsură ce se discută fiecare opțiune, voi semna un fișier text simplu.

$ cat sample.txt Sample text for gpg signing

faceți o semnătură

cu opțiunea --sign, fișierul este criptat efectiv cu cheia privată. Cheia publică este necesară pentru a vizualiza conținutul fișierului. Acest lucru îl obligă pe destinatar să verifice originea și elimină orice conținut text clar din tranzit. Nu este privat, deoarece oricine are cheia publică poate decripta fișierul.

$ gpg -s sample.txt

rezultă un fișier numit sample.txt.gpg.

$ file sample*sample.txt: ASCII textsample.txt.gpg: data
imagine
grafic care afișează două fișiere trimise de la A la B, unde unul este text simplu și unul este criptat

pentru a verifica doar semnătura, utilizați opțiunea --verify. Pentru a vizualiza conținutul și pentru a afișa verificarea semnăturii, utilizați opțiunea --decrypt.

$ gpg --decrypt sample.txt.gpg Sample text for gpg signinggpg: Signature made Sat 30 May 2020 09:16:24 AM EDTgpg: using DSA key 15AC***********...omitted...

faceți o semnătură detașată

opțiunea Semnătură detașată este disponibilă pentru a oferi tuturor opțiunea de a vizualiza mesajul fără a avea cheia publică. Aceasta creează un fișier de semnătură separat care este utilizat pentru a verifica mesajul original, dacă se dorește. În forma sa cea mai simplă, acest fișier conține un hash al mesajului original și este criptat cu cheia privată. Oricine are cheia publică poate deschide semnătura și apoi compara hash-urile pentru a verifica integritatea fișierului semnat.

creați fișierul de semnătură utilizând opțiunea --detach-sign.

$ gpg -b sample.txt

rezultatul este separat .fișier de date sig.

$ file sample*sample.txt: ASCII textsample.txt.gpg: datasample.txt.sig: data
imagine
grafic care afișează două fișiere trimise de la A la B, unde unul este text simplu și unul este criptat

dacă nu doriți să partajați, să postați sau să trimiteți prin e-mail un fișier de date, puteți semna fișierul cu opțiunea --armor și va crea un fișier text ASCII cu semnătura. Acesta va utiliza, de asemenea .extensie asc în loc de .sig extensie:

$ cat sample.txt.asc -----BEGIN PGP SIGNATURE-----iF0EABECAB0WIQQVrPeUo9lk0dnOTCbvwxHCv6EJdAUCXtO/yAAKCRDvwxHCv6EJdC2BAJ49fIcOdBUdE0PELySEMlKNzVnZLgCdG1gsTim3gab2dgL6qagHArSlgq8==IvP/-----END PGP SIGNATURE-----

fișierul text simplu original și fișierul de semnătură separat trebuie să fie puse la dispoziția destinatarului.

pentru a verifica semnătura, specificați fișierul de semnătură și apoi fișierul original.

$ gpg --verify sample.txt.sig sample.txt

dacă au fost utilizate numele implicite, puteți lăsa numele fișierului necriptat.

$ gpg --verify sample.txt.sig gpg: assuming signed data in 'sample.txt'gpg: Signature made Sat 30 May 2020 09:23:53 AM EDT...omitted...

faceți o semnătură text clară

opțiunea --clear-sign este o opțiune mai nouă în ceea ce privește lunga istorie a GPG și este foarte frecventă pentru fișierele publicate pe site-uri web, cum ar fi fișierele Fedora download CHECKSUM. Conținutul poate fi citit de oricine. Informațiile despre semnătură sunt disponibile și în același fișier pentru cei care doresc să verifice originea și integritatea conținutului.

imagine
conținutul fișierului CHECKSUM care arată atât textul simplu al SHA256SUM, cât și blocul de semnături PGP

opțiunea --clear-sign va crea un fișier nou cu .extensie asc.

$ gpg --clear-sign sample.txt
$ file sample*sample.txt: ASCII textsample.txt.asc: ASCII textsample.txt.gpg: datasample.txt.sig: data

pentru a verifica semnătura, utilizați opțiunea --verify :

$ gpg --verify sample.txt.asc gpg: Signature made Sat 30 May 2020 09:27:56 AM EDT...omitted...gpg: WARNING: not a detached signature; file 'sample.txt' was NOT verified!

rețineți că în timpul procesului de verificare este afișat un mesaj care avertizează că fișierul original asociat nu este bifat. Puteți redenumi acest fișier înainte de a-l posta pe site-ul dvs. web. Verificarea va verifica în continuare conținutul fișierului.

deși aceasta este adesea cea mai convenabilă metodă pentru consumatorii produselor dvs., există un avertisment în pagina de manual GPG că semnăturile detașate sunt cea mai bună opțiune atunci când este necesară verificarea completă.

din pagina de manual gpg:

notă: la verificarea unei semnături text clar, GPG verifică doar ceea ce constituie datele semnate text clar și nu orice date suplimentare în afara semnăturii text clar sau a liniilor de antet care urmează direct linia marcatorului liniuței. Opțiunea — output poate fi utilizată pentru a scrie datele reale semnate, dar există și alte capcane cu acest format. Se recomandă evitarea semnăturilor text clar în favoarea semnăturilor detașate.

folosind o tastatură specifică

exemplele de mai sus au fost semnate cu prima cheie privată disponibilă în inelul meu de chei. S-ar putea să vreau să folosesc o altă cheie atunci când semnez un fișier pentru publicare pe un site web. Un keypair este creat special pentru proiect sau produs. Keypair poate fi chiar pe un nou breloc partajat.

$ gpg --keyring /etc/gpgkeys --no-default-keyring --full-gen-key <other options>

când un fișier este semnat sau criptat, asigurați-vă că specificați și opțiunea --keyring.

chiar dacă o singură persoană folosește cheia pentru a semna fișiere, creați o tastatură separată pentru a o utiliza pentru semnare. Nu utilizați aceeași cheie pentru alte sarcini zilnice, cum ar fi criptarea personală a e-mailurilor. Puteți lista numele cheilor private disponibile cu gpg --list-secret. ID-ul, numele sau e-mailul pot fi utilizate pentru a identifica cheia.

pentru a semna fișierul cu o cheie specifică dintr-un breloc, utilizați opțiunea --local-user identity.

$ gpg --local-user "My Project 2" --clear-sign sample.txt

Wrap up

Dacă fișierul text simplu este o listă de hash-uri pentru suma de control pentru descărcările de produse, acel fișier, orice fișiere de semnătură și cheia publică utilizată pentru a verifica semnăturile pot fi postate pe un site web. Consumatorii pot verifica apoi descărcările înainte de a instala orice software pe sistemele lor.



+