Jak zaszyfrować plik lub katalog w systemie Linux?

26

Jakie jest najpopularniejsze polecenie, takie jak szyfrowanie pliku lub katalogu w terminalu w systemie Linux?

Scott
źródło

Odpowiedzi:

31

Myślę, że to byłby gpg. Składnia plików i katalogów jest jednak inna.

Szyfrowanie

W przypadku plików (pliki wyjściowe nazwa pliku gpg):

gpg -c filename

Dla reżyserów:

gpg-zip -c -o file.gpg dirname

Deszyfrowanie

W przypadku plików (pliki wyjściowe nazwa pliku gpg):

gpg filename.gpg

Dla reżyserów:

gpg-zip -d file.gpg

Edycja: Poprawione, ponieważ @ Mk12 wskazywał na błąd kompresji / dekompresji w przypadku szyfrowania / deszyfrowania.

celebdor
źródło
Czy nie powinno to być „szyfrowanie” i „deszyfrowanie”?
mk12
Nikt nie powiedział, jak zaszyfrować katalog.
chovy
1
@chovy Nie to, co powyżej mówi: Dla katalogów: gpg-zip -c -o file.gpg nazwa katalogu
celebdor
@celebdor tego nie zauważył. dzięki. edycja: to nie działa dla mnie. Podczas odszyfrowywania pliku otrzymuję dziwne, zaszyfrowane dane wyjściowe.
chovy
@chovy: Przykro mi to słyszeć. Mogę potwierdzić, że szyfrowania i deszyfrowania katalogów jak wyżej pracował dla mnie, za pomocą gpg-(GnuPG) zip 1.4.16 pod Mint 17.
Michael Scheper
10
  • z openssl

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

Odszyfruj:

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

  • szyfruj za pomocą AES

aescrypt -e -p password file.jpg

Odszyfruj:

aescrypt -d -p password file.jpg.aes

strumień
źródło
1
+1 za pokazanie, jak to zrobić za pomocą openssl, który najprawdopodobniej jest dostępny od razu po wyjęciu z pudełka.
DevSolar
Rzeczywiście, ale 3DES jest uważany za niebezpieczny i nie powinien być używany, AES (aescrypt) jest znacznie lepszą opcją, patrz: stackoverflow.com/questions/1619212/…
jmng
2

Wypróbuj GnuPG .

Aby zaszyfrować: gpg -c filename

Aby odszyfrować: gpg filename.gpg

slhck
źródło
2

To jest moja metoda z wykorzystaniem openssl i tar

Otwórz zaszyfrowany katalog:

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

Zablokuj zaszyfrowany katalog:

tar cz vault/ | openssl enc -aes-256-cbc -out ~/vault.tar.gz.dat; rm -r ~/vault
Tomek
źródło
1
rm -rnie usuwa danych; po prostu to rozłącza. Musisz użyć czegoś takiego, srmaby usunąć dane z dysku.
jbindel
2

Ja osobiście używam aescryptgłównie.

      aescrypt -e "File" 

i odszyfruj:

      aescrypt -d "File"

Lub jest mcrypt:

      mcrypt "File" 

i odszyfruj:

      mcrypt -d "File"

A w przypadku katalogu sugeruję tar'owanie katalogu i szyfrowanie go. Następnie po odszyfrowaniu rozpakuj plik:

      tar -cf "Dir.tar" Dir/

i do untar

      tar -xf "Dir.tar"
Matt
źródło
1

Jeśli najwyższy poziom bezpieczeństwa nie jest dużym problemem (strona podręcznika zip mówi, że algorytm szyfrowania używany przez narzędzia zipfile jest słabszy niż PGP), wolę zip i rozpakuj. To zamyka moje katalogi i szyfruje w tym samym czasie. Wolę zip, ponieważ możesz mieć rodzaj przyrostowego zipu i szyfrowania zamiast zipowania i szyfrowania całego ponownie. Jest to szczególnie przydatne, gdy rozmiary katalogów są bardzo duże.

ZIP i szyfruj

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

Rozpakuj i odszyfruj

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
zaatakowany
źródło
0

Może nie być popularny, ale pracowałem nad projektem szyfrowania / deszyfrowania czegokolwiek przy minimalnej interakcji użytkownika za pomocą kilku skryptów Bash. Oto link do postu Hak5, który wyjaśnia konfigurację do testowania.

Poniżej omówiono logikę kodu źródłowego, co dzieje się w przypadku każdego rodzaju danych, które mogą być obsługiwane przez powyższy powiązany projekt

_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}"

${_mapped_input}Zmienna jest ustawiana przez czytanie mkfifoo nazwie pliku i ustawienie rury niczego czytać do tablicy z mapfile -t _lines < "${_file_to_map}"którą później rozbudowany i zapisane do ${_mapped_input}... nieco zawiłe ale pozwala na funkcje eksperymentalne działania na poszczególnych liniach. Końcowe wyniki to koniec z katalogiem do przechowywania zaszyfrowanych plików lub skompresowanych katalogów oraz plikiem z różnymi pakietami zaszyfrowanych danych.

Deszyfrowanie plików lub skompresowanych katalogów jest wystarczająco proste na urządzeniu z kluczem prywatnym związanym z kluczem publicznym używanym do szyfrowania. Ale odszyfrowanie wielu zaszyfrowanych pakietów danych było nieco trudniejsze, więc istnieje skrypt o nazwie Paranoid_Pipes_Scenario_One.shw powyższym projekcie napisany, aby zrobić to wszystko przy minimalnej interakcji użytkownika. Poniżej znajduje się uproszczona wersja kodu źródłowego skryptów pomocniczych dla normalnie zaszyfrowanych plików i katalogów.

_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}"

Jeśli chcesz zobaczyć, jakie inne funkcje działają i zostały przetestowane w sposób publicznie weryfikowalny, zapoznaj się z dziennikami kompilacji Travis-CI (szczególnie pod koniec dzienników), a znajdziesz inne wymyślne rzeczy, nad którymi pracujemy w związku do szyfrowania i deszyfrowania prawie dowolnych danych.

S0AndS0
źródło
0

Użyj FinalCrypt - niezniszczalny jednorazowy szyfr OpenSource File / Directory Encryption (GUI i CLI)

Sam tworzy klucze jednorazowego pada

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

Hasło:

Rozpoczęto szyfrowanie 4 plików całkowicie 249,7 MiB

🔒 "/home/ron/My-Test-Directory/Video/Eerebegraafplaats.mp4.bit" 🗝 ✔ 🖆 ✔ 🔒✔ ℄✔ 🗑✔ SHA-256 "C1E3F3A3545FEA026F3FB344F3D0798B54820B7F9AD9AAC4BE9FD1E955F947DA" -> "D53FCEADDF542AC3655B547778911F786C2C2BDD327E0618A9E7F77B57792DEA" 58,4% 🔒 „/ home / ron / My-test-katalog / video / zamek waxjo-sweden.mp4.bit "🗝 ✔ 🖆 ✔ 🔒✔ ℄✔ 🗑✔ SHA-256: "8AEFC9744143451F32B82BBAC6A4291BC76C747A6DA1EA024702AA51A966F810" -> "323618B7ED12A1F92D8FFB306CEEC6DFFED6862B7BF3922902E8AED29DF57ECE" 91,2% 🔒" /home/ron/My-Test-Directory/Brother_HL-2170W-usaeng_quick-setup.pdf.bit”🗝 ✔ 🖆 ✔ 🔒✔ ℄✔ 🗑✔ SHA-256 "0858D2D5A8CF118D40B517CD4A1F8D31D9F5A21221F75BD764B5E363FC1431FE" -> "266CE42027F891DECF109D7A9DD69E8B42C0E43D35E952BEB89F7C7EA2DBE92C" 95,7% 🔒 „/ Home / ron / My-Test-katalog / Brother dsmobile 700d_uke_usr.pdf.bit”🗝 ✔ 🖆 ✔ 🔒✔ ℄✔ 🗑✔ SHA-256: "8D718D2F29EF05BEB347D6920B3BFF5269685421B428E8D3ADFF569F67A716E0" -> "88A98D893B6D1E540039D3E9BC0B0C19B46A10A209967F3235D5DEEBF073EC1E" 100,0%

Zakończono szyfrowanie plików [4/4] całkowicie [249,7 MiB / 249,7 MiB] w 7,3 sekundy (średnio: 34,2 MiB / s)

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

Hasło:

Rozpoczęto odszyfrowywanie 4 plików całkowicie 124,9 MiB

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

Zakończono całkowite odszyfrowanie [4/4] plików [124,9 MiB / 124,9 MiB] w 3,4 sekundy (średnio: 36,3 MiB / s)

Ma również GUI

Próbuję tylko pomóc społeczności ...

Ron de Jong
źródło
Zobacz komentarze do FINALCRYPT .
Scott
FinalCrypt 5 dodał Auto Key i automatycznie tworzy klucze OTP, więc dyskusja, o której mówi Scott, nie jest już aktualna
Ron de Jong
Chciałbym zobaczyć opis tego, jak to działa, które jest bardziej techniczne i mniej macha ręką. Problem polega na tym, że jednorazowe pady (1) są świetne do przesyłania danych i kiepskie do  przechowywania, a (2) powinny być losowe.  Jeśli OTP w FinalCrypt są naprawdę losowe, należy je przechowywać, co zagraża bezpieczeństwu. Jeśli można je zregenerować, to nie są losowe, a jedynie pseudolosowe, a zatem nie są odpowiednimi OTP. … (Ciąg dalszy)
Scott
( Ciąg dalszy )… Ich strona na temat  automatycznego zarządzania kluczami wskazuje, że OTP są przechowywane „na odłączalnym dysku zewnętrznym (USB). „OK, to może zadziałać. Ale jeśli musisz podłączyć dysk USB za każdym razem, gdy chcesz odszyfrować plik (i biorąc pod uwagę, że OTP musi być co najmniej tak duży, jak plik, który szyfruje), równie dobrze możesz po prostu przechowywać swoje pliki na dysku wymiennym i nie zawracaj sobie głowy szyfrowaniem. … (Ciąg dalszy)
Scott
( Ciąg dalszy )… Ponadto, główna strona FinalCrypt mówi „większość oprogramowania kryptograficznego używa zepsutego AES…”, ale twierdzi, że AES jest „zepsuty”, wydaje się być mocno przesadzone. Powiązane: Dlaczego AES jest uważany za bezpieczny? (w sprawie  wymiany stosów kryptografii ).
Scott