digitala signaturer med GnuPG

i en tidigare artikel introducerade jag GnuPG genom att verifiera en signerad fil och kryptera en fil för en mottagare med hjälp av en offentlig nyckel. Jag har också delat hur man skapar ett nyckelpar och exporterar en offentlig nyckel så att vi kan ta emot krypterade meddelanden. I den här artikeln kommer jag att visa hur du signerar filer innan du delar via e-post eller publicerar på en webbplats.

med GnuPG finns det flera metoder för att signera 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

eftersom varje alternativ diskuteras kommer jag att underteckna en enkel textfil.

$ cat sample.txt Sample text for gpg signing

gör en signatur

med alternativet --sign krypteras filen effektivt med den privata nyckeln. Den offentliga nyckeln krävs för att visa innehållet i filen. Detta tvingar både mottagaren att verifiera ursprunget och tar bort allt klart textinnehåll från transit. Det är inte privat eftersom någon med den offentliga nyckeln kan dekryptera filen.

$ gpg -s sample.txt

detta resulterar i en fil med namnet sample.txt.gpg.

$ file sample*sample.txt: ASCII textsample.txt.gpg: data
bild
grafik som visar två filer som skickas från A till B där en är vanlig text och en är krypterad

för att bara verifiera signaturen, använd alternativet --verify. För att både visa innehållet och visa signaturverifieringen, använd alternativet --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...

gör en fristående signatur

alternativet fristående signatur är tillgängligt för att ge alla möjlighet att visa meddelandet utan att ha den offentliga nyckeln. Detta skapar en separat signaturfil som används för att verifiera det ursprungliga meddelandet om så önskas. I sin enklaste form innehåller den här filen en hash av det ursprungliga meddelandet och krypteras med den privata nyckeln. Vem som helst med den offentliga nyckeln kan öppna signaturen och sedan jämföra hashar för att verifiera integriteten för den signerade filen.

skapa signaturfilen med alternativet --detach-sign.

$ gpg -b sample.txt

resultatet är en separat .sig datafil.

$ file sample*sample.txt: ASCII textsample.txt.gpg: datasample.txt.sig: data
bild
grafik som visar två filer som skickas från A till B där en är vanlig text och en är krypterad

om du inte vill dela, posta eller e-posta en datafil kan du signera filen med alternativet --armor, och det kommer att skapa en ASCII-textfil med signaturen. Det kommer också att använda .asc förlängning i stället för .sig förlängning:

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

den ursprungliga vanliga textfilen och den separata signaturfilen måste båda göras tillgängliga för mottagaren.

för att verifiera signaturen, ange signaturfilen och sedan originalfilen.

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

om standardnamnen har använts kan du lämna bort namnet på den okrypterade filen.

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

gör en tydlig text signatur

alternativet --clear-sign är ett nyare alternativ när det gäller GPG: s långa historia och är mycket vanligt för filer som publiceras på webbplatser som Fedora download CHECKSUM files. Innehållet kan läsas av vem som helst. Signaturinformationen finns också i samma fil för dem som vill verifiera innehållets ursprung och integritet.

bild
innehållet i CHECKSUM-filen som visar både den vanliga texten i SHA256SUM och PGP-signaturblock

alternativet --clear-sign skapar en ny fil med .asc förlängning.

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

för att verifiera signaturen, använd alternativet --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!

Observera att ett meddelande visas under verifieringsprocessen varning om att den tillhörande originalfilen inte är markerad. Du kan byta namn på den här filen innan du publicerar den på din webbplats. Verifieringen kommer fortfarande att kontrollera filinnehållet.

även om detta ofta är den mest praktiska metoden för konsumenterna av dina produkter, finns det en varning på GPG-mansidan att fristående signaturer är det bättre alternativet när fullständig verifiering krävs.

från GPG-mansidan:

Obs!: När du verifierar en cleartext-signatur verifierar GPG endast vad som utgör cleartext-signerade data och inte några extra data utanför cleartext-signaturen eller rubriklinjerna direkt efter streckmarkeringslinjen. Alternativet — output kan användas för att skriva ut den faktiska signerade data, men det finns andra fallgropar med detta format också. Det föreslås att undvika cleartext signaturer till förmån för fristående signaturer.

använda en specifik keypair

ovanstående exempel var alla signerade med den första privata nyckeln som finns i min nyckelring. Jag kanske vill använda en annan nyckel när jag signerar en fil för publicering på en webbplats. En keypair skapas speciellt för projektet eller produkten. Keypair kan till och med vara på en ny delad nyckelring.

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

när en fil är signerad eller krypterad, var noga med att också ange alternativet --keyring.

även om endast en person använder nyckeln för att signera filer, gör en separat keypair att använda för signering. Använd inte samma nyckel för andra dagliga uppgifter som personlig e-postkryptering. Du kan lista de privata nyckelnamnen som är tillgängliga med gpg --list-secret. ID, namn eller e-post kan användas för att identifiera nyckeln.

för att signera filen med en specifik nyckel från en nyckelring, använd alternativet --local-user identitet.

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

Wrap up

om din enkla textfil är en lista med kontrollsummahashar för dina produktnedladdningar kan den filen, Alla signaturfiler och den offentliga nyckeln som används för att verifiera signaturerna alla läggas ut på en webbplats. Konsumenterna kan sedan verifiera nedladdningarna innan de installerar någon programvara på sina system.



+