URLs:
3 Nutzer: hot, otto und oba
hot und otto wollen verschlüsselt/signiert kommunizieren; oba fungiert als Signierer
gpg --help | less
In den ersten Zeilen der Online-Hilfe werden die verfügbaren kryptographischen Algorithmen getrennt nach unterschiedlichen Kategorien aufgelistet, z.B.
Unterstützte Verfahren: Öff. Schlüssel: RSA, ELG, DSA Verschlü.: 3DES, CAST5, BLOWFISH, AES, AES192, AES256, TWOFISH, CAMELLIA128, CAMELLIA192, CAMELLIA256 Hash: MD5, SHA1, RIPEMD160, SHA256, SHA384, SHA512, SHA224 Komprimierung: nicht komprimiert, ZIP, ZLIB, BZIP2
Diese Liste wird auch bei
gpg --version
ausgegeben.
Generierung eines Schlüssel-Paars:
gpg --gen-key
Es empfiehlt sich, anschließend noch ein Schlüsselwiderruf-Zertifikat zu erzeugen:
gpg -o revok --gen-revok otto
Hier wird das File revok im GnuPG-Verzeichnis (meist ~/.gnupg) erstellt.
Beispiel eines kompletten Schlüssel-Generierungs-Dialogs
Anzeige aller Schlüssel des öffentlichen Schlüsselrings:
gpg --list-keys
Anzeige aller Schlüssel sowie aller Zertifikate des öffentlichen Schlüsselrings:
gpg --list-sigs
Anzeige aller Schlüssel des öffentlichen Schlüsselrings zusammen mit ihren Fingerabdrücken (Fingerprints):
gpg --fingerprint
Anzeige aller Schlüssel des privaten Schlüsselrings:
gpg --list-secret-keys
Mit --with-colons bekommt man die lange Key-ID angezeigt, hier von UID otto:
gpg --with-colons --list-keys otto
Die Erläuterung des Ausgabeformats findet man in der Datei doc/DETAILS jeder GnuPG-Distribution. Im Feld 2 steht der Validity-Wert eines Schlüssels, also dessen berechnete Gültigkeit. Im Feld 9 von Primär-Schlüsseln steht der Ownertrust, also das subjektive Vertrauen, das der Inhaber des Schlüsselrings dem Schlüsselbesitzer bzgl. dessen Zuverlässigkeit als Signierer (Introducer) zugeordnet hat.
hot und otto tauschen ihre Public Keys aus:
otto:
gpg --export -o key.otto -a otto gpg -v --import key.hot
hot:
gpg --export -o key.hot -a hot gpg -v --import key.otto
Anzeige eines exportierten Schlüsselblocks:
gpg key.hotoder etwas detaillierter:
gpg -v key.hotNeben den Public Keys kann man auch noch die Secret Keys exportieren:
gpg --export-secret-keys -o seckey.otto -a otto
oba signiert den Schlüssel von otto:
gpg --edit-key otto
Unterkommando: sign
Sofern mehr als ein privater Schlüssel im Schlüsselring vorliegt, muss man ggf. den gewünschten Unterschriftsschlüssel explizit wählen, z.B. an Hand der Key-ID:
gpg --default-key 826D57B9 --edit otto
# oder
gpg -u 826D57B9 --edit otto
Anzeige der Signaturen:
gpg --list-sigs
Beispiel eines kompletten Signierungs-Dialogs
Mit dem Unterkommando tsign lassen sich Trust Signatures erstellen.
otto signiert einen Text, hot verifiziert die Signatur
verschiedene Möglichkeiten der Signatur:
# Signatur im Binärformat, Ausgangs-Klartext wird auch binär kodiert gpg -s text # Signatur im ASCII-Armor-Format; Ausgangs-Klartext wird mit ASCII-Armor kodiert gpg -sa text # Signatur im ASCII-Armor-Format; Ausgangs-Klartext bleibt lesbar erhalten gpg --clearsign text # Erstellung einer vom Klartext getrennten Signatur (detached signature) im ASCII-Armor-Format gpg -ba text
Verifikation der Signatur:
gpg text.asc gpg --verify text.asc gpg --verify text.asc text
Verschlüsselung einen Text mittels symmetrischer Chiffre:
# Binärformat gpg -c text # ASCII-Armor-Format gpg -ca text
Dechiffrierung:
gpg text.asc gpg text.gpg gpg -d text.gpg gpg -d text.asc gpg --output text -d text.asc
Verschlüsselung eines Textes für hot:
gpg -ear hot text
hot dechiffriert ihn:
gpg text.asc gpg -d text.asc
otto verschlüsselt und signiert einen Text für hot:
gpg -sear hot text
hot dechiffriert ihn und verifiziert die Signatur:
gpg text.asc
Symmetrische und asymmetrische Verschlüsselung inkl. digitale Signatur lassen sich auch gemeinsam nutzen:
gpg -seacr hot text
otto widerruft sein Schlüsselpaar durch Aussenden eines Widerruf-Zertifikats, hot importiert das Widerruf-Zertifikat:
gpg --import revok gpg --list-sigs
hot löscht den Schlüssel von otto aus seinem Schlüsselring:
gpg --delete-key otto
gpg --update-trustdb