度重なるEncFSのバージョンアップで、 このページも実態とずれてきている。最新の導入方法・使用方法を別ページに整理中である。(記 2006年2月26日)
PCの盗難によって、ハードディスクの中の情報が悪用されることを防止する方法として、ファイルを暗号化することを考えた。使えるソフトを探し、EncFSを発見した。
EncFSは、ハードディスク内のデータ(ファイルの中身とファイルの名前)を暗号化するソフトである。アプリケーションは、EncFSの存在を意識すること無く、通常のハードディスクと同じ使い方となる。
kernel2.6以降は、OSそのものに暗号ファイルシステムが組みこまれている。こちらは、ボリューム全体を暗号化する為、実ボリュームが暗号化の範囲となる。このことが、ディレクトリ単位に暗号化範囲を指定できるEncFSとの使い勝手の違いかもしれない。kernel2.6の暗号ファイルシステムは、まだ味見していないので、よく分からない。
EncFSのWEBサイトから、EncFSをダウンロードする。rlogやfuseは、EncFSのWEBサイトから辿って、ダウンロードできる。
OpenSSLも必要だが、標準でインストールされているので、インストール不用。
ここで使用しているLinuxディストリビューションは、「Fedora Core 1」。
LinuxをインストールしたCDのどこかにあるはず。無ければダウンロードしてインストールする。
$ su # rpm -i kernel-source-xxxxxxxx.rpm
$ tar xvfz rlog-1.3.4.tgz $ cd rlog-1.3.4 $ ./configure $ make $ su # make install
$ tar xvfz fuse-1.3.tar.gz $ cd fuse-1.3 $ ./configure --with-kernel=/usr/src/linux-2.4.22-1.2199.nptl $ make $ su # make install
make前に環境変数PKG_CONFIG_PATHにpkgconfigのパスを設定する事を忘れずに。
$ tar xvfz encfs-1.1.4-1.tgz $ cd encfs-1.1.4 $ export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig $ ./configure $ make $ su # make install
librlog.so.1を格納しているディレクトリ/usr/local/libを/etc/ld.so.confに追加する。
次の行を/etc/ld.so.confに追加し、
/usr/local/lib
ldconfigを実行する。
$ su -l # vi /etc/ld.so.conf # ldconfig
暗号化するデータを格納するディレクトリと、このディレクトリ以下を仮想デバイスとして、マウントするディレクトリを指定して実行する。
初期作成時は、オプションの選択要求がある。空ENTERを押下し、標準モードを選択した。
初期作成完了と同時にマウントされる。
# encfs /home/yogawa/testencfs/dataspace /home/yogawa/testencfs/mountpoint Creating new encrypted volume. Please choose from one of the following options: enter "x" for expert configuration mode, enter "p" for pre-configured paranoia mode, anything else, or an empty line will select standard mode. ?> Standard configuration selected. Configuration finished. The filesystem to be created has the following properties: Filesystem cipher: "ssl/blowfish" , version 2:1:1 Filename encoding: "nameio/block" , version 3:0:1 Key Size: 160 bits Block Size: 512 bytes Each file contains 8 byte header with unique IV data. Filenames encoded using IV chaining mode. Now you will need to enter a password for your filesystem. You will need to remember this password, as there is absolutely no recovery mechanism. However, the password can be changed later using encfsctl. New Password: Verify Password:
encfs実行前のマウント状態
$ df Filesystem 1K-ブロック 使用 使用可 使用% マウント位置 /dev/hda2 13692040 6289320 6707200 49% / /dev/hda1 102454 6331 90833 7% /boot none 241188 0 241188 0% /dev/shm
encfs実行後のマウント状態
$ df Filesystem 1K-ブロック 使用 使用可 使用% マウント位置 /dev/hda2 13692040 6289320 6707200 49% / /dev/hda1 102454 6331 90833 7% /boot none 241188 0 241188 0% /dev/shm /proc/fs/fuse/dev 13692040 6984840 6707200 52% /home/yogawa/testencfs/mountpoint
アンマウントは、fuseのコマンドを使用する。
$ fusermount -u /home/yogawa/testencfs/mountpoint
システム起動時は、アンマウントされた状態であるので、マウントが必要となる。
マウントは、セキュリティ確保の為、手動でおこなう。自動でマウントする仕掛けにすると、パスワードをハードディスク上にもつことになり、セキュリティ上無意味となる。
$ df Filesystem 1K-ブロック 使用 使用可 使用% マウント位置 /dev/hda2 13692040 6289328 6707192 49% / /dev/hda1 102454 6331 90833 7% /boot none 241188 0 241188 0% /dev/shm $ encfs /home/yogawa/testencfs/dataspace /home/yogawa/testencfs/mountpoint EncFS Password: $ df Filesystem 1K-ブロック 使用 使用可 使用% マウント位置 /dev/hda2 13692040 6289328 6707192 49% / /dev/hda1 102454 6331 90833 7% /boot none 241188 0 241188 0% /dev/shm /proc/fs/fuse/dev 13692040 6984848 6707192 52% /home/yogawa/testencfs/mountpoint
マウントポイントを通してアクセスすると、書き込み時は自動的に暗号化され、読み込み時は自動的に復号化される。
データ格納場所を直接アクセスすると、ファイル名もファイルの中も暗号化されているので、使用出来ない。
EncFSで生成した暗号ファイルは、マウントした状態でも、マウントしたユーザ以外からは、たとえrootであってもアクセス出来ないようだ。
マウントとマウントしたファイルを使用するアプリケーションの起動を、1つのシェルに纏める。
rootでログインしてこのシェルを起動する。
#!/bin/sh # 全暗号ファイルシステムのマウント su encfs........ -l user #Apache DocumentRoot,Samba su encfs........ -l user #Postgres DATA # Postgres起動 pgctl .... # Apache起動 /usr/local/apache2/bin/apachectl start # # samba起動 smbd -D nmbd -D
「man コマンド名」で出力される英文マニュアルを、個人的に翻訳、加筆したもの。実際に使ってみていない機能もあるので、内容は保証しない。自分で試して確認のこと。
関連ソフトのダウンロードや、他の暗号化ファイルシステムとの比較などの情報取得は、ここから。
2004年8月現在、EncFSは、細かくバージョンアップ(不良対策)されているので、要チェック。