ファイルの暗号化について on クラウドストレージ

**もし死んだらあのHDDの中身だけは(略)**、という誰にでもある欲求を満たすための試み。
最近はHDDというよりクラウドストレージに突っ込む流れみたいなのでその辺を考えてみたかった。

# 結論から言うスタイル
要件をいい具合に満たした**cryptomator(Cyberduck)**を試してみることにしました。
使用感とかそのうち。

もしクラウドストレージに暗号化したファイルをバックアップしている猛者がいたら、暗号化戦略をQiitaに上げてもらえるとすさまじい勢いで参考にするのでよろしくお願いしまし。

# 以下の要件を想定するよ

- 無料
    - お金払ってまで隠したいようなデータは持ってないので
- ファイル単位で暗号化
    - パーティション丸ごとや、暗号化ドライブを作成、みたいな作りはクラウドストレージと相性悪いので
- ファイル名も暗号化
    - Pixivとかタイトルをファイル名にして保存してると性癖が滲み出てくるから…
- マルチプラットフォーム
    - WindowsとLinuxで使いたい。Macはおうちにないから無くても
- 簡単
    - 手順が複雑だと戻し方わからなくなるとか致命的なことがあり得る？

# ファイル暗号化がらみのwebページで見かける彼ら

| name         |Win |Mac|Linux|
|:-------------|:--:|:-:|:---:|
|~~TrueCrypt~~ | ○  | ○ |  ○  |
| VeraCrypt    | ○  | ○ |  ○  |
| EncFs        | △ | ○ |  ○  |
| cryptomator  | ○  | ○ |  ○  |
| gocryptfs    | △ | ○ |  ○  |

gocryptfsは日本語で引っかかるところがArchWikiしかない。というかArchWikiなんでもあるな…？
△のEncFSとgocryptfsは、公式のWindows対応ではないみたい。3rd-party portなんだって。有志による対応版みたいなもの？

調べていて真っ先に引っかかったのはTrueCryptなんだけど、こいつは不具合見つかったまま開発終了してしまったみたい。
公式の配布はもうやってないし、二次配布サイトで仮に見かけても使わないほうがよさそう。

上に乗せたのは無料ばかりだけど、どうやらcryptomatorのandroid版は有料らしい。

# 一つずつ見ていきましょう

**1. VeraCrypt**
VeraCryptはTrueCryptの後継にあたるソフトウェアです。
ファイル単位の暗号化には対応していません。たぶん戦略が違うのよね。
「veracrypt 使い方」とでもggったら沢山出てくるのでここでは詳しく触れませんが、今回はファイル単位の暗号化が必須なので選びませんでした。
ファイル毎に適切な大きさの暗号化ドライブを作ればできなくはないのだけど、10ファイルくらいで吐くのが見えているので…。

**2. EncFs**
ファイル単位の暗号化、ファイル名の暗号化に対応している点でバッチリ。
使い方も復号ディレクトリに入れると自動的に暗号化ディレクトリに暗号化ファイルが出来上がるお手軽っぷり。
ただ、2014年にセキュリティ的にまずい点が見つかって(？)、2.0で直るよって言ったまま辿り着いていない模様。
同一ファイルの異なる2バージョンの暗号化ファイルがあると解読されてしまう？と書かれているみたい。
仮に解読されたところで「こいつは脚派か」とか分かる程度の話なので今回の要件では問題ないかな。
ファイル単位の暗号化できないと辛いよなーって内容で既に記事にしている方がいました→[「encfsでファイルの暗号化」Carpe Diem](http://christina04.hatenablog.com/entry/2016/01/28/195104)
やっぱりお手軽っぽくていいな…。

**3. cryptomator**
ファイル単位の暗号化、ファイル名の暗号化はクリア。
クラウドストレージに投げ込む場合、単体よりCyberduck組み込みで使うのがお手軽で良さそう。
他の暗号化ソフトと違う点として、ディレクトリ構造の暗号化もしてくれるので、一歩進んでいる感じもある。
ディレクトリ構造の暗号化があると何がいいかというと、
「手元にある『★極秘★裏帳簿ファイル』の'11,'12,'13,'14,'15,'16,'17と、サイズ/更新時刻が一致するファイル一式が入っているディレクトリを見つけた。たぶん手元に対応がない1ファイルが'18に違いない。フヘヘ…」
みたいなケースが回避できるらしい。いや、そもそも手元に過去分がある時点でどうなのさって話。

**4. gocryptfs**
Go言語でできてる！！！！
ファイル単位の暗号化、ファイル名の暗号化はクリア。
使い方はEncFSと同じ感じみたいなのでお手軽っぽい。
公式ページの比較表見ると速度が圧倒的で、日々大量に暗号化するとしたら速度は凄く重要だと思う。
どれくらい速いのか体感で分かってないので、他がストレスなく使えるとしたら必要以上に速いことによるメリットはあまり浮かばない。
他の速度がストレスフルだとしたら選択肢としてかなり優位かも。

# 一つずつ見た結果
VeraCryptが今回の要件では除外されて、他が一長一短。これという差が無いな。
そもそも解読されてもそんなに困らないデータって時点で、コストかけて暗号化するメリットが薄いことに気が付いてしまった…。
折角調べたので、cryptomator一旦使ってみることにします。公式でマルチプラットフォームを満たしているのはこれだけみたいだし。

# 調べるにあたって参考にしたサイト

そもそもどんな方法(ソフトウェア)があるの？
(1)[「Comparison of disk encryption software」Wikipedia](https://en.wikipedia.org/wiki/Comparison_of_disk_encryption_software)

比較表的なもの
(2)[「ディスク暗号化」ArchWiki](https://wiki.archlinux.jp/index.php/%E3%83%87%E3%82%A3%E3%82%B9%E3%82%AF%E6%9A%97%E5%8F%B7%E5%8C%96#.E6.AF.94.E8.BC.83.E8.A1.A8)
(3)[「Comparison with Other Projects」gocryptfs](https://nuetzlich.net/gocryptfs/comparison/)

クラウドストレージとの親和性という観点で
(4)[「Comparison of encrypted cloud storage solutions」CryFS](https://www.cryfs.org/comparison#summary)

その他各ソフトの公式サイトは(1)から大体飛べますよ。

# その他雑感
- 暗号化ソフトウェアが(メンテされ)なくなったら、復号できなくなるってことなのかな…？ソフトウェア自体もどこかにバックアップしておいた方がいいのか
- Androidからもクラウドストレージにつないで透過的に復号ファイルが見れるといいのだけどcryptomatorさんそこんとこどうなんですか。Playストアで\550か、ムムム…。
- WindowsだとBitLockerがあったな、と思い出したけどファイル単位の暗号化できないんだね。残念。
- パスワード付きZipに入れて名前変えればいいやん、という指摘は、Zipの中身のファイル名はパスワード解けなくても見えちゃうからダメー。中身のファイル名変えればいいやん、は元のファイル名に戻すの手間だからダメー。
- EncFSはファイル名長いと死ぬくさい。cryptomatorは1025までだからかなり大丈夫そう。と思ったがディレクトリ構造暗号化も込みで1025だとどうなんだろうね。gocryptfsは名称管理用の別ファイルに逃がすので実質ファイル名の長さに制限無さそうな…？