Ich möchte eine Datei mit einem Passwort verschlüsseln und entschlüsseln.
Wie kann ich dazu OpenSSL verwenden?
encryption
openssl
aF.
quelle
quelle
PKCS5_PBKDF2_HMAC
. Sie sollten dieEVP_*
Funktionen zum Ver- und Entschlüsseln verwenden. Siehe EVP Symmetric Encryption and Decryption im OpenSSL-Wiki. In der Tat sollten Sie wahrscheinlich eine authentifizierte Verschlüsselung verwenden, da diese sowohl Vertraulichkeit als auch Authentizität bietet . Siehe EVP-authentifizierte Verschlüsselung und Entschlüsselung im OpenSSL-Wiki.Antworten:
Verschlüsseln:
Entschlüsseln:
Weitere Details zu den verschiedenen Flags
quelle
-md sha256
zu Ihrem Befehl zum Codieren und Decodieren hinzufügen , wenn Sie diese Datei auf einem anderen Computer verwenden möchten . Das sollte Sie gegen Inkompatibilitäten / Unterschiede in der OpenSSL-VersionKurze Antwort:
Sie möchten wahrscheinlich
gpg
stattdessen verwendenopenssl
, siehe "Zusätzliche Hinweise" am Ende dieser Antwort. Aber um die Frage zu beantworten mitopenssl
:So verschlüsseln Sie:
So entschlüsseln Sie:
Hinweis: Beim Ver- oder Entschlüsseln werden Sie zur Eingabe eines Kennworts aufgefordert.
Lange Antwort:
Ihre beste Informationsquelle
openssl enc
wäre wahrscheinlich: https://www.openssl.org/docs/man1.1.1/man1/enc.htmlBefehlszeile:
openssl enc
hat folgende Form:Erklärung der nützlichsten Parameter in Bezug auf Ihre Frage:
Zusätzliche Bemerkungen:
Obwohl Sie speziell nach OpenSSL gefragt haben, möchten Sie möglicherweise GPG zum Zwecke der Verschlüsselung verwenden, die auf diesem Artikel basiert. OpenSSL vs GPG zum Verschlüsseln von externen Backups?
Um GPG zu verwenden, verwenden Sie die folgenden Befehle:
So verschlüsseln Sie:
So entschlüsseln Sie:
Hinweis: Beim Ver- oder Entschlüsseln werden Sie zur Eingabe eines Kennworts aufgefordert.
quelle
gpg
lässt mich eine Datei entschlüsseln, ohne zur Eingabe eines Passworts aufgefordert zu werden. Es sieht so aus, als ob das Passwort für einen bestimmten Zeitraum gespeichert ist, was ich nicht möchte.--no-symkey-cache
das Caching deaktiviert, wenn gpg mit verwendet wird--symmetric
, selbst wenn der Agent ausgeführt wird.Verschlüsseln:
Entschlüsseln:
Einzelheiten finden Sie in den
openssl(1)
Dokumenten.quelle
-k symmetrickey
durch-pass stdin
oder-pass 'pass:PASSWORD'
-k symmetrickey
irreführend ist. Die-k
Option wird zur Angabe eines Kennworts verwendet, von dem OpenSSL den symmetrischen Schlüssel ableitet. Wenn Sie den symmetrischen Schlüssel angeben möchten, müssen Sie die-K
Option verwenden.VERWENDEN SIE KEINE OPENSSL DEFAULT KEY-ABLEITUNG.
Derzeit wird die akzeptierte Antwort verwendet und sie wird nicht mehr empfohlen und ist nicht mehr sicher.
Es ist sehr gut möglich, dass ein Angreifer den Schlüssel einfach brutal erzwingt.
https://www.ietf.org/rfc/rfc2898.txt
Mach das:
openssl enc -aes-256-cbc -pbkdf2 -iter 20000 -in hello -out hello.enc -k meow
openssl enc -d -aes-256-cbc -pbkdf2 -iter 20000 -in hello.enc -out hello.out
Hinweis : Iterationen bei der Entschlüsselung müssen mit Iterationen bei der Verschlüsselung identisch sein.
Iterationen müssen mindestens 10000 sein. Hier ist eine gute Antwort auf die Anzahl der Iterationen: https://security.stackexchange.com/a/3993
Außerdem ... haben wir hier genug Leute, die GPG empfehlen. Lies die verdammte Frage.
quelle
So verschlüsseln Sie:
So entschlüsseln Sie:
bf === Blowfish im CBC-Modus
quelle
Aktualisieren Sie mit einem zufällig generierten öffentlichen Schlüssel.
Encypt:
Entschlüsseln:
Ich habe ein vollständiges Tutorial dazu unter http://bigthinkingapplied.com/key-based-encryption-using-openssl/
quelle
Beachten Sie, dass die OpenSSL-CLI einen schwachen, nicht standardmäßigen Algorithmus verwendet, um die Passphrase in einen Schlüssel zu konvertieren. Die Installation von GPG führt dazu, dass verschiedene Dateien zu Ihrem Home-Verzeichnis hinzugefügt werden und ein Hintergrundprozess für einen GPG-Agenten ausgeführt wird. Wenn Sie maximale Portabilität und Kontrolle mit vorhandenen Tools wünschen, können Sie mit PHP oder Python auf die untergeordneten APIs zugreifen und direkt einen vollständigen AES-Schlüssel und IV übergeben.
Beispiel für einen PHP-Aufruf über Bash:
Dies gibt aus:
Sie können auch die PHP-
openssl_pbkdf2
Funktion verwenden, um eine Passphrase sicher in einen Schlüssel umzuwandeln.quelle
Es gibt ein Open-Source-Programm, das ich online finde und das openssl zum Ver- und Entschlüsseln von Dateien verwendet. Dies geschieht mit einem einzigen Passwort. Das Tolle an diesem Open Source-Skript ist, dass es die ursprüngliche unverschlüsselte Datei löscht, indem es die Datei vernichtet. Das Gefährliche ist jedoch, dass Sie, sobald die ursprüngliche unverschlüsselte Datei verschwunden ist, sicherstellen müssen, dass Sie sich an Ihr Passwort erinnern, da dies sonst keine andere Möglichkeit ist, Ihre Datei zu entschlüsseln.
Hier ist der Link auf Github
https://github.com/EgbieAnderson1/linux_file_encryptor/blob/master/file_encrypt.py
quelle
Wie in den anderen Antworten erwähnt, verwendeten frühere Versionen von openssl eine Ableitungsfunktion für schwache Schlüssel, um einen AES-Verschlüsselungsschlüssel aus dem Kennwort abzuleiten. OpenSL v1.1.1 unterstützt jedoch eine stärkere Funktion zur Schlüsselableitung, bei der der Schlüssel aus dem Kennwort
pbkdf2
mit einem zufällig generierten Salt und mehreren Iterationen von sha256-Hashing (standardmäßig 10.000) abgeleitet wird.So verschlüsseln Sie eine Datei:
So entschlüsseln Sie eine Datei:
quelle
Zusätzliche Kommentare zu mti2935 gute Antwort.
Je höher die Iteration, desto besser der Schutz vor roher Gewalt. Sie sollten eine hohe Iteration verwenden, da Sie sich Leistung / Ressourcen leisten können.
Auf meinem alten Intel i3-7100 verschlüsselt eine ziemlich große Datei 1,5 GB:
Kein wirklicher Unterschied, habe aber die Speichernutzung nicht überprüft (?)
Mit den heutigen GPUs und den noch schnelleren von morgen scheint jede Sekunde eine Brute-Force-Iteration in Milliardenhöhe möglich zu sein.
Vor 12 Jahren
NVIDIA GeForce 8800 Ultra
konnte a über 200.000 Millionen / Sek. Iterationen iterieren (MD5-Hashing allerdings)Quelle: Ainane-Barrett-Johnson-Vivar-OpenSSL.pdf
quelle