So exportieren Sie einen privaten / geheimen ASC-Schlüssel zum Entschlüsseln von GPG-Dateien

88

Hintergrund: Mein Chef hat versucht, einen ASC-Schlüssel mit öffentlichen und privaten Teilen in mich zu exportieren, aber wenn ich die Datei erhalte, wird der private Teil nie geladen und es werden keine Dateien entschlüsselt.

Wir haben versucht, den ASC-Schlüssel zu exportieren, indem wir:

  • Windows-Anwendung Kleopatra 2.1 (in gpg4win enthalten)
  • Windows Application GNU-Datenschutzassistent (in gpg4win enthalten)

            Error: "Decryption failed. Secret Key Not available." 
    

Wie exportiert man einen geheimen oder privaten ASC-Schlüssel richtig, um GPG-Dateien zu entschlüsseln?

Brian McCarthy
quelle

Antworten:

185

Sie können den privaten Schlüssel mit dem Befehlszeilentool aus GPG exportieren . Es funktioniert auf der Windows-Shell. Verwenden Sie den folgenden Befehl:

gpg --export-secret-keys

Ein normaler Export mit --exportenthält keine privaten Schlüssel, daher müssen Sie verwenden --export-secret-keys.

Bearbeiten:

Um die Informationen in meinen Kommentaren zusammenzufassen, ist dies der Befehl, mit dem Sie einen bestimmten Schlüssel mit der ID 1234ABCD in die Datei secret.asc exportieren können:

gpg --export-secret-keys --armor 1234ABCD > secret.asc

Sie finden die ID, die Sie benötigen, mit dem folgenden Befehl. Die ID ist der zweite Teil der zweiten Spalte:

gpg --list-keys

So exportieren Sie nur einen bestimmten geheimen Schlüssel anstelle aller:

gpg --export-secret-keys keyIDNumber > exportedKeyFilename.asc

keyIDNumber ist die Nummer der Schlüssel-ID für den gewünschten Schlüssel, den Sie exportieren möchten.

Demento
quelle
4
@Brian: Dadurch wird der Schlüssel an die Konsole ausgegeben. Wenn Sie es in einer Datei speichern möchten, können Sie die Ausgabe in einen beliebigen Dateinamen umleiten ("gpg --export-secret-keys> secret.asc").
Demento
5
@Brian: Dies gibt Ihnen die Ausgabe in ASCII und nicht in Binär. Wenn Sie es in einer Datei aufbewahren, spielt es keine Rolle. Aber sobald Sie es auf andere Weise weitergeben möchten, ist die ASCII-Version viel einfacher zu handhaben (z. B. Inline-Versand in einer E-Mail)
Demento
8
Vielleicht möchten Sie Ihren geheimen Schlüssel an einen anderen Ort bringen. In diesem Fall sollten Sie die exportierten Daten verschlüsseln: "gpg --export-secret-keys keyIDNumber | gpg -c> verschlüsselt" entschlüsseln Sie sie mit "gpg -o unverschlüsselt verschlüsselt".
Rockdaboot
2
Aus GnuPG exportierte Schlüssel bleiben verschlüsselt (weshalb Sie die Passphrase für den privaten Schlüssel nicht eingeben müssen), sodass Sie sie nicht erneut verschlüsseln müssen.
Ferry Boender
1
@FerryBoender Bist du dir da sicher ?
Josh Habdas
32

Alle oben genannten Antworten sind korrekt, aber möglicherweise fehlt ein entscheidender Schritt. Sie müssen den importierten Schlüssel bearbeiten und diesem Schlüssel "letztendlich vertrauen"

gpg --edit-key (keyIDNumber)
gpg> trust

Please decide how far you trust this user to correctly verify other users' keys
(by looking at passports, checking fingerprints from different sources, etc.)

  1 = I don't know or won't say
  2 = I do NOT trust
  3 = I trust marginally
  4 = I trust fully
  5 = I trust ultimately
  m = back to the main menu

und wählen Sie 5, um diesen importierten privaten Schlüssel als einen Ihrer Schlüssel zu aktivieren

Higuita
quelle
18

Siehe die Behandlung von Dark Otter

https://montemazuma.wordpress.com/2010/03/01/moving-a-gpg-key-privately/

Wenn die Site nicht verfügbar ist, verweisen Sie auf das archive.org-Backup:

https://web.archive.org/web/20170518155052/https://montemazuma.wordpress.com/2010/03/01/moving-a-gpg-key-privately/

Dies beinhaltet eine einigermaßen sichere Möglichkeit, Schlüssel zu übertragen. Sie können diese Empfehlung zur wiederholten Verwendung in die unten gezeigten Shell-Skripte einfügen.

Holen Sie sich zuerst die gewünschte KEYID aus der Liste von

$ gpg -K

Notieren Sie in der resultierenden Liste die KEYID (die 8 Hexadezimalzahlen nach Sek.), Die Sie für die Übertragung benötigen.

Rufen Sie dann die getesteten Shell-Skripte "export_private_key" auf dem ersten Konto auf und generieren Sie Ihre pubkey.gpg + keys.asc. Rufen Sie anschließend auf dem zweiten Konto "import_private_key" auf. Hier ist ihr Inhalt mit cat angezeigt (Inhalt kopieren und einfügen):

$ cat export_private_key 
gpg -K
echo "select private key"
read KEYID
gpg --output pubkey.gpg --export $KEYID
echo REMEMBER THE COMING PASS-PHRASE
gpg --output - --export-secret-key $KEYID | \
   cat pubkey.gpg - | \
   gpg --armor --output keys.asc --symmetric --cipher-algo AES256
ls -l pubkey.gpg keys.asc
####################  E X P O R T _ P R I V A T E _ K E Y  #####################

Übertragen Sie nun auf irgendeine Weise das "pubkey.gpg" (falls erforderlich) und das private "keys.asc" auf das zweite Konto und rufen Sie das unten gezeigte Programm auf.

$ cat import_private_key 
gpg --no-use-agent --output - keys.asc | gpg --import
###################  I M P O R T _ P R I V A T E _ K E Y  ######################

In Otters Geist "Und das sollte das sein".

Wolfram J.
quelle
Vielen Dank, dass das Skript sowohl den öffentlichen als auch den privaten Schlüssel in einer durch Passphrasen geschützten Datei enthält. Macht mein Leben viel besser!
Codekoala
Option --no-use-agentist in gpg Version 2 veraltet.
Josh Habdas
9

Ich denke, Sie hatten den privaten Schlüssel noch nicht importiert, da der Nachrichtenfehler lautete: So importieren Sie den öffentlichen / privaten Schlüssel von gnupg:

gpg --import mypub_key
gpg --allow-secret-key-import --import myprv_key
SIFE
quelle
Ich habe nach dem Export von einem Computer gefragt, der funktioniert ... Sie können den Schlüssel nur importieren, wenn er sich auf einem lokalen Server befindet.
Brian McCarthy
@ Brian McCarthy: Was versuchst du zu sagen?
SIFE
Müssen wir den öffentlichen Schlüssel wirklich importieren, wenn der private bereits importiert wurde? Soweit ich weiß, kann ein öffentlicher Schlüssel aus einem privaten Schlüssel generiert werden.
Farhany
@farhany Ich denke ja, weil Sie es brauchen, wenn Sie Ihre Nachricht unterschreiben.
SIFE
6

das hat bei mir funktioniert:

   gpg -a --export-secret-keys > exportedKeyFilename.asc 

Sie können keyfilename.asc mit einem beliebigen Namen benennen, solange Sie die Erweiterung .asc beibehalten.
Dieser Befehl kopiert alle geheimen Schlüssel auf dem Computer eines Benutzers nach keyfilename.asc im Arbeitsverzeichnis, in dem der Befehl aufgerufen wurde.

So exportieren Sie nur einen bestimmten geheimen Schlüssel anstelle aller:

   gpg -a --export-secret-keys keyIDNumber > exportedKeyFilename.asc

keyIDNumber ist die Nummer der Schlüssel-ID für den gewünschten Schlüssel, den Sie exportieren möchten.

Brian McCarthy
quelle
1
Sie können alle verfügbaren Schlüssel mit "--list-keys" auflisten. Die zweite Spalte enthält IDs wie "2048g / 1234ABCD". Suchen Sie den gewünschten Schlüssel und exportieren Sie ihn mit "gpg --export-secret-keys 1234ABCD> secret.asc". Ändern Sie dabei natürlich 1234ABCD mit der richtigen ID. Sie können auch das Flag "-a" hinzufügen. Es schreibt die Ausgabe mit ASCII-Zeichen, nur für den Fall, dass die Binärausgabe Probleme verursacht.
Demento
@ Demento, danke für das zusätzliche Feedback ... Ich werde das der Antwort hinzufügen
Brian McCarthy
2
Sie brauchen immer noch die -a, wenn Sie wirklich
aufsteigen
Wie importieren Sie sie dann auf einen anderen Computer?
Natim
@Natim Ich stelle mir vor, du gehst exportedKeyFilename.ascauf den anderen Computer und machst gpg --allow-secret-key-import --import exportedKeyFilename.ascdas dann im Verzeichnis mit der .ascDatei. Siehe: unix.stackexchange.com/questions/184947/…
Brōtsyorfuzthrāx
5

Ähnlich wie bei der Antwort von @Wolfram J gibt es hier eine Methode, um Ihren privaten Schlüssel mit einer Passphrase zu verschlüsseln :

gpg --output - --armor --export $KEYID | \
    gpg --output private_key.asc --armor --symmetric --cipher-algo AES256

Und eine entsprechende Methode zum Entschlüsseln:

gpg private_key.asc
Mateen Ulhaq
quelle
5

1.Exportieren Sie einen geheimen Schlüssel (das hätte Ihr Chef für Sie tun sollen)

gpg --export-secret-keys yourKeyName > privateKey.asc

2.Importieren Sie den geheimen Schlüssel (importieren Sie Ihren privaten Schlüssel)

gpg --import privateKey.asc

3. Noch nicht fertig, müssen Sie letztendlich einem Schlüssel vertrauen. Sie müssen sicherstellen, dass Sie letztendlich auch einem Schlüssel vertrauen.

gpg --edit-key yourKeyName

Geben Sie trust, 5, y ein und beenden Sie das Programm

Quelle: https://medium.com/@GalarnykMichael/public-key-asymmetric-cryptography-using-gpg-5a8d914c9bca

Michael James Kali Galarnyk
quelle