web-dev-qa-db-ja.com

UNIXでいくつかのファイルを暗号化するための良い解決策は何ですか?

Linuxの特定のディレクトリを暗号化するユーティリティを探しています。フルディスク暗号化サービスを探しているのではなく、ファイルをクラウドに保存する目的でいくつかのディレクトリを暗号化することだけを目的としています。それらを取得したら、それらにアクセスする前に復号化する必要があります。いくつかのディレクトリ(サイズが数百GB)に対してこれを行うことを検討しています。何か案は?できればCLIベース。

44
Peter

このタスクにはGnuPGのみを使用します。フォルダは最初にTAR-GZアーカイブにパックされます。

tar czf files.tar.gz /path/to/my/files

まだ行っていない場合は、最初にGPG秘密/公開鍵ペアを作成する必要があります。

gpg --gen-key

指示に従ってください。最初のテストでは、デフォルトで十分です。次のようなものが表示されます:

 gpg(GnuPG)2.0.18; Copyright(C)2011 Free Software Foundation、Inc。
これはフリーソフトウェアです。自由に変更して再配布できます。
法律で許可されている範囲で、保証はありません。
 
必要なキーの種類を選択してください:
(1)RSAおよびRSA(デフォルト)
(2)DSAおよびElgamal 
(3)DSA (署名のみ)
(4)RSA(署名のみ)
あなたの選択? 1 
 RSAキーの長さは1024〜4096ビットの可能性があります。
どのキーサイズが必要ですか? (2048)4096 
リクエストされたキーサイズは4096ビットです。
キーの有効期間を指定してください。
 0 =キーの有効期限なし
 =キーの有効期限はn日数
 w =鍵はn週間で期限切れ
 m =鍵はnか月で期限切れ
 y =鍵はn年で期限切れ
鍵は有効ですか? (0)
キーの有効期限はありません
これは正しいですか? (y/N)y 
 
 GnuPGはキーを識別するためのユーザーIDを作成する必要があります。
 
実名:ファイル暗号化キー
メールアドレス:[email protected] 
コメント:ファイル暗号化キー
このユーザーIDを選択しました:
「ファイル暗号化キー(ファイル暗号化キー)」
 
変更(N)ame、(C)omment、(E)mailまたは(O)kay /(Q)uit? o 

キーのパスフレーズを要求されます。強いものを使用することを強くお勧めします。とにかくファイルの暗号化には必要ないので、後でバッチを使用することについて心配する必要はありません。

すべてが完了すると、次のようなものが画面に表示されます。

ランダムなバイトを大量に生成する必要があります。素数生成中に
他のアクション(キーボードでの入力、マウスの移動、
ディスクの利用)を実行することをお勧めします。これは、乱数
ジェネレーターに十分なエントロピーを得るためのより良いチャンスを与えます。
たくさんのランダムなバイトを生成する必要があります。素数生成中に
他のアクション(キーボードでの入力、マウスの移動、
ディスクの利用)を実行することをお勧めします。これにより、乱数
ジェネレータが十分なエントロピーを獲得するチャンスが高まります。
 gpg:最終的に信頼できるとマークされたキーFE53C811 
公開および秘密キーが作成および署名されます。 
 gpg:trustdbのチェック
 gpg:必要なマージナル3つ、必要なコンプリート1つ、PGP信頼モデル
 gpg:深さ:0有効:1署名済み:0信頼:0-、0q、0n、0m、0f、1u 
 pub *****/******** 2013-03-19 
キーフィンガープリント= *** * **** **** **** **** **** **** **** **** **** 
 uid File Encryption Key(File Encryption Key )
 sub *****/******** 2013-03-19 

これで、他のマシンにインポートするために、公開鍵ファイルをエクスポートしたい:

gpg --armor --output file-enc-pubkey.txt --export 'File Encryption Key'

File Encryption Keyは、キー生成手順中に入力した名前です。

今、私は新しく作成されたアーカイブでGnuPGを使用しています:

gpg --encrypt --recipient 'File Encryption Key' files.tar.gz

files.tar.gz.gpg暗号化されたファイル。

次のコマンドで復号化できます(パスフレーズの入力を求められます):

gpg --output files.tar.gz --decrypt files.tar.gz.gpg

それが全体の魔法です。

必ずキーをバックアップしてください。パスフレーズを忘れないでください。バックアップされていない場合、または忘れてしまった場合は、ギガバイトのデータがジャンクになります!

次のコマンドで秘密鍵をバックアップします。

gpg --armor --output file-enc-privkey.asc --export-secret-keys 'File Encryption Key'

利点

  • 暗号化者は暗号化に関する機密情報を知る必要はありません-暗号化は公開鍵で行われます。 (ローカルワークステーションで鍵ペアを作成し、公開鍵のみをサーバーに転送できます)
  • スクリプトファイルまたはジョブにパスワードは表示されません
  • 必要なシステムに暗号化機能を搭載できます
  • 秘密鍵とパスフレーズを秘密にしておけば、すべてが問題なく、非常に非常に困難になります。
  • 特定のPGP/GPG実装を使用して、Unix、Windows、およびLinuxプラットフォームの秘密鍵で復号化できます
  • システムの暗号化と復号化、マウント、コンテナ、特別なファイルシステムに対する特別な権限は不要
51
zero0

私の場合、主に2つの方法を使用します。

最初の方法:tarとopenssl

ディレクトリをタール化​​する

tar cvf backup.tar /path/to/folder

Tarコマンドから[v]スイッチを削除して、詳細モードをオフにすることができます。

暗号化する

openssl aes-128-cbc -salt -in backup.tar -out backup.tar.aes -k yourpassword

Aes-128-cbcは、opensslがサポートするその他の暗号化方式(openssl --help)に変更できます。

解読する

openssl aes-128-cbc -d -salt -in backup.tar.aes -out backup.restored.tar

パスワードの入力を求められます。

2番目の方法:暗号化されたZip

Zip -r -0 -e backup.Zip /path/to/folder

パスワードの入力を求められます。

  • -rは再帰的に意味します(フォルダーツリー全体)
  • -0は保存のみを意味します(圧縮せず、より高速)
  • -eはアーカイブの暗号化を意味します

これの1つの利点:Windowsベースのシステムでよりよく動作します。

28
Julien R.

公開鍵と秘密鍵のペアを使用してファイルを暗号化したくない場合は、代わりにパスフレーズを使用した対称暗号化のみを使用するには、次のコマンドを使用します。

gpg --symmetric --cipher-algo aes256 files.tar.gz

パスフレーズの入力を求められます。その後、files.tar.gz.gpgという名前の暗号化ファイルが作成されます。

コマンドを使用して復号化するには

gpg --decrypt files.tar.gz.gpg > files.tar.gz
22
chiborg

Truecryptの非常にシンプルで優れたソリューションを使用できます。コンソール専用のパッケージがあります。学習と使用は非常に簡単です。 http://www.truecrypt.org

2
B14D3

そのような目的のために、Fuse暗号化( encfs など)をお勧めします-より小さいデータの場合はgpgを使用します。

ユーザー空間に実装されているため、特別な権限は必要ありません。

2

1つのファイルを暗号化する非常に簡単な方法は次のとおりです。

gpg -c filename.ext

パスフレーズを2回求められ、gpgはfilename.ext.gpgを作成します。暗号化されたファイルをクラウドサービスにアップロードします。ファイルを回復するには、以下を使用します。

gpg filename.ext.gpg

filename.extを再作成します。 暗号化されていないファイルは安全ではなく、削除後も関連データはストレージメディアに残ります。安全なのはgpgコンテナだけです。 EncFS は、ファイルレベルでのクラウドベースの暗号化のより実用的な代替手段です。

1
Bryce

データの暗号化を目的としたLinuxファイルシステムがいくつかあります。 Lux について考えたことはありますか?

1
Guardian