| |
yubikey4hk:funktionen:openpgp:e-mail_verschluesselung [2020-07-01 19:11] – Kristoffer Dorfmayr | yubikey4hk:funktionen:openpgp:e-mail_verschluesselung [2023-09-22 20:40] (current) – external edit 127.0.0.1 |
---|
| |
==== Privaten Schlüssel vom YubiKey verfügbar machen ==== | ==== Privaten Schlüssel vom YubiKey verfügbar machen ==== |
Im Ausschnitt oben hat man bereits meinen öffentlichen Schlüssel gesehen. Dieser hat die Key-ID mit der Endung "AAFAE". Wenn ich aber Enigmail auf einem neuen System installiere ist mein Schlüssel noch nicht am System. In diesem Absatz gehe ich davon aus, dass der eigene Schlüssel noch nicht am System bekannt ist. Ich sehe also nur den zuvor hinzugefügten Schlüssel von Troye:\\ | Im Ausschnitt oben hat man bereits meinen öffentlichen Schlüssel gesehen. Dieser hat die Key-ID mit der Endung "59C51". Wenn ich aber Enigmail auf einem neuen System installiere ist mein Schlüssel noch nicht am System. In diesem Absatz gehe ich davon aus, dass der eigene Schlüssel noch nicht am System bekannt ist. Ich sehe also nur den zuvor hinzugefügten Schlüssel von Troye:\\ |
{{yubikey4hk:funktionen:openpgp:thunderbird_enigmail_privavail_troye.png?500|}} \\ | {{yubikey4hk:funktionen:openpgp:thunderbird_enigmail_privavail_troye.png?500|}} \\ |
Da es sich bei den privaten Schlüsseln am YubiKey ausschließlich um Subschlüssel handelt, benötigen wir im lokalen Schlüsselbund zumindest den öffentlichen Schlüssel. Dieser liefert uns die notwendigen Informationen über die Struktur unseres OpenPGP-Schlüssels. Der gesamte OpenPGP-Schlüssel besteht nämlich aus dem Hauptschlüssel (dieser hat den Fingerprint mit der Endung "AAFAE") und den drei zugehörigen Subschlüsseln deren private Teile sich am YubiKey befinden. Um nun den eigenen öffentlichen Schlüssel zu importieren gibt es die gleichen Wege wie oben im Abschnitt [[#Schlüssel importieren|Schlüssel importieren]] beschrieben. Ein Import der öffentlichen Schlüssel direkt vom YubiKey auf das jeweilige System ist nicht möglich, da dafür nicht genügend Informationen über den öffentlichen Schlüssel auf dem YubiKey gespeichert sind! Eine weitere sehr praktische Variante ist die Nutzung der "URL of public key", die wir auf unserem YubiKey [[yubikey4hk:funktionen:openpgp#metadaten_auf_den_yubikey_laden|hinterlegt haben]]. Dieser Weg des Imports ist aber nur über das gpg-Kommando möglich. Einfach den YubiKey am System anstecken und in der Kommandozeile folgende Befehle ausführen: | Da es sich bei den privaten Schlüsseln am YubiKey ausschließlich um Subschlüssel handelt, benötigen wir im lokalen Schlüsselbund zumindest den öffentlichen Schlüssel. Dieser liefert uns die notwendigen Informationen über die Struktur unseres OpenPGP-Schlüssels. Der gesamte OpenPGP-Schlüssel besteht nämlich aus dem Hauptschlüssel (dieser hat den Fingerprint mit der Endung "59C51") und den drei zugehörigen Subschlüsseln deren private Teile sich am YubiKey befinden. Um nun den eigenen öffentlichen Schlüssel zu importieren gibt es die gleichen Wege wie oben im Abschnitt [[#Schlüssel importieren|Schlüssel importieren]] beschrieben. Ein Import der öffentlichen Schlüssel direkt vom YubiKey auf das jeweilige System ist nicht möglich, da dafür nicht genügend Informationen über den öffentlichen Schlüssel auf dem YubiKey gespeichert sind! Eine weitere sehr praktische Variante ist die Nutzung der "URL of public key", die wir auf unserem YubiKey [[yubikey4hk:funktionen:openpgp#metadaten_auf_den_yubikey_laden|hinterlegt haben]]. Dieser Weg des Imports ist aber nur über das gpg-Kommando möglich. Einfach den YubiKey am System anstecken und in der Kommandozeile folgende Befehle ausführen: |
<code bash> | <code bash> |
kali@kali:~$ gpg --edit-card | kali@kali:~$ gpg --edit-card |
----------------------------- | ----------------------------- |
sec# rsa4096 2020-04-16 [C] [expires: 2025-04-15] | sec# rsa4096 2020-04-16 [C] [expires: 2025-04-15] |
A662724593E61256E4ADB82E1E360B1A218AAFAE | 3E0F0BA9061396B9302767F860E2EB9A7EF59C51 |
uid [ unknown] Kristoffer Dorfmayr <kristoffer.dorfmayr@gmail.com> | uid [ultimate] Kristoffer Dorfmayr <kristoffer.dorfmayr@hagenbergerkreis.at> |
uid [ unknown] Kristoffer Dorfmayr <S1810239005@students.fh-hagenberg.at> | |
uid [ unknown] Kristoffer Dorfmayr <kristoffer.dorfmayr@hagenbergerkreis.at> | |
ssb> rsa4096 2020-04-16 [E] [expires: 2025-04-15] | ssb> rsa4096 2020-04-16 [E] [expires: 2025-04-15] |
ssb> rsa4096 2020-04-16 [S] [expires: 2025-04-15] | ssb> rsa4096 2020-04-16 [S] [expires: 2025-04-15] |
* Besitzervertrauen setzen im //Enigmail Key Management//: Mit einem Rechtsklick auf den gewünschten Schlüssel öffnet man das Menü //Key Properties// und setzt das Vertrauen auf "Ultimate" \\ {{yubikey4hk:funktionen:openpgp:thunderbird_enigmail_certify_keys.png?500|}} | * Besitzervertrauen setzen im //Enigmail Key Management//: Mit einem Rechtsklick auf den gewünschten Schlüssel öffnet man das Menü //Key Properties// und setzt das Vertrauen auf "Ultimate" \\ {{yubikey4hk:funktionen:openpgp:thunderbird_enigmail_certify_keys.png?500|}} |
* Besitzervertrauen setzten in der Kommandozeile: <code> | * Besitzervertrauen setzten in der Kommandozeile: <code> |
kali@kali:~$ gpg --edit-key kristoffer.dorfmayr@gmail.com | kali@kali:~$ gpg --edit-key kristoffer.dorfmayr@hagenbergerkreis.at |
gpg> trust | gpg> trust |
Please decide how far you trust this user to correctly verify other users' keys | Please decide how far you trust this user to correctly verify other users' keys |
Mit einem Rechtsklick auf den Schlüssel "Sign Key" öffnet sich das Fenster zum Signieren des Schlüssels: \\ | Mit einem Rechtsklick auf den Schlüssel "Sign Key" öffnet sich das Fenster zum Signieren des Schlüssels: \\ |
{{yubikey4hk:funktionen:openpgp:enigmail_sign2.png?600|}} \\ | {{yubikey4hk:funktionen:openpgp:enigmail_sign2.png?600|}} \\ |
Wenn man mehrere Schlüssel im privaten Schlüsselbund hat, welche die "Certify" Eigenschaft besitzen, kann man diese über das "Key for signing" Drop-Down Menü auswählen. Ich habe nur den einen Hauptschlüssel mit der Endung "AAFAE" und werde mit diesem, den öffentlichen Schlüssel von Troye signieren. \\ Die Abfrage, wie genau man die Authentizität des Schlüssels überprüft hat, hat Auswirkung auf den Signaturtyp<sup>[[#Quellen|[4, Kapitel 5.2.1]]]</sup>, der im Signaturpaket vermerkt ist. Im Grunde ist das für Enigmail aber unerheblich - signiert ist signiert. \\ Die Auswahl "Local signature" ermöglicht es, schlüssel lokal, also nicht exportierbar zu signieren. Das heißt, dass sich Enigmail die Signatur merkt, das Signaturenpaket aber nicht im GPG-Schlüsselbund an den jeweiligen Schlüssel angehängt wird. Exportiert man diesen signierten öffentlichen Schlüssel wird eine lokale Signatur also nicht mit-exportiert. Sollte man später von einer lokalen Signatur auf eine "normale" Signatur umsteigen wollen, kann man den Schlüssel einfach erneut signieren, nur ohne die Auswahl der lokalen Signatur. \\ Nach Bestätigen des Dialoges und Eingabe der Passphrase wird meine Signatur dem öffentlichen Schlüssel angehängt. Ersichtlich ist diese Signatur in den Schlüsseleigenschaften des signierten Schlüssels (//rechtsklick/Key Properties/Certifications//): \\ | Wenn man mehrere Schlüssel im privaten Schlüsselbund hat, welche die "Certify" Eigenschaft besitzen, kann man diese über das "Key for signing" Drop-Down Menü auswählen. Ich habe nur den einen Hauptschlüssel mit der Endung "59C51" und werde mit diesem, den öffentlichen Schlüssel von Troye signieren. \\ Die Abfrage, wie genau man die Authentizität des Schlüssels überprüft hat, hat Auswirkung auf den Signaturtyp<sup>[[#Quellen|[4, Kapitel 5.2.1]]]</sup>, der im Signaturpaket vermerkt ist. Im Grunde ist das für Enigmail aber unerheblich - signiert ist signiert. \\ Die Auswahl "Local signature" ermöglicht es, schlüssel lokal, also nicht exportierbar zu signieren. Das heißt, dass sich Enigmail die Signatur merkt, das Signaturenpaket aber nicht im GPG-Schlüsselbund an den jeweiligen Schlüssel angehängt wird. Exportiert man diesen signierten öffentlichen Schlüssel wird eine lokale Signatur also nicht mit-exportiert. Sollte man später von einer lokalen Signatur auf eine "normale" Signatur umsteigen wollen, kann man den Schlüssel einfach erneut signieren, nur ohne die Auswahl der lokalen Signatur. \\ Nach Bestätigen des Dialoges und Eingabe der Passphrase wird meine Signatur dem öffentlichen Schlüssel angehängt. Ersichtlich ist diese Signatur in den Schlüsseleigenschaften des signierten Schlüssels (//rechtsklick/Key Properties/Certifications//): \\ |
{{yubikey4hk:funktionen:openpgp:enigmail_sign3.png?500|}} \\ | {{yubikey4hk:funktionen:openpgp:enigmail_sign3.png?500|}} \\ |
Hier können ohne weiteres auch mehrere Signaturen aufscheinen. Einerseits die Signaturen des Hauptschlüssels über sich selbst und seine Subschlüssel, andererseits Signaturen von den Schlüsseln anderer Nutzer. Mithilfe des Kommandozeilenprogrammes //pgpdump// kann man sich den genauen Aufbau eines Schlüssels sehr gut ansehen. Man sieht hier das hinzugefügte Signaturpaket (Zeile 13), das mit meinem Schlüssel mit der Endung "AAFAE" (Zeile 19) über den öffentlichen Schlüssel (Paket beginnt in Zeile 2) und die Identität (Paket beginnt in Zeile 8) erstellt wurde: | Hier können ohne weiteres auch mehrere Signaturen aufscheinen. Einerseits die Signaturen des Hauptschlüssels über sich selbst und seine Subschlüssel, andererseits Signaturen von den Schlüsseln anderer Nutzer. Mithilfe des Kommandozeilenprogrammes //pgpdump// kann man sich den genauen Aufbau eines Schlüssels sehr gut ansehen. Man sieht hier das hinzugefügte Signaturpaket (Zeile 13), das mit meinem Schlüssel mit der Endung "59C51" (Zeile 19) über den öffentlichen Schlüssel (Paket beginnt in Zeile 2) und die Identität (Paket beginnt in Zeile 8) erstellt wurde: |
<code bash [enable_line_numbers="true"]> | <code bash [enable_line_numbers="true"]> |
kali@kali:~$ pgpdump "Troye_Finnegan_finnegan.troye@gmail.com_0x2885B7BE8060F8B3_pub.asc" | kali@kali:~$ pgpdump finnegan.troye_pub.asc |
Old: Public Key Packet(tag 6)(525 bytes) | Old: Public Key Packet(tag 6)(525 bytes) |
Ver 4 - new | Ver 4 - new |
Old: User ID Packet(tag 13)(41 bytes) | Old: User ID Packet(tag 13)(41 bytes) |
User ID - Troye Finnegan <finnegan.troye@gmail.com> | User ID - Troye Finnegan <finnegan.troye@gmail.com> |
| |
- Zeilen gekürzt - | - Zeilen gekürzt - |
| |
Old: Signature Packet(tag 2)(563 bytes) | Old: Signature Packet(tag 2)(563 bytes) |
Ver 4 - new | Ver 4 - new |
Sig type - Generic certification of a User ID and Public Key packet(0x10). | Sig type - Positive certification of a User ID and Public Key packet(0x13). |
Pub alg - RSA Encrypt or Sign(pub 1) | Pub alg - RSA Encrypt or Sign(pub 1) |
Hash alg - SHA512(hash 10) | Hash alg - SHA256(hash 8) |
Hashed Sub: issuer fingerprint(sub 33)(21 bytes) | Hashed Sub: issuer fingerprint(sub 33)(21 bytes) |
v4 - Fingerprint - a6 62 72 45 93 e6 12 56 e4 ad b8 2e 1e 36 0b 1a 21 8a af ae | v4 - Fingerprint - a6 62 72 45 93 e6 12 56 e4 ad b8 2e 1e 36 0b 1a 21 8a af ae |
| |
- Zeilen gekürzt - | - Zeilen gekürzt - |
</code> | </code> |
Durch das Signieren des Schlüssels ist die Autzentizität des Schlüssels (Gültigkeit) auf "trusted" gewechselt: \\ | Durch das Signieren des Schlüssels ist die Autzentizität des Schlüssels (Gültigkeit) auf "trusted" gewechselt: \\ |