GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Digitale Signaturen mit GnuPG

In einem früheren Artikel habe ich GnuPG eingeführt, indem ich eine signierte Datei verifiziert und eine Datei für einen Empfänger mit einem öffentlichen Schlüssel verschlüsselt habe. Ich habe auch erklärt, wie man ein Schlüsselpaar erstellt und einen öffentlichen Schlüssel exportiert, damit wir verschlüsselte Nachrichten empfangen können. In diesem Artikel werde ich demonstrieren, wie Dateien signiert werden, bevor sie per E-Mail geteilt oder auf einer Website veröffentlicht werden.

Mit GnuPG gibt es mehrere Methoden zum Signieren einer Datei.

$ gpg --help | grep -i sign
Sign, 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

Während jede Option besprochen wird, werde ich eine einfache Textdatei signieren.

$ cat sample.txt 
Sample text for gpg signing

Machen Sie eine Signatur

Mit dem --sign Option wird die Datei effektiv mit dem privaten Schlüssel verschlüsselt. Der öffentliche Schlüssel ist erforderlich, um den Inhalt der Datei anzuzeigen. Dies zwingt den Empfänger, den Ursprung zu überprüfen, und entfernt alle Klartextinhalte aus der Übertragung. Es ist nicht privat, da jeder mit dem öffentlichen Schlüssel die Datei entschlüsseln kann.

$ gpg -s sample.txt

Das Ergebnis ist eine Datei mit dem Namen sample.txt.gpg.

$ file sample*
sample.txt:     ASCII text
sample.txt.gpg: data

Um nur die Signatur zu überprüfen, verwenden Sie --verify Möglichkeit. Verwenden Sie --decrypt, um sowohl den Inhalt anzuzeigen als auch die Signaturüberprüfung anzuzeigen Option.

$ gpg --decrypt sample.txt.gpg 
Sample text for gpg signing

gpg: Signature made Sat 30 May 2020 09:16:24 AM EDT
gpg:             using DSA key 15AC***********
...omitted...

Machen Sie eine getrennte Signatur

Die Option der getrennten Signatur ist verfügbar, um jedem die Möglichkeit zu geben, die Nachricht anzuzeigen, ohne über den öffentlichen Schlüssel zu verfügen. Dadurch wird eine separate Signaturdatei erstellt, die bei Bedarf zur Überprüfung der ursprünglichen Nachricht verwendet wird. In ihrer einfachsten Form enthält diese Datei einen Hash der ursprünglichen Nachricht und ist mit dem privaten Schlüssel verschlüsselt. Jeder mit dem öffentlichen Schlüssel kann die Signatur öffnen und dann Hashes vergleichen, um die Integrität der signierten Datei zu überprüfen.

Erstellen Sie die Signaturdatei mit --detach-sign Option.

$ gpg -b sample.txt

Das Ergebnis ist eine separate .sig Datendatei.

$ file sample*
sample.txt:     ASCII text
sample.txt.gpg: data
sample.txt.sig: data

Wenn Sie eine Datendatei nicht teilen, posten oder per E-Mail versenden möchten, können Sie die Datei mit --armor signieren Option, und es wird eine ASCII-Textdatei mit der Signatur erstellt. Es wird auch die .asc-Datei verwenden Erweiterung anstelle der .sig Erweiterung:

$ cat sample.txt.asc 
-----BEGIN PGP SIGNATURE-----

iF0EABECAB0WIQQVrPeUo9lk0dnOTCbvwxHCv6EJdAUCXtO/yAAKCRDvwxHCv6EJ
dC2BAJ49fIcOdBUdE0PELySEMlKNzVnZLgCdG1gsTim3gab2dgL6qagHArSlgq8=
=IvP/
-----END PGP SIGNATURE-----

Dem Empfänger müssen sowohl die ursprüngliche Klartextdatei als auch die separate Signaturdatei zur Verfügung gestellt werden.

Um die Signatur zu überprüfen, geben Sie die Signaturdatei und dann die Originaldatei an.

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

Wenn die Standardnamen verwendet wurden, können Sie den Namen der unverschlüsselten Datei weglassen.

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

Erstellen Sie eine Klartextsignatur

Das --clear-sign Option ist eine neuere Option in Bezug auf die lange Geschichte von GPG und ist sehr verbreitet für Dateien, die auf Websites veröffentlicht werden, wie z. B. die Fedora-Download-CHECKSUM-Dateien. Die Inhalte sind für jedermann lesbar. Die Signaturinformationen sind auch in derselben Datei für diejenigen verfügbar, die den Ursprung und die Integrität des Inhalts überprüfen möchten.

Das --clear-sign Option erstellt eine neue Datei mit der .asc Erweiterung.

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

Um die Signatur zu überprüfen, verwenden Sie --verify Möglichkeit:

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

Beachten Sie, dass während des Überprüfungsprozesses eine Meldung angezeigt wird, dass die zugehörige Originaldatei nicht überprüft wird. Sie können diese Datei umbenennen, bevor Sie sie auf Ihrer Website veröffentlichen. Die Verifizierung überprüft weiterhin den Inhalt der Datei.

Obwohl dies oft die bequemste Methode für die Verbraucher Ihrer Produkte ist, gibt es eine Warnung in der GPG-Manpage, dass getrennte Signaturen die bessere Option sind, wenn eine vollständige Verifizierung erforderlich ist.

Von der GPG-Manpage:

Hinweis:Bei der Überprüfung einer Klartext-Signatur überprüft GPG nur, was die Klartext-signierten Daten ausmacht, und keine zusätzlichen Daten außerhalb der Klartext-Signatur oder der Kopfzeilen direkt nach der Strichmarkierungslinie. Die Option --output kann verwendet werden, um die eigentlichen signierten Daten auszugeben, aber es gibt auch andere Fallstricke bei diesem Format. Es wird empfohlen, Klartext-Signaturen zugunsten getrennter Signaturen zu vermeiden.

Verwenden eines bestimmten Schlüsselpaars

Die obigen Beispiele wurden alle mit dem ersten privaten Schlüssel signiert, der in meinem Schlüsselbund verfügbar ist. Ich möchte vielleicht einen anderen Schlüssel verwenden, wenn ich eine Datei zur Veröffentlichung auf einer Website signiere. Ein Schlüsselpaar wird speziell für das Projekt oder Produkt erstellt. Das Schlüsselpaar kann sich sogar auf einem neuen gemeinsamen Schlüsselbund befinden.

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

Wenn eine Datei signiert oder verschlüsselt ist, achten Sie darauf, auch den --keyring anzugeben Option.

Auch wenn nur eine Person den Schlüssel zum Signieren von Dateien verwendet, erstellen Sie ein separates Schlüsselpaar zum Signieren. Verwenden Sie denselben Schlüssel nicht für andere tägliche Aufgaben wie die persönliche E-Mail-Verschlüsselung. Sie können die verfügbaren privaten Schlüsselnamen mit gpg --list-secret auflisten . Die ID, der Name oder die E-Mail-Adresse können verwendet werden, um den Schlüssel zu identifizieren.

Um die Datei mit einem bestimmten Schlüssel aus einem Schlüsselbund zu signieren, verwenden Sie den --local-user Identitätsoption.

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

Schluss machen

Wenn Ihre einfache Textdatei eine Liste von Prüfsummen-Hashes für Ihre Produktdownloads ist, können diese Datei, alle Signaturdateien und der öffentliche Schlüssel, der zur Überprüfung der Signaturen verwendet wird, alle auf einer Website veröffentlicht werden. Verbraucher können dann die Downloads überprüfen, bevor sie Software auf ihren Systemen installieren.

[ Möchten Sie mehr über Sicherheit erfahren? Schauen Sie sich die Checkliste für IT-Sicherheit und Compliance an. ]


Linux
  1. Sortierbefehl in Linux mit Beispielen

  2. Arbeiten Sie mit der Wiederherstellung auf Dateiebene

  3. Überprüfen Sie die Linux-Dateiberechtigungen mit ls

  4. Warnung mit nftw

  5. Plotten Sie die .gnu-Datei mit gnuplot

Spielen Sie ein digitales Orchester mit Linux Sampler

Linux-Tail-Befehl mit Beispielen

Linux-WC-Befehl mit Beispielen

Finden Sie verlorene Dateien mit Scalpel

Verwendung des Linux-mv-Befehls mit Beispielen

Ist mv mit Wildcard noch atomar