it-swarm.com.de

Wie verwende ich OpenSSL zum Ver- / Entschlüsseln von Dateien?

Ich möchte eine Datei mit einem Passwort verschlüsseln und entschlüsseln.

Wie kann ich OpenSSL dazu verwenden?

176
aF.

Verschlüsseln:

openssl aes-256-cbc -a -salt -in secrets.txt -out secrets.txt.enc

Entschlüsseln:

openssl aes-256-cbc -d -a -in secrets.txt.enc -out secrets.txt.new

Weitere Details zu den verschiedenen Flags

240
Szocske

Kurze Antwort:

Sie möchten wahrscheinlich gpg anstelle von openssl verwenden, siehe "Zusätzliche Hinweise" am Ende dieser Antwort. Aber um die Frage mit openssl zu beantworten:

Zum Verschlüsseln:

openssl enc -aes-256-cbc -in un_encrypted.data -out encrypted.data

Zum Entschlüsseln:

openssl enc -d -aes-256-cbc -in encrypted.data -out un_encrypted.data

Hinweis: Beim Ver- oder Entschlüsseln werden Sie zur Eingabe eines Kennworts aufgefordert.


Lange Antwort:

Ihre beste Informationsquelle für openssl enc wäre wahrscheinlich: https://www.openssl.org/docs/apps/enc.html

Befehlszeile: openssl enc hat die folgende Form:

openssl enc -ciphername [-in filename] [-out filename] [-pass arg]
[-e] [-d] [-a/-base64] [-A] [-k password] [-kfile filename] 
[-K key] [-iv IV] [-S salt] [-salt] [-nosalt] [-z] [-md] [-p] [-P] 
[-bufsize number] [-nopad] [-debug] [-none] [-engine id]

Erklärung der nützlichsten Parameter in Bezug auf Ihre Frage:

-e
    Encrypt the input data: this is the default.

-d    
    Decrypt the input data.

-k <password>
    Only use this if you want to pass the password as an argument. 
    Usually you can leave this out and you will be prompted for a 
    password. The password is used to derive the actual key which 
    is used to encrypt your data. Using this parameter is typically
    not considered secure because your password appears in 
    plain-text on the command line and will likely be recorded in 
    bash history.

-kfile <filename>
    Read the password from the first line of <filename> instead of
    from the command line as above.

-a
    base64 process the data. This means that if encryption is taking 
    place the data is base64 encoded after encryption. If decryption 
    is set then the input data is base64 decoded before being 
    decrypted.
    You likely DON'T need to use this. This will likely increase the
    file size for non-text data. Only use this if you need to send 
    data in the form of text format via email etc.

-salt
    To use a salt (randomly generated) when encrypting. You always
    want to use a salt while encrypting. This parameter is actually
    redundant because a salt is used whether you use this or not 
    which is why it was not used in the "Short Answer" above!

-K key    
    The actual key to use: this must be represented as a string
    comprised only of hex digits. If only the key is specified, the
    IV must additionally be specified using the -iv option. When 
    both a key and a password are specified, the key given with the
    -K option will be used and the IV generated from the password 
    will be taken. It probably does not make much sense to specify 
    both key and password.

-iv IV
    The actual IV to use: this must be represented as a string 
    comprised only of hex digits. When only the key is specified 
    using the -K option, the IV must explicitly be defined. When a
    password is being specified using one of the other options, the 
    IV is generated from this password.

Zusätzliche Bemerkungen:

Obwohl Sie speziell nach OpenSSL gefragt haben, möchten Sie möglicherweise GPG stattdessen zum Zwecke der Verschlüsselung verwenden, basierend auf diesem Artikel OpenSSL vs. GPG zum Verschlüsseln von Offsite-Backups?

Um mit GPG dasselbe zu tun, würden Sie die folgenden Befehle verwenden:

Zum Verschlüsseln:

gpg --output encrypted.data --symmetric --cipher-algo AES256 un_encrypted.data

Zum Entschlüsseln:

gpg --output un_encrypted.data --decrypt encrypted.data

Hinweis: Beim Ver- oder Entschlüsseln werden Sie zur Eingabe eines Kennworts aufgefordert.

141
moo

Verschlüsseln:

openssl enc -in infile.txt -out encrypted.dat -e -aes256 -k symmetrickey

Entschlüsseln:

openssl enc -in encrypted.dat -out outfile.txt -d -aes256 -k symmetrickey

Einzelheiten finden Sie in den openssl(1) -Dokumenten.

32
Ken Cheung

Zum Verschlüsseln:

$ openssl bf < arquivo.txt > arquivo.txt.bf

Zum Entschlüsseln:

$ openssl bf -d < arquivo.txt.bf > arquivo.txt

bf === Blowfish im CBC-Modus

4
fabio almeida

Beachten Sie, dass die OpenSSL-CLI einen schwachen, nicht standardmäßigen Algorithmus verwendet, um die Passphrase in einen Schlüssel zu konvertieren. Wenn Sie GPG installieren, werden verschiedene Dateien zu Ihrem Basisverzeichnis hinzugefügt und ein Hintergrundprozess für den gpg-Agenten ausgeführt. Wenn Sie maximale Portabilität und Kontrolle mit vorhandenen Tools wünschen, können Sie mit PHP oder Python auf die APIs der niedrigeren Ebene zugreifen und direkt einen vollständigen AES-Schlüssel und IV übergeben.

Beispiel PHP Aufruf über Bash:

IV='c2FtcGxlLWFlcy1pdjEyMw=='
KEY='Twsn8eh2w2HbVCF5zKArlY+Mv5ZwVyaGlk5QkeoSlmc='
INPUT=123456789023456

ENCRYPTED=$(php -r "print(openssl_encrypt('$INPUT','aes-256-ctr',base64_decode('$KEY'),OPENSSL_ZERO_PADDING,base64_decode('$IV')));")
echo '$ENCRYPTED='$ENCRYPTED
DECRYPTED=$(php -r "print(openssl_decrypt('$ENCRYPTED','aes-256-ctr',base64_decode('$KEY'),OPENSSL_ZERO_PADDING,base64_decode('$IV')));")
echo '$DECRYPTED='$DECRYPTED

Dies gibt aus:

$ENCRYPTED=nzRi252dayEsGXZOTPXW
$DECRYPTED=123456789023456

Sie können auch die Funktion openssl_pbkdf2 von PHP verwenden, um eine Passphrase sicher in einen Schlüssel zu konvertieren.

3
zeroimpl

NICHT DIE OPENSSL-STANDARD-SCHLÜSSELABLEITUNG VERWENDEN.

Derzeit wird die akzeptierte Antwort verwendet und ist nicht mehr empfohlen und sicher.

Es ist sehr gut möglich, dass ein Angreifer den Schlüssel einfach mit roher Gewalt drückt.

https://www.ietf.org/rfc/rfc2898.txt

PBKDF1 wendet eine Hash-Funktion an, die MD2 [6], MD5 [19] oder SHA-1 [18] sein soll, um Schlüssel abzuleiten. Die Länge des abgeleiteten Schlüssels ist durch die Länge der Hash-Funktionsausgabe begrenzt, die 16 Oktetts für MD2 und MD5 und 20 Oktetts für SHA-1 beträgt. PBKDF1 ist mit dem Schlüsselableitungsprozess in PKCS # 5 v1.5 kompatibel. PBKDF1 wird nur aus Gründen der Kompatibilität mit vorhandenen Anwendungen empfohlen, da die von ihm erzeugten Schlüssel für einige Anwendungen möglicherweise nicht groß genug sind.

PBKDF2 wendet eine Pseudozufallsfunktion an (ein Beispiel finden Sie in Anhang B.1), um Schlüssel abzuleiten. Die Länge des abgeleiteten Schlüssels ist im Wesentlichen unbegrenzt. (Der maximale effektive Suchraum für den abgeleiteten Schlüssel kann jedoch durch die Struktur der zugrunde liegenden Pseudozufallsfunktion begrenzt sein. Weitere Informationen finden Sie in Anhang B.1.) PBKDF2 wird für neue Anwendungen empfohlen.

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 : Die Iterationen bei der Entschlüsselung müssen mit den 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/399

Wir haben auch genug Leute, die GPG empfehlen. Lies die verdammte Frage.

3
Arnold Balliu

Aktualisierung mit einem zufällig generierten öffentlichen Schlüssel.

Verschlüsselung:

openssl enc -aes-256-cbc -a -salt -in {raw data} -out {encrypted data} -pass file:{random key}

Entschlüsseln:

openssl enc -d -aes-256-cbc -in {ciphered data} -out {raw data}

Ich habe eine vollständige Anleitung dazu unter http://bigthinkingapplied.com/key-based-encryption-using-openssl/

3
nneko

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 zerkleinert. Das Gefährliche daran ist jedoch, dass Sie nach dem Löschen der unverschlüsselten Originaldatei sicherstellen müssen, dass Sie sich an Ihr Kennwort erinnern. Andernfalls können Sie Ihre Datei nicht auf andere Weise entschlüsseln.

Hier der Link auf Github

https://github.com/EgbieAnderson1/linux_file_encryptor/blob/master/file_encrypt.py

2