Gentoo Logo

Gentoo: GnuPG-Leitfaden

Inhalt:

1.  Einleitung

Was Sie von diesem Leitfaden erhalten

Dieser Leitfaden setzt voraus, dass Sie vertraut mit Kryptographie, öffentlichen Schlüsseln und digitalen Signaturen sind. Wenn dies nicht der Fall ist, dann lesen Sie bei Öffentlicher Schlüssel Kryptographie weiter oder betrachten Sie das zweite Kapitel des GnuPG Handbuchs und fahren dann hier fort.

Dieser Leitfaden wird Ihnen zeigen wie Sie GnuPG installieren, wie Sie Ihr Schlüsselpaar generieren, wie Sie Ihren öffentlichen Schlüssel an einen Schlüsselserver übermitteln und wie Sie an Sie gerichtete oder von Ihnen geschriebene Nachrichten signieren, verschlüsseln, verifizieren oder dekodieren. Sie werden auch lernen wie Sie Dateien verschlüsselt auf Ihrem lokalen Computer ablegen können, um Menschen davon abzuhalten den Inhalt dieser zu lesen.

Installieren von benötigter Software

Als grundlegendste Ebene müssen Sie emerge gnupg ausführen. Viele Anwendungen heute haben Unterstützung in irgendeiner Form für gpg, deswegen ist es auch ratsam crypt in Ihre USE-Variable einzutragen. Wenn Sie einen Email Client mit gnupg Kapazitäten wünschen, dann können Sie pine (emerge pinepgp), mutt (emerge mutt), Mozilla Thunderbird (emerge thunderbird), Evolution (Evolution ist ein Microsoft Outlook ähnliches GNOME-Programm) und KDEs eigenes KMail (KMail ist Teil des Pakets kdepim) nutzen.

Kgpg könnte Sie interessieren, wenn Sie KDE verwenden. Dieses kleine Programm erlaubt es Ihnen ein Schlüsselpaar zu erstellen, Schlüssel aus ASCII Dateien zu importieren, importierte Schlüssel zu signieren, Schlüssel zu exportieren und einige weitere Möglichkeiten.

2.  Generierung Ihres Schlüssels und hinzufügen von Schlüsseln zu Ihrem öffentlichen Keyring

Erstellung Ihres Schlüssels

Um Ihren Schlüssel zu erstellen, führen Sie einfach gpg --gen-key aus. Wenn Sie diesen Befehl erstmalig ausführen werden einige Verzeichnisse erstellt:

Befehlsauflistung 2.1: Schlüsselerstellungsprozess

$ gpg --gen-key
gpg (GnuPG) 1.0.7; Copyright (C) 2002 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.

Please select what kind of key you want:
   (1) DSA and ElGamal (default)
   (2) DSA (sign only)
   (4) ElGamal (sign and encrypt)
   (5) RSA (sign only)
   Your selection? 1

Hier können Sie den Typ des Schlüssels wählen, den Sie verwenden möchten. Die meisten Benutzer sollten sich für den Standard DSA und ElGamal entscheiden. Als nächstes kommt die Schlüsselgröße - denken Sie daran, dass größer besser ist, aber verwenden Sie nicht eine Größe über 2048 mit den DSA/ElGamal Schlüsseln. Generell ist 1024 mehr als genug für normale Email.

Nach der Größe kommt das Ablaufdatum. Hier ist kleiner besser, aber die meisten Benutzer können einen Schlüssel wählen, der entweder niemals abläuft oder eine Gültigkeit von 2 bis 3 Jahren aufweist.

Befehlsauflistung 2.2: Wählen der Schlüsselgröße

DSA keypair will have 1024 bits.
About to generate a new ELG-E keypair.
              minimum keysize is  768 bits
              default keysize is 1024 bits
    highest suggested keysize is 2048 bits
    What keysize do you want? (1024) 2048
Requested keysize is 2048 bits
Please specify how long the key should be valid.
         0 = key does not expire
 <n>= key expires in n days
 <n>w = key expires in n weeks
 <n>m = key expires in n months
 <n>y = key expires in n years
 Key is valid for? (0) 0
Key does not expire at all

Nun ist es an der Zeit einige persönliche Informationen einzugeben. Wenn Sie Ihren öffentlichen Schlüssen an andere Personen senden möchten, sollten Sie hier eine existierende Email Adresse angeben.

Befehlsauflistung 2.3: Eingeben von Benutzerinformationen

Is this correct (y/n)? y

You need a User-ID to identify your key; the software constructs the user id
from Real Name, Comment and Email Address in this form:
"Das gentoo.de Team <www@gentoo.de>"

Real name: John Doe
Email address: john@nowhere.someplace.flick
Comment: The Real John Doe
You selected this USER-ID:
"John Doe (The Real John Doe) <john@nowhere.someplace.flick>"

Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O
You need a Passphrase to protect your secret key.

Enter passphrase:

Geben Sie nun Ihre Passphrase zweimal ein. Es ist eine gute Idee eine starke Passphrase zu verwenden. Wenn jemand sich jemals Ihren privaten Schlüssel aneignet und Ihr Passwort knackt, wird diese Person die Möglichkeit haben Nachrichten zu versenden, die von "Ihnen" signiert wurden, was dazu führen würde, dass Menschen, die diese Nachricht erhalten würden, sie für authentisch halten würden.

Dann wird GnuPG Ihren Schlüssel erstellen. Den Mauszeiger zu bewegen oder eine MP3 im Hintergrund abzuspielen, wird den Prozess beschleunigen, denn dies erzeugt Zufallsdaten.

Generierung eines Rückrufzertifikats

Wichtig: Dieser Teil ist sehr wichtig und Sie müssen ihn JETZT durchführen.

Nach der Erstellung Ihrer Schlüssel sollten Sie ein Rückrufzertifikat erstellen. Wenn Sie dies tun, haben Sie die Möglichkeit Ihren Schlüssel zu widerrufen gesetzt den Fall, dass etwas unschönes mit Ihrem Schlüssel geschieht (jemand erlangt Zugang zu Ihrem Schlüssel/Ihrer Passphrase).

Befehlsauflistung 2.4: Rückrufzertifikat erstellen

$ gpg --list-keys
/home/humpback/.gnupg/pubring.gpg
---------------------------------
pub  1024D/75447B14 2002-12-08 John Doe (The Real John Doe) <john@nowhere.someplace.flick>
sub  2048g/96D6CDAD 2002-12-08

$ gpg --output revoke.asc --gen-revoke 75447B14

sec  1024D/75447B14 2002-12-08   John Doe (The Real John Doe) <john@nowhere.someplace.flick>

Create a revocation certificate for this key? y
Please select the reason for the revocation:
  0 = No reason specified
  1 = Key has been compromised
  2 = Key is superseded
  3 = Key is no longer used
  Q = Cancel
(Probably you want to select 1 here)
Your decision? 1
Enter an optional description; end it with an empty line:
> Someone cracked me and got my key and passphrase
>
Reason for revocation: Key has been compromised
Someone cracked me and got my key and passphrase
Is this okay? y

You need a passphrase to unlock the secret key for
user: "John Doe (The Real John Doe) <john@nowhere.someplace.flick>"
1024-bit DSA key, ID 75447B14, created 2002-12-08

ASCII armored output forced.
Revocation 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!

Das gpg --list-keys Kommadno listet alle Schlüssel in Ihrem öffentlichen Schlüsselring. Sie können es benutzen, um die ID Ihres Schlüssels zu erfahren, um das Rückrufzertifikat zu erzeugen. Im folgenden ist es eine gute Idee, das gesammte .gnupg Verzeichnis und das Rückrufzertifikat (in ASCII Armor - revoke.asc) auf ein sicheres Medium (zwei Disketten oder eine an einem sicheren Platz gelagerte CD) zu sichern. Denken Sie immer daran, dass revoke.asc benutzt werden kann um Ihre Schlüssel zu widerrufen und somit unbrauchbar zu machen.

Notiz: Wenn Sie verschiedene Email Adressen haben, die Sie alle mit dem selben Schlüssel benutzen möchten, führen Sie gpg --edit-key IHRE_SCHLÜSSEL_ID und dann das adduid Kommando aus. Sie werden nach Ihrem Namen, der Email Adresse und einem Kommentar für die zweite Benutzer ID gefragt.

Schlüssel exportieren

Um Ihren Schlüssel zu exportieren geben Sie gpg --armor --output john.asc --export john@nowhere.someplace.flick ein. Sie können fast immer die Schlüssel ID oder irgendetwas, dass den Schlüssel identifiziert (hier die Email Adresse), angeben. John hat nun eine john.asc Datei, die er seinen Freunden senden oder auf einer Webseite ablegen kann, um mit seinen Freunden sicher zu kommunizieren.

Importieren von Schlüsseln

Um Dateien in Ihren öffentlichen Schlüsselring aufzunehmen, müssen Sie diese zuerst importieren und dann den Fingerprint des Schlüssel kontrollieren. Nachdem Sie den Fingerprint kontrolliert haben können Sie ihn validieren.

Notiz: Sie sollten beim verifizieren von Schlüssen sehr vorsichtig sein. Dies ist einer der Schwachpunkte von Kryptographie Verfahren mit öffentlichen Schlüsseln.

Nun werden wir den öffentlichen Schlüssel von Luis Pinto (einem Freund) in unseren öffentlichen Schlüsselring importieren. Nach einem Telefonat kann der von ihm übermittelte Fingerprint mit der Ausgabe des fpr Kommando verglichen werden. Wenn der Schlüssel authentisch ist, kann dieser dem öffentlichen Schlüsselring hinzugefügt werden. In diesem speziellen Fall wird Luis' Schlüssel am 1. Dezember 2003 ablaufen, so dass meine Signatur seines Schlüssels dann ebenfalls verfallen soll.

Befehlsauflistung 2.5: Importieren und Signieren von Schlüsseln

$ gpg --import luis.asc
gpg: key 462405BB: public key imported
gpg: Total number processed: 1
gpg:               imported: 1
$ gpg --list-keys
/home/humpback/.gnupg/pubring.gpg
---------------------------------
pub  1024D/75447B14 2002-12-08 John Doe (The Real John Doe) <john@nowhere.someplace.flick>
sub  2048g/96D6CDAD 2002-12-08

pub  1024D/462405BB 2002-12-01 Luis Pinto <lmpinto@student.dei.uc.pt>
uid                            Luis Pinto <lmpinto@dei.uc.pt>
sub  4096g/922175B3 2002-12-01 [expires: 2003-12-01]

$ gpg --edit-key lmpinto@dei.uc.pt
gpg (GnuPG) 1.0.7; Copyright (C) 2002 Free Software Foundation, Inc.
This program comes with ABSOLUTELY NO WARRANTY.
This is free software, and you are welcome to redistribute it
under certain conditions. See the file COPYING for details.


gpg: checking the trustdb
gpg: checking at depth 0 signed=0 ot(-/q/n/m/f/u)=0/0/0/0/0/1
pub  1024D/462405BB  created: 2002-12-01 expires: 2003-12-01 trust: -/-
sub  4096g/922175B3  created: 2002-12-01 expires: 2003-12-01
(1)  Luis Pinto <lmpinto@dei.uc.pt>
(2). Luis Pinto <lmpinto@student.dei.uc.pt>

Command> fpr
pub  1024D/462405BB 2002-12-01 Luis Pinto <lmpinto@dei.uc.pt>
             Fingerprint: F056 3697 ADE3 CF98 B80B  8494 0AD3 E57B 4624 05BB

Command> sign
Really sign all user IDs? y

pub  1024D/462405BB  created: 2002-12-01 expires: 2003-12-01 trust: -/-
             Fingerprint: F056 3697 ADE3 CF98 B80B  8494 0AD3 E57B 4624 05BB

     Luis Pinto <lmpinto@dei.uc.pt>
     Luis Pinto <lmpinto@student.dei.uc.pt>

This key is due to expire on 2003-12-01.
Do you want your signature to expire at the same time? (Y/n) Y
How carefully have you verified the key you are about to sign actually belongs
to the person named above?  If you don't know what to answer, enter "0".

   (0) I will not answer. (default)
   (1) I have not checked at all.
   (2) I have done casual checking.
   (3) I have done very careful checking.

   Your selection? 3
Are you really sure that you want to sign this key
with your key: "John Doe (The Real John Doe) <john@nowhere.someplace.flick>"

I have checked this key very carefully.

Really sign? y

You need a passphrase to unlock the secret key for
user: "John Doe (The Real John Doe) <john@nowhere.someplace.flick>"
1024-bit DSA key, ID 75447B14, created 2002-12-08

Command> check
uid  Luis Pinto <lmpinto@dei.uc.pt>
sig!3       462405BB 2002-12-01   [self-signature]
sig!3       75447B14 2002-12-08   John Doe (The Real John Doe) <john@nowhe
uid  Luis Pinto <lmpinto@student.dei.uc.pt>
sig!3       462405BB 2002-12-01   [self-signature]
sig!3       75447B14 2002-12-08   John Doe (The Real John Doe) <john@nowhe

3.  Schlüssel mit Schlüsselservern austauschen

Schlüssel an Schlüsselserver senden

Nun da Sie Ihren Schlüssel haben ist es wohl eine gute Idee ihn an einen Schlüsselserver zu senden. Es gibt viele Schlüsselserver auf der Welt und die meisten tauschen Schlüssel untereinander aus. Hier werden wir nun John Does Schlüssel an den subkeys.pgp.net Server schicken. Dieser verwendet HTTP, daher werden Sie, wenn Sie einen Proxy für HTTP Traffic benötigen, diesen nun setzen müssen (export http_proxy=http://proxy_host:port/). Der Befehl um den Schlüssel zu senden ist gpg --keyserver subkeys.pgp.net --keyserver-options honor-http-proxy --send-key 75447B14 wobei 75447B14 die ID des Schlüssels ist. Wenn Sie keinen HTTP Proxy verwenden, dann können Sie das --keyserver-options honor-http-proxy entfernen.

Sie können auch die Schlüssel anderer Leute, die Sie signiert haben, an den Schlüsselserver schicken. Wir könnten also Luis Pintos Schlüssel an den Schlüsselserver schicken. Auf diese Weise kann jemand, der Ihrem Schlüssel vertraut, die Signatur, die Sie dort abgelegt haben, nutzen, um dem Schlüssel von Luis zu vertrauen.

Schlüssel vom Schlüsselserver erhalten

Nun werden wir nach dem Schlüssel von Gustavo Felisberto suchen und ihn zu dem Keyring von John Doe hinzufügen (nur für den Fall, dass Sie es nicht bemerkt haben, Gustavo Felisberto ist der Autor dieses Leifadens).

Befehlsauflistung 3.1: Suchen nach Schlüsseln von Schlüsselservern

$ gpg --keyserver subkeys.pgp.net --keyserver-options honor-http-proxy --search-keys humpback@felisberto.net
gpg: searching for "humpback@felisberto.net" from HKP server subkeys.pgp.net
Keys 1-5 of 5 for "humpback@felisberto.net"
(1)Gustavo Felisberto (apt-get install anarchy) <humpback@felisberto.net> 1024
  created 2002-12-06, key B9F2D52A
(2)Gustavo Felisberto <humpback@altavista.net> 1024
  created 1999-08-03, key E97E0B46
(3)Gustavo A.S.R. Felisberto <humpback@altavista.net> 1024
  created 1998-12-10, key B59AB043
(4)Gustavo Adolfo Silva Ribeiro Felisberto <humpback@altavista.net> 1024
  created 1998-08-26, key 39EB133D
(5)Gustavo Adolfo Silva Ribeiro Felisberto <humpback@altavista.net> 1024
  created 1998-06-14, key AE02AF87
  Enter number(s), N)ext, or Q)uit >1
gpg: requesting key B9F2D52A from HKP keyserver subkeys.pgp.net
gpg: key B9F2D52A: public key imported
gpg: Total number processed: 1
gpg:               imported: 1

Wie Sie sehen können habe ich mehrere Schlüssel an den Schlüsselserver übertragen, aber momentan verwende ich nur B9F2D52A. John Doe kann ihn nun bekommen und signieren, wenn er ihm traut.

4.  Verwendung des GPG-Agenten

Was ist ein GPG-Agent?

In manchen Fällen, wenn bestimmte Anwendungen verwendet werden, bei denen Sie Ihren GPG Schlüssel sehr häufig benötigen, müssen Sie Ihre Passphrase viele Male eintippen. Zahlreiche Anwendungen boten die Option die Passphrase zu cachen um dem Anwender das Leben leichter zu machen. Dies erlaubte jedoch nicht, dass mehrere Programme auf den Cache zugreifen konnten (wie sicher wäre das wohl?) und zwang Anwendungen dazu, das Rad immer wieder neu zu erfinden.

Ein GPG-Agent ist eine separate Anwendung, die GPG verwendet um die Passphrase, auf eine standardisierte und sichere Art, im Cache zu haben. Es erlaubt Anwendungen GPG gleichzeitig zu verwenden: Wenn Sie Ihre Passphrase eingegeben haben, während Sie in einer Anwendung gearbeitet haben, dann kann eine andere Anwendung mit GPG arbeiten, ohne dass eine erneute Anfrage für die Passphrase zur Freischaltung des Schlüssels geschehen muss. Natürlich nur, wenn der GPG-Agent so konfiguriert wurde, dass dies erlaubt ist.

Gentoo liefert mehrere GPG-Agentenanwendungen. Das app-crypt/gnupg-1.9.* Paket enthält was als Refernz angesehen werden kann und ist auch das, was in diesem Dokument verwendet wird.

Installation und Konfiguration von gpg-agent und pinentry

Sie sollten gnupg-1.9.* installieren, es enthält gpg-agent und pinentry, welches das Hilfsprogramm ist, das gpg-agent verwendet um in einem graphischen Fenster die Passphrase zu erfragen. Es kommt in drei verschiedenen Varianten: es kann ein Popup-Fenster öffnen unter der Verwendung der gtk+, Qt, oder curses Bibliothek (abhängig von den USE-Flags die Sie gesetzt hatten zum Zeitpunkt als Sie mit emerge installierten)

Befehlsauflistung 4.1: Installieren von gpg-agent und pinentry

# emerge \>=gnupg-1.9.20 pinentry

Erstellen Sie als nächstes eine Datei mit dem Namen ~/.gnupg/gpg-agent.conf und tippen Sie die folgenden Zeilen ein. Diese setzen den Standard Timeout der Passphrase (z.B. 30 Minuten) und legen die Anwendung fest, welche aufgerufen wird, wenn die Passphrase zum ersten Mal besorgt wird (z.B. die Qt Version von pinentry).

Befehlsauflistung 4.2: Editieren von ~/.gnupg/gpg-agent.conf

pinentry-program /usr/bin/pinentry-qt
no-grab
default-cache-ttl 1800

Konfigurieren Sie nun GnuPG so, dass es den Agenten verwendet, wenn es angebracht ist. Editieren Sie ~/.gnupg/gpg.conf und fügen Sie die folgende Zeile hinzu:

Befehlsauflistung 4.3: GnuPG für die Verwendung von GPG-Agent konfigurieren

use-agent

Nun ist Ihr System (fast) bereit den GPG-Agenten zu verwenden.

Automatisches starten des GPG-Agenten

Wenn sie KDE als graphische Benutzeroberfläche verwenden, editieren Sie /usr/kde/3.x/env/agent-startup.sh (systemweit) oder ~/.kde/env/gpgagent.sh (lokaler Benutzer) und fügen Sie folgenden Befehl hinzu um KDE automatisch den GPG-Agenten starten zu lassen:

Befehlsauflistung 4.4: KDE automatisch den GPG-Agenten starten lassen

eval "$(gpg-agent --daemon)"

Wenn Sie eine andere graphische Benutzeroberfläche verwenden, legen Sie die Zeile (dieselbe wie oben) in ~/.xinitrc (wenn Sie startx verwenden) oder ~/.xsession (wenn Sie XDM/GDM/KDM/... verwenden) ab.

5.  Mit Dokumenten arbeiten

Verschlüsselung und Signierung

Nehmen wir an, dass Sie eine Datei haben, die Sie Luis senden möchten. Sie können Sie verschlüsseln, signieren oder verschlüssen und signieren. Verschlüsseln bedeutet, dass nur Luis die Möglichkeit haben wird, sie zu öffnen. Die Signatur zeigt Luis, dass es wirklich Sie waren, der die Datei erstellt hat.

Die nächsten drei Befehle werden genau das tun: Verschlüsseln, signieren und verschlüssen/signieren.

Befehlsauflistung 5.1: Verschlüsseln und Signieren von Dateien

$ gpg --output doc.gpg --encrypt --recipient lmpinto@dei.uc.pt doc_to_encrypt
$ gpg --output doc.gpg --sign --recipient lmpinto@dei.uc.pt doc_to_sign
$ gpg --output doc.gpg --encrypt --sign --recipient lmpinto@dei.uc.pt doc_to_encrypt_and_sign

Dies erstellt Binärdateien. Wenn Sie ASCII Dateien erstellen möchten, dann hängen Sie einfach --clearsign an den Anfang des Befehls an.

Entschlüsselung und Verifzierung von Signaturen

Nehmen wir an, dass Sie eine Datei erhalten haben, die für Sie verschlüsselt wurde. Der Befehl zur Entschlüsselung ist gpg --output document --decrypt encrypted_doc.gpg. Dies wird das Dokument entschlüsseln und die Signatur verifizieren (wenn eine vorhanden ist).

Verschlüsseln und Entschlüsseln ohne Schlüssel

Es ist auch möglich Dateien mit der Benutzung von Passwörtern anstatt von Schlüsseln zu verschlüsseln. Das Passwort selbst wird als Schlüssel agieren - es wird als symmetrischer Cypher benutzt. Sie können die Datei durch gpgs Argument --symmetric verschlüsseln; Entschlüsseln verwendet denselben Befehl, wie vorher bereits gesagt.

Befehlsauflistung 5.2: Verschlüsseln von Dateien unter Benutzung eines Passwortes

$ gpg --output document.gpg --symmetric document
(GnuPG wird nach einer Passphrase und einer Passphrase-Bestätigung
fragen)

Erweiterte Funktionen

Es gibt einige nette erweitere Funktionen in GnuPG. Um diese zu finden, müssen Sie die ~/.gnupg/gpg.conf Datei öffnen.

Befehlsauflistung 5.3: ~/.gnupg/gpg.conf

#keyserver x-hkp://subkeys.pgp.net
#keyserver-options auto-key-retrieve include-disabled include-revoked

Suchen Sie nach den zwei oben angezeigten Zeilen und entkommentieren Sie sie. Damit wird, jedes mal wenn GnuPG eine Signatur überprüfen muss und keinen öffentlichen Schlüssel dafür im lokalen Schlüsselring findet, automatisch der Schlüsselserver subkeys.pgp.net kontaktiert und GnuPG wird versuchen, ihn von dort zu besorgen.

Ein weiteres nützliches Kommando ist gpg --refresh-keys. Dies wird den in der ~/.gnupg/options Datei festgelegten Schlüsselserver kontaktieren und die öffentlichen Schlüssel in Ihrem lokalen Schlüsselring aktualisieren, zurückgerufene Schlüssel suchen, sowie neue IDs und neue Signaturen zu Ihrem Schlüsselring hinzufügen. Sie sollten dies ein- oder zweimal pro Monat ausführen, um sicherzustellen, dass Sie benachrichtigt werden, sobald jemand seinen Schlüssel zurückruft.

6.  GnuPG Schnittstellen

Über Email Signaturen

In 95% aller Fälle werden Sie GnuPG mit Email verwenden; Signieren/Verschlüsseln Ihrer ausgehenden Nachrichten und Lesen von signierten/verschlüsselten Nachrichten. Daher ist es durchaus passend, dass ich dies als erstes bespreche.

Es gibt zwei Arten, um eine Email mit GnuPG zu signieren/verschlüsseln, die alte und die neue Art. Bei der alten wurden die Nachrichten in Plain Text angezeigt, ohne mögliche Formatierung und angehängte Dateien waren nicht signiert/verschlüsselt. Hier ist ein Beispiel einer solchen Nachricht, signiert mit der alten Methode:

Befehlsauflistung 6.1: Eine Plain Text Signatur

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Testnachricht

-----BEGIN PGP SIGNATURE-----
Version: PGPfreeware 6.5.8 for non-commercial use

iQA/AwUBP8461jMX0745gR7AEQIEOwCg011GbufXO3ED3FkLWXmfzg7xm1cAoJD0
0EU3Kd2EKNCqataEqM5qjpPs
=LchZ
-----END PGP SIGNATURE-----

Nachrichten mit dieser Methode sind in der heutigen Welt keine gute Lösung, wo wir nette GUIs und Emailprogramme haben, welche HTML verstehen.

Um dies zu lösen, wurde ein Zusatz zu MIME (Multipurpose Internet Mail Extensions) erstellt. Dies fügt der Email ein Feld hinzu, das dem Mailprogramm mitteilt, dass die Nachricht signiert und/oder verschlüsselt ist. Das einzige Problem: Nicht alle Mailprogramme unterstützen dies. Einige verunstalten den Inhalt sogar.

Kgpg

Kgpg ist ein nettes GUI für GnuPG. Im Hauptfenster können Sie Text einfügen, den Sie signieren oder verschlüsseln möchten. Sie können auch ASCII-armored Text einfügen, den Sie entschlüsseln möchten.


Abbildung 6.1

Fig. 1: kgpg Hauptfenster

In diesem Bild können Sie das Kgpg Hauptfenster mit ASCII-armored Text und eingefügtem verschlüsselten Text sehen. Von hier aus können Sie ihn entschlüsseln (dafür benötigen Sie Ihre Passphrase), andere Dateien verschlüsseln, neuen Text zum Signieren einfügen, ...


Abbildung 6.2

Fig. 2: kgpg Schlüsselverwaltungsfenster

Nun können Sie das Fenster fürs Schlüsselmanagement sehen. Von hier sehen wir unseren guten Schlüssel für John Doe. Die zwei Schlüssel von Gustavo und Luis, denen Sie vertrauen und den Schlüssel von Daniel Robbins, dem Sie nicht trauen (Ich habe ihn immer noch nicht angerufen um seinen Fingerabdruck zu überprüfen :) ).

Seahorse

Seahorse zielt darauf ab ein GnuPG GUI Interface für den Gnome Desktop zu sein. Die Software hat sich rapide entwickelt, aber es fehlen immer noch wichtige Funktionen die sich in Kgpg oder der Kommandozeilenversion finden.

Enigmail

Enigmail ist ein Plug-In für Mozilla-basierende Emailprogramme (wie Thunderbird oder Seamonkey), welches ziemlich einfach zu konfigurieren ist. In Seamonkey navigieren Sie einfach nach Preferences -> Privacy & Security -> Enigmail. Dort geben Sie Ihre Schlüsselemail an und das wars. Sie müssen erst emerge enigmail ausführen um es mit Thunderbird zu verwenden. Danach können Sie es in Edit -> Account Settings -> OpenPGP Security konfigurieren.

Mails die mit einer pgp oder gpg Signatur kommen, die Sie nicht als vertrauenswürdig gesetzt haben, werden mit einem zerbrochenen Stift markiert. Andere, welche eine Signatur haben, der Sie vertrauen, werden mit einem netten geraden Stift erscheinen. Enigmail beinhaltet sogar die Möglichkeit Schlüssel von Schlüsselservern zu beziehen, jedoch wenn es Probleme hat, dann wird es einige seltsame Botschaften ausgeben (aber Sie wissen ja schließlich noch wie man die Kommdandozeile benutzt, nicht wahr?)

KMail

Wenn Sie das crypt USE-Flag gesetzt haben, dann wird KMail automatisch mit Unterstützung für gpg kompiliert werden. Es wird daher in der Lage sein automatisch Inline PGP Nachrichten zu verschlüsseln und zu entschlüsseln, sowie auch OpenPGP/Mime Nachrichten zu verschlüsseln. Wenn Sie auch OpenPGP/Mime Nachrichten entschlüsseln wollen (was wahrscheinlich der Fall ist), dann brauchen Sie einen laufenden GPG-Agenten (siehe Verwendung von GPG-Agent).

Sie können kontrollieren ob KMail korrekt funktioniert, indem Sie in Einstellungen (engl. Settings), KMail einrichten (engl. Configure KMail), Sicherheit (engl. Security), Krypto-Module (engl. Crypto Backends gehen. Sie sollten ein GpgME-basierendes Modul aufgelistet sehen. Wenn es grau unterlegt ist, klicken Sie auf Neu einlesen (engl. Rescan). Wenn das GpgME-basierende Backend weiterhin grau unterlegt ist, funktioniert KMail nicht einwandfrei.

Wenn Sie weiterhin nicht in der Lage sind KMail zum Laufen zu bringen, lesen Sie bitte die KMail PGP HowTo Seite für weitere Informationen.

Claws-Mail

Dieses Mailprogramm ist sehr schnell, auch bei großen Mailboxen, hat alle Features, die man sich in einem Mailprogramm nur wünschen kann, und funktioniert sehr gut zusammen mit GPG. Der einzige Nachteil ist, dass es nicht mit alten PGP-Signaturen funktioniert, so dass Sie diese von Hand kontrollieren müssen.

Um Ihren GPG-Key mit Claws-Mail zu benutzen gehen Sie in die Account Konfiguration und wählen Sie das "Privacy" Register. Dort wählen Sie den zu benutzenden Schlüssel aus, die meisten Nutzer werden vermutlich den Standard Schlüssel benutzen wollen-

7.  Public-Key-Kryptographie

Grundlagen

Das Konzept der Public-Key-Kryptographie wurde ursprünglich von Whitfield Diffie und Martin Hellman im Jahr 1976 erarbeitet. Als ich zum ersten Mal die Worte "Public Key" und "Kryptographie" im selben Satz hörte, damals 1993, da dachte ich, dass es unmöglich wäre, so etwas durchzuführen. Damals gab es noch kein Internet (nun, es gab es, aber nicht für mich) und so ging ich zur öffentlichen Bibliothek und fragte nach Büchern über Kryptographie. Ich muss zugeben, dass ich zu dem Zeitpunkt 16 Jahre alt war und der Bibliothekar sah mich mit Verwunderung an und brachte mir ein Kinderbuch über "subsitution cyphers" (die wo man einen Buchstaben für einen anderen austauscht wie der berühmte Caesar-Cypher oder ROT-13 (Tragbb Ebpxf, naq lbh xabj vg vf tbbq orpnhfr lbh ner ernqvat guvf qbp.), (emergen Sie rotix, wenn Sie den Satz nicht lesen können)). Ich war sehr ungehalten darüber und suchte nach weiteren Informationen. Es ist gut Mathematiker in der Familie zu haben, denn sowie ich begann mit einem von ihnen zu reden, wurde ich in eine neue Welt eingeführt.

Und nun ein wenig Mathematik:

Befehlsauflistung 7.1: Mathematische Konzepte

Definitionen:
1- Eine Primzahl ist eine positive Integer Zahl, die größer als 1 ist und nur
durch 1 und sich selbst geteilt werden kann (der Rest der Teilung ist 0). Die
ersten 8 Primzahlen sind 2,3,5,7,11,13,17,19

Theorem(kein Beweis hier)
1-Für jeden positiven Integer der keine Primzahl ist, ist es möglich
aufgespalten zu werden in ein Produkt von zwei Primzahlen und dieses Produkt
ist einzigartig.
4=2*2
6=2*3
8=2*4=2*2*2
10=2*5
12=2*6=2*2*3

"Fakten"
1- Es ist mathematisch einfach zwei große Integer miteinander zu multiplizieren
2- Es ist schwer die Primzahlen eines gegebenen positiven Integers zu faktorisieren.

Wenn ich Ihnen die Zahl 35 gebe und ich Ihnen sage, dass dies ein Produkt zweier Primzahlen ist, dann ist es einfach herauszufinden dass das 5 und 7 sind. Aber wenn ich Ihnen die Zahl 1588522601 nenne, dann werden Sie sehr viel Zeit (oder CPU Zyklen) damit verbringen um herauszufinden, dass es 49811*31891 sind. Und wenn diese Zahl wirklich wirklich groß ist, dann wird diese Aufgabe "unmöglich". Und wenn ich nun der Welt meine große Zahl gebe, die das Produkt zweier Primzahlen ist, dann weiß ich etwas über diese Zahl das niemand anderes weiß.

Dies ist die Basis für Public-Key-Kryptographie (PKC) Implementierungen heutzutage. Als ein (unrealistisches) Beispiel: Ich geben jemanden meine Nummer und dieser jemand benutzt diese um eine Nachricht an mich zu chiffrieren. Jeder kann die chiffrierte Nachricht lesen, nur ich bin der einzige der den Schlüssel hat. Jeder andere wird erst diese große Nummer "splitten" müssen, um in der Lage zu sein die Nachricht zu lesen. (Es ist ein Fakt, dass dies unmöglich ist. Aktuelle Methoden und die schnellsten Computer der Welt benötigen tausende von Jahren um dies zu berechnen.) In diesem Fall sind die beiden großen Primzahlen der Private Schlüssel und die große Nicht-Primzahl ist der Öffentliche Schlüssel.

Im Ablauf ist dies nicht 100% korrekt in Bezug auf die Realität, aber es liefert eine gute Grundlage für Neulinge. Für weitere Informationen lesen Sie bitte Wikipedia bezüglich des Diffie-Hellman Protokolls. Für noch weitere Informationen gehen Sie in die öffentliche Bibliothek und holen Sie sich eine Kopie des "Handbook of Applied Cryptography" von Alfred J. Menezes, Paul C. van Oorschot und Scott A. Vanstone, dieses Buch ist auch umsonst erhältlich auf der oben genannten Seite.

Eine Konsequenz aus diesem ist, dass wenn Sie eine Nachricht an mich chiffrieren und die unchiffrierte Originalnachricht verlieren, dann werden Sie nicht länger die Möglichkeit haben, diese von der chiffrierten Version zu extrahieren.

Signaturen

Wir sahen bereits wie jemand uns eine chiffrierte Nachricht senden kann, wenn diese Person unseren öffentlichen Schlüssel hat. Aber wie stellen wir fest, ob der Nachricht auch derjenige ist, der er vorgibt zu sein? Oder in anderen Worten: Wenn ich eine Nachricht von Ihnen erhalte, wie kann ich wirklich wissen, dass Sie von Ihnen und nicht von jemanden stammt, der vorgibt Sie zu sein?

Erinnern Sie sich daran, dass PKC nicht ganz so simpel ist wie ich sagte? Die Idee ist, dass wenn Sie mir eine chiffrierte Nachricht senden, Sie diese mit Ihrem privaten Schlüssel signieren, so dass ich diese Nachricht zuerst mit Ihrem öffentlichen Schlüssel verifizieren kann und dann mit meinem privaten Schlüssel die Nachricht dechiffrieren kann. Wie Sie sehen könnten wir dies in vorgestelltem Setup nicht tun.

Auch sehr wichtig: Um eine Nachricht zu signieren müssen Sie diese nicht zuvor chiffrieren. So können Sie Nachrichten erstellen, die jeder lesen kann, die aber mit einer persönlichen Signatur kommen, anhand derer festgestellt werden kann, ob die Nachricht authentisch ist oder verändert wurde.

Schlüsselserver und signierte Schlüssel

Gehen wir davon aus, dass wir niemals zuvor Kontakt zueinander hatten und Sie mir jetzt eine Nachricht schicken ... Wie bekomme ich Ihren öffentlichen Schlüssel, und wie kann ich wirklich wissen, dass es Ihrer ist?

Um dieses Problem zu beheben wurden öffentliche Schlüsselserver erstellt. Wenn Sie Ihr Schlüsselpaar (Privater und Öffentlicher Schlüssel) erstellen senden Sie Ihren öffentlichen Schlüssen an einen Schlüsselserver. Nun kann jeder Ihren Schlüssel von dort beziehen. Aber wie kann ich feststellen, dass es wirklich Ihre Schlüssel ist? Für dies brauchen wir ein weiteres Konzept, das Signieren von Schlüsseln:

Signieren von Schlüsseln bedeutet das, sobald ich den öffentlichen Schlüssel einer anderen Person habe und ganz sicher bin, dass diese Person wirklich zu diesem Schlüssel gehört (es ist ein Freund, ich kenne diese Person, ...) kann ich den Schlüssel signieren und wieder zu einem Schlüsselserver senden. So sage ich der Welt "Dieser Schlüssel gehört wirklich zu der Person". Auf diese Weise können Personen die meinen öffentlichen Schlüssel haben und mir trauen, dieses Vertrauen benutzen um anderen Schlüsseln zu trauen.

Dies kan manchmal verwirrend sein, daher hier ein Beispiel aus dem Leben.

Stellen wir uns eine Situation mit drei Personen vor: John, Mary und Lisa. John ist ein guter Freund von Mary, kennt aber Lisa nicht. Lisa ist eine gute Freundin von Mary, kennt aber John nicht. Eines Tages schickt Lisa John eine signierte Email. John wird Lisas öffentlichen Schlüssel vom Schlüsselserver holen und die Nachricht überprüfen. Wenn alles erfolgreich war, dann wird er sehen, dass wer auch immer diese Nachricht schrieb auch den Schlüssel erstellt hat. Aber wie weiß er nun dass diese Person wirklich die ist für die sie sich ausgibt?

Er sieht dann, dass er von Mary signiert wurde, was er überprüfen kann, denn er hat ja längst Marys Schlüssel und er traut diesem. Mit diesem Ring des Vertrauens schlussfolgert er, dass die Email, die er erhalten hat wirklich von Lisa geschrieben wurde.

Sie sind nun soweit, dass Sie diesen Leitfaden verwenden können. Gehen Sie zurück zu Kapitel 1 und lernen Sie wie man gpg einrichtet.

8.  Abschließende Gedanken und Danksagungen

Einige Probleme

Wenn Sie Probleme mit Fotos in Schlüsseln haben, dann überprüfen Sie, welche Version Sie verwenden. Wenn Sie GnuPG 1.2.1-r1 und neuer haben, dann dürften Sie keine Probleme haben, im Gegensatz zu älteren Versionen die Fehler beinhalteten. Des Weiteren mögen die meisten Schlüsselserver keine Schlüssel mit Fotos, Sie sind daher besser beraten keine Fotos hinzuzufügen.

Die neueste Version von gnupg funktioniert anscheinend nicht mit dem gpg --send-keys, welches verwendet wurde um alle Schlüssel in Ihrem Keyring zum öffentlichen Server zu senden.

Was Sie hier nicht finden ...

gpg ist ein sehr komplexes Programm, es lässt Sie viel mehr machen als das was hier erläutert wurde. Dieses Dokument ist für den Benutzer, der noch nicht mit GnuPG vertraut ist. Für weitere Informationen sollten Sie die GnuPG Webseite besuchen.

Ich habe nicht über andere Programme wie pgp4pine, gpgpine, evolution und vielleicht Windows Programme geschrieben, aber ich werde dieses Dokument wahrscheinlich in der Zukunft ergänzen.

Danksagungen

John Michael Ashleys GnuPG Handbook; es ist ein sehr gutes Buch für Anfänger.

Swift (Sven Vermeulen), der mich dazu drängte dies zu überarbeiten.

Jedem im #gentoo-doc Team, ihr seid echt starke Leute.

Tiago Serra für die Pfadweisung zurück zur Privatsphäre.



Drucken

Seite aktualisiert 13. Juni 2010

Die Originalversion dieser Übersetzung wird nicht länger gepflegt

Zusammenfassung: Dieser kleine Leitfaden wird Ihnen die Grundlagen zur Verwendung von GnuPG aufzeigen, ein Programm für sichere Kommunikation.

Gustavo Felisberto
Autor

John P. Davis
Bearbeiter

Sven Vermeulen
Bearbeiter

Jan Hendrik Grahl
Übersetzer

Tobias Scherbaum
Übersetzer

Tobias Heinlein
Übersetzer

Donate to support our development efforts.

Copyright 2001-2014 Gentoo Foundation, Inc. Questions, Comments? Contact us.