コマンドラインまたはスクリプトを使用してディレクトリを最適に暗号化および復号化するにはどうすればよいですか?


8

私はbazaarのバージョン管理下にあるテキストファイルのディレクトリを持っていて、自分のマシンのそれぞれにコピー(実際にはブランチ)を保持しています。コマンドラインでディレクトリを暗号化および暗号化解除したい。

理想的には、ログアウト時にスクリプトを実行して、ディレクトリが暗号化されているかどうかを確認し、暗号化されていない場合は暗号化することもできます。ただし、ログイン時にディレクトリを復号化したくありません。(スクリプトを手動で暗号化するのを忘れないようにするための防護策として欲しい。これはネットブックにとって特に重要である。)

私はubuntu 10.04.12つのバージョンのcrunchbang linuxを実行しています。1つはの派生物でubuntu 9.04、6月下旬のDebian Squeezeリポジトリのスナップショットのいずれかです。

これを行う最良の方法は何ですか?

(私はタグにしようとしたencryptiondirectories、しかし、タグを作成する担当者が不足しています。)

回答:


5

マシンへの管理アクセス権がありますか?暗号化されたループバックデバイスを使用できます。例:

暗号化されたファイルのコンテナファイルを作成します。

dd if=/dev/urandom of=container bs=1024k count=100 

コンテナファイルをループバックデバイス0にバインドします。

losetup container /dev/loop0

暗号化されたデバイスを作成します(-yはパスフレーズを2回要求します。行はで分割されます\):

cryptsetup -c serpent-xts-essiv:sha256 -b 512 \
   -y create container /dev/loop0 

暗号化されたデバイス上にext2ファイルシステムを作成します(本当に何でも使用できます):

mkfs.ext2 /dev/mapper/container

暗号化されたファイルシステムをcryptディレクトリにマウントします。

mount /dev/mapper/container crypt

参考のために:

man cryptsetup && man losetup

また、使用する暗号とキーの長さの選択などの情報については、暗号化のベストプラクティスを参照してください。


4

これは、ディレクトリを暗号化および復号化する方法ではなく、暗号化されたストレージを透過的に操作する方法のようです。提案するスキームは、実際に大量の復号化と暗号化を行うため、あまり安全ではないことに注意してください。通常はログアウトしないと、暗号化されないままになります(電源障害、システムクラッシュ、ラップトップの盗難など)。そして、特定の攻撃者が見つけることができる機密データの痕跡が残ります(消去されたファイルのデータはまだディスク上にあり、見つけるのは困難です)。

現在のLinuxシステムは、透過的な暗号化を実現するいくつかの方法を提供しています。dm-cryptまたはその代替手段の1つを使用して、ボリューム全体を暗号化できます。特定のディレクトリツリーを暗号化するために使用できるツールがいくつかあります。これには、ecryptfs(カーネルレベルで機能)やencfs(ヒューズを介して純粋にユーザーランドで機能)が含まれます。(私が言及する3つは、Debian lennyで利用可能であり、すべてのディストリビューションで提供されるはずです。)

PAM(libpam-mountパッケージ、ecryptfsの推奨オプション)またはプロファイルスクリプト(encfsの推奨オプション)を介してログインするときに、暗号化されたディレクトリがマウントされるように設定できます。暗号化されていないものがディスクに書き込まれることはないため、「手動で暗号化を忘れる」ことには問題がないことに注意してください。

最高の保護を得るには、機密ファイルだけでなく、プログラムによって機密データが保存される可能性がある他の場所も暗号化する必要があります。少なくとも、スワップパーティションを暗号化する必要があります。その他の監視する場所には、機密文書を印刷する場合/tmp(作成することで最適tmpfs/var/spool/cups、およびWebキャッシュ/履歴などのホームディレクトリ内のアプリケーションごとのファイルが含まれます(例:)~/.mozilla


3

gpgdirの使用についてはどうですか?これは、ログインおよびログアウトのためにスクリプト可能である必要があります。暗号化することになっているサブディレクトリを選択することもできます(.bash_rcたとえば、ファイルを解読したままにするなど)。

別の代替手段はTruecryptです。データのコンテナを作成し、シェルスクリプトを使用して暗号化/復号化できます。


2

Ubuntuとその派生ディストリビューションの標準であるecryptfsを使用することもできます。これは、インストールプロセスでホームディレクトリ(http://www.linuxjournal.com/article/9400)を暗号化するかどうかを尋ねるときに使用されます。ecryptfsの利点は、それを使用するために個別のパーティションやループバックマウントされたファイルが必要ないことです。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.