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