Ich habe eine verschlüsselte Datei mit symmetrischer Verschlüsselung erstellt.
gpg -c 50GBfile
Jetzt möchte ich das Original löschen. Bevor ich das Original lösche, möchte ich die Integrität der verschlüsselten Datei überprüfen. (Ähnlich wie ZIP-Dateien CRC verwenden). Bietet gpg eine Möglichkeit, den Inhalt symmetrisch verschlüsselter Dateien zu überprüfen?
Antwort1
Wenn Sie die Datei mit verschlüsselt haben gpg -c
, können Sie den Inhalt der Datei nicht überprüfen, ohne die Passphrase zu kennen. Das ist eine Kerneigenschaft der symmetrischen Verschlüsselung. Da Sie die Passphrase sowieso angeben müssen, führen Sie den eigentlichen Test durch: Dekomprimieren Sie die Datei und vergleichen Sie sie mit dem Original. Unter Linux oder einer anderen Unix-Variante:
gpg -d <50GBfile.gpg | cmp - 50GBfile
Wenn Sie eine zusätzliche Integritätsgarantie wünschen, können Sie die Datei mit Ihrem privaten Schlüssel signieren, indem -s
Sie beim Verschlüsseln der Datei die Option hinzufügen.
gpg -c -s 50GBfile
Anschließend können Sie die Signatur mit überprüfen gpg --verify 50GBfile.gpg
. Beachten Sie, dass dies nur die Garantie dafür bietet, dass die Datei eine der von Ihnen signierten Dateien ist. Es schützt Sie nicht vor dem Fehler, dass Sie die falsche Datei signiert haben.
Wenn Sie eine asymmetrische Verschlüsselung verwenden (mit dem öffentlichen Schlüssel des Empfängers – Ihrem eigenen öffentlichen Schlüssel), benötigen Sie zur Überprüfung, ob die Datei den gewünschten Inhalt hat, den privaten Schlüssel des Empfängers. Bei mehreren Empfängern reicht der private Schlüssel eines beliebigen Empfängers aus. Normalerweise würden Sie Ihren eigenen Schlüssel als Empfänger aller verschlüsselten Nachrichten angeben, mit encrypt-to
oder hidden-encrypt-to
in der GPG-Konfigurationsdatei.
Antwort2
Die einzige „Verifizierungs“-Operation in GNUPG ist die Signaturüberprüfung., das im Wesentlichen dieHashder verschlüsselten Datei mit einem öffentlichen Schlüssel (=Zeichen).
Meiner Meinung nach bedeutet dies, dass, wenn die Ausgabebits während der Verschlüsselung der Datei beschädigt werden, der Hash gegen denBeschädigte Datei. Sie werden dies nie entdecken, wenn Sie dieUnterschriftdieser Datei, da Sie eine bereits beschädigte Datei signiert haben.
Die einzige Möglichkeit, eine verschlüsselte Datei zweifelsfrei auf Beschädigungen zu überprüfen, besteht offenbar darin, den langwierigen Prozess der Entschlüsselung der generierten Datei zu durchlaufen und ihren Hash mit dem Original zu vergleichen.
Und das ist, was Sepero oben angeboten hat, aber statt„Sie könnten überprüfen …“es sollte sein"DernurMöglichkeit zur Überprüfung …“
Update – um den Punkt noch einmal zu verdeutlichen:
Vor ein paar Minuten habe ich genau das getan: Ich habe eine 9,8 GB große Sicherungsdatei in 5 RAR-Teile aufgeteilt und jedes Teil symmetrisch mit GNU/NGP verschlüsselt. Bevor ich die RAR-Teile gelöscht habe, habe ich die Integrität der verschlüsselten Teile wie oben beschrieben überprüft: 1 von 5 hat den Hash-Test nicht bestanden. Ich habe dieses Teil erneut entschlüsselt und jetzt stimmte der Hash des entschlüsselten Teils mit dem ursprünglichen RAR-Teil überein.
Ich habe den schlecht entschlüsselten RAR-Teil mit dem gut entschlüsselten Teil binär verglichen und der einzige Unterschied zwischen diesen 2 GB großen Dateien war ein Byte: C8 gegenüber 48 – was durch einen 1-Bit-Flip verursacht wird (d. h. 11001000 gegenüber 01001000).
Die Moral der Geschichte ist, dass wenn gnupg auf einem guten WIN7-System und einer guten Festplatte beim Entschlüsseln ein bisschen umdrehen kann, es das auch beim Verschlüsseln kann. Ich werde diesen Schritt zur Integritätsüberprüfung nie wieder überspringen.
Antwort3
Sie können es durch Extrahieren und Vergleichen der MD5-Summe mit dem Original überprüfen.
$ gpg -d 50GBfile | md5sum
gpg: AES256 encrypted data
gpg: gpg-agent is not available in this session
gpg: encrypted with 1 passphrase
1df1aaffb20c5255e282d6f584489993 -
$ md5sum 50GBfile
1df1aaffb20c5255e282d6f584489993 50GBfile
Antwort4
Wenn Sie die Integrität überprüfen möchten, müssen SieZeichenauch die Originaldatei.
gpg --encrypt --signDatei
Abschließend können Sie die Integrität (basierend auf der Signatur) durch Entschlüsseln der Datei überprüfen (die Integritätsprüfung erfolgt automatisch).
gpg --entschlüsselndatei.asc