So generieren Sie einen GPG-Schlüssel für eine sichere Kommunikation

Verschlüsselung ist ein Verfahren, bei dem Klartextdaten so eingebettet werden, dass sie von Außenstehenden nicht entschlüsselt werden können. Es ist notwendig, Daten zu verschlüsseln, um Missbrauch zu verhindern. Mit der Anwendung GNU Privacy Guard (GPG) können Sie Informationen ver- und entschlüsseln. Es basiert auf der Verwendung eines Schlüsselpaars, eines öffentlichen und eines privaten (oder geheimen). Mit einem Schlüssel verschlüsselte Daten können nur mit dem anderen entschlüsselt werden. Um eine Nachricht an Sie zu verschlüsseln, würde jemand Ihren öffentlichen Schlüssel verwenden, um eine Nachricht zu erstellen, die nur mit Ihrem privaten Schlüssel entsperrt werden kann. Um Informationen zu signieren, würden Sie sie mit Ihrem privaten Schlüssel sperren, sodass jeder überprüfen kann, ob sie von Ihnen stammen, indem Sie sie mit Ihrem öffentlichen Schlüssel entsperren.

Auf modernen Linux-Distributionen ist gpg bereits installiert. Falls nicht vorhanden, installieren Sie es.

auf Centos

 #yum install gnupg

auf Ubuntu

 #apt-get install gnupg

1) gpg-Schlüssel erstellen

Bei der Installation des gnupg-Pakets müssen wir auch das Konzept verstehen, um gpg zu verwenden.

Generieren eines neuen Schlüsselpaars

Um Ihre Kommunikation zu verschlüsseln, müssen Sie zunächst ein neues Schlüsselpaar erstellen. GPG kann verschiedene Arten von Schlüsselpaaren erstellen, aber ein Primärschlüssel muss in der Lage sein, Signaturen zu erstellen.

# gpg --gen-key
Please select what kind of key you want:
   Your selection? 1
RSA keys may be between 1024 and 4096 bits long.
What keysize do you want? (2048) 4096
Please specify how long the key should be valid.
Key is valid for? (0) 0
Is this correct? (y/N) y

GnuPG needs to construct a user ID to identify your key.

Real name: my_name
Email address: [email protected]
Comment: my-key-pair
You selected this USER-ID:
    "my_name (my-key-pair) <[email protected]>"

You need a Passphrase to protect your secret key.

We need to generate a lot of random bytes.
.......+++++

pub   4096R/BAC361F1 2017-03-30
      Key fingerprint = 0397 AD65 6EE6 074A 2B95  EEF1 D2A7 4997 BAC3 61F1
uid   my_name (my-key-pair) <[email protected]>
sub   4096R/9742DE56 2017-03-30
  • uid: Bitte beachten Sie die BENUTZERIDENTIFIKATION im Ergebnis erwähnt. Wir werden seinen Wert verwenden, um eine Operation durchzuführen.
  • pub: Er stellt den öffentlichen Schlüssel dar. Der Schlüssel-ID ist BAC361F1. Deine wird anders sein
  • sub: Es stellt Unterschlüssel dar, geht zusammen mit dem Primärschlüssel. Im Allgemeinen wird es zur Verschlüsselung verwendet.

Ihre Eingabeaufforderung kann sehr lange ohne Abschluss bearbeitet werden, wenn Sie die folgende Nachricht sehen

"Not enough random bytes available.  Please do some other work to give
the OS a chance to collect more entropy! (Need 285 more bytes)"

Das Problem wird durch das Fehlen von Entropie (oder zufälligem Systemrauschen) verursacht. Brechen Sie also den Vorgang ab und überprüfen Sie die verfügbare Entropie

$ cat /proc/sys/kernel/random/entropy_avail
14

Sie sehen, es reicht nicht. Wir können ein Paket installieren, um den Mangel an Entropie mit zu beheben rngd Dies ist ein Zufallszahlengenerator-Dienstprogramm, das verwendet wird, um sofort die verfügbare Entropie zu überprüfen

# apt-get install rng-tools
# cat /proc/sys/kernel/random/entropy_avail
3075

Jetzt kann es wieder losgehen mit dem gpg --gen-key Befehl und der Prozess wird in Ordnung sein. Wir haben es nur ohne etwas anderes installiert. In bestimmten Distributionen müssen Sie rngd vor dem gpg-Prozess verwenden.

# rngd -f -r /dev/urandom

3) Erstellen eines Widerrufszertifikats

Nachdem Ihr Schlüsselpaar erstellt wurde, sollten Sie sofort ein Widerrufszertifikat erstellen, um Ihren öffentlichen Schlüssel zu widerrufen, wenn Ihr privater Schlüssel in irgendeiner Weise kompromittiert wurde oder Sie ihn verlieren. Erstellen Sie es, wenn Sie Ihren Schlüssel erstellen. Der Vorgang erfordert Ihren privaten Schlüssel, die Passphrase.

$ gpg --output revoke_key.asc --gen-revoke BAC361F1

sec  4096R/BAC361F1 2017-03-30 my_name (my-key-pair) <[email protected]>

Create a revocation certificate for this key? (y/N) y
(Probably you want to select 1 here)
Your decision? 0
Enter an optional description; end it with an empty line:
> revocation if key compromised
> 
Reason for revocation: No reason specified
Is this okay? (y/N) y

You need a passphrase to unlock the secret key for
user: "my_name (my-key-pair) <[email protected]>"
4096-bit RSA key, ID BAC361F1, created 2017-03-30

Revocation certificate created.

Das Argument BAC361F1 ist die Schlüssel-ID. Es muss ein Schlüsselspezifizierer sein, entweder die Schlüssel-ID Ihres primären Schlüsselpaars oder ein Teil einer Benutzer-ID, die Ihr Schlüsselpaar identifiziert, z. B. [email protected]. Das generierte Zertifikat wird gespeichert in revoke_key.asc Datei. Bewahren Sie ihn an einem Ort auf, an dem andere nicht darauf zugreifen können, da jeder, der Zugriff darauf hat, Ihren Schlüssel widerrufen kann, wodurch er nutzlos wird. Wenn die --output Wird die Option weggelassen, wird das Ergebnis auf der Standardausgabe ausgegeben.

4) Erstellen einer ASCII-geschützten Version Ihres öffentlichen Schlüssels

Bei einigen Keyservern können Sie eine ASCII-geschützte Version Ihres öffentlichen Schlüssels einfügen, um ihn direkt hochzuladen. Diese Methode wird am meisten bevorzugt, da der Schlüssel direkt vom Benutzer stammt, der sehen kann, dass der Schlüssel erfolgreich hochgeladen wurde.

$ gpg --output armored_key.asc --export -a BAC361F1

5) Schlüssel austauschen

Um mit anderen zu kommunizieren, müssen Sie öffentliche Schlüssel austauschen. Dazu müssen Sie Ihre Schlüssel auflisten können. Es gibt einige Befehle, um Ihren öffentlichen Schlüsselbund aufzulisten

  • gpg --list-keys: Listen Sie alle Schlüssel aus den öffentlichen Schlüsselbunden auf oder nur die in der Befehlszeile angegebenen Schlüssel.
  • gpg --list-secret-keys: Listen Sie alle Schlüssel aus den geheimen Schlüsselbunden auf oder nur die, die auf der Befehlszeile angegeben sind
  • gpg --list-sigs: Wie –list-keys, aber die Signaturen werden ebenfalls aufgelistet.
$ gpg --list-keys

/home/ubuntu/.gnupg/pubring.gpg ------------------------------- 
pub   4096R/BAC361F1 2017-03-30 
uid   my_name (my-key-pair) <[email protected]> 
sub   4096R/9742DE56 2017-03-30

Einen öffentlichen Schlüssel exportieren

Nachdem Sie nun ein Schlüsselpaar generiert haben, besteht der nächste Schritt darin, Ihren öffentlichen Schlüssel im Internet ( Keyserver ) zu veröffentlichen, damit andere Personen ihn verwenden können, um Ihnen eine Nachricht zu senden. Sie können entweder die Schlüssel-ID oder einen beliebigen Teil der Benutzer-ID verwenden, um den zu exportierenden Schlüssel zu identifizieren. Es gibt zwei Befehle, aber mit dem ersten Befehl wird der Schlüssel in ein Binärformat exportiert und kann unpraktisch sein, wenn er per E-Mail gesendet oder auf einer Webseite veröffentlicht wird. Daher verwenden wir den zweiten Befehl für die gepanzerte ASCII-Methode.

$ gpg --output to-bob.gpg --export BAC361F1
$ gpg --armor --export BAC361F1 > my_pubkey.gpg

Die Ausgabe wird an die Datei my_pubkey.gpg umgeleitet, die den Inhalt des öffentlichen Schlüssels für die Kommunikation enthält.

Senden Sie Ihre öffentlichen Schlüssel an einen Schlüsselserver

Sobald Sie diesen ASCII-geschützten öffentlichen Schlüssel haben, können Sie ihn manuell in ein Formular auf einem öffentlichen Schlüsselserver wie pgp.mit.edu einfügen

$ gpg --keyserver pgp.mit.edu --send-keys BAC361F1
gpg: sending key BAC361F1 to hkp server pgp.mit.edu

Da Ihnen anscheinend jemand seinen öffentlichen Schlüssel gesendet hat, gibt es keinen Grund, darauf zu vertrauen, dass er von dieser Person stammt, es sei denn, Sie haben ihn validiert.

Importieren eines öffentlichen Schlüssels

Da andere Personen Ihren öffentlichen Schlüssel verwenden können, um Ihnen eine Nachricht zu senden, können Sie öffentliche Personen importieren, denen Sie vertrauen, um mit ihnen zu kommunizieren.

gpg --import bob_public_key.gpg

Fazit

Jetzt haben wir Vorstellungen über die Prinzipien, einen öffentlichen Schlüssel zu verwenden und zu generieren. Sie wissen, wie GnuPG funktioniert und können es für eine sichere Kommunikation verwenden. Die GPG-Verschlüsselung ist nur dann sinnvoll, wenn beide Parteien gute Sicherheitspraktiken anwenden und wachsam sind.

Lesen Sie auch:

  • So verschlüsseln/entschlüsseln Sie Dateien mit GPG unter Linux