ファイルシステムごと暗号化する方法Leverage OSS(1/2 ページ)

単純なファイル単位での暗号化も便利だが、大量のファイルを保護する必要がある場合などには、ファイルシステム全体やディスク全体をまるごと暗号化してしまう方がより便利なこともある。ここではそうした方法を幾つか紹介しよう。

» 2007年03月22日 07時30分 公開
[Rui-Lopes,Open Tech Press]
SourceForge.JP Magazine

 単純なファイル単位での暗号化も便利ではあるものの、大量のファイルを保護する必要がある場合などには、ファイルシステム全体やディスク全体をまるごと暗号化してしまう方がより便利なこともある。またファイルの中身の保護に留まらず、秘密を探り出そうとする目から機密情報の存在自体を完全に隠すことが必要になることもあるかもしれない。そのような場合にシステムのセキュリティを高めるための方法を幾つか紹介しよう。

 暗号化のために専用のパーティーションや専用のディスクを使用して良いのなら、保護するファイルすべてを暗号化/復号するのにパスフレーズやキーがたった一つで済む。しかもソリューションによっては、スワップパーティーションやルートパーティーションの暗号化までできるものもある。ただし専用パーティーション/ディスク全体を暗号化することの難点としては、性能が落ちる可能性があること(残念なことではあるが、セキュリティを重視する場合、性能が落ちてしまうことはやむを得ないことだ)や、万一攻撃者がキーを入手した場合(あるいは自分でキーをなくしてしまった場合)に暗号化した全ファイルに別れを告げることになるといったようなことがある。

ループバックデバイスとdm-crypt

 ファイルシステムの暗号化に関して現在Linuxカーネルでサポートされている主な方法には、ループバックデバイスドライバを使うものと、デバイスマッパーシステム(dm-cryptターゲットを利用)を使うものとがある。ループバックデバイスを使う方法を取るなら、loop-AESが最も良い選択肢だろう。loop-AESは、Linux上で利用することのできるディスク暗号化方法として最も完成度の高いものの一つだ。なおloop-AESのREADMEは非常に良くできており、ファイルシステムの暗号化について実用的で参考になる例が紹介されている。

 一方Linuxカーネルの2.6系列で統合されたdm-cryptは、ループバックデバイスドライバよりも高性能/高セキュリティを実現している。さらに機能的にもより優れたものとなっている。

 現在dm-cryptを使用しているプロジェクトの中でも最も将来性があると思われるのは、LUKSだろう。LUKSプロジェクトの狙いは、ディスク上のフォーマットを標準化することにより異なるディストリビューションの間で保護データを移行することを簡単にすることだ。それに加えてLUKSでは、複数のキーの管理ができる上(これは大きな利点だ)、暗号化されたパーティーションにはFreeOTFE経由でWindowsからアクセスすることも可能だ(さらに大きな利点だ)。

FUSEを使う方法

 また別の方法としてFUSEを使うという手もある。FUSEは、ユーザーがユーザー空間のプログラムによってファイルシステムを実装しルート権限なしでマウントする、などといったことを可能にするパッケージだ。FUSEを使用した暗号化ファイルシステムとしてはCryptoFSEncFSがある。CryptoFSとEncFSでは、専用のパーティーションや専用のディスクは必要なく、ファイル(とそのファイル名)は暗号化され、通常のディレクトリ内に置かれる。暗号化/復号する際には、キーとともに、暗号化ファイルシステムのためのマウントポイントとしてディレクトリを一つ指定する必要がある。そのディレクトリ経由でアクセスすると、暗号化されたデータは復号された状態で読み書きすることができる。キーがなければ、暗号化されたディレクトリをマウントすることはできず、復号された状態のファイルにアクセスすることはできない。

 CryptoFSとEncFSは、セキュリティとユーザーにとっての利便性という点でのバランスが優れている。FUSEを利用したCryptoFS とEncFSでは(あらかじめ固定サイズのパーティーションを作成する必要のあるループバック方式などとは異なり)ファイルシステムの大きさをあらかじめ決めておく必要はない。とはいえ非常に用心深く神経質なユーザーならほぼ確実に、CryptoFSとEncFSが抱える大きな難点が気になることだろう。つまり暗号化されたファイルの置かれている通常のディレクトリを見ることにより、暗号化されたファイルが全部で幾つあるのかを把握したり、それらのファイルの実サイズを計算したり、どのようなパーミッションになっているのかを確認することができてしまう。

 なおTom's Hardwareが行なったLUKS、EncFS、CryptoFSのベンチマークによると、ファイル入出力の性能に関してはLUKSが優勢であるようだ。

eCryptfs

 Linuxカーネルに統合されているもう一つの選択肢にeCryptfsがある。eCryptfsをインストール/利用するためには、カーネルモジュールとユーザー空間のユーティリティが必要になる。eCryptfsは別の既存のファイルシステムの上で動く、いわば2段式の暗号化ファイルシステムだ(2段式のため、コールスタックもその分、積み上がることになり、XFSなど一部のファイルシステムでは問題が起こる可能性がある。詳しくはeCryptfsのFAQを参照のこと)。

 eCryptfsを利用することの利点は、eCryptfsがネイティブのLinuxファイルシステムであり、FUSEを使ったりRPCの呼び出し経由で操作を行なったりする必要がないため、依存性が少なく、また、(おそらくは)よりきれいに開発できるということだ。またファイルについての暗号化関連のメタデータが各ファイルのヘッダ部分に保存されるため、データの移行やバックアップを楽に行うことができる。機能的には、キー管理などの機能はすでに利用できるようになっており、近い将来にファイル名の暗号化などの機能を実現することも計画されている。

       1|2 次のページへ

Copyright © 2010 OSDN Corporation, All Rights Reserved.

注目のテーマ