Carpe Diem

備忘録。https://github.com/jun06t

encfsでファイルの暗号化

概要

クラウドにファイルをバックアップする場合、できれば暗号化したいのですがVeraCryptなどでは1ファイルを変更しただけでボリューム全てをアップロードし直しになり現実的じゃありません。かといって全て暗号化zipなどにすると、使う上で不便極まりないです。

これらの問題を解決するのがEncFSという暗号ファイルシステムです。簡単に言うと

  • 復号済みフォルダ
  • 暗号化済みフォルダ

がリンクされていて、復号済みフォルダにファイルを入れると暗号化済みフォルダに暗号化された状態でファイルが作られます。 なので

  • 普段は復号済みフォルダを使う
  • 暗号化済みフォルダとクラウドストレージを同期させる

という形で前述の課題を解決できます。

環境

インストール

$ sudo apt-get install encfs

設定

フォルダ作成

リンクするフォルダを作成します。encryptedクラウドと同期させる暗号化済みフォルダ。decryptedが普段使用する復号済みフォルダです。

$ mkdir -p ~/encrypted
$ mkdir -p ~/decrypted

リンク

$ encfs ~/encrypted ~/decrypted
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 AES 192bit 通常の設定。個人用途なら十分
paranoia AES 256bit standardよりも強度は高いがパフォーマンスは落ちる
expert AES/Blowfish 128 ~ 256bit 全設定を自分で行う

詳しくは以下のサイトで非常にわかりやすく説明してあります。

EncFSのモードについて

今回はstandardで進めます。なのでそのまま何も入力せずEnter。

パスワード設定

以下の画面になるのでパスワードを入力

Standard configuration selected.

Configuration finished.  The filesystem to be created has
the following properties:
Filesystem cipher: "ssl/aes", version 3:0:2
Filename encoding: "nameio/block", version 3:0:1
Key Size: 192 bits
Block Size: 1024 bytes
Each file contains 8 byte header with unique IV data.
Filenames encoded using IV chaining mode.
File holes passed through to ciphertext.

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 Encfs Password: 

するとencryptedフォルダとdecryptedフォルダがリンクされます。
またencrypted/.encfs6.xmlという先ほどの暗号化設定のファイルが作成されます。
こちらとパスワードが盗まれると、他の人でも復号できてしまうため、.encfs6.xmlクラウドに同期させないでください。

動作確認

decryptedフォルダに、新規ファイルやフォルダを追加します。

$ cd decrypted/
$ echo test > hoge
$ mkdir fuga
$ touch fuga/piyo

次にencryptedフォルダを覗きます。

$ cd encrypted
$ tree
.
├── elEYrTpXZW24eDPJCBkJ,XyW
└── X6VMHBzgnPCQmpQtSn0M5A4H
    └── uuxQKP5fKMlp-qYeSemfsIv1

ファイルが名前ごと暗号化されていますね。中身も

$ cat elEYrTpXZW24eDPJCBkJ,XyW 
h??3?+?`:??y

と暗号化されてます。

その他

アンマウント

システム的には暗号化したものを保持していて、decryptedフォルダをアンマウントすれば復号済みのファイルは見えなくなります。

$ fusermount -u ~/decrypted
$ tree decrypted/
decrypted/

0 directories, 0 files

再び見たいときは最初のリンクのコマンドを実行してマウントします。

$ encfs ~/encrypted ~/decrypted
EncFS Password: 

パスワードの変更

encfsctlコマンドでパスワードを変更できます。

$ encfsctl passwd ~/encrypted
Enter current Encfs password
EncFS Password: 
Enter new Encfs password
New Encfs Password: 
Verify Encfs Password: 
Volume Key successfully updated.

ソース