Nun, das ist ein bisschen peinlich. Ich habe über einen Zeitraum von einer Woche Stunden damit verbracht, dieses Problem zu lösen, und die Antwort scheint bei Unterschlüsseln zu liegen - ein Thema, das im GnuPG-Handbuch und in den häufig gestellten Fragen nicht behandelt wird.
Während ich nachforschte, was Unterschlüssel sind und warum sie anstelle von --gen-key verwendet werden könnten, stieß ich auf dieses Juwel: http://wiki.debian.org/subkeys .
In Debians Wiki wird erklärt, wie Option 2 (siehe OP) unter Verwendung eines Hauptschlüssels mit Unterschlüsseln implementiert wird , und wie der Hauptschlüssel von einem beliebigen System entfernt wird, nachdem er auf einem Sicherungsmedium (z. B. einem Flash-Laufwerk) gespeichert wurde. Die Unterschlüssel können dann auf jedem Gerät auf meine Schlüsselringe verteilt werden.
Vorteile:
Verlässt sich nicht hauptsächlich auf ein Passwort, um den Hauptschlüssel zu schützen,
Wenn ein System kompromittiert ist, ist der Hauptschlüssel nicht sofort verfügbar (es sei denn, ich lasse törichterweise mein Flash-Laufwerk eingesteckt oder verbinde es mit einem kompromittierten System).
Dies ist eine Praxis, die vom Debian-Entwicklungsteam implementiert wurde.
Verwendet die Unterschlüsselfunktion von GnuPG. Was scheint ein bisschen organisierter zu sein, als ein paar lose Schlüssel am Schlüsselbund zu haben, ja?
Relevanter Teil aus dem Debian Subkey Wiki
Erstellen Sie Backups Ihrer vorhandenen GnuPG-Dateien ($ HOME / .gnupg). Bewahre sie gut auf. Wenn während der folgenden Schritte etwas schief geht, benötigen Sie dies möglicherweise, um an einen bekannten guten Ort zurückzukehren. (Hinweis: umask 077 führt zu eingeschränkten Berechtigungen für die Sicherung.)
umask 077; tar -cf $HOME/gnupg-backup.tar -C $HOME .gnupg
Erstellen Sie einen neuen Unterschlüssel zum Signieren.
- Finden Sie Ihre Schlüssel-ID:
gpg --list-keys yourname
gpg --edit-key YOURMASTERKEYID
- An der
gpg>
Eingabeaufforderung:addkey
- Hier werden Sie nach Ihrer Passphrase gefragt. Geben Sie sie ein.
- Wählen Sie den Schlüsseltyp "RSA (nur Vorzeichen)".
- Es wäre ratsam, eine Bit-Schlüsselgröße von 4096 (oder 2048) zu wählen.
- Wählen Sie ein Ablaufdatum (Sie können Ihre Unterschlüssel häufiger als die Hauptschlüssel drehen oder sie für die Dauer des Hauptschlüssels ohne Ablaufdatum aufbewahren).
- GnuPG erstellt (irgendwann) einen Schlüssel, aber Sie müssen möglicherweise warten, bis er genügend Entropie enthält.
- Speichern Sie den Schlüssel:
save
Sie können dies wiederholen und bei Bedarf auch einen Unterschlüssel "RSA (Encrypt Only)" erstellen.
Kopieren $HOME/.gnupg
Sie nun auf Ihre USB-Sticks.
Hier kommt der schwierige Teil. Sie müssen den privaten Hauptschlüssel entfernen, und GnuPG bietet leider keine bequeme Möglichkeit, dies zu tun. Wir müssen den Unterschlüssel exportieren, den privaten Schlüssel entfernen und den Unterschlüssel wieder importieren.
- Exportieren Sie die Unterschlüssel:
gpg --export-secret-subkeys YOURMASTERKEYID >secret-subkeys
(zu entscheiden , welche Unterschlüssel zu exportieren, geben Sie den Unterschlüssel - IDs jeweils mit einem Ausrufezeichen gefolgt: gpg --export-secret-subkeys SUBKEYID! [SUBKEYID! ..]
)
- Entfernen Sie Ihren geheimen Hauptschlüssel:
gpg --delete-secret-key YOURMASTERKEYID
- Importieren Sie die Unterschlüssel zurück:
gpg --import secret-subkeys
- Stellen Sie sicher , dass
gpg -K
eine sec#
statt nur sec
für Ihren privaten Schlüssel. Das heißt, der geheime Schlüssel ist nicht wirklich da. (Siehe auch das Vorhandensein eines Dummy-OpenPGP-Pakets in der Ausgabe von gpg --export-secret-key YOURMASTERKEYID | gpg --list-packets
).
- Optional kann das Passwort die Unterschlüssel zu schützen ändern:
gpg --edit-key YOURMASTERKEYID passwd
. (Beachten Sie, dass das private Schlüsselmaterial auf der Sicherung, einschließlich des privaten Hauptschlüssels, durch die alte Passphrase geschützt bleibt.)
Ihr Computer ist jetzt für den normalen Gebrauch bereit.
Wenn Sie die Hauptschlüssel verwenden müssen, hängen Sie das verschlüsselte USB-Laufwerk ein und legen Sie die Umgebungsvariable GNUPGHOME fest:
export GNUPGHOME=/media/something
gpg -K
Oder verwenden Sie das Befehlszeilenargument --home:
gpg --home=/media/something -K
Der letztere Befehl sollte nun Ihren privaten Schlüssel mit sec
und nicht mit auflisten sec#
.
Mehrere Unterschlüssel pro Computer im Vergleich zu einem einzelnen Unterschlüssel für alle Computer
Auszug aus dem Debian-Unterschlüssel-Wiki. Ursprünglich in Kommentaren vermerkt. [Paraphrasierung] und Betonung meiner.
Man könnte versucht sein, einen Unterschlüssel pro Computer zu haben, so dass Sie nur den möglicherweise gefährdeten Unterschlüssel dieses Computers austauschen müssen. Im Fall eines einzelnen Unterschlüssels, der auf allen Computern verwendet wird, muss er auf allen Computern ausgetauscht werden [wenn dieser einzelne Unterschlüssel kompromittiert wird oder vermutet wird].
Dies funktioniert jedoch nur zum Signieren von Unterschlüsseln . Wenn Sie mehrere Verschlüsselungsunterschlüssel haben, wird gpg nur für den neuesten Verschlüsselungsunterschlüssel und nicht für alle bekannten und nicht gesperrten Verschlüsselungsunterschlüssel verwendet.
Als jemand, der auch keine Single Points of Failure mag (einschließlich Hauptschlüssel und insbesondere Passwörter), ist dies die Art und Weise, wie ich es tun würde. Damit können Geräte über ein Web of Trust betrieben werden, ohne dass eine dezentrale Identität erforderlich ist.
Ich weiß nicht, ob es dafür bereits ein System gibt, aber ich denke, es könnte wahrscheinlich zusammen mit einem Cron-Job und ein paar Zeilen Bash gescrobbelt werden.
In diesem System gibt es zwei Klassen von Schlüsselpaaren: Geräte-Schlüsselpaare und Zeitrahmen-Schlüsselpaare . Auf jedem Gerät wird ein Geräte-Schlüsselpaar für den Benutzer generiert, das für die gesamte Lebensdauer auf diesem Gerät verbleibt . Ein Zeitrahmen-Schlüsselpaar wird von einem zentralen Server in regelmäßigen Abständen generiert (monatlich, täglich, stündlich - je nachdem, wie paranoid Sie sein möchten). Der öffentliche Schlüssel wird öffentlich bekannt gegeben (der Server selbst verfügt über ein eigenes Geräte-Schlüsselpaar zum Signieren), und der private Schlüssel wird verschlüsselt mit dem öffentlichen Schlüssel jedes Geräts verteilt, das Zugriff auf diesen Schlüssel haben soll. (Diese Verteilung sollte so privat wie möglich sein, z. B. wenn Geräte direkt mit dem Server verbunden sind.)
Zum Signieren von Nachrichten verwenden Sie den Geräteschlüssel des Geräts, von dem Sie die Nachricht senden. Wenn jemand Ihnen eine Nachricht senden möchte, kann er diese mit Ihrem aktuellen öffentlichen Zeitrahmenschlüssel signieren. (Sie sollten über ein automatisiertes System verfügen, um mit den Ansagen Schritt zu halten.) Sie können ihre Nachricht dann von jedem Gerät aus lesen.
Zum Lesen älterer verschlüsselter Nachrichten werden ältere Zeitrahmen-Schlüsselpaare auf jedem Gerät gemäß einer geeigneten Strategie gesichert (einschließlich des Zeitrahmen-Schlüsselpaar-Generierungsservers, falls Sie dies wünschen - wiederum abhängig von Ihrem Grad an Paranoia), auf dem Sie einen anderen Satz haben von passwortgeschützten Schlüsselpaaren, die die älteren Schlüssel schützen (mit so vielen Passwörtern im Laufe der Zeit, wie Sie sich gerne merken).
Wenn ein Gerät gestohlen oder auf andere Weise kompromittiert wird, können Sie ein anderes Ihrer öffentlich vertrauenswürdigen Geräte verwenden, um eine öffentlich signierte Nachricht zu erstellen, in der Ihre Identität überprüft wird (z. B. durch die Feststellung, dass Sie an einem öffentlichen Treffen teilnehmen und / oder von einem vertrauenswürdigen Freund persönlich verifizieren lassen) und den gefährdeten Geräteschlüssel und alle Zeitrahmenschlüssel, auf die er Zugriff hatte, widerrufen. Wenn Sie den Schlüssel widerrufen, entfernen Sie das gestohlene Gerät auch aus der Liste der vertrauenswürdigen Geräte des Servers (mit einem Kennwort und Ihrem vertrauenswürdigen Geräteschlüssel).
Die Richtlinie für das Vertrauen in neu angekündigte Geräteschlüssel sollte etwa den aktuellen Vertrauensrichtlinien entsprechen. Ich glaube, dass eine angemessene Richtlinie darin besteht, dem generierenden Server, einem mobilen Gerät und einem großen und schweren Gerät zu vertrauen, da es schwer zu stehlen / zu infiltrieren ist Das Telefon eines Benutzers, ein Desktop-PC und VPS in einem gemeinsamen Überfall, bevor der Benutzer es bemerkt.
Wenn Ihr Server kompromittiert ist, widerrufen Sie ihn einfach mit dem gleichen Verfahren, das für jedes andere kompromittierte Gerät beschrieben wurde (möglicherweise mit einer strengeren Richtlinie, die der zum Hinzufügen eines neuen Geräts ähnelt), und verwenden Sie einen neu gesicherten oder insgesamt neuen Server (mit einem) neues Geräte-Schlüsselpaar).
quelle