Digitale signaturer Med GnuPG

I en tidligere artikkel introduserte Jeg GnuPG ved å verifisere en signert fil og kryptere en fil for en mottaker ved hjelp av en offentlig nøkkel. Jeg har også delt hvordan du oppretter et nøkkelpar og eksporterer en offentlig nøkkel slik at vi kan motta krypterte meldinger. I denne artikkelen vil jeg demonstrere hvordan du signerer filer før du deler via e-post eller publiserer på et nettsted.

Med GnuPG er det flere metoder for å signere 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

som hvert alternativ er diskutert, vil jeg signere en enkel tekstfil.

$ cat sample.txt Sample text for gpg signing

Lag en signatur

med alternativet --sign krypteres filen effektivt med den private nøkkelen. Den offentlige nøkkelen er nødvendig for å vise innholdet i filen. Dette tvinger begge mottakeren til å bekrefte opprinnelsen og fjerner alt klartekstinnhold fra transitt. Det er ikke privat siden alle med den offentlige nøkkelen kan dekryptere filen.

$ gpg -s sample.txt

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

$ file sample*sample.txt: ASCII textsample.txt.gpg: data
Bilde
Grafisk viser to filer sendt fra A Til B der en er ren tekst og en er kryptert

hvis du bare vil bekrefte signaturen, bruker du alternativet --verify. Hvis du vil vise innholdet og vise signaturbekreftelsen, bruker du 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...

Lag en frittstående signatur

alternativet frittstående signatur er tilgjengelig for å gi alle muligheten til å vise meldingen uten å ha den offentlige nøkkelen. Dette oppretter en egen signaturfil som brukes til å bekrefte den opprinnelige meldingen hvis ønskelig. I sin enkleste form inneholder denne filen en hash av den opprinnelige meldingen og krypteres med den private nøkkelen. Alle med den offentlige nøkkelen kan åpne signaturen og deretter sammenligne hasher for å bekrefte integriteten til den signerte filen.

Opprett signaturfilen ved hjelp av alternativet --detach-sign.

$ gpg -b sample.txt

resultatet er en separat .sig datafil.

$ file sample*sample.txt: ASCII textsample.txt.gpg: datasample.txt.sig: data
Bilde
Grafisk viser to filer sendt fra A Til B der en er ren tekst og en er kryptert

Hvis du ikke vil dele, poste eller sende en datafil via e-post, kan du signere filen med alternativet --armor, og det vil opprette EN ASCII-tekstfil med signaturen. Det vil ogsa bruke den .asc forlengelse i stedet for den .sig forlengelse:

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

den originale ren tekstfilen og den separate signaturfilen må begge gjøres tilgjengelig for mottakeren.

angi signaturfilen og deretter originalfilen for å bekrefte signaturen.

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

hvis standardnavnene er brukt, kan du la av navnet på den ukrypterte 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...

Lag en klar tekst signatur

--clear-sign alternativet er et nyere alternativ når DET gjelder gpgs lange historie og er svært vanlig for filer publisert på nettsteder som Fedora download CHECKSUM files. Innholdet kan leses av hvem som helst. Signaturinformasjonen er også tilgjengelig i samme fil for de som vil bekrefte opprinnelsen og integriteten til innholdet.

Bilde
Innholdet I CHECKSUM fil som viser både ren tekst AV SHA256SUM og Pgp Signatur blokk

alternativet --clear-sign vil opprette en ny fil med .asc forlengelse.

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

for å bekrefte signaturen, bruk 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!

Merk at det vises en melding under bekreftelsesprosessen advarsel om at den tilknyttede originalfilen ikke er merket av. Du kan endre navn på denne filen før du legger den ut på nettstedet ditt. Bekreftelsen vil fortsatt sjekke filinnholdet.

selv om dette ofte er den mest praktiske metoden for forbrukerne av produktene dine, er DET en advarsel på gpg man-siden at frittstående signaturer er det beste alternativet når full verifisering er nødvendig.

Fra gpg man-siden:

Merk: NÅR du bekrefter en klartekstsignatur, verifiserer GPG bare det som utgjør klartekst-signerte data og ikke noen ekstra data utenfor klartekst-signaturen eller topptekstlinjene direkte etter strekmarkørlinjen. — Output-alternativet kan brukes til å skrive ut de faktiske signerte dataene, men det er også andre fallgruver med dette formatet. Det er foreslått å unngå klartekst signaturer i favør av frittliggende signaturer.

Ved hjelp av et bestemt tastatur

eksemplene ovenfor ble alle signert med den første private nøkkelen som var tilgjengelig i nøkkelringen min. Jeg vil kanskje bruke en annen nøkkel når jeg signerer en fil for publisering på et nettsted. En keypair er laget spesielt for prosjektet eller produktet. Keypair kan også være på en ny delt nøkkelring.

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

når en fil er signert eller kryptert, må du også angi alternativet --keyring.

selv om bare en person bruker nøkkelen til å signere filer, må du lage et eget tastatur som skal brukes til signering. Ikke bruk samme nøkkel for andre daglige oppgaver som personlig e-postkryptering. Du kan liste de private nøkkelnavnene som er tilgjengelige med gpg --list-secret. ID, navn eller e-post kan brukes til å identifisere nøkkelen.

hvis du vil signere filen med en bestemt nøkkel fra en nøkkelring, bruker du alternativet --local-user identitet.

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

Bryt opp

hvis den enkle tekstfilen din er en liste over sjekksum-hasher for produktnedlastinger, kan den filen, alle signaturfiler og den offentlige nøkkelen som brukes til å bekrefte signaturene, posteres på et webområde. Forbrukerne kan deretter bekrefte nedlastingene før de installerer programvare på systemene sine.



+