Wie verschlüssele ich eine Datei oder ein Verzeichnis unter Linux?

26

Was ist der beliebteste Befehl zum Verschlüsseln einer Datei oder eines Verzeichnisses in einem Terminal unter Linux?

Scott
quelle

Antworten:

31

Ich denke es wäre gpg. Die Syntax für Dateien und Verzeichnisse unterscheidet sich jedoch.

Verschlüsselung

Für Dateien (gibt Dateiname.gpg aus):

gpg -c filename

Für dirs:

gpg-zip -c -o file.gpg dirname

Entschlüsselung

Für Dateien (gibt Dateiname.gpg aus):

gpg filename.gpg

Für dirs:

gpg-zip -d file.gpg

Edit: Korrigiert, da @ Mk12 auf den Fehler der Komprimierung / Dekomprimierung bei der Verschlüsselung / Entschlüsselung hinwies.

Celebdor
quelle
Sollte das nicht "Verschlüsselung" und "Entschlüsselung" sein?
mk12
Niemand hat gesagt, wie man ein Verzeichnis verschlüsselt.
Chovy
1
@chovy Nicht das oben steht: Für Verzeichnisse: gpg-zip -c -o file.gpg dirname
celebdor
@celebdor hat das verpasst. Vielen Dank. edit: das geht bei mir nicht Ich bekomme eine seltsame verschlüsselte Ausgabe, wenn ich die Datei entschlüssele.
Chovy
@chovy: Tut mir leid das zu hören. Ich kann bestätigen, dass das oben gezeigte Ver- und Entschlüsseln von Verzeichnissen bei mir mit gpg-zip (GnuPG) 1.4.16 unter Mint 17 funktioniert hat.
Michael Scheper
10
  • mit openssl

openssl des3 -salt -in unencrypted-data.tar -out encrypted-data.tar.des3

Entschlüsseln:

openssl des3 -d -salt -in encrypted-data.tar.des3 -out unencrypted-data.tar

  • mit AES verschlüsseln

aescrypt -e -p password file.jpg

Entschlüsseln:

aescrypt -d -p password file.jpg.aes

Jet
quelle
1
+1, um zu zeigen, wie es mit openssl gemacht wird, was höchstwahrscheinlich sofort verfügbar ist.
DevSolar
In der Tat, aber 3DES wird als unsicher angesehen und sollte nicht verwendet werden. AES (aescrypt) ist eine viel bessere Option, siehe: stackoverflow.com/questions/1619212/…
jmng
2

Probieren Sie GnuPG .

So verschlüsseln Sie: gpg -c filename

Zum Entschlüsseln: gpg filename.gpg

slhck
quelle
2

Dies ist meine Methode mit OpenSSL und TAR

Öffnen Sie das verschlüsselte Verzeichnis:

openssl enc -aes-256-cbc -d -in ~/vault.tar.gz.dat | tar xz; thunar ~/vault

Verschlüsseltes Verzeichnis sperren:

tar cz vault/ | openssl enc -aes-256-cbc -out ~/vault.tar.gz.dat; rm -r ~/vault
Tom
quelle
1
rm -rlöscht keine Daten; es hebt lediglich die Verknüpfung auf. Sie müssen so etwas wie srmdas Löschen der Daten von der Festplatte verwenden.
Jbindel
2

Ich persönlich benutze aescryptmeistens.

      aescrypt -e "File" 

und entschlüsseln:

      aescrypt -d "File"

Oder es gibt mcrypt:

      mcrypt "File" 

und entschlüsseln:

      mcrypt -d "File"

Und für ein Verzeichnis schlage ich vor, das Verzeichnis zu tarieren und zu verschlüsseln. Dann entpacken Sie nach dem Entschlüsseln einfach die Datei:

      tar -cf "Dir.tar" Dir/

und zu enttarnen

      tar -xf "Dir.tar"
Matt
quelle
1

Wenn die höchste Sicherheitsstufe kein großes Problem darstellt (die Manpage von zip besagt, dass der Verschlüsselungsalgorithmus, der von zipfile-Dienstprogrammen verwendet wird, schwächer ist als PGP), bevorzuge ich zip und unzip. Es komprimiert meine Verzeichnisse und verschlüsselt gleichzeitig. Ich bevorzuge zip, weil Sie eine Art inkrementelles zip haben und verschlüsseln können, anstatt das Ganze erneut zu zippen und zu verschlüsseln. Besonders nützlich ist es, wenn das Verzeichnis sehr groß ist.

ZIP und verschlüsseln

zip file.zip file
zip -r directory.zip directory
zip --encrypt file.zip.enc file # prompt for password
zip --encrypt -r directory.zip.enc directory # prompt for password

Entpacken und entschlüsseln

unzip directory.zip.enc #Beware if any directory is present with the same name as the zipped file, then it would be overwritten. Hence I normally send the contents to another directory.

unzip directory.zip.enc -d directory-new # prompts for password
infoclogged
quelle
0

Vielleicht nicht sehr beliebt, aber ich habe an einem Projekt gearbeitet, bei dem mit wenigen Bash-Skripten alles mit minimaler Benutzerinteraktion verschlüsselt / entschlüsselt werden soll. Hier ist ein Link zum Hak5- Beitrag, der das Setup zum Testen erklärt.

Das Durchschneiden der Quellcodelogiken geschieht für jeden Datentyp, der von dem oben verknüpften Projekt verarbeitet werden kann

_gnupg_encrypt_opts="--always-trust --armor --batch --encrypt --recipient [email protected]"
 _bulk_output_dir="some_path"
_arbitrary_parsed_output="some_file.gpg"
## If file make encrypted time stamped file with similar name
_path_to_file="${_mapped_input}"
_path_to_output="${_bulk_output_dir}/$(date -u +%s)_${_path_to_file##*/}.gpg"
cat "${_path_to_file}" | gpg ${gpg _gnupg_encrypt_opts} > "${_path_to_output}"
## else if directory make compressed encrypted time stamped output file
_path_to_dir="${_mapped_input}"
_path_to_output="${_bulk_output_dir}/$(date -u +%s)_dir.tgz.gpg
tar -cz - "${_path_to_dir}" | gpg ${gpg _gnupg_encrypt_opts} > "${_path_to_output}"
## else if something else append encrypted output to file
_path_to_output="${_arbitrary_parsed_output}"
cat <<<"${_mapped_input}" | gpg ${gpg _gnupg_encrypt_opts} >> "${_path_to_output}"

Die ${_mapped_input}Variable wird gesetzt, indem eine mkfifoNamed-Pipe-Datei gelesen und alles, was gelesen wird, auf ein Array gesetzt wird, mit mapfile -t _lines < "${_file_to_map}"dem es später erweitert und in einem ${_mapped_input}... etwas verschachtelten Format gespeichert wird. Experimentelle Funktionen können jedoch auf einzelne Zeilen angewendet werden. Als Endergebnis erhalten Sie ein Verzeichnis für verschlüsselte Dateien oder komprimierte Verzeichnisse sowie eine Datei mit verschiedenen Paketen verschlüsselter Daten.

Die Entschlüsselung für Dateien oder komprimierte Verzeichnisse ist auf einem Gerät mit einem privaten Schlüssel, der mit dem für die Verschlüsselung verwendeten öffentlichen Schlüssel zusammenhängt, recht einfach. Die Entschlüsselung mehrerer mit Panzerungen verschlüsselter Datenpakete war jedoch etwas schwieriger. Daher wurde Paranoid_Pipes_Scenario_One.shim obigen Projekt ein Skript geschrieben, das dies alles mit minimaler Benutzerinteraktion ermöglicht. Unten finden Sie eine vereinfachte Version des Hilfsskript-Quellcodes für normale verschlüsselte Dateien und Verzeichnisse.

_gnupg_decrypt_opts="--quiet --no-tty --always-trust --passphrase-fd 9 --decrypt"
_decryption_output_dir="some_directory"
# if file
exec 9<"${_pass[@]}"
_path_to_file="${_mapped_input}"
_output_name="${_path_to_file##*/}"
_output_name="${_output_name%.gpg*}"
cat "${_path_to_file}" | gpg ${_gnupg_decrypt_opts} > "${_decryption_output_dir}/${_output_name}"
# else if compressed file
_path_to_file="${_mapped_input}"
_output_name="${_path_to_file##*/}"
_output_name="${_output_name%.tgz.gpg*}"
mkdir -p "${_decryption_output_dir}/${_output_name}"
_old_pwd="${PWD}"
cd "${_decryption_output_dir}/${_output_name}"
cat "${_path_to_file}" | gpg ${_gnupg_decrypt_opts} | tar -xzf -
cd "${_old_pwd}"
# else if non-compressed directory
_path_to_file="${_mapped_input}"
_output_name="${_path_to_file##*/}"
_output_name="${_output_name%.tar.gpg*}"
mkdir -p "${_decryption_output_dir}/${_output_name}"
_old_pwd="${PWD}"
cd "${_decryption_output_dir}/${_output_name}"
cat "${_path_to_file}" | gpg ${_gnupg_decrypt_opts} | tar -xf -
cd "${_old_pwd}"

Wenn Sie sehen möchten, welche anderen Funktionen auf öffentlich überprüfbare Weise funktionieren und getestet werden, lesen Sie die Travis-CI- Erstellungsprotokolle (insbesondere am Ende der Protokolle) zur Ver- und Entschlüsselung nahezu beliebiger Daten.

S0AndS0
quelle
0

Verwenden Sie FinalCrypt - Unbreakable One-Time-Pad-OpenSource-Datei- / Verzeichnisverschlüsselung (GUI & CLI)

Es erstellt One-Time-Pad-Schlüssel von selbst

java -cp FinalCrypt.jar rdj/CLUI --encrypt --password-prompt -k My-Key-Directory/ -t My-Test-Directory/

Passwort:

Begonnen 4 Dateien insgesamt 249,7 MiB zu verschlüsseln

🔒 "/home/ron/My-Test-Directory/Video/Eerebegraafplaats.mp4.bit" 🗝 ✔ 🖆 ✔ 🔒✔ ℄✔ 🗑✔ SHA-256: "C1E3F3A3545FEA026F3FB344F3D0798B54820B7F9AD9AAC4BE9FD1E955F947DA" -> "D53FCEADDF542AC3655B547778911F786C2C2BDD327E0618A9E7F77B57792DEA" 58,4% 🔒 „/ home / ron / Mein-Test-Verzeichnis / Video / castle-waxjo-sweden.mp4.bit /home/ron/My-Test-Directory/Brother_HL-2170W-usaeng_quick-setup.pdf.bit“🗝 ✔ 🖆 ✔ 🔒✔ ℄✔ 🗑✔ SHA-256: "0858D2D5A8CF118D40B517CD4A1F8D31D9F5A21221F75BD764B5E363FC1431FE" -> "266CE42027F891DECF109D7A9DD69E8B42C0E43D35E952BEB89F7C7EA2DBE92C" 95,7% 🔒 "/ Home / ron / My Test-Verzeichnis / Brother DSmobile 700d_uke_usr.pdf.bit“🗝 ✔ 🖆 ✔ 🔒✔ ℄✔ 🗑✔ SHA-256: "8D718D2F29EF05BEB347D6920B3BFF5269685421B428E8D3ADFF569F67A716E0" -> "88A98D893B6D1E540039D3E9BC0B0C19B46A10A209967F3235D5DEEBF073EC1E" 100,0%

Die Verschlüsselung von [4/4] Dateien [249,7 MiB / 249,7 MiB] in 7,3 Sekunden ist abgeschlossen (Durchschnitt: 34,2 MiB / s)

java -cp FinalCrypt.jar rdj/CLUI --decrypt --password-prompt -k My-Key-Directory/ -t My-Test-Directory/

Passwort:

Begann 4 Dateien zu entschlüsseln insgesamt 124,9 MiB

🔓 "/home/ron/My-Test-Directory/Video/castle-waxjo-sweden.mp4" 🖃 ✔ 🔓✔ ℄✔ 🗑✔ SHA-256: "323618B7ED12A1F92D8FFB306CEEC6DFFED6862B7BF3922902E8AED29DF57ECE" -> "8AEFC9744143451F32B82BBAC6A4291BC76C747A6DA1EA024702AA51A966F810" 32,8% 🔓 „/ home / ron / My Test-Verzeichnis / Video / Eerebegraafplaats.mp4" 🖃 ✔ 🔓✔ ℄✔ 🗑✔ SHA-256: "D53FCEADDF542AC3655B547778911F786C2C2BDD327E0618A9E7F77B57792DEA" -> "C1E3F3A3545FEA026F3FB344F3D0798B54820B7F9AD9AAC4BE9FD1E955F947DA" 91,2% 🔓 „/ home / ron / My Test -Directory / Brother dsmobile 700d_uke_usr.pdf "🖃 🖃 ℄✔ ℄✔ ℄✔ SHA-256:" 88A98D893B6D1E540039D3E9BC0B0C19B46A10A209967F3235D5DEEBF073EC1E "-> 8D718D5B5B5B5F569D2/home/ron/My-Test-Directory/Brother_HL-2170W-usaeng_quick-setup.pdf“🖃 ✔ 🔓✔ ℄✔ 🗑✔ SHA-256: "266CE42027F891DECF109D7A9DD69E8B42C0E43D35E952BEB89F7C7EA2DBE92C" -> "0858D2D5A8CF118D40B517CD4A1F8D31D9F5A21221F75BD764B5E363FC1431FE" 100,0%

Vollständige Entschlüsselung von [4/4] Dateien [124,9 MiB / 124,9 MiB] in 3,4 Sekunden (Durchschnitt: 36,3 MiB / s)

Es hat auch eine GUI

Ich versuche nur, der Community zu helfen ...

Ron de Jong
quelle
Siehe Kommentare zu FINALCRYPT .
Scott
FinalCrypt 5 fügte Auto Key hinzu und erstellt OTP Keys automatisch, sodass die Diskussion, auf die Scott sich bezieht, nicht mehr relevant ist
Ron de Jong
Ich würde gerne eine Beschreibung sehen, wie es funktioniert, die technischer ist und weniger von Hand wedelt. Das Problem ist, dass einmalige Pads (1) für die Übertragung von Daten großartig und für die Speicherung mies  sind und (2) zufällig sein sollten.  Wenn die OTPs von FinalCrypt wirklich zufällig sind, müssen sie gespeichert werden, was die Sicherheit gefährdet. Wenn sie regeneriert werden können, sind sie nicht zufällig, sondern nur pseudozufällig, und daher sind sie keine richtigen OTPs. … (Fortsetzung)
Scott
(Fortsetzung)… Auf ihrer Seite zur  automatischen Schlüsselverwaltung wird angegeben, dass die OTPs auf einem abnehmbaren externen (USB-) Laufwerk gespeichert sind. ”OK, das könnte funktionieren. Wenn Sie Ihr USB-Laufwerk jedoch jedes Mal anschließen müssen, wenn Sie Ihre Datei entschlüsseln möchten (und vorausgesetzt, dass ein OTP mindestens so groß sein muss wie die verschlüsselte Datei), können Sie Ihre Dateien genauso gut auf dem Wechseldatenträger und speichern kümmert sich nicht um die Verschlüsselung. … (Fortsetzung)
Scott
(Fortsetzung)… Außerdem heißt es auf der FinalCrypt-Hauptseite : „Die meisten Kryptosoftwareprogramme verwenden defektes AES…“. Die Behauptung, dass AES „defekt“ ist, scheint jedoch stark übertrieben zu sein. Verwandte: Warum gilt AES als sicher? (unter  Cryptography Stack Exchange ).
Scott