Angenommen, ich habe eine (möglicherweise große) Datei mit GPG verschlüsselt. z.B
gpg --recipient "Some Name" -o this_file.gpg --encrypt this_file.txt
Ist es möglich, einen weiteren Empfänger hinzuzufügen, ohne zuerst die Datei zu entschlüsseln, gefolgt von einer weiteren Verschlüsselung?
--symmetric
dafür. Mit--recipient
nutzt th öffentlichen Schlüssel des Empfängers. Es kann mehr als einen Empfänger geben, dies muss jedoch in einem Befehl erfolgen, nicht in zwei separaten Befehlen.gpg -e -r <name1> -r <name2> ... <file>
". Das habe ich aber selbst nicht versucht. Es passt zu dem, was ich vor vielen Jahren über Krypto gelernt habe, nämlich, dass es fast immer effizienter ist, schnelle symmetrische Algorithmen zum Verschlüsseln des Nachrichtentexts zu verwenden. Nur der Nachrichtenschlüssel wird mit langsamer asymmetrischer Verschlüsselung verschlüsselt.Antworten:
Kurze Antwort: nein
Beachten Sie zunächst, dass dies völlig unmöglich ist, wenn Sie nicht zu den Empfängern gehören. Sie haben nicht einmal die Möglichkeit, die Datei zu entschlüsseln, geschweige denn einen Empfänger hinzuzufügen. Auch wenn Sie es vor zwei Sekunden verschlüsselt haben.
Vorausgesetzt, Sie sind Empfänger, ist dies technisch möglich. Die Datei wird tatsächlich mit einem Sitzungsschlüssel verschlüsselt, und der Sitzungsschlüssel wird mit Ihrem öffentlichen Schlüssel verschlüsselt. Sie können den Sitzungsschlüssel also theoretisch entschlüsseln und in den Schlüssel einer anderen Person neu verschlüsseln und dann alles in einer Datei zusammenfassen, als ob Sie es wären hatte ursprünglich das Dokument für beide Personen verschlüsselt.
Allerdings GPG nicht über diese Fähigkeit . Das nächste, was Sie mit gpg erreichen können, ist
--show-session-key
Option, um den Sitzungsschlüssel abzurufen (der anscheinend auch die Datei entschlüsselt, in diesem Fall fehlt der Punkt).--override-session-key
zum Entschlüsseln der ursprünglichen Nachricht verwenden.quelle
1) Aus diesem Grund ist es immer eine gute Idee, eine Datei für sich selbst (sowie für die vorgesehenen Empfänger) zu verschlüsseln. RedGrittyBrick ist oben korrekt und beschreibt, wie GPG und PGP funktionieren, was oben in die Antwort von nathang einfließt.
2) Wenn Sie jedoch die ursprüngliche Datei haben, erstellen Sie am besten einfach eine neue verschlüsselte Datei für den neuen Empfänger.
Angenommen, Sie möchten nicht den von nathang vorgeschlagenen Weg des Sitzungsschlüssels beschreiten. Wenn Sie die Datei zunächst für sich selbst verschlüsselt haben (wie oben in # 1), entschlüsseln Sie sie und folgen Sie dann Schritt # 2 oben.
Wenn Sie weder das Original haben noch es für sich selbst verschlüsselt haben, können Sie die Daten nicht zurückerhalten und nicht an andere Personen verschlüsseln, ohne dass dieser erste Empfänger Ihnen eine Kopie zurücksendet.
quelle
Es ist nicht möglich , ohne Entschlüsselung überhaupt , aber es scheint , wie es sein sollte , ohne Entschlüsselung möglich in eine Datei :
Dies scheint jedoch (zumindest manchmal) zu einer beschädigten Datei zu führen, da
gpg
gleichzeitig in dieselbe Datei gelesen und geschrieben wird:Stattdessen können Sie (in einem Skript) Folgendes tun, um zu vermeiden, dass die entschlüsselte Datei verwaltet werden muss:
shred
Mit dieser-u
Option werden die Daten der angegebenen Datei sicher überschrieben und anschließend gelöscht. Ähnliche Programme gibt es auch für andere Plattformen wiesrm
Mac OS X.Oder Sie können Ihr Skript wie folgt schreiben (mit freundlicher Genehmigung von dave_thompson_085 ), um zu vermeiden, dass Sie die entschlüsselten Daten überhaupt in einer Datei speichern müssen:
quelle
gpg -d file.gpg | gpg -e ... -o file.new; mv file.new file.gpg
ihrem Platz belassen: oder ihren Spiegelmv file.gpg file.old; gpg -d file.old | gpg -e ... -o file.gpg
. Oder (vielleicht auch) behalten Sie die alte Inode geschickt bei :{ rm file.gpg; gpg -d /dev/fd/3; } 3<file.gpg | gpg -e ... -o file.gpg