コマンドラインでgzipファイルをパスワードで保護するにはどうすればよいですか?


130

Ubuntu 10.04でtarコマンドを使用して、いくつかのtar.gz(および場合によってはtar.bz2)ファイルを作成します。

ファイルをパスワードで保護します。

これを行うコマンドは何ですか(Googleで検索しましたが、パスワードを使用して圧縮ファイルを作成および抽出する方法を示すものは見つかりませんでした)。

誰もこれを行う方法を知っていますか?

回答:


159

このタスクにunix-philosophyを適用する必要があります:各タスクに1つのツール。

ターリングと圧縮がジョブである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
知りたい場合

1
@ nathan.f77コマンドは、opensslにパイピングせずに物事を行う方法も示しています。openssl enc -aes-256-cbc -e -in foo.tar.gz -out bar.tar.gz.enc
キーススマイリー14年

3
@KeithSmiley大きなアーカイブがあり、スペースがあまりない場合(VPSの場合のように)、パイプする方がスペース効率が高くなります。
アンドリューサビニク14年

これをMacで実行することはできません。とにかくこれは違いますか?
eleijonmarck 16

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ファイルの暗号化は決して安全ではありません。
クリストファーアイヴス

4
@KristopherIvesは安全性について詳しく説明できますか?
tscizzle


4
@KristopherIves動作するには、「暗号化されたアーカイブからのファイルの少なくとも1つを暗号化されていない形式で含む別のZIPアーカイブ」が必要です。
フランクリンゆう

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。使用する利点の1つ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はサーバーバックアップをブロックしていました。パスワードを追加する必要がありました。安全である必要はありません。)
felwithe

7

tar、gzip、bzip2のいずれもパスワード保護をサポートしていません。zipなどの圧縮形式を使用するか、GnuPGなどの別のツールで暗号化してください。


ああ、それは私がオンラインで何も見つけられなかった理由を説明しています。zipに行くと思います。
モーフィアス

Gah !、私はパスワースでディレクトリを再帰的に圧縮しようとしていますが、それは(空の)ディレクトリとしてfoobarという名前のzipファイルを作成するだけです。私が使用しているコマンドは次のとおりです。zip-e foobar.zip foobar。foob​​arは現在のディレクトリ内の空でないフォルダーです
モーフィア

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.