暗号ファイルシステム EncFSの導入

度重なる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

rlog

$ tar xvfz rlog-1.3.4.tgz

$ cd rlog-1.3.4

$ ./configure

$ make

$ su

# make install

格納場所

fuse

$ 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

格納場所

EncFS

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 コマンド名」で出力される英文マニュアルを、個人的に翻訳、加筆したもの。実際に使ってみていない機能もあるので、内容は保証しない。自分で試して確認のこと。

オリジナルURL

関連ソフトのダウンロードや、他の暗号化ファイルシステムとの比較などの情報取得は、ここから。

2004年8月現在、EncFSは、細かくバージョンアップ(不良対策)されているので、要チェック。

暗号についての解説