Gentoo: GnuPG-Leitfaden
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
|
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 |
 |
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 |
 |
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.
Die Inhalte dieses Dokuments sind, sofern nicht explizit
anders genannt, unter der Creative Commons -
Namensnennung / Weitergabe Lizenz lizenziert. Die Gentoo Name and Logo
Usage Guidelines treffen zu.
|