2016-08-05 6 views
1

auf einem Unix-System, verschlüsseln ich eine Datei file1 mit OpenSSL AES-256-CBC: openssl aes-256-cbc -a -salt -in file1 -out file1.enc -k secretüberprüfen/verifizieren Entschlüsselung Geheimnis für OpenSSL

Die Entschlüsselung über openssl aes-256-cbc -d -a -in file1.enc -out file1.dec -k secret

getan wird Gibt es eine Möglichkeit zu überprüfen, dass das Geheimnis richtig ist, bevor der Entschlüsselungsprozess tatsächlich gestartet wird?

Meine Forschung hat bisher keine hilfreichen Ergebnisse gezeigt.

+0

Stack Overflow ist eine Website für Programmier- und Entwicklungsfragen. Diese Frage scheint off-topic zu sein, weil es nicht um Programmierung oder Entwicklung geht. Siehe [Welche Themen kann ich hier fragen?] (Http://stackoverflow.com/help/on-topic) in der Hilfe. Vielleicht [Super User] (http://superuser.com/) oder [Unix & Linux Stack Exchange] (http://unix.stackexchange.com/) wäre ein besserer Ort, um zu fragen. Siehe auch [Wo veröffentliche ich Fragen zu Dev Ops?] (Http://meta.stackexchange.com/q/134306). – jww

Antwort

1

Wenn Sie nur die verschlüsselten Daten haben, ist es unmöglich festzustellen, ob der Schlüssel vor der Entschlüsselung korrekt ist. Es ist auch unmöglich zu bestimmen, ob der Schlüssel nach der Entschlüsselung korrekt war, außer durch die Prüfung, ob die Daten sinnvoll sind, was Sie erwarten.

Sie müssten eine andere Methode hinzufügen, um festzustellen, ob der Schlüssel der richtige ist.

0

Was Sie fordern, ist eine Überprüfung auf Integrität und/oder Authentizität. AES im CBC-Modus bietet diese Funktionen nicht, nur einfache Verschlüsselung/Entschlüsselung.

Wenn Sie es brauchen, sollten Sie von CBC zu GCM-Modus wechseln. Es bietet Authentizität und Integritätsprüfung während der Entschlüsselung. Wenn die Entschlüsselung erfolgreich ist, sind Sie daher sicher, dass das Entschlüsselungsergebnis korrekt ist.

0

Wenn dies Ihr gesamtes System ist, dann hat OpenSSL keinen Mechanismus, um das Passwort vor der Entschlüsselung (oder in vielen Fällen sogar nach der Entschlüsselung) zu überprüfen. Sie können jedoch ein solches System erstellen und es sogar aus OpenSSL heraus aufbauen, wenn Sie darauf beschränkt sind.

Wenn wir es aus OpenSSL heraus aufbauen, dann ist der einfachste Weg, es zu lösen, nur einige bekannte Daten mit dem gleichen Passwort zu verschlüsseln. Kleben Sie den verschlüsselten Known-Plaintext und den verschlüsselten Real-Plaintext zusammen. Sie können sie auf viele Arten zusammenkleben; das einfachste in der Befehlszeilenform wäre, sie in separaten Dateien zu stecken und dann zusammen tar.

Wenn Sie zum Entschlüsseln bereit sind, reißen Sie sie auseinander und versuchen Sie, den bekannten Klartext zu entschlüsseln. Wenn es richtig entschlüsselt, dann bist du golden und du kannst deine echten Daten entschlüsseln.

OpenSSL hat keine besonders starke KDF, daher kann dieser Ansatz Brute-Force-Passwort-Cracking ein wenig einfacher machen (aber nicht einfacher, als wenn Ihre Datei einen bekannten Header hat).

Dies stellt jedoch nicht sicher, dass der Chiffretext unverändert ist. Ein Angreifer könnte es immer noch geändert haben und OpenSSL wird es nicht immer wissen. Es gibt Möglichkeiten, um dieses Problem zu beheben, indem Sie das Format weiter ändern, aber wieder bietet openssl keinen direkten Weg, den ich kenne. Der beste Ansatz hier hängt von Ihren genauen Einschränkungen ab.

Verwandte Themen