Jak zabezpieczyć hasłem pliki gzip w wierszu poleceń?


130

Chcę utworzyć niektóre pliki tar.gz (i ewentualnie tar.bz2) za pomocą komendy tar w systemie Ubuntu 10.04.

Chcę zabezpieczyć hasłem plik.

Jakie jest polecenie, aby to zrobić (mam Googled, ale nie znalazłem nic, co pokazuje, jak tworzyć i wyodrębniać skompresowane pliki za pomocą hasła).

Czy ktoś wie jak to zrobić?

Odpowiedzi:


159

musisz zastosować filozofię uniksową do tego zadania: jedno narzędzie dla każdego zadania.

tarowanie i kompresja jest to zadanie dla tara gziplub bzip2, krypto jest praca dla obu gpglub openssl:

Szyfruj

 % tar cz folder_to_encrypt | \
      openssl enc -aes-256-cbc -e > out.tar.gz.enc

Odszyfruj

 % openssl enc -aes-256-cbc -d -in out.tar.gz.enc | tar xz

Lub używając gpg

 % gpg --encrypt out.tar.gz

wariant openssl wykorzystuje szyfrowanie symetryczne, trzeba by było powiedzieć stronie odbierającej o używanym „haśle” (inaczej „kluczu”). wariant gpg wykorzystuje kombinację szyfrowania symetrycznego i asymetrycznego, używasz klucza strony odbierającej (co oznacza, że ​​nie musisz nikomu podawać żadnego hasła), aby utworzyć klucz sesji i szyfrować zawartość za pomocą tego klucza.

jeśli wybierzesz trasę zip (lub 7z): zasadniczo jest to to samo, co wariant openssl, musisz powiedzieć stronie odbierającej o haśle.


26
Dla każdego, kto zastanawia się, jak odszyfrować plik za pomocą openssl:openssl aes-256-cbc -d -in out.tar.gz.enc -out decrypted.tar.gz
ndbroadbent 28.01.2013

1
@ nathan.f77 to polecenie pokazuje również, jak robić rzeczy bez instalowania ich w openssl. openssl enc -aes-256-cbc -e -in foo.tar.gz -out bar.tar.gz.enc
Keith Smiley

3
@KeithSmiley, jeśli masz duże archiwa i nie ma dużo miejsca (tak jak na VPS), bardziej wydajne jest zajmowanie miejsca.
Andrew Savinykh

Nie mogę tego uruchomić na komputerze Mac. Czy tak w ogóle jest inaczej?
eleijonmarck,

3
@eleijonmarck zapewnia część „nie działa, ponieważ <insert-error-message-here>”…
akira

29

Jeśli Twoim celem jest po prostu ochrona plików hasłem, użyj narzędzia do ręcznego zipowania za pomocą wiersza polecenia

zip -e <file_name>.zip <list_of_files>

-e prosi narzędzie zip o szyfrowanie plików wymienionych w

Przykład roboczy:

$ touch file_{0,1}.txt # creates blank files file_0 & file_1    
$ zip -e file.zip file_* # ask zip to encrypt
$ ENTER PASSWORD:
$ VERIFY PASSWORD:
$ ls file*

11
Szyfrowanie plików zip nie jest w żaden sposób bezpieczne.
Kristopher Ives

4
@KristopherCzy potrafisz rozwinąć niepewność?
tscizzle


4
@KristopherIves Wymaga „kolejnego archiwum ZIP zawierającego co najmniej jeden plik z zaszyfrowanego archiwum w formie niezaszyfrowanej ” do działania.
Franklin Yu

4
„Musisz znać tylko część tekstu jawnego (co najmniej 13 bajtów)”. To sprawia, że ​​jest znacznie bardziej podatny na atak, niż gdyby wymagany był cały niezaszyfrowany plik (co jest już dość złe). Ponadto szyfrowanie zip nie jest odporne na ataki typu brute-force (np. Przy użyciu Kuby Rozpruwacza). Nikt nie powinien go używać do niczego poważnego.
EM0,

21

Oto kilka sposobów, aby to zrobić. Należy zauważyć, że jeśli zamierzasz korzystać z oddzielnych narzędzi do kompresji i szyfrowania, zawsze powinieneś kompresować przed szyfrowaniem, ponieważ zaszyfrowane dane są w zasadzie nieściśliwe.

Te przykłady kompresują i szyfrują plik o nazwie clear_text.

Za pomocą gpg

$ gpg -c clear_text #Compress & Encrypt
$ gpg -d clear_text.gpg #Decrypt & Decompress

gpg domyślnie kompresuje plik wejściowy przed szyfrowaniem, co -coznacza użycie szyfrowania symetrycznego z hasłem. Plik wyjściowy będzie clear_text.gpg. Jedną z zalet używania gpgjest to, że używa standardowych formatów OpenPGP, więc każde oprogramowanie szyfrujące, które obsługuje OpenPGP, będzie mogło je odszyfrować.

Za pomocą mcrypt

$ mcrypt -z clear_text #Compress & Encrypt
$ mdecrypt -z clear_text.gz.nc #Decrypt & Decompress

-zOpcja kompresuje. Domyślnie jest to plik o nazwie clear_text.gz.nc.

Za pomocą bcrypt

$ bcrypt -r clear_text #Compress & Encrypt
$ bcrypt -r clear_text.bfe #Decrypt & Decompress

bcrypt kompresuje się przed domyślnym szyfrowaniem, -ropcja jest taka, że ​​plik wejściowy nie jest usuwany w procesie. Plik wyjściowy jest wywoływany clear_text.bfedomyślnie.

Korzystanie gzipiaespipe

$ cat clear_text | gzip | aespipe > clear_text.gz.aes #Compress & Encrypt
$ cat clear_text.gz.aes | aespipe -d | gunzip > clear_text #Decrypt & Decompress

aespipe to, jak to brzmi, program, który pobiera dane wejściowe na standardowe wejście i wysyła zaszyfrowane dane na standardowe wyjście. Nie obsługuje kompresji, więc możesz najpierw przesłać dane wejściowe przez gzip. Ponieważ wyjście przechodzi do standardowego wyjścia, będziesz musiał przekierować go do pliku o wybranej przez siebie nazwie. Prawdopodobnie nie jest to najskuteczniejszy sposób na zrobienie tego, o co prosisz, ale aespipe to wszechstronne narzędzie, więc pomyślałem, że warto o tym wspomnieć.


15

Możesz użyć 7zip, aby utworzyć swoje archiwum chronione hasłem. Możesz określić hasło w wierszu poleceń (lub w skrypcie) w następujący sposób:

7z a -p<password> <someprotectedfile>.7z file1.txt file2.txt

7zip może również czytać ze STDIN w następujący sposób:

cat <somefile> | 7z a -si -p<password> <someprotectedfile>.7z

Jeśli użycie plików zip jest obowiązkowe, możesz chcieć bawić się z -t<type>parametrem (np -tzip.).


5
Wybrałem to jako odpowiedź, ponieważ jest to jedyna odpowiedź na pytanie. Nie chodzi o to, jak zaszyfrować wiadomość, ale jak zabezpieczyć archiwum hasłem. To wszystko, co musiałem zrobić. (Gmail blokował kopie zapasowe moich serwerów, ponieważ uznał, że w załączniku jest coś niebezpiecznego, a ja po prostu musiałem dodać hasło. Nie musi być bezpieczne.)
felwithe 23.09.16

7

Ani tar, gzip, ani bzip2 nie obsługują ochrony hasłem. Użyj formatu kompresji, takiego jak zip, lub zaszyfruj go za pomocą innego narzędzia, takiego jak GnuPG.


Ach, to wyjaśnia, dlaczego nie mogłem znaleźć niczego online. Myślę, że pójdę po zip.
morficzny

Gah !, Próbuję rekurencyjnie spakować katalog z hasłami, i tworzy on tylko plik zip z nazwą foobar jako (pusty) katalog w nim. Oto polecenie, którego używam: zip -e foobar.zip foobar. foobar to niepusty folder w bieżącym katalogu
morficzny

4
Podobnie jak człowiek mówi -r.
Ignacio Vazquez-Abrams

5

Utwórz za pomocą:

tar czvf - directory | gpg --symmetric --cipher-algo aes256 -o passwordprotectedarchive.tar.gz.gpg

Poprosi Cię o hasło.

Deszyfruj za pomocą:

gpg -d passwordprotectedarchive.tar.gz.gpg | tar xzvf -
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.