digitale signaturer med GnuPG

i en tidligere artikel introducerede jeg GnuPG ved at verificere en underskrevet fil og kryptere en fil for en modtager ved hjælp af en offentlig nøgle. Jeg har også delt, hvordan man opretter et nøglepar og eksporterer en offentlig nøgle, så vi kunne modtage krypterede meddelelser. I denne artikel vil jeg vise, hvordan man underskriver filer, før deling via e-mail eller udgivelse på en hjemmeside.

med GnuPG er der flere metoder til at underskrive en fil.

$ 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

da hver mulighed diskuteres, vil jeg underskrive en simpel tekstfil.

$ cat sample.txt Sample text for gpg signing

lav en signatur

med indstillingen --sign krypteres filen effektivt med den private nøgle. Den offentlige nøgle er påkrævet for at se indholdet af filen. Dette tvinger både modtageren til at verificere oprindelsen og fjerner alt klart tekstindhold fra transit. Det er ikke privat, da nogen med den offentlige nøgle kan dekryptere filen.

$ gpg -s sample.txt

dette resulterer i en fil med navnet sample.TST.gpg.

$ file sample*sample.txt: ASCII textsample.txt.gpg: data
billede
grafik, der viser to filer sendt fra A til B, hvor den ene er almindelig tekst, og den ene er krypteret

for kun at bekræfte signaturen skal du bruge indstillingen --verify. Hvis du både vil se indholdet og vise signaturbekræftelsen, skal du bruge indstillingen --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...

lav en fritliggende signatur

indstillingen fritliggende signatur er tilgængelig for at give alle mulighed for at se meddelelsen uden at have den offentlige nøgle. Dette opretter en separat signaturfil, der bruges til at bekræfte den originale meddelelse, hvis det ønskes. I sin enkleste form indeholder denne fil en hash af den oprindelige meddelelse og er krypteret med den private nøgle. Alle med den offentlige nøgle kan åbne signaturen og derefter sammenligne hashes for at verificere integriteten af den underskrevne fil.

Opret signaturfilen ved hjælp af indstillingen --detach-sign.

$ gpg -b sample.txt

resultatet er en separat .sig datafil.

$ file sample*sample.txt: ASCII textsample.txt.gpg: datasample.txt.sig: data
billede
grafik, der viser to filer sendt fra A til B, hvor den ene er almindelig tekst, og den ene er krypteret

hvis du ikke vil dele, sende eller maile en datafil, kan du underskrive filen med --armor, og den opretter en ASCII-tekstfil med signaturen. Det vil også bruge .asc udvidelse i stedet for .sig udvidelse:

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

den oprindelige almindelige tekstfil og den separate signaturfil skal begge stilles til rådighed for modtageren.

for at bekræfte signaturen skal du angive signaturfilen og derefter den originale fil.

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

hvis standardnavne er blevet brugt, kan du forlade navnet på den ukrypterede fil.

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

lav en klar tekstsignatur

--clear-sign indstillingen er en nyere mulighed med hensyn til GPG ‘ s lange historie og er meget almindelig for filer, der er offentliggjort på hjemmesider som f.eks. Indholdet kan læses af alle. Signaturoplysningerne er også tilgængelige i den samme fil for dem, der ønsker at verificere indholdets oprindelse og integritet.

billede
indholdet af CHECKSUM fil viser både almindelig tekst SHA256SUM og PGP signatur blok

indstillingen --clear-sign opretter en ny fil med .asc udvidelse.

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

for at bekræfte signaturen skal du bruge indstillingen --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!

Bemærk, at der vises en meddelelse under verifikationsprocessen, der advarer om, at den tilknyttede originale fil ikke er markeret. Du kan omdøbe denne fil, før du sender den på din hjemmeside. Verifikationen vil stadig kontrollere filens indhold.

selvom dette ofte er den mest bekvemme metode for forbrugerne af dine produkter, er der en advarsel på GPG man-siden om, at løsrevne signaturer er den bedre mulighed, når fuld verifikation er påkrævet.

fra gpg man-siden:

Bemærk: Når du verificerer en klartekstsignatur, verificerer GPG kun, hvad der udgør de signerede data i klartekst og ikke ekstra data uden for klartekstsignaturen eller overskriftslinjerne direkte efter stregmarkeringslinjen. –Output-indstillingen kan bruges til at skrive de faktiske underskrevne data, men der er også andre faldgruber med dette format. Det foreslås at undgå klartekst signaturer til fordel for fritliggende signaturer.

brug af et specifikt tastatur

ovenstående eksempler blev alle underskrevet med den første private nøgle, der var tilgængelig i min nøglering. Jeg vil måske bruge en anden nøgle, når jeg underskriver en fil til offentliggørelse på en hjemmeside. Et tastatur er oprettet specielt til projektet eller produktet. Keypair kan endda være på en ny delt nøglering.

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

når en fil er underskrevet eller krypteret, skal du også angive indstillingen --keyring.

selvom kun en person bruger nøglen til at underskrive filer, skal du oprette et separat tastatur, der skal bruges til signering. Brug ikke den samme nøgle til andre daglige opgaver såsom personlig e-mail-kryptering. Du kan angive de private nøglenavne, der er tilgængelige med gpg --list-secret. ID, navn eller e-mail kan bruges til at identificere nøglen.

hvis du vil underskrive filen med en bestemt nøgle fra en nøglering, skal du bruge indstillingen --local-user identitet.

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

pak op

hvis din simple tekstfil er en liste over checksum hashes for dine produktoverførsler, kan denne fil, eventuelle signaturfiler og den offentlige nøgle, der bruges til at verificere signaturerne, alle blive sendt til en hjemmeside. Forbrugerne kan derefter kontrollere overførslen, før de installerer programmer på deres systemer.



+