Kapitel 11. Internet
Zurück | 11.6 Verschlüsselung | Weiter

## 11.6 Verschlüsselung

### 11.6.1 PGP

PGP - Pretty Good Privacy (auf Deutsch etwa: ziemlich gute Privatsphäre) - war lange Jahre der Standard zur Verschlüsselung und wurde hauptsächlich zur Verschlüsselung von E-Mails verwendet (obwohl sich auch andere Daten damit verschlüsseln lassen). PGP benutzt ein Verfahren mit digitalen Schlüsseln und ermöglicht damit einen sicheren Austausch von Daten zwischen Personen, die sich noch nie getroffen haben. Durch die Verfügbarkeit der Quellcodes wurde PGP von Entwicklern in der ganzen Welt auf so ziemlich jedes Betriebssystem portiert.

PGP verwendet die Algorithmen IDEA und RSA, die leider lange Zeit durch Softwarepatente geschützt waren. Diese Tatsache führte zur Entwicklung einer komplett freien Alternative, deren Entwicklung mittlerweile so weit fortgeschritten ist, dass wir auf eine weitere Beschreibung von PGP verzichten möchten und auf GnuPG verweisen. Mittlerweile ist dieses Patent aber abgelaufen, so dass auch GnuPG die RSA-Verschlüsselung nutzen kann.

### 11.6.2 GnuPG

GnuPG steht für „GNU Privacy Guard“ und ist ein kompletter, freier Ersatz für PGP. Der Algorithmus IDEA wird nicht benutzt, so dass GnuPG ohne Einschränkungen benutzt werden kann. GnuPG implementiert den OpenPGP-Standard, der aus den Datenformaten von PGP 5.x und 6.x entwickelt wurde. Die Homepage von GnuPG finden Sie unter folgender URL: http://www.gnupg.org/.

Folgende Eigenschaften zeichnen GnuPG aus:

- Vollständiger PGP-Ersatz

- Es werden keine patentierten Verfahren verwendet.

- GPL - GNU General Public License

- Kann als Filterprogramm verwendet werden.

- Vollständige OpenPGP-Implementierung

- Gegenüber PGP erweiterte Funktionalität und Sicherheitserweiterungen

- Ver- und entschlüsselt PGP-5.x-Daten.

- ElGamal (unterschreiben und verschlüsseln), DSA, 3DES, Blowfish, Twofish, CAST5, MD5, SHA-1

- RIPE-MD-160 und TIGER werden unterstützt.

- Einfache Implementierung neuer Verfahren durch Erweiterungsmodule

- Die Benutzer-ID wird im Standardformat erzeugt.

- Unterstützung für Schlüsselverfallsdatum

- Benutzerführung in Englisch, Französisch, Deutsch, Italienisch, Polnisch, brasilianischem Portugiesisch, Russisch und Spanisch

- Online-Hilfe

- Wahlweise anonyme Adressaten

- Eingebaute Unterstützung für Schlüsselserver (http://wwwkeys.pgp.net)

Um verschlüsselte E-Mails austauschen zu können, müssen Sie zuerst ein eigenes Schlüsselpaar erzeugen, das aus einem privaten und einem öffentlichen Schlüssel besteht. Mit einem geeigneten Mailprogramm (dieses muss die Verschlüsselung von Mails per PGP/GnuPG unterstützen, `mutt` oder `spruce` sind dazu in der Lage) können Sie dann verschlüsselte Mail austauschen. Lassen Sie sich von Ihrem Mailpartner hierzu seinen öffentlichen Schlüssel (public key) zuschicken, und schicken Sie ihm im Gegenzug Ihren.

Sie können nun Mails mit Ihrem privaten Schlüssel und dem öffentlichen Schlüssel Ihres Partners verschlüsseln. Im Gegenzug kann dieser die von Ihnen verschlüsselte Mail nur mit seinem privaten und Ihrem öffentlichen Schlüssel entschlüsseln.

Dieses Verfahren schützt jedoch noch nicht vor gefälschten Schlüsseln. Um sicherzugehen, dass ein öffentlicher Schlüssel auch wirklich von der entsprechenden Person stammt, können Sie Ihren Schlüssel von verschiedenen Leuten unterschreiben (signieren) lassen. Hierzu müssen Sie sich persönlich mit Leuten treffen, die GnuPG/PGP einsetzen und dieser Person Ihren öffentlichen Schlüssel übergeben (auf Diskette) sowie sich ausweisen. Wenn Sie niemanden kennen, der GnuPG/PGP einsetzt, wenden Sie sich an eine Linux User Group in Ihrer Nähe; dort finden Sie mit Sicherheit jemanden, der Wert auf sichere Kommunikation legt. Eine weitere Möglichkeit bietet die Zeitschrift c't an: Auf größeren Messen wie der CeBIT bietet die c't ebenfalls die Gelegenheit, Schlüssel zu signieren (http://www.heise.de/ct/pgpCA/).

#### 11.6.2.1 Erzeugen von Schlüsselpaaren

Mit dem Kommando `gpg --gen-key` erzeugen Sie sich ein neues Schlüsselpaar:

    bash-2.03$ gpg --gen-key
    gpg (GnuPG) 0.9.3; Copyright (C) 1999 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: Warnung: Sensible Daten könnten auf Festplatte ausgelagert werden.
      Um dies zu vermeiden, kann das Programm suid(root) installiert werden.
      Bitte wenden Sie sich hierzu an den Systemadministrator.
    gpg: /home/fr/.gnupg: Verzeichnis erzeugt
    gpg: /home/fr/.gnupg/options: neue Optionendatei erstellt
    gpg: /home/fr/.gnupg/secring.gpg: Schlüsselbund erstellt
    gpg: /home/fr/.gnupg/pubring.gpg: Schlüsselbund erstellt
    gpg: /home/fr/.gnupg/trustdb.gpg: trust-db erzeugt
    Bitte wählen Sie, welche Art von Schlüssel Sie möchten:
       (1) DSA und ElGamal (voreingestellt)
       (2) DSA (nur signieren/beglaubigen)
       (4) ElGamal (signieren/beglaubigen und verschlüsseln)
    Ihre Auswahl?

Sie können hier zwischen verschiedenen Schlüsseln wählen; die voreingestellten Werte sind aber auf jeden Fall sinnvoll. Sie sollten diese einfach akzeptieren.

    Der DSA Schlüssel wird 1024 Bits haben.
    Es wird ein neues ELG-E Schlüsselpaar erzeugt.
                  kleinste Schlüssellänge ist  768 Bit
                  standard Schlüssellänge ist 1024 Bit
          größte sinnvolle Schlüssellänge ist 2048 Bit
    Welche Schlüssellänge wünschen Sie? (1024)

Hier können Sie die Länge des zu erzeugenden Schlüssels festlegen. Längere Schlüssel sind schwerer zu „knacken“, allerdings benötigen diese auch etwas mehr Zeit, wenn man mit ihnen arbeitet. 1024 Bit sind ein sinnvoller Wert.

    Die verlangte Schlüssellänge beträgt 1024 Bit
    Bitte wählen Sie, wie lange der Schlüssel gültig bleiben soll.
             0 = Schlüssel verfällt nie
          <n>  = Schlüssel verfällt nach n Tagen
          <n>w = Schlüssel verfällt nach n Wochen
          <n>m = Schlüssel verfällt nach n Monaten
          <n>y = Schlüssel verfällt nach n Jahren
    Der Schlüssel bleibt wie lange gültig? (0)

GnuPG unterstützt auch ein Verfallsdatum bei Schlüsseln. Vielleicht möchten Sie ja für die Mitarbeiter in Ihrer Firma, die nur Zeitverträge haben, verhindern, dass diese den Schlüssel auch später noch verwenden können. Für Ihren privaten Schlüssel benötigen Sie ein solches Verfallsdatum im Normalfall nicht.

    Der Schlüssel verfällt nie.
    Ist dies richtig? (j/n) j

    Sie benötigen eine User-ID, um Ihren Schlüssel eindeutig zu machen; das
    Programm baut diese User-ID aus Ihrem echten Namen, einem Kommentar und
    Ihrer E-Mail-Adresse in dieser Form auf:
        "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"

    Ihr Name ("Vorname Nachname"): Frank Ronneburg
    E-Mail-Adresse: fr@leenuks.de
    Kommentar:
    Sie haben diese User-ID gewählt:
        "Frank Ronneburg <fr@leenuks.de>"

    Ändern: (N)ame, (K)ommentar, (E)-Mail oder (F)ertig/(B)eenden? f

Geben Sie hier mindestens Ihren Namen und Ihre E-Mail Adresse ein.

    Sie benötigen ein Mantra, um den geheimen Schlüssel zu schützen.

    Geben Sie das Mantra ein:
    Geben Sie das Mantra nochmal ein:

Sie benötigen nun noch ein „Mantra“, also ein Passwort für Ihren privaten, geheimen Schlüssel.

    Wir müssen eine ganze Menge Zufallszahlen erzeugen.  Sie können dies
    unterstützen, indem Sie z.B. in einem anderen Fenster/Konsole irgendetwas
    tippen oder irgendwelche anderen Programme benutzen.
    +++++.....+++++...............+++++......++++++++++.......+++++
    ..................+++++...........+++++....++++++++++++++++++++
    ++.+++++...+++++........................+++++....+++++....+++++
    +++++++++++++++...+++++.+++++.....+++++..+++++...+++++........+
    ++++>+++++.+++++.....................+++++
    Wir müssen eine ganze Menge Zufallszahlen erzeugen.  Sie können dies
    unterstützen, indem Sie z.B. in einem anderen Fenster/Konsole irgendetwas
    tippen oder irgendwelche anderen Programme benutzen.
    .++++++++++......+++++........++++++++++.......................
    ..+++++.....++++++++++.+++++.+++++......+++++.+++++++++++++++..
    ...+++++......+++++.+++++...+++++.....................+++++.+++
    ++....+++++...........++++++++++.......++++++++++.........+++++
    >........+++++............>..+++++..<.........+++++...
    .....>.....+++++.....................+++++
    Öffentlichen und geheimen Schlüssel erzeugt und signiert.
    bash-2.03$

GnuPG erzeugt nun aus Ihren Angaben ein Schlüsselpaar und legt dieses im Verzeichnis `~/.gnupg` in Ihrem Heimatverzeichnis ab. Damit ist die eigentliche Erzeugung des Schlüssels schon abgeschlossen.

#### 11.6.2.2 Schlüsselverwaltung

In diesem Abschnitt werden die grundlegenden Schritte der Schlüsselverwaltung beschrieben. Eine ausführliche Anleitung, auch zu allen anderen Funktionen von GnuPG, finden Sie in der deutschen Übersetzung des „GNU Privacy Handbook“ unter http://www.gnupg.org/gph/de/manual/.

##### 11.6.2.2.1 Austauschen von Schlüsseln

Um mit anderen zu kommunizieren, müssen Sie untereinander Ihre öffentlichen Schlüssel austauschen. Dies kann per E-Mail, über einen Key-Server oder auch per persönlicher Übergabe erfolgen. Zum Auflisten der Schlüssel in Ihrem öffentlichen Schlüsselbund verwenden Sie die Befehlszeilen-Option `--list-keys`. Es werden alle Schlüssel angezeigt; die Suche kann beispielsweise durch einen Namen eingegrenzt werden.

    fr@surimi:~$  gpg --list-keys Ronneburg
    pub  1024D/887EB817 2000-12-12 Frank Ronneburg <fr@openoffice.de>
    uid                            Frank Ronneburg <fr@leenuks.de>
    uid                            Frank Ronneburg <fr@belug.org>
    uid                            Frank Ronneburg <fr@peace-love-and-linux.de>
    sub  1024g/B91B2CCC 2000-12-12

    pub   768R/3B54E019 1996-02-14 Frank Ronneburg <fr@hoshi.in-berlin.de>

    pub  1024D/CCF3969B 2002-03-08 Frank Ronneburg (Linux Information Systems AG)
         <f.ronneburg@linux-ag.com>
    sub  2048g/AF72F22D 2002-03-08

Wenn Sie bereits weitere öffentliche Schlüssel oder weitere IDs hinzugefügt haben, wird diese Liste länger ausfallen. Beispielhaft findet sich in dieser Auflistung auch ein alter PGP-Key.

##### 11.6.2.2.2 Exportieren eines öffentlichen Schlüssels

Um jemandem Ihren öffentlichen Schlüssel zu schicken, müssen Sie diesen zunächst exportieren. Hierzu benutzt man die Kommandozeilen-Option `--export`. Zur Identifikation des zu exportierenden öffentlichen Schlüssels dient entweder die Schlüssel-ID oder irgendein Teil der Benutzer-ID.

    gpg --output Ronneburg.gpg --export Ronneburg

Der Schlüssel wird in einem binären Format exportiert, doch kann dies unerwünscht sein, wenn Sie den Schlüssel per E-Mail verschicken oder auf einer WWW-Seite veröffentlichen wollen. GnuPG unterstützt daher die Kommandozeilen-Option `--armor`, die bewirkt, dass der Schlüssel im ASCII-Format ausgegeben wird. (Im Allgemeinen kann jede Ausgabe von GnuPG - beispielsweise Schlüssel, verschlüsselte Dokumente oder Unterschriften - im ASCII-Format dargestellt werden, indem man die Option `--armor` hinzufügt.)

    fr@surimi:~$ gpg --armor --export Ronneburg
    -----BEGIN PGP PUBLIC KEY BLOCK-----
    Version: GnuPG v1.0.4 (GNU/Linux)
    Comment: Weitere Infos: siehe http://www.gnupg.org

    mQGiBDo2SPYRBACkgxUYL30WWgBFybJWKc8eENKDC/8fWbmsKLVFlmvayYu8ykeW
    GiiUvh6zKhidoa7Vve796kq9N1v5VRvy4qKDMUvLlLA/4k4OHZg0rKcQIIOzuGba
    d3dGGCUcNqFYjlgnML2NP40+Kr4Rs6MAWk7gqZ4IofP4n9VmgOil1WzMmwCghZMB
    orTO/atjGfWz/m30IgbpSisD/iw6mKPYdz7PJB50jCn6bpZt7dFAaQVJrlfSPS4J
    iRUGPghVEPSfNtNd3N1PymRWv3j1CYC41Nl92wxLI8QFXdQv44smNdao7YDSdpkR
    4+y+pWBCeitXqCj/9eVOVGvEM+mLmsvpg/M/qa6a+EF/iJW+3Mb63xmrumeHGBD6
    GUllA/0f7B9u2Hqx4078QWZmxycpD8XI43Yq3r1pkHb28BryMi6tE/qkfsgxywlD
    Blnl6WTpzBxgsMLdm7BNz/B41fk8AnCAtnftoOa8+Q0TKodrDtLkrXdW0z0RltNZ

    ...

    2NSr7iQUlIhGBBgRAgAGBQI6Nkj6AAoJEF+d1jKIfrgXJBwAnj038AMs+feNTOyP
    qkdlhcd+kHHTAJ0dKZe7keaAIJkz4FJQhBhrk/bHpw==
    =yDka
    -----END PGP PUBLIC KEY BLOCK-----

##### 11.6.2.2.3 Importieren eines öffentlichen Schlüssels

Ein öffentlicher Schlüssel kann zu Ihrem öffentlichen Schlüsselbund hinzugefügt werden, und zwar mit der Option: `--import`.

    fr@surimi:~$  gpg --import /tmp/frank.gpg
    gpg: Schlüssel 887EB817: Öffentlicher Schlüssel importiert
    gpg: Anzahl insgesamt bearbeiteter Schlüssel: 1
    gpg:            importiert: 1

##### 11.6.2.2.4 Bearbeiten eines Schlüssels

Wenn ein Schlüssel einmal importiert ist, sollte er auf Authentizität überprüft werden. GnuPG arbeitet mit einem wirksamen und flexiblen Vertrauensmodell, bei dem Sie nicht jeden Schlüssel, den Sie importieren, persönlich zu authentifizieren brauchen. Einige Schlüssel können dies jedoch erfordern. Ein Schlüssel wird dadurch authentifiziert, dass Sie den Fingerabdruck des Schlüssels überpüfen und dann den Schlüssel unterschreiben, um seine Gültigkeit zu bestätigen. Der Fingerabdruck eines Schlüssels kann mit der Befehlszeilen-Option `--fingerprint` geprüft werden. Um aber den Schlüssel zu bestätigen, muss die Option `--edit-key` verwendet werden.

    fr@surimi:~$ gpg --edit-key Borgert
    gpg (GnuPG) 1.0.4; Copyright (C) 2000 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.

    pub  1024R/9B668109  erstellt: 1998-06-28 verfällt: niemals Vertrauen: -/q
    (1)  W. Borgert <debacle@knorke.in-berlin.de>

    Befehl> fpr
    pub  1024R/9B668109 1998-06-28 W. Borgert <debacle@knorke.in-berlin.de>
           Fingerabdruck: 6F 74 32 AB 53 DD 09 F1  3B 69 E6 3F 79 8A 70 53

Um den Fingerabdruck zu überprüfen, müssen Sie den Eigentümer des Schlüssels kontaktieren und die Fingerabdrücke vergleichen. Sie können persönlich oder per Telefon mit ihm sprechen oder auf beliebigem anderen Wege kommunizieren, solange nur garantiert ist, dass es sich um den rechtmäßigen Eigentümer handelt. Stimmen beide Fingerabdrücke überein, dann können Sie sicher sein, dass Sie eine echte Kopie des öffentlichen Schlüssels haben.

Nach dem Prüfen des Fingerabdrucks können Sie den Schlüssel unterschreiben, um ihn zu authentifizieren. Da die Schlüsselüberprüfung ein Schwachpunkt in der Kryptographie mit öffentlichem Schlüssel ist, sollten Sie äußerste Sorgfalt walten lassen und den Fingerabdruck eines Schlüssels immer gemeinsam mit dem Eigentümer prüfen, bevor Sie den Schlüssel unterschreiben.

    Befehl> sign

    pub  1024R/9B668109  erstellt: 1998-06-28 verfällt: niemals Vertrauen: -/q
          Fingerabdruck: 6F 74 32 AB 53 DD 09 F1  3B 69 E6 3F 79 8A 70 53

         W. Borgert <debacle@knorke.in-berlin.de>

    Sind Sie wirklich sicher, daß Sie vorstehenden Schlüssel mit Ihrem
    Schlüssel beglaubigen wollen: "Frank Ronneburg <fr@leenuks.de>"

    Wirklich unterschreiben?

Sie können sich jederzeit vergewissern, welche Unterschrift Sie hinzugefügt haben. Jede Benutzer-ID auf dem Schlüssel hat dann sowohl eine oder mehrere Eigenbeglaubigungen als auch eine Unterschrift von jedem Benutzer, der den Schlüssel authentifiziert hat.

    Befehl> check
    uid  Frank Ronneburg <fr@leenuks.de>
    sig!       887EB817 2000-12-12   [Eigenbeglaubigung]
    sig!       9B668109 2001-01-26   W. Borgert <debacle@knorke.in-berlin.de>
    sig!       801EA932 2001-04-02   Martin Schulze <joey@infodrom.north.de>
    sig!       13282FF2 2000-12-18   Werner Heuser (none) <wehe@debian.org>
    sig!       EF439690 2000-12-21   Michael Piefel <piefel@informatik.hu-ber
    sig!       258D8781 2001-03-31   Michael Bramer <grisu@debian.org>
    sig!       DA4A1116 2001-04-04   Bernhard Reiter <bernhard@intevation.de>
    sig!       86574ACA 2001-04-04   Georg C. F. Greve <greve@gnu.org>
    sig!       496A1827 2001-04-06   Sebastian Rittau <srittau@jroger.in-berl
    sig!       9C6D5E59 2001-04-10   Karl Bartel <karlb@gmx.net>

    Befehl>

##### 11.6.2.2.5 Schlüsselverteilung

Im Idealfall wird ein Schlüssel durch persönliche Übergabe an Ihre Korrespondenzpartner weitergegeben. In der Praxis werden jedoch Schlüssel oft per E-Mail oder über irgendein anderes elektronisches Kommunikationsmittel weitergegeben. Die Weitergabe per E-Mail ist durchaus annehmbar, wenn Sie nur einige wenige Korrespondenzpartner haben. Wenn Sie viele Korrespondenzpartner haben, könnten Sie beispielsweise Ihre(n) öffentlichen Schlüssel auf Ihrer Homepage im Web publizieren. Das setzt jedoch voraus, dass Ihre Korrespondenzpartner auch wissen, wo sie Ihre(n) Schlüssel finden können.

Um dieses Problem zu lösen, gibt es Key-Server, die öffentliche Schlüssel sammeln und weitergeben. Ein bei dem Server eingegangener öffentlicher Schlüssel wird entweder der Datenbank des Servers hinzugefügt oder mit Ihrem eventuell schon vorhandenen Schlüssel zusammengeführt. Wenn eine Anfrage nach einem Schlüssel beim Server eingeht, durchsucht dieser seine Datenbank und sendet den angeforderten öffentlichen Schlüssel zurück, wenn er ihn gefunden hat.

Ein oder mehr Schlüssel können unter Verwendung der Kommandozeilen-Option `--send-keys` an den Key-Server geschickt werden. Die Option erwartet eine Schlüssel-ID oder Benutzer-ID als Argument und schickt die so spezifizierten Schlüssel an den Key-Server. Der Key-Server, an den die Schlüssel geschickt werden sollen, wird durch die Kommandozeilenoption `--keyserver` spezifiziert. In ähnlicher Weise wird die Option `--recv-key` benutzt, um Schlüssel von einem Key-Server zu holen. Doch müssen Sie hier den Schlüssel mit einer Schlüssel-ID spezifizieren.

Hier ein Beispiel, mit dem ich meinen Public-Key auf dem Server aktualisiere.

    fr@surimi:~$ gpg --keyserver wwwkeys.eu.pgp.net --send-key 887EB817
    gpg: Senden an `wwwkeys.eu.pgp.net' erfolgreich (status=200)

Hier wird ein bereits vorhandener Key aktualisiert:

    fr@surimi:~$ gpg --keyserver wwwkeys.eu.pgp.net --recv-key 86574ACA
    gpg: Schlüssel 86574ACA von wwwkeys.eu.pgp.net wird angefordert ...
    gpg: Schlüssel 86574ACA: 3 neue User-IDs
    gpg: Schlüssel 86574ACA: 15 neue Signaturen
    gpg: Anzahl insgesamt bearbeiteter Schlüssel: 1
    gpg:                           neue User-IDs: 3
    gpg:                         neue Signaturen: 15

Weltweit gibt es eine Vielzahl bekannter Key-Server. Die größeren Key-Server synchronisieren sich wechselseitig. Am besten benutzen Sie einen gut erreichbaren Key-Server im Internet und tauschen dann regelmäßig über diesen Schlüssel aus.

Neben dem im Beispiel gezeigten Server gibt es noch eine ganze Reihe weiterer Key-Server im Netz. Dies sind beispielsweisehttp://www.pca.dfn.de/dfnpca/pgpkserv/ und http://keyserver.net/.

#### 11.6.2.3 GnuPG und mutt

Das Einbinden von GnuPG in das Mail-Programm `mutt` ist durch ein bei mutt mitgeliefertes Beispiel sehr einfach zu realisieren. Wenn Sie keine individuellen Einstellungen benötigen, reicht das Einfügen der Zeile

    source /usr/share/doc/mutt/examples/gpg.rc

in der Datei `~/.muttrc` aus. Natürlich können Sie auch eine Kopie der Beispieldatei in Ihrem Heimatverzeichnis erzeugen und die Werte an Ihre Bedürfnisse anpassen.

Zurück | Nach oben | Weiter
11.5 Eigene Homepage | Zum Anfang | Kapitel 12. Drucken

© 1999-2006 Frank Ronneburg - Dieser Inhalt ist unter einem Creative Commons Namensnennung - Nicht-kommerziell - Keine Bearbeitung Lizenzvertrag lizenziert (creativecommons.org/licenses/by-nc-nd/2.0/de/legalcode).