Verwendung von GPG zum Verschlüsseln und Signieren von Nachrichten

Einführung

GPG oder GNU Privacy Guard ist eine Kryptografie-Implementierung mit öffentlichem Schlüssel. Dies ermöglicht die sichere Übertragung von Informationen zwischen Parteien und kann verwendet werden, um zu überprüfen, ob der Ursprung einer Nachricht echt ist.

In diesem Handbuch werden wir erläutern, wie GPG funktioniert und wie es implementiert wird. Wir werden für diese Demonstration einen Ubuntu 16.04-Server verwenden, aber auch Anweisungen für andere Distributionen enthalten.

So funktioniert die Verschlüsselung mit öffentlichen Schlüsseln

Ein Problem, mit dem viele Benutzer konfrontiert sind, ist die sichere Kommunikation und die Überprüfung der Identität des Teilnehmers, mit dem sie sprechen. Viele Systeme, die versuchen, diese Frage zu beantworten, erfordern zumindest zu einem bestimmten Zeitpunkt die Übertragung eines Kennworts oder anderer Identifikationsdaten über ein unsicheres Medium.

Stellen Sie sicher, dass nur die beabsichtigte Partei lesen kann

Um dieses Problem zu umgehen, stützt sich GPG auf ein Sicherheitskonzept, das als Verschlüsselung mit öffentlichem Schlüssel bezeichnet wird. Die Idee ist, dass Sie die Verschlüsselungs- und Entschlüsselungsstufen der Übertragung in zwei separate Teile aufteilen können. Auf diese Weise können Sie den Verschlüsselungsabschnitt frei verteilen, solange Sie den Entschlüsselungsabschnitt sichern.

Dies würde eine einseitige Nachrichtenübertragung ermöglichen, die von jedem erstellt und verschlüsselt werden kann, jedoch nur vom angegebenen Benutzer (der mit dem privaten Entschlüsselungsschlüssel) entschlüsselt werden kann. Wenn beide Parteien öffentliche / private Schlüsselpaare erstellen und sich gegenseitig ihre öffentlichen Verschlüsselungsschlüssel geben, können sie beide Nachrichten untereinander verschlüsseln.

In diesem Szenario hat jede Partei ihren eigenen privaten Schlüssel und den öffentlichen Schlüssel des anderen Benutzers.

Überprüfen Sie die Identität des Absenders

Ein weiterer Vorteil dieses Systems ist, dass der Absender einer Nachricht die Nachricht mit ihrem privaten Schlüssel „signieren“ kann. Mit dem öffentlichen Schlüssel des Empfängers kann überprüft werden, ob die Signatur tatsächlich vom angegebenen Benutzer gesendet wird.

GPG-Schlüssel einrichten

GPG wird in den meisten Distributionen standardmäßig installiert.

Wenn GPG aus irgendeinem Grund nicht installiert ist, können Sie unter * Ubuntu * und * Debian * den lokalen Repo-Index aktualisieren und installieren, indem Sie Folgendes eingeben:

sudo apt-get update
sudo apt-get install gnupg

Unter * CentOS * können Sie GPG installieren, indem Sie Folgendes eingeben:

sudo yum install gnupg2

Um GPG zum Verschlüsseln Ihrer Kommunikation zu verwenden, müssen Sie ein Schlüsselpaar erstellen. Sie können dies tun, indem Sie den folgenden Befehl eingeben:

gpg --gen-key

Dies wird Sie durch ein paar Fragen führen, die Ihre Schlüssel konfigurieren:

  • Bitte wählen Sie aus, welche Art von Schlüssel Sie möchten: * (1) RSA und RSA (Standard) *

  • Welche Schlüsselgröße möchten Sie? * 4096 *

  • Schlüssel ist gültig für? * 1y * (läuft nach 1 Jahr ab. Wenn Sie nur testen, möchten Sie möglicherweise erstmalig einen kurzlebigen Schlüssel erstellen, indem Sie stattdessen eine Zahl wie "3" verwenden.)

  • Ist das richtig? y

  • Echter Name: * Dein richtiger Name hier *

  • E-Mail-Adresse: [email protected]

  • Kommentar: * Optionaler Kommentar, der in Ihrer Signatur angezeigt wird *

  • Ändern Sie (N) ame, © omment, (E) mail oder (O) kay / (Q) uit? O

  • Passphrase eingeben: * Geben Sie hier eine sichere Passphrase ein (Groß- und Kleinschreibung, Ziffern, Symbole) *

Zu diesem Zeitpunkt generiert "+ gpg +" die Schlüssel unter Verwendung von Entropie. Entropy beschreibt das Ausmaß an Unvorhersehbarkeit und Nichtdeterminismus, das in einem System existiert. GPG benötigt diese Entropie, um einen sicheren Satz von Schlüsseln zu generieren.

Dieser Vorgang kann lange dauern, je nachdem, wie aktiv Ihr System ist und welche Schlüsselgröße Sie ausgewählt haben. Um zusätzliche Entropie zu erzeugen, können Sie https://www.digitalocean.com/community/articles/how-to-setup-additional-entropy-for-cloud-servers- using-haveged[use a tool called haveged]. Öffnen Sie erneut ein neues Terminal und SSH auf dem Server, um "+ haveged +" auf Ihrem Server einzurichten.

Erstellen Sie ein Sperrzertifikat

Sie müssen eine Möglichkeit haben, Ihr Schlüsselpaar für den Fall einer Sicherheitsverletzung oder für den Fall, dass Sie Ihren geheimen Schlüssel verlieren, ungültig zu machen. Mit der GPG-Software ist dies auf einfache Weise möglich.

Dies sollte erfolgen, sobald Sie das Schlüsselpaar erstellt haben, nicht, wenn Sie es benötigen. Dieser Widerrufsschlüssel muss vorab generiert und an einem sicheren, separaten Ort aufbewahrt werden, falls Ihr Computer kompromittiert oder nicht funktionsfähig ist. Geben Sie zum Generieren eines Widerrufsschlüssels Folgendes ein:

gpg --output ~/ --gen-revoke

Sie werden aufgefordert, die Erstellung des Widerrufsschlüssels zu bestätigen und anschließend aufgefordert, den Grund für den Widerruf anzugeben. Diese Informationen sind für andere Benutzer sichtbar, wenn der Widerruf in Zukunft verwendet wird. Sie können eine der verfügbaren Optionen auswählen. Da dies jedoch im Voraus erfolgt, sind Ihnen die Details nicht bekannt. Häufig empfiehlt es sich, für jedes der wahrscheinlichen Szenarien ein Sperrzertifikat zu erstellen, um maximale Flexibilität zu erzielen.

Anschließend werden Sie aufgefordert, einen Kommentar abzugeben und die Auswahl zu bestätigen. Vor dem Erstellen des Widerrufszertifikats müssen Sie die Passphrase Ihres GPG-Schlüssels eingeben, um Ihre Identität zu bestätigen. Das Widerrufszertifikat wird in die durch das Flag "+ - output " angegebene Datei geschrieben (in unserem Beispiel " revocation.crt +"):

OutputRevocation certificate created.

Please move it to a medium which you can hide away; if Mallory gets
access to this certificate he can use it to make your key unusable.
It is smart to print this certificate and store it away, just in case
your media become unreadable.  But have some caution:  The print system of
your machine might store the data and make it available to others!

Sie sollten die Berechtigungen für die generierte Zertifikatdatei sofort einschränken, um unbefugten Zugriff zu verhindern:

chmod 600 ~/

Das Widerrufszertifikat muss sicher aufbewahrt werden, damit andere Benutzer Ihren Schlüssel nicht widerrufen können. Wie in der Nachricht angegeben, sollten Sie in Betracht ziehen, das Zertifikat auf anderen Computern zu sichern und auszudrucken, sofern Sie es ordnungsgemäß sichern können.

So importieren Sie die öffentlichen Schlüssel anderer Benutzer

GPG wäre ziemlich nutzlos, wenn Sie keine anderen öffentlichen Schlüssel von Personen akzeptieren könnten, mit denen Sie kommunizieren möchten.

Sie können den öffentlichen Schlüssel einer Person auf verschiedene Weise importieren. Wenn Sie einen öffentlichen Schlüssel von einer Person in einer Textdatei erhalten haben, kann GPG diesen mit dem folgenden Befehl importieren:

gpg --import

Es besteht auch die Möglichkeit, dass die Person, mit der Sie kommunizieren möchten, ihren Schlüssel auf einen öffentlichen Schlüsselserver hochgeladen hat. Auf diesen Schlüsselservern werden die öffentlichen Schlüssel von Personen aus der ganzen Welt gespeichert.

Ein beliebter Schlüsselserver, der seine Informationen mit einer Vielzahl anderer Server synchronisiert, ist der MIT-Public-Key-Server. Sie können nach Personen anhand ihres Namens oder ihrer E-Mail-Adresse suchen, indem Sie in Ihrem Webbrowser hier klicken:

https://pgp.mit.edu/

Sie können den Schlüsselserver auch in GPG durchsuchen, indem Sie Folgendes eingeben:

gpg --keyserver pgp.mit.edu  --search-keys

Mit dieser Suchmethode können Sie nach Name oder E-Mail-Adresse suchen. Sie können die gefundenen Schlüssel importieren, indem Sie den Eingabeaufforderungen folgen.

So überprüfen und signieren Sie Schlüssel

Sie können Ihre generierten öffentlichen Schlüsseldateien zwar frei verbreiten und die Benutzer können sich auf diese Weise sicher mit Ihnen in Verbindung setzen. Es ist jedoch wichtig, dass Sie darauf vertrauen können, dass der Schlüssel zu dem gehört, von dem Sie glauben, dass er bei der ersten Übertragung öffentlicher Schlüssel verwendet wird.

Überprüfen Sie die Identität der anderen Person

Woher wissen Sie, dass die Person, die Ihnen den öffentlichen Schlüssel gibt, so ist, wie sie sich ausgibt? In einigen Fällen kann dies einfach sein. Möglicherweise sitzen Sie mit geöffneten Laptops direkt neben der Person und tauschen die Schlüssel aus. Dies sollte ein ziemlich sicherer Weg sein, um festzustellen, dass Sie den richtigen, legitimen Schlüssel erhalten.

Aber es gibt viele andere Umstände, unter denen ein solcher persönlicher Kontakt nicht möglich ist. Möglicherweise kennen Sie die Gegenpartei nicht persönlich oder sind durch physische Entfernung voneinander getrennt. Wenn Sie niemals über unsichere Kanäle kommunizieren möchten, kann die Überprüfung des öffentlichen Schlüssels problematisch sein.

Glücklicherweise können Sie, anstatt die gesamten öffentlichen Schlüssel beider Parteien zu überprüfen, einfach den von diesen Schlüsseln abgeleiteten „Fingerabdruck“ vergleichen. Dies gibt Ihnen eine angemessene Sicherheit, dass Sie beide dieselben öffentlichen Schlüsselinformationen verwenden.

Sie können den Fingerabdruck eines öffentlichen Schlüssels abrufen, indem Sie Folgendes eingeben:

gpg --fingerprint
Outputpub   4096R/311B1F84 2013-10-04
     Key fingerprint =
uid                  Test User <[email protected]>
sub   4096R/8822A56A 2013-10-04

Dies führt zu einer viel besser handhabbaren Zahlenfolge zum Vergleichen. Sie können diese Zeichenfolge mit der Person selbst oder mit einer anderen Person vergleichen, die Zugriff auf diese Person hat.

Unterschreiben Sie ihren Schlüssel

Durch das Signieren eines Schlüssels wird Ihrer Software mitgeteilt, dass Sie dem Schlüssel vertrauen, den Sie erhalten haben, und dass Sie überprüft haben, ob er der betreffenden Person zugeordnet ist.

Geben Sie zum Signieren eines importierten Schlüssels Folgendes ein:

gpg --sign-key

Wenn Sie den Schlüssel unterschreiben, bestätigen Sie, dass Sie der Person vertrauen, die sie zu sein vorgibt. Dies kann anderen Menschen bei der Entscheidung helfen, ob sie dieser Person ebenfalls vertrauen. Wenn Ihnen jemand vertraut und sieht, dass Sie den Schlüssel dieser Person unterschrieben haben, ist es wahrscheinlich, dass diese Person auch ihrer Identität vertraut.

Sie sollten zulassen, dass die Person, deren Schlüssel Sie signieren, von Ihrer vertrauenswürdigen Beziehung profitiert, indem Sie den signierten Schlüssel an sie zurücksenden. Sie können dies tun, indem Sie Folgendes eingeben:

gpg --output ~/ --export --armor

Sie müssen Ihre Passphrase erneut eingeben. Anschließend wird der von Ihnen signierte öffentliche Schlüssel angezeigt. Senden Sie ihnen dies, damit sie bei der Interaktion mit anderen von Ihrem „Gütesiegel“ profitieren können.

Wenn sie diesen neuen, signierten Schlüssel erhalten, können sie ihn importieren und die von Ihnen generierten Signaturinformationen in ihre GPG-Datenbank einfügen. Sie können dies tun, indem Sie Folgendes eingeben:

gpg --import ~/

Sie können jetzt anderen Menschen beweisen, dass Sie darauf vertrauen, dass ihre Identität korrekt ist.

So machen Sie Ihren öffentlichen Schlüssel hoch verfügbar

Aufgrund der Art und Weise, wie die Verschlüsselung mit öffentlichen Schlüsseln entworfen wurde, kann nichts Bösartiges passieren, wenn unbekannte Personen über Ihren öffentlichen Schlüssel verfügen.

In diesem Sinne kann es hilfreich sein, Ihren öffentlichen Schlüssel öffentlich verfügbar zu machen. Die Leute können dann Ihre Informationen finden, um Ihnen Nachrichten von Ihrer ersten Interaktion an sicher zu senden.

Sie können jedem Ihren öffentlichen Schlüssel senden, indem Sie ihn vom GPG-System anfordern:

gpg --output ~/ --armor --export
Output-----BEGIN PGP PUBLIC KEY BLOCK-----
Version: GnuPG v1.4.11 (GNU/Linux)

mQINBFJPCuABEACiog/sInjg0O2SqgmG1T8n9FroSTdN74uGsRMHHAOuAmGLsTse
9oxeLQpN+r75Ko39RVE88dRcW710fPY0+fjSXBKhpN+raRMUKJp4AX9BJd00YA/4
EpD+8cDK4DuLlLdn1x0q41VUsznXrnMpQedRmAL9f9bL6pbLTJhaKeorTokTvdn6
5VT3pb2o+jr6NETaUxd99ZG/osPar9tNThVLIIzG1nDabcTFbMB+w7wOJuhXyTLQ
JBU9xmavTM71PfV6Pkh4j1pfWImXc1D8dS+jcvKeXInBfm2XZsfOCesk12YnK3Nc
u1Xe1lxzSt7Cegum4S/YuxmYoh462oGZ7FA4Cr2lvAPVpO9zmgQ8JITXiqYg2wB3
. . .

Sie können diese Datei dann über ein geeignetes Medium an die andere Partei senden.

Wenn Sie Ihren Schlüssel auf einem Schlüsselserver veröffentlichen möchten, können Sie dies manuell über die Formulare tun, die auf den meisten Serversites verfügbar sind.

Eine andere Möglichkeit besteht darin, dies über die GPG-Schnittstelle zu tun. Suchen Sie nach Ihrer Schlüssel-ID, indem Sie Folgendes eingeben:

gpg --list-keys

Der hervorgehobene Teil in der Ausgabe unten ist die Schlüssel-ID (achten Sie auf das "+ pub" in der linken Spalte, wenn Sie sich nicht sicher sind, welchen Sie verwenden sollen). Es ist eine kurze Möglichkeit, den Schlüssel auf die interne Software zu verweisen.

Outputpub   4096R/ 2013-10-04
uid                  Test User <[email protected]>
sub   4096R/8822A56A 2013-10-04

Um Ihren Schlüssel auf einen bestimmten Schlüsselserver hochzuladen, können Sie diese Syntax verwenden:

gpg --send-keys --keyserver pgp.mit.edu

Der Schlüssel wird auf den angegebenen Server hochgeladen. Danach wird es wahrscheinlich an andere Schlüsselserver auf der ganzen Welt verteilt.

Verschlüsseln und Entschlüsseln von Nachrichten mit GPG

Sie können Nachrichten leicht ver- und entschlüsseln, nachdem Sie Ihre Schlüssel mit dem anderen Teilnehmer geteilt haben.

Nachrichten verschlüsseln

Sie können Nachrichten mit dem Flag „–encrypt“ für GPG verschlüsseln. Die grundlegende Syntax wäre:

gpg --encrypt --sign --armor -r

Dies verschlüsselt die Nachricht mit dem öffentlichen Schlüssel des Empfängers, signiert sie mit Ihrem eigenen privaten Schlüssel, um sicherzustellen, dass sie von Ihnen kommt, und gibt die Nachricht in einem Textformat anstelle von unformatierten Bytes aus. Der Dateiname ist der gleiche wie der eingegebene Dateiname, jedoch mit der Erweiterung "+ .asc +".

Sie sollten einen zweiten "-r" -Empfänger mit Ihrer eigenen E-Mail-Adresse angeben, wenn Sie die verschlüsselte Nachricht lesen möchten. Dies liegt daran, dass die Nachricht mit dem öffentlichen Schlüssel jeder Person verschlüsselt wird und nur mit dem zugehörigen privaten Schlüssel entschlüsselt werden kann.

Wenn es also nur mit dem öffentlichen Schlüssel des anderen Teilnehmers verschlüsselt wäre, könnten Sie die Nachricht nicht erneut anzeigen, es sei denn, Sie hätten irgendwie dessen privaten Schlüssel erhalten. Wenn Sie sich selbst als zweiten Empfänger hinzufügen, wird die Nachricht zwei Mal verschlüsselt, einmal für jeden Empfänger.

Nachrichten entschlüsseln

Wenn Sie eine Nachricht erhalten, rufen Sie einfach GPG in der Nachrichtendatei auf:

gpg .asc

Die Software fordert Sie bei Bedarf dazu auf.

Wenn Sie anstelle einer Datei die Nachricht als Rohtext-Stream haben, können Sie sie kopieren und einfügen, nachdem Sie "+ gpg +" ohne Argumente eingegeben haben. Sie können "STRG-D" drücken, um das Ende der Nachricht zu kennzeichnen, und GPG entschlüsselt sie für Sie.

Schlüsselwartung

Es gibt eine Reihe von Verfahren, die Sie möglicherweise regelmäßig verwenden müssen, um Ihre Schlüsseldatenbank zu verwalten.

Um Ihre verfügbaren GPG-Schlüssel aufzulisten, die Sie von anderen Personen haben, können Sie den folgenden Befehl ausführen:

gpg --list-keys

Ihre Schlüsselinformationen können veraltet sein, wenn Sie sich auf Informationen verlassen, die von öffentlichen Schlüsselservern abgerufen wurden. Sie möchten sich nicht auf widerrufene Schlüssel verlassen, da dies bedeuten würde, dass Sie potenziell gefährdeten Schlüsseln vertrauen.

Sie können die Schlüsselinformationen aktualisieren, indem Sie Folgendes eingeben:

gpg --refresh-keys

Dadurch werden neue Informationen von den Schlüsselservern abgerufen.

Sie können Informationen von einem bestimmten Schlüsselserver abrufen, indem Sie Folgendes verwenden:

gpg --keyserver  --refresh-keys

Möglicherweise wird eine Fehlermeldung angezeigt, wenn einer Ihrer Schlüssel nicht auf dem Schlüsselserver gefunden werden kann.

Fazit

Wenn Sie GPG richtig verwenden, können Sie Ihre Kommunikation mit verschiedenen Personen sichern. Dies ist äußerst hilfreich, insbesondere im Umgang mit vertraulichen Informationen, aber auch im Umgang mit regulären, alltäglichen Nachrichten.

Aufgrund der Art und Weise, wie bestimmte verschlüsselte Kommunikationen von Überwachungsprogrammen gekennzeichnet werden können, wird empfohlen, die Verschlüsselung nicht nur für "geheime" Daten zu verwenden. Dadurch wird es für die Leute schwieriger zu wissen, wann Sie wichtige Daten senden oder nur ein freundliches Hallo senden.