Wie sichern Sie einen privaten GPG-Schlüssel sicher?

8343
Tal

Ich habe einen sehr interessanten CLI-Passwortmanager namens pass gefunden . Für die Verwendung generieren Sie ein GPG2-Schlüsselpaar und verwenden das Tool, um Passwörter in gpg2-verschlüsselten Dateien zu speichern.

Zum Verschlüsseln der Dateien (Hinzufügen eines neuen Kennworts) wird der öffentliche Schlüssel verwendet.

Zum Entschlüsseln der Dateien (Abrufen eines gespeicherten Kennworts) wird der private Schlüssel verwendet, für den ein Kennwort erforderlich ist.

Das funktioniert super.

Jetzt, da das Tool alle meine Passwörter speichert, möchte ich alle diese Daten sichern, damit mein Computer bei einem Absturz nicht von meinen Online-Konten gesperrt wird.

Das Tool lässt sich gut in git integrieren, sodass ich die .gpg-Dateien problemlos in mein privates git-Repo auf einem anderen Computer verschieben konnte. Soweit ich weiß, sind diese Dateien ohne den privaten Schlüssel zum Entschlüsseln unbrauchbar.

Meine Frage ist folgende: Wie kann ich die privaten und öffentlichen Schlüssel auf sichere Weise sichern, damit ich die "Datenbank" auf einem anderen Computer wiederherstellen kann, wenn dies erforderlich ist? Kann ich nur die öffentlichen und privaten Schlüssel in meinem Git Repo speichern und zu einem späteren Zeitpunkt auf einem anderen Computer importieren? Oder gilt es als unsichere Praxis, einen privaten Schlüssel in einem privaten, lokalen Git-Repo zu speichern? Das Git Repo benötigt ein Passwort für den Zugriff. Der private Schlüssel ist verschlüsselt und erfordert ein Kennwort, um ihn zu öffnen.

10

4 Antworten auf die Frage

7
a CVn

Das Speichern eines privaten PGP-Schlüssels in einem Revisionskontrollsystem stellt an und für sich keine bedeutenden Sicherheitsprobleme dar. Das Speichern des privaten Schlüssels in einem lokalen, privaten (nicht veröffentlichten) Git-Repository sollte keine wesentlichen Auswirkungen auf die Sicherheit haben, verglichen mit dem Speichern des privaten Schlüssels auf demselben Computer, aber außerhalb eines beliebigen Git-Repository.

Das einzige Problem, das mir einfällt, wenn Sie den privaten Schlüssel in einer versionsgesteuerten Weise speichern, besteht darin, dass Sie, wenn Sie die älteren Revisionen nicht irgendwie zerstören können, bei Änderungen der Passphrasen weit weniger Schutz bieten, als dies ansonsten der Fall wäre.

Was mit seinen eigenen Sicherheitsaspekten einhergehen kann, ist das Speichern eines privaten Schlüssels so, dass ein anderer Benutzer möglicherweise auf die Schlüsseldatei zugreifen kann. In einer solchen Situation ist alles, was zwischen einem Angreifer und Ihrem Schlüssel steht, die Stärke seiner Passphrase.

Da die Speichersicherheit nicht perfekt ist, und in einer modernen Umgebung, in der regelmäßig Cloud-Services zur Verfügung stehen (was wörtlich übersetzt "Computer eines anderen" bedeutet), schützen wir unsere geheimen Schlüssel normalerweise mit Passphrasen. Ich vertraue darauf, dass Sie dasselbe tun, auch wenn Sie beispielsweise gpg-agent ausführen.

Unter dem Strich sollte das Speichern einer Kopie der verschlüsselten Schlüsseldatei auf dem Computer eines anderen Benutzers relativ sicher sein, solange Ihre Passphrase gut ist.

Das ist jedoch ein ziemlich großer Fall: Die Passwörter oder Passphrasen der meisten Benutzer sind ziemlich mies, wenn computergestützte Versuche, sie zu knacken, gehen. GnuPG geht zu einiger Länge zu versuchen, so gut wie es mit können zu arbeiten, was Sie geben, aber für festen Datenschutz, Sie benötigen ein gutes Passwort ein, und Sie müssen sie festlegen, bevor mit dem privaten Schlüssel in das Git Repository zu importieren. Nachdem der Schlüssel importiert wurde, kann ein Angreifer grundsätzlich jede Version des Schlüssels angreifen. Wenn er Grund zu der Annahme hat, dass eine bestimmte Revision eine Passphrase von geringerer Qualität aufweist, wird dies wahrscheinlich zutreffen. Stellen Sie daher sicher, dass Sie die Passphrase sorgfältig auswählen. Ich habe eine kleine Einführung in den Umgang mit Passwörtern geschrieben, einschließlichVorschläge zur Auswahl von Passwörtern oder Passphrasen, an die Sie sich erinnern können, und die möglicherweise nützlich sind.

4
Matei David

Ich habe vor kurzem ein ähnliches Setup in Betracht gezogen. Bevor Sie sich Ihrer Frage annehmen, lassen Sie mich darauf hinweisen, was mich daran stört. Dies wird hier ausführlich erklärt . Kurz gesagt: Wenn Pass GPG anruft, führt es unnötige asymmetrische (RSA / EC) -Kryptos unter der Haube aus. Unnötig - weil es hier keine nicht vertrauenswürdige Partei gibt.

Dies ist ärgerlich, da asymmetrische Krypto weniger zukunftssicher sind als symmetrische Krypto. Asymmetrische Kryptos von heute werden zum Beispiel von ausreichend großen Quantencomputern gebrochen, die noch nicht existieren. Allgemeiner gesagt, asymmetrische Krypto verlässt sich auf "mathematische Probleme", die wir nicht lösen können, viel mehr als symmetrische Krypto.

Um diese Schwäche zu mildern, sollten Sie Ihren öffentlichen GPG-Schlüssel auch mit Pass als privat verwenden, da der (potenzielle) Quantenangriff beispielsweise diesen öffentlichen Schlüssel benötigt: siehe hier .

Zu Ihrer eigentlichen Frage ist nicht klar, ob Sie das git-Repo (mit den Passwörtern) öffentlich oder privat speichern möchten. Wenn Sie es privat halten möchten, können Sie praktisch tun, was Sie möchten, und die Sicherheit des privaten GPG-Schlüssels auf das des Mediums reduzieren, auf dem Sie das Repo sichern. Dies könnte jedoch zu einem Problem mit Hühnern und Eiern werden: Wenn das Repo privat ist, wie bekommt man es im Falle eines Absturzes zurück? Mit anderen Worten, im Falle eines "schweren Absturzes" müssen Sie zuerst etwas abrufen . Vielleicht möchten Sie das Git-Repo jedoch privat halten, aber den GPG-Schlüssel so sichern, dass Sie ihn zuerst abrufen können, unabhängig von etwas anderem.

Offline-Backup-Lösungen sind zahlreich, Anwälte, Keller usw. siehe hier . Aber Keller sind nicht für jeden etwas, also lassen Sie mich eine Online-Lösung vorschlagen:

  • Erstellen Sie eine extrem starke Passphrase, die seit Jahren nicht mehr eingegeben werden soll. Vorschlag: Lange, einprägsame Rechtschreibfehler einer Phrase, die eine persönliche Bedeutung hat, oder aus einem Buch, dem die Kopien nicht ausgehen, wenn Sie nachschlagen müssen.

  • Erstellen Sie ein Tarball mit Ihrem exportierten geheimen GPG-Schlüssel und möglicherweise Ihren SSH-Anmeldeinformationen.

  • Verschlüsseln Sie es symmetrisch mit Ihrem Passwort: gpg --symmetric --armor.

  • Erstellen Sie ein kostenloses Git-Hosting-Konto.

  • Erstellen Sie ein öffentliches Repository, das ohne Anmeldeinformationen geklont werden kann.

  • Setzen Sie den verschlüsselten und gepanzerten Teerball dort ein.

Um es nach einem "schweren Absturz" abzurufen:

  • Booten Sie einen Live-USB-Stick.

  • Öffentliches Repo klonen

  • gpg --decrypt.

Die symmetrische Passphrase schützt Sie vor den Zombies. Menschen geben Ihnen oder dem anonymen Leser manchmal nicht den Vorteil des Zweifels, wenn es um die Wahl von Passphrasen geht. Mit einer guten Passphrase sollte symmetrische Krypto jedoch solide sein.

Wenn Sie Ihren privaten GPG-Schlüssel exportieren, wird er mit einer eigenen Passphrase verschlüsselt. Aktuelle Versionen von GPG erlauben keinen unverschlüsselten Export. Sie können hier Ihre "reguläre" GPG-Passphrase verwenden. Denken Sie daran, dass Sie im Falle eines Absturzes beide Passphrasen benötigen, um zu Ihrem privaten GPG-Schlüssel zu gelangen.

3
Josef

Eine andere Option, die ich verwende, ist: Drucken Sie Ihren Schlüssel auf Papier .

Die Details finden Sie in der verknüpften Antwort. Die großen Vorteile sind: Sie können es leicht an einem beliebigen Ort aufbewahren, und Sie können überprüfen, ob es wahrscheinlich noch in gutem Zustand ist, indem Sie es nur betrachten. Der größte Vorteil ist jedoch: Niemand kann ihn hacken, ohne physisch an dem Ort zu sein, an dem Sie Ihr Backup speichern und ablegen.

Soweit ich sehen kann, hat Papier in diesem Fall keinen Vorteil gegenüber Wechseldatenträgern und den Nachteil, dass, wenn Sie den Schlüssel _recover_ benötigen, Sie den ganzen Kauderwelsch für den Schlüssel eingeben müssen. MAP vor 7 Jahren 0
Der Vorteil ist, dass es wesentlich stabiler ist und Sie ohne Computer überprüfen können, ob es noch mit Ihren eigenen Augen lesbar ist. Wenn ich für jede Diskette, CD oder DVD, die ich verwendete, einen Dollar hätte, der jetzt nicht mehr behebbare Datenfehler aufweist, könnte ich mit diesem Geld auf Urlaub gehen. Sie müssen nichts eingeben! PaperBack druckt es als 2D-Code mit hinzugefügter Fehlerkorrektur. Sie scannen oder fotografieren es einfach und das Programm verwandelt es wieder in das, was Sie zuvor zum Drucken gegeben haben. Josef vor 7 Jahren 0
Vorausgesetzt natürlich, Sie haben noch die Technologie, um dies zu tun. MAP vor 7 Jahren 0
Nun, die Wahrscheinlichkeit, dass ich problemlos eine Windows VM oder Linux mit Wine mit einer Kopie dieser Open-Source-Software in 20 Jahren erhalten kann, ist meiner Meinung nach viel höher als die Wahrscheinlichkeit, dass ich die Hardware dazu bringen kann, eine Diskette / CD zu lesen /DVD. Nehmen wir einfach an, ich habe das 1990 gemacht. Ich kann jetzt sogar Software von damals in meinem Browser ausführen (https://archive.org/details/msdos_Oregon_Trail_The_1990). Viel Glück beim Versuch, Hardware zu erhalten, mit der Sie eine 5 1/4 Zoll-Diskette mit Ihrem modernen PC lesen können. Josef vor 7 Jahren 0
2
MAP

Eine andere Antwort darauf ist "offline", dh das Speichern an einem Ort, der sicher ist und nicht an einen Computer angeschlossen ist. Ich behalte eine vollständige, unverschlüsselte Kopie aller meiner Schlüssel auf einer Diskette (ich mache das schon lange so, jetzt ist es eine Gewohnheit) im Safe der Bank. Der Grund, warum ich sie in den Medien der Bank unverschlüsselt halte, ist, dass ein mögliches Szenario für das "Verlieren" des Schlüssels das Vergessen der Passphrase ist (meine Passphrasen neigen zu einer Menge seltsamer Satzzeichen und Schreibweisen und das Vergessen nur einer davon macht es.) unbrauchbar). Ich musste nie auf die Kopie zurückgreifen, aber ich plane das Schlimmste.

Darüber hinaus gibt es in den Medien eine wichtige Widerrufsbelehrung und eine Notiz, in der meine Erben darüber informiert werden, was damit zu tun ist, falls ich nicht mehr verfügbar bin.

Wenn Sie den privaten privaten Signaturschlüssel sichern, kann dies nicht zum Generieren eines Sperrzertifikats verwendet werden? In welchem ​​Szenario ist es sinnvoll, das Sperrzertifikat zu sichern? Matei David vor 7 Jahren 0
Ah ja, aber Sie müssen verstehen, dass ich nicht sicher sein kann, wie sehr die Person, die die Anfrage ausführt, ein Computer ist. (Beachten Sie, dass nicht ich es, sondern "meine Erben" verwenden wird). Wenn der Widerruf bereits generiert wurde und Anweisungen zum Senden einer E-Mail mit angehängter Datei gesendet werden, ist es weniger wahrscheinlich, dass sie falsch verwaltet werden. MAP vor 7 Jahren 0
@MateiDavid Beim Erstellen eines Sperrzertifikats, wenn Sie das Schlüsselpaar zum ersten Mal erstellen, und beim Speichern dieses Sperrzertifikats können Sie den Schlüssel widerrufen, wenn der Schlüssel für Sie nicht verfügbar ist. * Es gibt gültige Szenarien, in denen dies passieren kann. * Natürlich müssen Sie das Widerrufszertifikat sehr gut bewahren, denn jeder, der es in die Hände bekommt, kann es veröffentlichen und somit Ihr Schlüsselpaar widerrufen. Ich bin mir jedoch nicht sicher, wie ein Widerrufszertifikat überhaupt auf die Situation des OP anwendbar ist. a CVn vor 7 Jahren 0
Ja, wir sind in ein Rattenloch gegangen. Ich bitte um Entschuldigung, meine Erwähnung der Widerrufsbescheinigung dient nur der Vollständigkeit der Beschreibung der Schritte, die ich unternehme, und hatte nichts mit der ursprünglichen Frage zu tun. MAP vor 7 Jahren 0