Prinzipiell ist GnuPG auch ohne weitere Konfiguration über die Festlegung von Optionen in der Konfigurationsdatei gpg.conf voll funktionsfähig. D. h. man kann sich eigene Schlüssel erstellen, fremde Schlüssel verwenden, verschlüsseln, entschlüsseln und signieren.
GnuPG arbeitet ohne weitere Konfiguration mit einer Reihe von in GnuPG codierten Voreinstellungen, legt die Schlüsselringdateien pubring.gpg / secring.gpg, die Trust-Datenbankdatei trustdb.gpg und die Datei für Zufallswerte random_seed im GnuPG Heimatverzeichnis an und erwartet dort auch die Dateien.
Wenn jedoch z. B. ein Kryptomodul geladen werden muss, die von GnuPG genutzen Dateien an einem anderen Ort liegen sollen, die Nutzung eines bestimmten Verschlüsselungs- oder Hashalgorithmus gewünscht oder ein bestimmter Schlüsselserver regelmäßig angesprochen wird usw. ist die Anlage der gpg.conf und die Kenntnis der Bedeutung der Optionen wie auch ein tieferer Kenntnisstand über die kryptografischen Grundlagen unerlässlich.
Die gpgp.conf wird von allen grafischen GnuPG Oberflächen ausgewertet. Die meisten Oberflächen bieten verständliche Elemente, mit denen wichtige Optionen in die gpg.conf geesetzt werden oder einen Editor, mit dem die gpg.conf direkt verändert werden kann.
Zur Verwendung der gpg.conf wird diese einfach als leere Datei im GnuPG Programmverzeichnis angelegt und die gewünschten Optionen mit einem beliebigen Texteditor eingetragen.
Zur Anschauung und Einführung eine einfache gpg.conf und im Anschluss die Erklärung der Einträge
Für Linux:
Für Windows:
Als weiteres Beispiel (auf Wunsch) eine meiner persönlichen gpg.conf Dateien unter Windows.
| Option | Beschreibung |
|---|---|
| no-default-keyring | der Standardort, bzw. die Schlüsselringdateien im GnuPG Heimatverzeichnis werden nicht in die Liste der Schlüsselringe aufgenommen, so dass mit keyring und secret-keyring selbst der Ort für Schlüsselringe definiert wird. Ohne die Option gibt es für GnuPG nur die beiden Schlüsselringdateien im GnuPG Heimatverzeichnis. |
| keyring /pfad/pubring.gpg keyring /pfad2/pubring2.gpg |
Angabe zu einem (oder mehreren) Schlüsselring für öffentliche Schlüssel festlegen |
| secret-keyring /pfad/secring.gpg secret-keyring /pfad2/secring2.gpg |
Angabe zu einem (oder mehreren) Schlüsselring für private Schlüssel festlegen |
| default-key Key-ID | Key-ID eines eigenen Hauptsignierschlüssels, der standardmäßig zum Signieren und Zertifizieren verwendet wird |
| default-recipient-self | Der eigene Unterschlüssel des Standardschlüssels (default-key) wird zum Verschlüsseln benutzt, wenn keine Angabe zum Schlüssel einer anderen Person an GnuPG übergeben wird. Stattdessen kann auch "default-recipient Key-ID" verwendet werden, wenn das ein anderer Schlüssel sein soll. |
| encrypt-to Key-ID | Bei der Verschlüsselung mit einem öffentlichen Schlüssel wird immer zusätzlich mit dem zweiten öffentlichen Schlüssel verschlüsselt, dessen Key-ID hier angegeben wird (Doppelverschlüsselung). Das kann der eigene Unterschlüssel sein, wenn man z. B. möchte, das jede E-Mail, die mit einem fremden, öffentlichen Schlüssel verschlüsselt wird, auch mit dem eigenen Schlüssel verschlüsselt wird, um die E-Mail zu einem späteren Zeitpunkt selbst wieder entschlüsseln zu können. |
| hidden-encrypt-to Key-ID | Hat dieselbe Funktion wie encrypt-to mit dem Unterschied, dass Informationen zur Key-ID des verwendeten Zweitschlüssels nicht, bzw. in Form von Key-ID: 0x0000000000000000 aufgenommen werden. Ein Angreifer, der nicht im Besitz des privaten Schlüsselrings ist, kann so nicht erfahren, an wen und mit welchem Schlüssel die Nachricht zusätzlich verschlüsselt wurde. Das gilt auch für den eigentlichen Nachrichtenempfänger, was zu Rückfragen führen kann. |
| (no-)auto-key-locate keyserver ldap [pka cert] | Bei der Verschlüsselung an einen Empfänger mit einer E-Mail Adresse, die kein Bestandteil eines öffentlichen Schlüssels im Schlüsselring ist, versucht GnuPG in Reihenfolge der angegebenen Methoden einen entsprechenden Schlüssel zu finden. Unter Windows sind nur die Suche auf einem Schlüsselserver oder dem LDAP Schlüsselserver der Domäne möglich, da bei pka (Public Key Association) und cert DNS Einträge bzw. Abfragen bei Nameservern relevant sind und der entsprechende Code nicht in der GnuPG Windowsversion enthalten ist. |
|
keyserver protokoll://keyserver:port z. B.: x-hkp://minsky.surfnet.nl:11371 x-hkp://pool.sks-keyservers.net:11371 x-hkp://keys.gnupg.net:11371 |
Für die Kommunikation mit Schlüsselservern wird immer der eingetragene Schlüsselserver verwendet. Als Protokoll kann je nach Schlüsselserver hkp (Horowitz Schlüsselserver Protocol), ldap, http, finger oder mailto verwendet werden. Entweder kann man einen speziellen Schlüsselserver wie minsky.surfnet.nl angeben oder die Adresse eines Pools wie pool.sks-keyservers.net und keys.gnupg.net, die auf einen aktiven Schlüsselserver umleiten. |
| keyserver-options (no-)parameter | Parameter, die bei der Kommunikation mit dem Schlüsselserver verwendet (oder nicht) verwendet werden sollen. auto-key-retrieve,verbose als Parameter bewirken z. B. ausführliche Anzeigen, den automatischen Erhalt von Schlüsseln vom Schlüsselserver und ihren Import in den öffentlichen Schlüsselring, z. B. bei Prüfung einer Signatur, deren zugehöriger Schlüssel im Schlüsselring fehlt. |
| display-charset Zeichensatz | Vom Betriebssystem verwendeter Zeichensatz, z. B. utf-8, iso-8859-1, iso-8859-15 |
| verbose oder quiet | ausführliche oder knappe Anzeigen von GnuPG. Wird "verbose" 3x untereinander geschrieben, verwendet GnuPG die ausführlichste Anzeigestufe. |
Neben den obigen Optionen gibt es noch eine Vielzahl an Optionen, die für unterschiedlichste Bedürfnisse, Anforderungen und Zwecke die gewünschte Funktionsweise von GnuPG bewirken. Alle Optionen sind in der englischsprachigen Handbuch-Seite von GnuPG aufgeführt und erklärt, so dass man sich aus der Handbuchseite wie aus einem Baukasten eine oder mehrere passende Konfigurationen zusammenstellen kann.
Unter Windows befindet sich die Handbuch-Seite in der Datei gnupg.man im Verzeichnis LW:\Pfad\GnuPG\Doc und kann mit jedem Texteditor studiert werden.
Einige GnuPG Shells wie WinPT und GPGshell besitzen Funktionen, mit denen aus einem Pool mehrerer Konfigurationsdateien auf die jeweils aktuell gewünschte gpg.conf "umgeschaltet" werden kann, wenn man mehrere Konfigurationsdateien verwenden muss.
Die Angaben, die spezifische PGP Versionen betreffen, bzw. der Wildwuchs an verschiedenen PGP Versionen macht deutlich, dass es sinnvoll sein kann, mehrere Konfigurationen anzulegen und zu nutzen.
Eine Auswahl von weiteren Optionen wird für den normalen GnuPG Gebrauch - zusammengestellt nach ihrem Anwendungsbereich und Verwendungszweck - in Form von "Baukästen" vorgestellt, aus denen man zusätzliche Optionen nach Bedarf entnimmt und der oben vorgestellten Grundform der gpg.conf hinzufügt. Dabei werden in den Baukästen die bereits oben erklärten Optionen nicht noch einmal aufgeführt.
Einige Optionen werden im Verlauf der Anleitung genauer erklärt, andere Optionen werden bestimmte Anwender nie benötigen.
Sollte man als GnuPG Anfänger zunächst Schwierigkeiten mit der Bedeutung und dem Zweck einzelner Optionen haben, lässt man am besten diese Option zunächst aus. Entweder wird sie im Verlauf der Anleitung klarer oder während der alltäglichen Anwendung von GnuPG.
| Option | Beschreibung |
|---|---|
| s2k-mode n | Modus zur Behandlung der Passphrase bei Bildung des geheimen Schlüssels. n = 1: Passphrase mit 1xSalt (Zufallsdaten) bis n = 3: 3xSalt (Standard 3x) |
| s2k-digest-algo Name | Hashalgorithmus Name zum Hashen der Passphrase (Standard: SHA-1) |
| s2k-cipher-algo Name | Verschlüsselungsalgorithmus Name für die Verschlüsselung des geheimen Schlüssels (Standard: CAST-5) |
| enable-dsa2 | ab GnuPG 1.4.4 zur Erzeugung von DSA Schlüsseln mit einer Länge von 1024- bis 3072-bit. |
| load-extension /pfad/kryptomodul load-extension c:\programme\gnu\gnupg\kryptomodul.dll |
Externes kryptomodul laden |
| default-preference-list S(1-10) H(1-3) Z(1-2) oder default-preference-list S-Namen H-Namen Z-Namen |
Liste der symmetrischen (S) Verschlüsselungs-, Hash (H)- und Kompression (Z)-Algoritmen nach absteigender Priorität, die der Schlüsselbesitzer bevorzugt und die bei der Schlüsselerstellung im Eigenzertifikat des Schlüssels abgespeichert wird. |
| personal-cipher-preferences S(1-10) H(1-3) Z(1-2) personal-digest-preferences S(1-10) H(1-3) Z(1-2) personal-compress-preferences S(1-10) H(1-3) Z(1-2) bzw. (…) S-Namen H-Namen Z-Namen |
Bei der Verschlüsselung werden nach einem Vergleich der bevorzugten Algorithmen des Schlüsselbesitzers mit den vom Schlüsselbenutzer in den Listen angegebenen, bevorzugten Algorithmen die Algorithmen herangezogen, die beide gemeinsam bevorzugen. Der Schlüsselbenutzer zwingt also dem Schlüsselbesitzer nicht seine Präferenzen auf, sondern beachtet bei der Verschlüsselung an den Schlüsselbesitzer dessen Präferenzen. Umgekehrt gelten die Präferenzen des Schlüsselbesitzers nicht absolut für den Schlüsselbenutzer. Gibt es keine Übereinstimmungen gilt: 3DES SHA-1 unkomprimiert |
| cipher-algo Name | Symmetrischer Algorithmus Name wird immer verwendet. Sollte nicht in der gpg.conf, sondern fallweise per Kommando benutzt werden oder wenn ausschließlich mit Schlüsseln bestimmter PGP Versionen verschlüsselt wird. Stattdessen obige Präferenzlisten verwenden. |
| digest-algo Name | Hashalgorithmus Name wird immer für Datei-Signaturen verwendet. Achtung: PGP 2.6.X kennt nur MD5 NAI PGP 5 - 7.X kennt nur MD5, SHA1, RIPEMD160 Deshalb obige Präferenzlisten oder spezielle gpg.conf Dateien verwenden. |
| cert-digest-algo Name | Hashalgorithmus Name wird immer für Schlüssel-Zertifikate verwendet. Sollte nicht in der gpg.conf, sondern fallweise per Kommando benutzt werden oder wenn ausschließlich mit Schlüsseln bestimmter PGP Versionen verschlüsselt wird. Stattdessen obige Präferenzlisten verwenden. |
| compress-algo n | Kompressionsalgorithmus n wird immer verwendet. n = 0 Keine Kompression n = 1 ZIP n = 2 ZLIB n = 3 BZIP2 Option und n = 0 sollte nicht in der gpg.conf benutzt werden. Stattdessen obige Präferenzlisten verwenden. Im Zweifelsfall gilt Standard: n = 1. |
| force-mdc | Verschlüsselung mit Manipulation Detection Code Schutz erzwingen Nur bei Verschlüsselung an GnuPG, PGP CKT, PGP 7.1.X - PGP 8.X Anwender. |
| Option | Beschreibung |
|---|---|
| with-fingerprint | Zeigt immer den Fingerprint des Hauptsignierschlüssels und der fremden, öffentlichen Schlüssel bei GnuPG Anzeigen an. |
| list-options show-photos verify-options show-photos photo-viewer "pfad\programm.exe optionen" |
Anzeige der Foto-IDs (Bilder) von Schlüsseln mit angegebenem Bildanzeigeprogramm (z. B. gpgview.exe der GPGshell) Achtung: Bei Nutzung der Option wird bei allen Schlüssel- und Signaturanzeigen automatisch immer auch das Foto geladen und angezeigt (kann stattdessen auch fallweise per Kommando benutzt werden) |
| list-options show-notations verify-options show-notations |
Einem Zertifikat, mit dem man einen fremden, öffentlichen Schlüssel zertifiziert, kann eine Anmerkung beigefügt werden. Mit der Option werden die Anmerkungen bei Anzeige der Zertifikate mit GnuPG ebenfalls angezeigt. |
| list-options show-policy-urls verify-options show-policy-urls |
Einem Zertifikat, mit dem man einen fremden, öffentlichen Schlüssel zertifiziert, kann eine URL hinzugefügt werden, die auf ein Dokument hinweist, in dem die eigenen Richtlinien zur Zertifizierung von öffentlichen Schlüsseln niedergelegt sind. Mit der Option werden Adressen von Zertifizierungsrichtlinien bei Anzeige der Zertifikate mit GnuPG ebenfalls angezeigt. |
| list-options show-keyserver-urls verify-options show-keyserver-urls |
Zertifikaten und Signaturen kann der Schlüsselbesitzer den von ihm bevorzugten Schlüsselserver beifügen, dessen Adresse bei der Anzeigen und Überprüfungen ebenfalls ausgegeben wird. |
| list-options show-uid-validity | Anzeige des errechneten Echtheitsgrades einer Schlüssel User-ID. |
| list-options show-sig-expire | Anzeige des Verfallsdatums bei Zertifikaten. |
| list-options show-unusable-uids list-options show-unusable-subkeys |
Standardmäßig werden ab GnuPG 1.4.1 zurückgezogene oder abgelaufene Benutzer-IDs und Unterschlüssel nicht mehr angezeigt. Mit den Optionen wird ihre Anzeige aktiviert. |
| armor | Signaturen und Verschlüsselungen werden immer mit ASCII-Hülle versehen und nicht als rein binäre Daten. Daten, die signiert und/oder verschlüsselt per E-Mail versendet werden, sollten immer mit dieser Option behandelt werden. |
| comment string | Bei Signaturen und verschlüsselten Daten wird immer eine Kommentarzeile in Form von "Comment: string" hinzugefügt. |
| no-emit-version no-comments comment "" |
Bei Signaturen und verschlüsselten Daten werden Angaben zur GnuPG Version und Kommentare unterdrückt. |
| group name="Key-ID1 Key-ID2 Key-ID3" | Bei regelmäßiger Verschlüsselung an mehrere Empfänger wird eine Gruppe name benannt und ihr die Key-IDs der Empfängerschlüssel zugeordnet. Bei der Verschlüsselung braucht dann nur der Gruppenname angegeben werden (-r name) |
| require-cross-certification | Die Überprüfung der Signatur eines GnuPG < 1.4.3 Untersignierschlüssels wird von GnuPG nur vorgenommen, wenn der vom Schlüsseleigentümer der Hautpsignierschlüssel durch den Untersignierschlüssel gegenzertifiziert wurde. Andernfalls gilt die Signatur als ungültig. |
| Option | Beschreibung |
|---|---|
| completes-needed n |
Anzahl von Zertifikaten, die von Schlüsseln stammen, deren Besitzern man voll vertraut (mindestend Trustlevel 4), die ein Schlüssel besitzen muss, damit dessen Zertifikate wieder als gültige Ausweise der Echtheit eines Schlüssel anerkannt werden und der Schlüsselbesitzer den Status einer "Zertifizierungsauthorität" erlangt. Standard: n = 1 Trustlevel, die einem Schlüsselbesitzer vergeben werden können: 1 keine Angabe/Aussage möglich 2 kein Vertrauen 3 marginales Vertrauen 4 vollständiges Vertrauen 5 absolutes Vertrauen |
| marginals-needed n |
Anzahl von Zertifikaten, die von Schlüsseln stammen, deren Besitzern man marginal vertraut (mindestens Trustlevel 3), die ein Schlüssel besitzen muss, damit dessen Zertifikate wieder als gültige Ausweise der Echtheit eines Schlüssel anerkannt werden und der Schlüsselbesitzer den Status einer "Zertifizierungsauthorität" erlangt. Standard: n = 3 |
| max-cert-depth n |
Maximale Anzahl von Ebenen der Zertifizierungstiefe, d. h. der Kette direkter und indirekter Zertifikate, die für die Bildung des Web-of-Trust berücksichtigt wird. Standard: n = 5 |
| ask-cert-level | Abfrage nach dem Grad der Gültigkeitsprüfung bei der Zertifizierung eines öffentlichen Schlüssels. |
| default-cert-level n | Anstelle von ask-cert-level kann mit dieser Option ein Standardwert vorgegeben werden. Standard: n = 0 0 Ich antworte nicht. 1 Ich habe es überhaupt nicht überprüft. 2 Ich habe es flüchtig überprüft. 3 Ich habe es sehr sorgfältig überprüft. |
| ask-cert-expire | Beim Zertifizieren eines öffentlichen Schlüssels wird nach der Gültigkeitsdauer des Zertifikats gefragt |
| trusted-key 16-stellige Key-ID | Schlüssel mit Key-ID ist genauso vertrauenswürdig eingestuft wie der eigene private Schlüssel |
| min-cert-level n | Schlüssel-Zertifikate mit einem Überprüfungsgrad < n finden keine Berücksichtigung innerhalb des Web-of-Trust, bzw innerhalb der Vertrauen-Datenbank. Standard n = 2. |
| trust-model pgp | Gültigkeit von Schlüsseln und Vetrauenswürdigkeit von Schlüsselbesitzern werden nach dem PGP Web-of-Trust Schema und Trust-Zertifikaten eingestuft. Wird statt pgp always gesetzt, wird jeder öffentliche Schlüssel als gültig und jeder Schlüsselbesitzer als vertrauenswürdig angesehen. |
| auto-check-trustdb | Daten der Vertrauendatenbank, bzw. Änderungen, die das Web-of-Trust beeinflußen (wie z. B. ungültige oder ausgelaufene Schlüssel und Zertifikate) werden von GnuPG automatisch in Zeitabständen aktualisiert. |
| Option | Beschreibung |
|---|---|
| openpgp oder rfc2440 | strikt nach OpenPGP Standard, keine Beachtung von PGP/GnuPG Besonderheiten. |
| gnupg | entspricht openpgp, aber mit Funktionen zum Umgang mit Besonderheiten einiger PGP Versionen, die zu Kompatibilitätsproblemen führen können. |
| pgp8 | entspricht pgp7, zusätzlich SHA-256 als Digestalgorithmus, mit --escape-from-lines und ohne --throw-keyid |
| pgp7 | siehe unten |
| pgp6 | siehe unten |
| rfc1991 | PGP 2.X konformere GnuPG Funktionsweise |
| pgp2 | siehe unten |
| (no-)rfc2440-text | zur Behandlung von Leerräumen an Zeilenenden bei PGP/MIME Signaturen. Siehe Probleme bei PGP/MIME Signaturen. |
| Option | Beschreibung |
|---|---|
| pgp7 | setzt automatisch NAI PGP 7.X spezifische Optionen |
| Option | Beschreibung |
|---|---|
| disable-mdc | wird nicht gesetzt, d. h. Schutzfunktion des Manipulation Detection Code wird verwendet. |
| no-sk-comments | erzeugt keine Kommentarpakete bei der Erzeugung von geheimen Schlüsseln |
| escape-from-lines | Behandlung der From Zeilen für E-Mail Versand von klartextsignierten Texten |
| force-v3-sigs | Signaturen im v.3 Format erzwingen |
| no-ask-sig-expire | kein Verfallsdatum für Daten-Signaturen |
| compress-algo 1 | Kompressionsalgorithmus zip verwenden |
| erlaubte Ciphers: erlaubte Hashalgos: |
AES128-256, TWOFISH, IDEA, CAST5, 3DES MD5, SHA1, RIPEMD160 |
| Option | Beschreibung |
|---|---|
| load-extension LW:\Pfad\idea.dll | IDEA Modul laden (wenn CAST5 oder 3DES nicht benutzt werden soll) |
| pgp6 | setzt automatisch NAI PGP 6.5.X spezifische Optionen |
| Option | Beschreibung |
|---|---|
| disable-mdc | die Schutzfunktion des Manipulation Detection Code bei der Verschlüsselung nicht benutzen |
| no-sk-comments | erzeugt keine Kommentarpakete bei der Erzeugung von geheimen Schlüsseln |
| escape-from-lines | Behandlung der From Zeilen für E-Mail Versand von klartextsignierten Texten |
| force-v3-sigs | Signaturen im v.3 Format erzwingen |
| no-ask-sig-expire | kein Verfallsdatum für Daten-Signaturen |
| compress-algo 1 | Kompressionsalgorithmus zip verwenden |
| erlaubte Ciphers: erlaubte Hashalgos: |
IDEA, CAST5, 3DES MD5, SHA1, RIPEMD160 |
| Option | Beschreibung |
|---|---|
| load-extension LW:\Pfad\idea.dll | IDEA Modul laden (zwingend) |
| pgp2 | setzt automatisch PGP 2.6.3 spezifische Optionen |
| Option | Beschreibung |
|---|---|
| disable-mdc | die Schutzfunktion des Manipulation Detection Code bei der Verschlüsselung nicht benutzen |
| no-sk-comments | erzeugt keine Kommentarpakete bei der Erzeugung von geheimen Schlüsseln |
| escape-from-lines | Behandlung der From Zeilen für E-Mail Versand von klartextsignierten Texten |
| force-v3-sigs | Signaturen im v.3 Format erzwingen |
| no-ask-sig-expire | kein Verfallsdatum für Daten-Signaturen |
| no-ask-cert-expire | kein Verfallsdatum für Schlüssel-Zertifikate |
| compress-algo 1 | Kompressionsalgorithmus zip verwenden |
| rfc1991 | der veralteten PGP 2.X Spezifikation RFC 1991 für "PGP Nachrichtenaustauch Formate" entsprechen |
| cipher-algo IDEA | IDEA verwenden |
| digest-algo MD5 | MD5 als Hashalgorithmus verwenden |
| no-force-v4-certs | deaktiviert die Erzwingung von Signaturen im Version 4 Format |
| no-openpgp | keine Information verfügbar |