クラウドのデータも暗号化してみる

IMGP5524

- The Dropbox Blog » Blog Archive » Yesterday’s Authentication Bug
http://blog.dropbox.com/?p=821
- Dropboxに障害、正しいパスワードでなくてもアクセス可能な状態が約4時間続く -INTERNET Watch
http://internet.watch.impress.co.jp/docs/news/20110621_454760.html
- Dropboxでセキュリティ障害--一時的にパスワード不要のアクセス可能に - CNET Japan
http://japan.cnet.com/news/service/35004312/
- Dropbox、バグで他人の情報を閲覧し放題に ― 4時間弱 - モバイル・トゥデイ(Mobile Today)
http://mt.business.nifty.com/articles/4371.html

てことで,クラウドにデータを置くのが不安だという人も居ると思います.
で,以下のエントリを見かけました.

- TrueCryptでDropboxのデータを暗号化して利用する | Lifehacking.jp
http://lifehacking.jp/2011/06/truecrypt/

これはDropbox の中にTrueCrypt のボリュームを作るという方法のようです.しかし,この方法だと1バイトでも変更があるとTrueCrypt のボリューム全てを同期する必要があり色々ともったいないです.
#2つ目に紹介されているDMG を使う方法も同じ問題がある + 基本Mac でしか使えない.

EncFS という暗号ファイルシステムがあります.この暗号化ファイルシステムはファイル,ディレクトリ単位で暗号化を行います.そのため,Dropbox に使っても変更したファイルしか同期されないはずです.
残念ながらWindows は非対応ですが,Linux/MaxOS X/BSD/FreeBSD に対応しています.
#TrueCrypt はWidnows/MacOS X/Linux に対応.


以下に簡単にLinux(DebianSqueeze or Ubuntu11.04) での利用方法を説明します.

  • 導入.

パッケージから導入を行います.

$ sudo apt-get install encfs
  • fuse グループへ利用ユーザの登録

vigr コマンド等でfuse グループに利用ユーザを登録します.以下はmk アカウントを登録した例です.

$ sudo vigr
$ grep ^fuse: /etc/group
fuse:x:104:mk

Dropbox ディレクトリ内に暗号化データを格納するディレクトリを作成します.

$ mkdir ~/Dropbox/crypt

これは作らなくてもマウント時に自動作成可能です.

$ mkdir ~/enc-mount
  • 暗号化環境作成(初回マウント)

初回マウント時に暗号化の質問を色々聞かれます.とりあえずp で規定値の設定になるります.#規定値でaes256/bs1024/ファイル名も暗号化.
x で暗号形式やブロックサイズ,ファイルディレクトリ名の暗号化などを設定可能です.

$ encfs ~/crypt ~/enc-mount
新しい暗号化ボリュームを作成します。
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.
?> p

Paranoia configuration selected.

設定が完了しました。以下のプロパティのファイルシステムが
作成されます:
ファイルシステム暗号アルゴリズム: "ssl/aes", バージョン 3:0:2
Filename encoding: "nameio/block", version 3:0:1
鍵サイズ: 256 ビット
ブロックサイズ : 1024 バイト (8 バイト MAC ヘッダ含む)
Each file contains 8 byte header with unique IV data.
Filenames encoded using IV chaining mode.
File data IV is chained to filename IV.
File holes passed through to ciphertext.

-------------------------- 警告 --------------------------
The external initialization-vector chaining option has been
enabled.  This option disables the use of hard links on the
filesystem. Without hard links, some programs may not work.
The programs 'mutt' and 'procmail' are known to fail.  For
more information, please see the encfs mailing list.
If you would like to choose another configuration setting,
please press CTRL-C now to abort and start over.

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.

新しい Encfs パスワード: 
Encfs パスワードの確認: 
  • アンマウント
$ fusermount -u ~/enc-mount
  • 確認

暗号化ディレクトリを確認すると以下のような設定ファイルが作成されています.
~/crypt/.encfs6.xml
暗号形式やパスワードなどが記録されています.

    • ファイルを作成してみる

マウント状態でファイルを作成してみます

$ echo "hoge" > ~/enc-mount/hoge
$ ls -A ~/crypt/
.encfs6.xml  BcG,iErj4ppq,iXaTnrvNrEn

hoge に対してBcG,iErj4ppq,iXaTnrvNrEn? というファイルが作られています.
中を確認してみます.

$ od -xc ~/crypt/BcG\,iErj4ppq\,iXaTnrvNrEn 
0000000    84c1    5505    9b67    a495    f096    cbb9    6143    dddf
        301 204 005   U   g 233 225 244 226 360 271 313   C   a 337 335
0000020    33e4    e945    00d4
        344   3   E 351 324
0000025

謎のデータになっていました.
ファイルメーもデータも暗号化されているようです.


ということで,暗号領域が設定できました.

気になるところとしては,

  • 設定情報も同期される.
  • ファイル名も暗号化すると,暗号化時にファイル名帳が元より長くなるので利用できるファイル名長が規定値より短くなる.
  • Windows で読む手段が今のところ無い.

といったところでしょうか.
この方法を使うと,ファイル同期サービスは大抵暗号化可能だと思います.
Evernote なんかはこの方法は使えません.
Evernote は標準機能で一部分だけ暗号化は可能です.
##暗号化したい文字列を選択して右クリック->「選択肢た文字列を暗号化」一時的に同期を止めるなどして同期前に暗号化しておくといいでしょう.

- encfs - www
http://www.arg0.net/encfs
- EncFS | freshmeat.net
http://freshmeat.net/projects/encfs
- Linux/暗号化fs/EncFS - matoken's wiki.
http://hpv.cc/~maty/pukiwiki1/index.php?Linux%2F%B0%C5%B9%E6%B2%BDfs%2FEncFS