커맨드 라인에서 gzip 파일을 암호로 보호하는 방법은 무엇입니까?


130

Ubuntu 10.04에서 tar 명령을 사용하여 tar.gz (및 tar.bz2 파일) 파일을 만들고 싶습니다.

파일을 비밀번호로 보호하고 싶습니다.

이 작업을 수행하는 명령은 무엇입니까 (Googled는 있지만 비밀번호를 사용하여 압축 파일을 작성하고 추출하는 방법을 보여주는 것은 없습니다).

이 작업을 수행하는 방법을 아는 사람이 있습니까?

답변:


159

이 작업에는 유닉스 철학을 적용해야합니다. 각 작업마다 하나의 도구입니다.

tarring 및 압축을위한 일이다 targzipbzip2, 암호 중 하나를위한 일이다 gpgopenssl:

암호화

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

해독

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

또는 gpg 사용

 % gpg --encrypt out.tar.gz

openssl-variant는 대칭 암호화를 사용하므로 수신 측에 사용 된 '암호'(일명 '키')를 알려야합니다. gpg-variant는 대칭 및 비대칭 암호화의 조합을 사용합니다. 수신자의 키 (다른 사람과 관련된 암호를 말할 필요가 없음)를 사용하여 세션 키를 작성하고 해당 키로 컨텐츠를 암호화하십시오.

zip (또는 7z) 경로를 사용하는 경우 : 기본적으로 openssl-variant와 동일하며 수신 측에 비밀번호를 알려야합니다.


26
openssl을 사용하여 파일의 암호를 해독하는 방법을 궁금해하는 사람은 다음을 수행하십시오.openssl aes-256-cbc -d -in out.tar.gz.enc -out decrypted.tar.gz
ndbroadbent

1
@ nathan.f77 그 명령은 openssl로 파이프하지 않고 작업을 수행하는 방법도 보여줍니다. openssl enc -aes-256-cbc -e -in foo.tar.gz -out bar.tar.gz.enc
Keith Smiley

3
@KeithSmiley 큰 아카이브가 있고 공간이 많지 않은 경우 (VPS에있을 수 있음) 파이프하는 것이 더 공간 효율적입니다.
Andrew Savinykh 2016 년

나는 이것을 Mac에서 실행할 수없는 것 같습니다. 어쨌든 다른가요?
eleijonmarck

3
@eleijonmarck는 "<insert-error-message-here> 때문에 작동하지 않습니다"부분을 제공합니다…
akira

29

파일을 비밀번호로만 보호하려는 경우 명령 행을 통해 hand zip 유틸리티를 사용하십시오.

zip -e <file_name>.zip <list_of_files>

-e는 zip 유틸리티에 언급 된 파일을 암호화하도록 요청합니다.

작업 예 :

$ 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
Zip 파일 암호화는 어떤 식 으로든 안전하지 않습니다.
Kristopher Ives가

4
@KristopherIves 안전에 대해 자세히 설명해 주시겠습니까?
tscizzle


4
@KristopherIves 작동하려면 "암호화 된 아카이브의 파일 중 하나 이상을 암호화되지 않은 형태로 포함하는 다른 ZIP 아카이브 "가 필요합니다.
Franklin Yu

4
"일반 텍스트 (최소 13 바이트)의 일부만 알아야합니다." 이것은 암호화되지 않은 전체 파일이 필요한 것보다 훨씬 더 취약합니다 (이미 상당히 나쁩니다). 또한 zip 암호화는 무차별 대입 공격 (예 : Jack the Ripper)에 내성이 없습니다. 아무도 심각한 것을 위해 그것을 사용해서는 안됩니다.
EM0

21

이를 수행하는 몇 가지 방법이 있습니다. 주의해야 할 점은 별도의 압축 및 암호화 도구를 사용하려는 경우 암호화 된 데이터는 본질적으로 압축 할 수 없으므로 항상 암호화하기 전에 압축해야합니다.

이 예제는이라는 파일을 압축하고 암호화합니다 clear_text.

사용 gpg

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

gpg는 기본적으로 암호화 전에 입력 파일을 압축하므로 -c암호와 함께 대칭 암호화를 사용합니다. 출력 파일은입니다 clear_text.gpg. 사용의 한 가지 이점 gpg은 표준 OpenPGP 형식을 사용한다는 것입니다. 따라서 OpenPGP를 지원하는 모든 암호화 소프트웨어는이를 해독 할 수 있습니다.

사용 mcrypt

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

-z옵션은 압축합니다. 기본적으로 이것은이라는 파일을 출력합니다 clear_text.gz.nc.

사용 bcrypt

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

bcrypt는 기본적으로 암호화하기 전에 압축 -r하며, 입력 파일이 프로세스에서 삭제되지 않도록하는 옵션입니다. 출력 파일이 clear_text.bfe기본적으로 호출 됩니다.

사용 gzip하여aespipe

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

aespipe는 stdin에 입력을 받고 stdout에 aes 암호화 된 데이터를 출력하는 프로그램입니다. 압축을 지원하지 않으므로 먼저 gzip을 통해 입력을 파이프 할 수 있습니다. 출력은 stdout으로 이동하므로 원하는 이름으로 파일로 리디렉션해야합니다. 아마도 당신이 요구하는 것을하는 가장 효과적인 방법은 아니지만 aespipe는 다목적 도구이므로 언급 할 가치가 있다고 생각했습니다.


15

7zip을 사용하여 비밀번호로 보호 된 아카이브를 작성할 수 있습니다. 다음과 같은 방법으로 명령 행 또는 스크립트에서 비밀번호를 지정할 수 있습니다.

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

7zip은 STDIN에서 다음과 같이 읽을 수도 있습니다.

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

zip 파일을 사용해야하는 경우 -t<type>매개 변수 (예 :)를 사용하여 재생할 수 있습니다 -tzip.


5
질문에 답하는 유일한 사람이기 때문에 이것을 답으로 선택했습니다. 문제는 메시지를 암호화하는 방법이 아니라 아카이브를 암호로 보호하는 방법입니다. 그것이 내가해야 할 전부입니다. (Gmail은 첨부 파일에 안전하지 않은 것이 있다고 판단하여 서버 백업을 차단하고 있었고 비밀번호를 추가하기
만하면

7

tar, gzip 및 bzip2는 비밀번호 보호를 지원하지 않습니다. zip과 같은 압축 형식을 사용하거나 GnuPG와 같은 다른 도구를 사용하여 암호화하십시오.


아, 온라인에서 찾을 수없는 이유를 설명합니다. 나는 지퍼로 갈 것 같아요.
morpheous

Gah !, 암호를 사용하여 디렉토리를 재귀 적으로 압축하려고하는데 foobar라는 이름의 zip 파일 만 (빈) 디렉토리로 만듭니다. 다음은 내가 사용하는 명령입니다. zip -e foobar.zip foobar. foobar는 현재 디렉토리에 비어 있지 않은 폴더입니다
morpheous

4
남자가 말한 것처럼 -r.
이그나시오 바스케스-아 브람스

5

로 작성 :

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

비밀번호를 묻습니다.

로 해독 :

gpg -d passwordprotectedarchive.tar.gz.gpg | tar xzvf -
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.