PGP (Pretty Good Privacy) und die freie Alternative GnuPG (GNU Privacy Guard) stellen für die OpenPGP Verschlüsselung erprobte Software bereit. Die Nutzung ist aber nicht trivial.
GNU Privacy Guard (GnuPG)
GnuPG ist die bekannteste Open Source Implementierung des OpenPGP Standards zur Verschlüsselung und Signierung von Daten. Es wird unter Leitung von Werner Koch ständig weiterentwickelt.
Verbesserte Konfiguration von GnuPG
In der Konfigurationsdatei
"gpg.conf" kann man nach der Installation kleine Verbesserungen vornehmen. Die Datei findet man in folgenden Verzeichnissen (evtl. neu anlegen):
- Windows: %APPDATA%\GnuPG
- Linux,BSD: $HOME/.gnupg/
Die Datei kann man mit einem Texteditor bearbeiten und folgende Optionen ergänzen bzw. durch Entfernen des Kommentarzeichens "#" aktivieren:
# keine Informationen über Softwareversion und Betriebssystem einfügen
no-emit-version
no-comments
display-charset utf-8
# 16-stellige Key-IDs verwenden statt 8-stelliger (schwerer zu faken)
keyid-format 0xlong
# Empfohlene Praeferenzen für Krypto Algorithmen
personal-digest-preferences SHA512 SHA384 SHA256
personal-cipher-preferences AES256 AES192 AES
personal-compress-preferences Uncompressed
default-preference-list SHA512 SHA384 SHA256 AES256 AES192 AES Uncompressed
# Signaturalgorithmus für Beglaubigungen
cert-digest-algo SHA512
# Einstellungen für symmetrische Verschlüsselung
s2k-cipher-algo AES256
s2k-digest-algo SHA384
# Cipher mit 64 Bit Blockgröße deaktivieren, weil sie
# schwach sind und ohne MDC verwendet werden (siehe: #Efail)
disable-cipher-algo 3DES
disable-cipher-algo IDEA
# SHA1 als schwachen Algorithmus markieren (wie MD5)
weak-digest SHA1
# sonstiges
fixed-list-mode
verify-options show-uid-validity
list-options show-uid-validity
# Keine automatische Suche nach fehlenden Keys im DNS oder auf WKS-Servern
auto-key-locate local
# Keyserver Optionen
keyserver-options no-honor-keyserver-url,no-auto-key-retrieve,no-include-revoked
Auswahl und Stärke der OpenPGP Schlüssel
Aktuelle GnuPGP Versionen unterstützen neben RSA und DSA Schlüsseln mit bis zu 4096 Bit Länge auch Schlüssel auf Basis elliptischer Kurven. Alle Optionen hat man zur Auswahl, wenn man ein neues Schlüsselpaar auf der Kommandozeile im Experten-Modus erstellt:
> gpg2 --expert --full-gen-key
Welche Schlüssel sollte man nutzen? Ein paar Gedanken zur Auswahl:
- RSA Schlüssel werden von allen PGP Implementierungen problemlos verwendet. Bei ausreichender Schlüssellänge > 2000 Bit gelten diese Schlüssel noch als sicher.
Das BSI ist derzeit der Meinung, dass RSA Schlüssel mit einer Länge von 2048 Bit bis 2022 eingesetzt werden können (BSI TR-02102-1). (Wenn man also jetzt einen neuen Schlüssel generiert, der für 5 Jahre gültig ist und dann möglicherweise verlängert werden soll, dann sollte man mindestens 3072 Bit Schlüssellänge wählen.)
Empfehlung für langfristige Nutzung: RSA Schlüssel mit 4096 Bit Länge.
- Schlüssel auf Basis elliptischer Kurven werden nur in aktuellen PGP Implementierungen unterstützt, die sich aber noch nicht überall durchgesetzt haben.
- Für den Einsatz elliptischer Kurven in PGP gibt es folgende Standards:
- RFC 6637 der IETF empfiehlt die NIST-Kurven P-256, P-384 und P-512 für PGP.
- Die Java Bibliothek BountyCastle sowie PGP Implemtierungen für C# und VB.net können außerdem mit den Brainpool Kurven nach RFC 5639 umgehen.
- Das GnuPGP Team hat mit RFC 4880bis Draft eine Erweiterung vorgeschlagen, neben den NIST und Brainpool Kurven auch die Unterstützung für die Kurven Ed25519 und Curve25519 von D.J. Bernstein in PGP zu integrieren. Dieser Draft ist bisher nur in GnuPG v. 2.1.x umgesetzt.
Wer jetzt schon Schlüssel auf Basis elliptischer Kurven verwendet, muss mit Problemen bei einigen Empfängern rechnen, insbesondere mit den Bernstein Kurven.
Alte PGP-Schlüssel aufmotzen
Bei der Erstellung eines OpenPGP Schlüssel werden die aktuellen Default Preference List für Krypto-Algorithmen in den Schlüssel übernommen. GnuPG verwendet die für den Schlüssel gültigen Preferenzen immer dann, wenn keine Preferenzen in der Konfiguration angegeben wurden, wenn der Kommunikationspartner also keine persönlichen Preferenzen definiert.
Wenn man vor einigen Jahren seinen Schlüssel erstellt hat, dann wird in diesem Fall beispielsweise das angeknackste SHA-1 als Digest-Algorithmus bevorzugt verwendet. Man muss die persönlichen Preferenzen auch in die eigenen Schlüssel übernehmen und die Schlüssel danach neu verteilen.
Das geht nur auf der Kommandozeile. Man muss das GnuPG Kommandozeilen Tool gpg2 mit der Option "--edit-key" und der Key-ID aufrufen. Danach kann man sich mit dem Kommando "showpref" die aktuellen Preferencen für diesen Schlüssel anzeigen lassen und mit dem Kommando "setpref" die Default-Liste übernehmen:
> gpg2 --edit-key mustermann@server.tld
gpg (GnuPG) 2.1.x; Copyright (C) 2016 Free Software Foundation, Inc.
...
gpg> showpref
[ unbekannt ] (1). Max Mustermann <mustermann@server.tld>
Verschlü.: AES256, AES192, AES, CAST5, 3DES
Digest: SHA1, SHA256, RIPEMD160
Komprimierung: nicht komprimiert, ZLIB, BZIP2, ZIP
Eigenschaften: MDC, Keyserver no-modify
gpg> setpref
Setze die Liste der Voreinstellungen auf:
Verschlü.: AES256, AES192, AES, 3DES
Digest: SHA512, SHA384, SHA256, SHA1
Komprimierung: nicht komprimiert
Eigenschaften: MDC, Keyserver no-modify
Die Voreinstellungen wirklich ändern? (j/N) j
...
Sie benötigen die Passphrase, um den geheimen Schlüssel zu entsperren.
Benutzer: "Max Mustermann <mustermann@server.tld>"
...
gpg> quit
Änderungen speichern? (j/N) j