/etc/apt/sources.list
/etc/apt/sources.list.d/
deb http://de.archive.ubuntu.com/ubuntu jammy main restricted
"Typ": deb oder deb-src
"Ort": z.B. http://de.archive.ubuntu.com/ubuntu (oder auch eine CD/DVD)
"Distribution": jammy, jammy-updates, jammy-security, usw.
"Komponenten" (optionale Liste): main, restricted, universe, multiverse
deb
deb-src
Ort:
cdrom
http
ftp
file
copy
lsb_release -cir
cp /etc/apt/sources.list /etc/apt/sources.list.bak
cat -n /etc/apt/sources.list
apt-get update
Multiarch
Eigene Paketquelle anlegen
PPA: Personal Package Archive
dpkg-dev (main)
apt-get install dpkg-dev
Advanced Package Tool
apt [OPTIONEN] BEFEHL
update
upgrade
full-upgrade
install PAKETNAME
install /PFAD/ZUM/PAKET
reinstall PAKETNAME
remove PAKETNAME
purge PAKETNAME
autoremove
search SUCHBEGRIFF
show PAKETNAME
list SUCHMUSTER
sudo apt edit-sources
sudo apt install foo_1.0_all.deb # falsch
sudo apt install ./foo_1.0_all.deb
[sudo] apt-get [OPTIONEN] KOMMANDO [PAKET1] [PAKET2]
update
upgrade
install PAKET(E)
remove PAKET(E)
autoremove [PAKET(E)]
purge PAKET(E)
source PAKET(E)
build-dep PAKET(E)
dist-upgrade
dselect-upgrade
clean
autoclean
check Überprüfung auf Abhängigkeitsfehler
markauto PAKET(E) PAKET(E) als "automatisch installiert" markieren
unmarkauto PAKET(E) PAKET(E) als "manuell installiert" markieren
changelog PAKET(E)
download PAKET(E) PAKET(E) herunterladen
Optionen
--fix-broken
--fix-missing, --ignore-missing
--install-suggests
...
Die nächste Veröffentlichung von Debian heißt "trixie" – "Testing", bisher noch kein Veröffentlichungsdatum
Debian 12 ("Bookworm") – aktuelle Veröffentlichung - "Stable"
Debian 11 ("Bullseye") – aktuelle Veröffentlichung - "Oldstable"
Debian 10 ("Buster") – aktuelle Veröffentlichung - "Oldoldstable"
unter LTS-Support
Debian 9 ("Stretch") – veraltete Veröffentlichung, unter erweitertem LTS-Support
Debian 8 ("Jessie") – veraltete Veröffentlichung, unter erweitertem LTS-Support
Debian 7 ("Wheezy") – veraltete Veröffentlichung
Debian 6.0 ("Squeeze") – veraltete Veröffentlichung
Debian GNU/Linux 5.0 ("Lenny") – veraltete Veröffentlichung
Debian GNU/Linux 4.0 ("Etch") – veraltete Veröffentlichung
Debian GNU/Linux 3.1 ("Sarge") – veraltete Veröffentlichung
Debian GNU/Linux 3.0 ("Woody") – veraltete Veröffentlichung
Debian GNU/Linux 2.2 ("Potato") – veraltete Veröffentlichung
Debian GNU/Linux 2.1 ("Slink") – veraltete Veröffentlichung
Debian GNU/Linux 2.0 ("Hamm") – veraltete Veröffentlichung
Stable
Testing
Unstable
Architectures:
64-bit PC (amd64)
64-bit ARM (AArch64)
EABI ARM (armel)
Hard Float ABI ARM (armhf)
32-bit PC (i386)
MIPS (little endian)
64-bit MIPS (little endian)
POWER Processors
IBM System z
dpkg
-i --install
--configure
-r --remove
-l --list
-P --purge
-R --recursive
-L --listfiles
-S --search
dpkg-query
-l --list
-S --search
-L --listfiles
Paketstatus
u für unbekannt
i für installieren
h für halten
r für entfernen (Konfigurationsdateien behalten)
p für vollständig (inkl. Konfigurationsdateien) entfernen
dpkg-deb¶
dpkg-deb stellt grundlegende Möglichkeiten zum Packen und Entpacken, sowie die Abfrage von Metainformationen
-I --info
-b --build
-c --contents
-x --extract
dpkg-repack¶
#deb cdrom:[Debian GNU/Linux 12.2.0 _Bookworm_ - Official amd64 NETINST with firmware 20231007-10:28]/ bookworm main non-free-firmware
deb http://deb.debian.org/debian/ bookworm main non-free-firmware
deb-src http://deb.debian.org/debian/ bookworm main non-free-firmware
deb http://security.debian.org/debian-security bookworm-security main non-free-firmware
deb-src http://security.debian.org/debian-security bookworm-security main non-free-firmware
http://deb.debian.org/
http://deb.debian.org/debian/
deb-src http://security.debian.org
deb-src http://security.debian.org/debian-security
bookworm
bookworm-backports
bookworm-security
main
non-free-firmware
contrib
non-free
Backport: Rückportierung
Schlüsselverwaltung
Pakete in Paketquellen werden mit einem Schlüssel kryptografisch signiert
apt/apt-key
/etc/apt/trusted.gpg
/etc/apt/trusted.gpg.d/
Schlüssel hinzufügen¶
sudo wget -nc -O /etc/apt/keyrings/example-archive-keyring.gpg https://example.org/public.key
ASCII-verpackte Schlüssel (base64-kodiert)
gpg
um sie zu dekodieren (dearmor genannt
OpenPGP-Binärdatei,
/etc/apt/keyrings/schluessel.gpg
curl https://example.org/public-key.asc | sudo -H gpg --dearmor -o /etc/apt/keyrings/example-archive-keyring.gpg
Anhand der Schlüssel-ID kann ebenfalls ein Schlüssel hinzugefügt werden
sudo -H gpg -k && sudo -H gpg --no-default-keyring --keyring /usr/share/keyrings/schlüssel.gpg --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys <Schlüssel-ID>
sources.list anpassen¶
deb [signed-by=/etc/apt/keyrings/schluessel.gpg] http://example.org/linux/deb/ stable main
/etc/apt/sources.list bzw. /etc/apt/sources.list.d/datei.list
signed-by
GNU Privacy Guard (GnuPG)
Schlüsselpaar
asymmetrischen Verschlüsselung
Viele Verschlüsselungsformen nutzen sowohl für die Verschlüsselung als auch für die Entschlüsselung den gleichen Schlüssel. Man spricht hier daher vom symmetrischen Verfahren.
Man gibt also den Absperrschlüssel an seine Kommunikationspartner weiter
privaten Schlüssel.
öffentlichen Schlüssel.
Hybride Verfahren¶
Genau ausgedrückt, verwendet GnuPG ein hybrides Verfahren zur Verschlüsselung. Da asymmetrische Verschlüsselung extrem rechenintensiv ist, wird die eigentliche Nachricht tatsächlich symmetrisch verschlüsselt. Hierfür wird intern ein "Einweg-Schlüssel" erzeugt.
Mit diesem Schlüssel wird zunächst die Nachricht verschlüsselt, was nun wesentlich schneller geht. Es wird nur der relativ kurze, symmetrische Schlüssel mit dem asymmetrischen Schlüssel (öffentlicher Schlüssel) gesichert. Der jetzt gesicherte symmetrische Schlüssel wird sodann zusammen mit der gesicherten Nachricht versandt. Der Empfänger nutzt seinen privaten Schlüssel, um Zugang zum geheimen, symmetrischen Schlüssel zu erlangen, und kann damit schließlich die Nachricht wiederherstellen
Von sicheren und geheimen Kanälen
als Man-in-the-middle-Angriff b
Nachdem A den öffentlichen Schlüssel von B - wie auch immer - bekommen hat, muss sich A die Authentizität des Schlüssels bestätigen lassen
Jeder Schlüssel hat eine Art Fingerabdruck, eine unverwechselbare Kennung.
sicherer Kanal
Passwortsätze
gnupg
Der Schlüsselbund
~/.gnupg/.
GnuPG speichert alle Schlüssel, die man mit der Zeit sammelt, in einem "Schlüsselbund" im Verzeichnis ~/.gnupg/.
Schlüssel auflisten
gpg --list-secret-keys
gpg -K
gpg --list-keys
gpg -k
Key-ID
sec 1024D/ABCD1234 2005-06-18 Max Mustermann <max.m _at_ example.com>
Fingerprint
Ein Fingerprint (dt.: Fingerabdruck) ist ein relativ kurzer Hash-Wert, mit dem man Schlüssel verifizieren kann
. Dieser identifiziert einen Schlüssel, so wie der menschliche Fingerabdruck einen Menschen (praktisch) eindeutig identifizier
gpg --fingerprint <ID oder Name des Schlüssels>
Schlüsselpaar erzeugen
gpg --full-gen-key
Bitte wählen Sie, welche Art von Schlüssel Sie möchten:
(1) RSA und RSA (voreingestellt)
(2) DSA und Elgamal
(3) DSA (nur unterschreiben/beglaubigen)
(4) RSA (nur signieren/beglaubigen)
Ihre Auswahl?
ECC Schlüssel¶
gpg --expert --full-gen-key
Schlüssel importieren¶
Erhält man den öffentlichen Schlüssel eines Kommunikationspartners oder will man ein Schlüsselpaar (also einen privaten und einen öffentlichen Schlüssel) importieren, so muss man ihn zur weiteren Verwendung zunächst in den Schlüsselbund importieren.
gpg --with-fingerprint /tmp/dateiname.asc
gpg --import /tmp/dateiname.asc
Schlüssel exportieren¶
Artikel Bearbeiten Verlauf Diskussion Abonnieren
GnuPG
Dieser Artikel wurde für die folgenden Ubuntu-Versionen getestet:
Ubuntu 22.04 Jammy Jellyfish
Du möchtest den Artikel für eine weitere Ubuntu-Version testen? Mitarbeit im Wiki ist immer willkommen! Dazu sind die Hinweise zum Testen von Artikeln zu beachten.
Zum Verständnis dieses Artikels sind folgende Seiten hilfreich:
⚓︎
Ein Terminal öffnen
⚓︎
Installation von Paketen
⚓︎
Freischalten von Paketquellen
⚓︎
Erklärung der Techniken die hinter GnuPG stehen
Inhaltsverzeichnis
Installation
Grafische Programme zur Schlüsselverwaltun...
GnuPG in anderen Programmen nutzen
Der Schlüsselbund
Fremden Schlüsselbund verwenden
Schlüssel auflisten
"Fingerprint" anzeigen
Schlüsselpaar erzeugen
Schlüssel importieren
Schlüssel exportieren
Schlüssel löschen
Schlüssel suchen
Vertrauensstufe importieren oder exporti...
Zusätzliche E-Mail-Adressen
Konfiguration der bevorzugten Algorithme...
Dateioperationen
Verschlüsseln
Entschlüsseln
Signieren
Signatur verifizieren
Thunar Skripte
E-Mail-Verschlüsselung testen
Texte per Zwischenablage Ver-/Entschlüssel...
Links
Intern
Extern
./gnupg-logo.png Dieser Artikel behandelt die Signatur und Verschlüsselung mit Hilfe des freien Kryptografie-Systems GNU Privacy Guard (GnuPG) 🇬🇧. Alle unter Linux gängigen Mailprogramme wie Evolution, Kmail oder Thunderbird können GnuPG zur Verschlüsselung von E-Mails nach dem OpenPGP-Standard nutzen. Ab Version 2.x unterstützt GnuPG auch den S/MIME-Standard.
Um E-Mails mit GnuPG signieren oder verschlüsseln zu können, benötigt man ein eigenes Schlüsselpaar. Das Schlüsselpaar besteht aus einem öffentlichen und einem privaten Schlüssel.
Während der öffentliche Schlüssel weitergegeben wird, um den Kommunikationspartnern zu ermöglichen, Daten verschlüsselt an sie zu versenden oder ihre Signatur zu überprüfen, muss der private Schlüssel vom Besitzer geheim gehalten werden, damit nur dieser die Daten entschlüsseln bzw. signieren kann.
Die grundlegenden Prinzipien der verwendeten Technik zu verstehen, trägt zur sicheren Anwendung des Verfahrens bei. Diesem Thema widmet sich der Hintergrundartikel GnuPG/Technischer Hintergrund. Wer noch nicht mit der Funktionsweise asymmetrischer Verschlüsselungssysteme vertraut ist, sollte sich diesen Artikel auf jeden Fall zu Gemüte führen, bevor er hier weiterliest [4]. Weitere Grundlagenartikel sind unten unter Links zu finden.
Dieser Artikel beschäftigt sich mit der asymmetrischen Verschlüsselung mit GnuPG, wer sich für die symmetrische Verschlüsselung mit GnuPG interessiert, muss hier weiterlesen GnuPG/Symmetrische Verschlüsselung.
⚓︎
Installation
Das Paket gnupg ist bei allen derzeitigen Ubuntu-Versionen vorinstalliert. Seit Ubuntu 17.10 handelt es sich dabei um GnuPG Version 2.
Grafische Programme zur Schlüsselverwaltung
Unter Gnome/Unity dient das Programm Seahorse (bzw."Passwörter und Verschlüsselung") zur grafischen Schlüssel- und Passwortverwaltung.
Unter KDE steht dafür das Programm KGpg zur Verfügung.
GPA ist nicht für eine bestimmte Desktop-Umgebung ausgelegt und eignet sich deswegen auch besonders für den Einsatz auf "leichten" Systemen.
GnuPG in anderen Programmen nutzen
Eigentlich können unter Linux alle gängigen E-Mail-Programme GnuPG zur Verschlüsselung und Signierung von E-Mails nutzen. Auch einige andere Programme, bspw. Instant Messenger, sind GnuPG-fähig. Wie man das im Einzelfall nutzen kann, steht in den jeweiligen Artikeln bzw. der Dokumentation der jeweiligen Programme. Hier eine Tabelle mit direkten Links zur GnuPG-Funktionalität:
Programm Kategorie
Evolution (Abschnitt „GnuPG“) E-Mail
KMail E-Mail
Sylpheed (Abschnitt „E-Mails-verschluesseln-mit-GnuPG“) E-Mail
Claws Mail E-Mail
Gajim (Abschnitt „c2c-Verschluesselung“) Jabber/Instant Messenger
Psi (Abschnitt „Verschluesselung“) Jabber/Instant Messenger
Kopete (Abschnitt „Module“) Jabber/Instant Messenger
MCabber (Abschnitt „Verschluesselung“) Jabber/Instant Messenger
Dabei ist es sinnvoll oder teilweise auch nötig, den GPG-Agent zur Passwortverwaltung zu benutzen.
⚓︎
Der Schlüsselbund
GnuPG speichert alle Schlüssel, die man mit der Zeit sammelt, in einem "Schlüsselbund" im Verzeichnis ~/.gnupg/. Vormalig befanden sich dort zwei Schlüsselbunde, pubring.gpg für die öffentlichen Schlüssel und secring.gpg für die Privaten. Dies wurde jedoch mit Version 2.1 entfernt.
Die privaten Schlüssel befinden sich nun in dem Verzeichnis private-keys-v1.d/, während die Datei pubring.kbx die öffentlichen Schlüssel enthält.
Für die Ordnerstruktur von .gnupg/ sowie die Konfigurationsdateien siehe auch den Artikel zur GPG-Konfiguration.
Alle GnuPG-Operationen werden mit dem Kommandozeilenwerkzeug gpg durchgeführt [1].
⚓︎
Wer seinen GnuPG-Schlüsselbund nicht über die Kommandozeile verwalten möchte, findet in den Ubuntu-Repositories eine Reihe grafischer Schlüsselbundmanager (Frontends), die aber nicht im Fokus dieses Artikels stehen. Unter KDE gibt es beispielsweise das Werkzeug KGpg, dem ein eigener Artikel gewidmet ist.
Nutzer von GNOME möchten dagegen vielleicht lieber Seahorse verwenden, ein Programm, das auch mit dem Dateimanager (Nautilus) und dem Texteditor von GNOME (gedit) zusammenarbeitet - ausführlich beschrieben im Artikel Seahorse.
Unter Ubuntu-Mate (evt. auch anderen GNOME Varianten) ist Seahorse unter "Passwörter und Verschlüsselung" unter Zubehör im "Brisk Menü Starter" zu finden.
Vom GnuPG-Projekt selbst stammt der "GNU Privacy Assistant" (GPA), der auf dem GIMP-Toolkit basiert, aber desktop-unabhängig ist. Mehr Informationen dazu liefert der Artikel GPA.
Möchte man seine Schlüssel anstatt in ~/.gnupg/ lieber woanders aufheben, nutzt man bei der Verwendung von gpg die Option --homedir /mein/pfad/zum/gnupg oder setzt global oder pro Anwender die Umgebungsvariable GNUPGHOME=/mein/pfad/zum/gnupg.
Fremden Schlüsselbund verwenden
Man kann mit gpg – entsprechende Dateirechte vorausgesetzt – auch einen fremden Schlüsselbund bearbeiten; dann muss man den eigenen Schlüsselbund mit der Option --no-default-keyring abwählen und den gewünschten mit der Option --keyring auswählen. Gelegentlich benötigt man dies z.B. für den von APT verwendeten Schlüsselbund. Dieser Befehl listet z.B. die Schlüssel von Paketquellen, denen man vertraut:
gpg --no-default-keyring --keyring /etc/apt/trusted.gpg --list-keys
Die Option --keyring kann mehrfach angegeben werden, wenn man mehrere Schlüsselbünde gleichzeitig benutzen möchte. Die Datei des Schlüsselbunds muss immer mit ihrem Pfad angegeben werden, anderenfalls wird sie im Vorgabeordner ~/.gnupg/ gesucht.
Ohne Angabe dieser Optionen wird stets der eigene persönliche Schlüsselbund verwendet.
⚓︎
Schlüssel auflisten
Bei den nachfolgenden gpg-Befehlen auf der Kommandozeile (Terminal) ist die Reihenfolge der gpg-Optionen bei den gezeigten Beispielen genau einzuhalten, da das Programm hier andernfalls unerwartet arbeitet. Mit folgenden Befehlen kann man seine GPG-Schlüssel auflisten lassen. Die Optionen können dabei jeweils in der langen, beschreibenden Version oder in der kurzen, einbuchstabigen Variante benutzt werden. Entweder die eigenen, geheimen Schlüssel:
gpg --list-secret-keys
gpg -K
oder die öffentlichen Schlüssel:
gpg --list-keys
gpg -k
Diese Befehle zeigen Informationen über die Schlüssel an. Wichtig ist hierbei u.a. die Key-ID (hinter der "Schlüsselstärke" zu finden). Es ist ein achtstelliger Hex-Code.
sec 1024D/ABCD1234 2005-06-18 Max Mustermann <max.m _at_ example.com>
In diesem Beispiel ist die Key-ID ABCD1234. Wenn man bisher weder eigene Schlüssel angelegt noch fremde importiert hat, ist die Ausgabe natürlich leer.
Neuere Versionen von GPG geben statt der kurzen 8-stelligen Key-ID nur den 40-stelligen Fingerprint der Schlüssel aus. Will man dennoch die kurze Key-ID haben, so verwendet man diesen Befehl:
gpg --list-keys --keyid-format SHORT
⚓︎
"Fingerprint" anzeigen
Ein Fingerprint (dt.: Fingerabdruck) ist ein relativ kurzer Hash-Wert, mit dem man Schlüssel verifizieren kann. Dieser identifiziert einen Schlüssel, so wie der menschliche Fingerabdruck einen Menschen (praktisch) eindeutig identifiziert. Nach heutigem Kenntnisstand ist es so gut wie aussichtslos zu versuchen, einen zweiten Schlüssel mit demselben Fingerprint zu erschaffen. Man kann (und sollte) das dafür nutzen, sich von der Echtheit solcher Schlüssel zu überzeugen, die man von einem Schlüssel-Server oder per E-Mail erhalten hat. Dieser Fingerabdruck besteht aus einer Zeile Hexadezimalzahlen, die man bspw. auf Visitenkarten drucken oder am Telefon übermitteln kann.
Anzeigen lässt sich der Fingerabdruck eines Schlüssels mit:
gpg --fingerprint <ID oder Name des Schlüssels>
So sieht er etwa aus: 23C7 B473 4C46 5AFB B0D3 E60F 631E 9BDA E8D8 4F17
Die Ausgabe dieses Kommandos sieht genauso aus wie die von --list-keys, mit einer zusätzlichen Zeile. Man kann die ID auch weglassen, dann werden alle Schlüssel des Schlüsselbunds mit Fingerabdruck aufgeführt.
Mit dem folgenden Befehl kann der Fingerabdruck einer Schlüsseldatei angezeigt werden, ohne sie in den Schlüsselbund zu importieren:
gpg --with-fingerprint /tmp/dateiname.asc
⚓︎
Schlüsselpaar erzeugen
Ein neues Schlüsselpaar aus privatem und zugehörigem öffentlichen Schlüssel kann ganz einfach im Terminal [1] erzeugt werden:
gpg --full-gen-key
Bitte wählen Sie, welche Art von Schlüssel Sie möchten:
(1) RSA und RSA (voreingestellt)
(2) DSA und Elgamal
(3) DSA (nur unterschreiben/beglaubigen)
(4) RSA (nur signieren/beglaubigen)
Ihre Auswahl?
Sind pro Option mehr als ein Algorithmus angegeben, so bezieht sich der erste auf das Signieren und der zweite auf das Verschlüsseln. Bei der Wahl der Art des Schlüssels (bzw. der Schlüssel) sollte allerdings nur mit entsprechendem Hintergrundwissen von der Standardauswahl abgewichen werden.
Experten-Info:
Es ist z.B. möglich einen RSA-Signierschlüssel mit einem ElGamal-Verschlüsselungsschlüssel zu wählen. Dazu müsste man 4 auswählen und später dem RSA-Schlüsselpaar ein ElGamal-Unterschlüsselpaar hinzufügen (Stichwort: addkey).
Anschließend wird die Schlüsselstärke erfragt. Je nach Art des Schlüssels sind unterschiedliche Werte möglich. Der mögliche Mini- bzw. Maximalwert wird vom Programm ausgegeben. Je höher dieser Wert, desto sicherer - aber auch umso langsamer - "arbeitet" der Schlüssel. Der vorgeschlagene Wert von 3072 ist für die meisten Anwendungsfälle in Ordnung und kann übernommen werden.
Hinweis:
Um auf Nummer sicher zu gehen, empfehlen verschiedene Kryptographen heutzutage eine Schlüssellänge von 3072 Bits oder mehr.
RSA-Schlüssel können zwischen 1024 und 4096 Bits lang sein.
Welche Schlüssellänge wünschen Sie? (3072)
Anschließend muss man auswählen, wie lange der Schlüssel gültig sein soll. Hier sollte man der Versuchung widerstehen, eine unbeschränkte Gültigkeit festzulegen, da dieser Schlüssel dann auch bei Verlust ewig gültig ist und niemals von den Schlüssel-Servern ("keyserver") verschwindet. Irgend etwas zwischen 1 und 5 Jahren ist dagegen ein praktischer Wert. Für ein Gültigkeitsdauer von einem Jahr gibt man als Wert "1y" ein und bestätigt mit ⏎ .
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
Wie lange bleibt der Schlüssel gültig? (0)
Hinweis:
Das Ablaufdatum kann auch noch nachträglich geändert werden. Um diese Änderungen seinen Gesprächspartnern mitzuteilen, muss man ihnen seinen öffentlichen Schlüssel erneut schicken bzw. ihn erneut zum Schlüsselserver hochladen.
Nun müssen der Name und die E-Mail-Adresse angegeben werden, für die das Schlüsselpaar gelten soll:
Sie benötigen eine Benutzer-ID, um Ihren Schlüssel eindeutig zu machen; das
Programm baut diese Benutzer-ID aus Ihrem echten Namen, einem Kommentar und
der E-Mail-Adresse in dieser Form auf:
"Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>"
Ihr Name ("Vorname Nachname"): Vorname Nachname
E-Mail-Adresse: user@example.com
Kommentar: optional
Sie haben diese User-ID gewählt:
"Vorname Nachname (optional) <user@example.com>"
Ändern: (N)ame, (K)ommentar, (E)-Mail oder (F)ertig/(B)eenden?
Schließlich wird nochmal gefragt, ob die Angaben in Ordnung sind (mit der Taste F bestätigen,), und eine Passphrase für den privaten Schlüssel wird benötigt, um diesen zu schützen. Diese Passphrase benötigt man später, um Mails zu signieren und zu entschlüsseln. Dieser Passwort-Satz sollte nicht leicht zu erraten sein; Tipps findet man z.B. im Sicherheits 1x1 (Abschnitt „Passwoerter“). Nun wird der Schlüssel erstellt, wobei eine große Menge echter (nicht Pseudo-)Zufallswerte benötigt werden. Es kann deswegen sein, dass man vom System gebeten wird, ein wenig mit Maus und Tastatur zu spielen, um solche Werte besser erzeugen zu können.
Hinweis:
Oftmals hat ein System - vor allem bei großen Schlüssellängen - Probleme, ausreichend viele Zufallswerte zu generieren. Hierbei kann das Programm haveged unterstützend wirken. Dieses kann ganz einfach via sudo apt-get install haveged installiert werden, danach „sammelt“ der Dienst im Hintergrund zufällige Ereignisse.
Mehr Infos zur Funktionsweise u. a. hier:
haveged - A simple entropy daemon 🇬🇧
Aus dem Alltag eines Sysadmin: Haveged 🇩🇪
Nun liegt der Schlüssel in ~/.gnupg/private-keys-v1.d/ unter der zugehörigen ID, und man kann ihn wie oben beschrieben auflisten lassen. Mit dem öffentlichen Schlüssel verschlüsselte Nachrichten oder auch Dateien können nur mittels des dazugehörigen privaten Schlüssel wieder entschlüsselt werden. Genauere Details finden sich im Artikel GnuPG/Technischer Hintergrund.
Achtung!
Wenn man plant, den Schlüssel an mehr als ein paar Leute weiterzugeben (bzw. ihn auf einen Keyserver hochzuladen), denen man bei Verlust oder Kompromittierung des privaten Schlüssels persönlich Bescheid sagen kann, sollte man sich am besten direkt nach der Erstellung des Schlüssels ein sogenanntes Widerrufszertifikat erstellen, mit dem man später den Schlüssel - auch ohne dass dieser vorhanden sein muss - für ungültig erklären kann. (mehr)
ECC Schlüssel
gpg kann auch ECC-Schlüssel erzeugen:
gpg --expert --full-gen-key
Sinnvoll sind dabei diese Parameter:
Please select what kind of key you want:
...
(9) ECC and ECC
...
Please select which elliptic curve you want:
(1) Curve 25519
...
Allerdings sind ECC-Keys nicht mit älteren Versionen von GnuPG kompatibel. Bei der Nutzung von ECC-Schlüsseln sollte man dementsprechend wissen, was man tut.
⚓︎
Schlüssel importieren
Erhält man den öffentlichen Schlüssel eines Kommunikationspartners oder will man ein Schlüsselpaar (also einen privaten und einen öffentlichen Schlüssel) importieren, so muss man ihn zur weiteren Verwendung zunächst in den Schlüsselbund importieren.
Man sollte aber auf keinen Fall Schlüssel ungeprüft verwenden! Entweder man nimmt persönlichen Kontakt zum Kommunikationspartner auf und gleicht den "fingerprint" ab, oder man nutzt das GnuPG/Web of Trust.
gpg --with-fingerprint /tmp/dateiname.asc
gpg --import /tmp/dateiname.asc
⚓︎
Schlüssel exportieren
Ebenso kann man einen Schlüssel exportieren. Das ist z.B. notwendig, wenn man seinen öffentlichen Schlüssel auf seiner Webseite zum freien Herunterladen anbieten will,
gpg -a --output gpg-key --export <Schlüssel-ID oder Name>
gpg -a --export <Schlüssel-ID oder Name> | tee gpg-key
Verschlüsseln
gpg --encrypt -a --recipient <Name oder Key_Id> test.txt
Entschlüsseln
gpg --decrypt --output entschluesselt.txt test.txt.asc
Signieren
gpg --detach-sig -a test.txt
Nachdem man seine Passphrase erfolgreich eingegeben hat, erhält man eine Datei test.txt.asc. Diese enthält eine digitale Signatur der Originaldatei mit der sich die Authentizität beweisen lässt. Hier ein Beispiel:
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.1 (GNU/Linux)
iD8DBQFDTqEJxHY64NcyylkRAvZ2AJoDxlQ4VuqpIDfcTFnHEye4PGfNIACdEcRw
QVoj5npyj4VyaEzLzx4vdSs=
=ySv1
-----END PGP SIGNATURE---
gpg --verify test.txt.asc
gpg: Signature made Mon 19 Jun 2006 17:06:05 CEST using DSA key ID <Key_Id>
gpg: Good signature from "Person, von der die Signatur stammt"
adele@gnupp.de