pCloudを使用するうえでファイル暗号化が必要になったが
rcloneのデメリットの部分を何とかしたいなと思って見つけたのがcppcryptfsだ
cppcryptfs概要
元々はgocryptfsという暗号化アプリがあってこの開発環境がGo言語というGoogle開発のプログラミング言語が使われている
これを何らかの事情でC++言語に置き換えてWindowsに移植したのがcppcryptfsだ
rcloneと同じくスタンドアロンで動作するのでGitからDLして適当なフォルダに解凍すれば即使用することができる
cppcryptfsの私的設定
cppcryptfsの基本的な設定としては以下のような感じで使用している
File names AES256-EME ✓ Long file names
Long name max 230 ✓ Deterministic names
File data AES256-GCM
Scrypt parameters N=2^ 18 (256MB required)
ファイル名暗号化と長いファイル名への対応
ファイル名長は230文字まで
暗号化形式はAES256GCM
Scryptによる復号化負荷 N=2^18 はかなり高負荷
※デフォルトの16は現在のPC性能ではかなり低負荷なので注意
rcloneと比較して優れている点は以下
GUIベースの設定ファイルの作成及びマウント管理
rcloneでは簡易的にしかなかったGUIも本格的に用意されており使用開始や設定変更なども比較的簡単にできるのでよりハードルが低い印象を受けた
また設定ファルを複数作成して使い分けたりパスワードの自動入力に対応するなど個人用途には痒いところに手が届く機能もある
長いファイル名への対策
rcloneでは日本語ファイル名を暗号化するに際してファイル名自体が255文字を超えるケースが多くなり
緊急時など暗号化ファイルをローカルに保存するのに致命的な問題があるのだがcppcryptfsの場合は予め字数制限を設定すると暗号化名がそれを超えた場合に限り
自動的にファイル名を短くし本来のファイル名に復元するための情報を.nameファイルに分離保存することで長いファイル名へ対応してくれる機能もある
もちろんこの機能自体には暗号化後のファイル名がバッティングする可能性が高くなるなどのデメリットもある(Base64対応サービスならほぼ問題ないだろう)
AES256による強力な暗号化に加えScryptによるブルートフォース対策有り
ファイル自体の暗号化クラックもそうだが設定ファイルが流出してしまった場合
ブルートフォースなど理論上時間をかければ突破できてしまうようなクラック方法に対しても
Scryptというハッシュアルゴリズムによって難読性を高めている
これはわざとシステムに負荷をかけることによりパスワードクラックを遅延させクラッカーなどを疲弊、諦めさせる狙いがある
但しデメリットも多い
デメリット:rcloneなどのストレージマウントツールが必要
クラウドストレージに暗号化ファイルを置いたとしても復号化しつつファイル管理するためにはやはりrcloneなど何某かのマウントツールが必要になってくる
またローカル暗号化→リモートストレージマウント→リモート復号化という流れで都合3つほどマウントドライブが必要になっていてマウント地獄になる
デメリット:システム負荷が高め
ローカルドライブを暗号化するためだけならそこまで重くないので神経質にならなくていいが
これがクラウドなどネットワーク越しになるととたんに重くなる
特にフォルダ内にファイル数が多くなってくると顕著でクラウド側の帯域にも依るが頻繁にIOエラーが発生してしまう
pCloudなどは頻繁にネットが瞬断することがあってそれがIOエラーの一因ではないかと思う
そもそもrcloneのWinFSPにcppcryptfsのDokanで仮想化をレイヤーしているので何かの拍子に整合性などがぶっ壊れるんじゃないか冷や汗物
デメリット:整合性を乱しうるメタデータの存在(dirivおよびnameファイル)
暗号化設定によっては.dirivや.nameと言ったファイルが生成使用されるのだがこのファイルも何らかの不具合で破損したり削除されてしまうとファイルが復号化したり閲覧ができない状況に陥ることは十分有り得る
しかもrcloneのように復号化できないファイルのエラーを表示したりしてユーザーに周知させることもないので知らぬ間に復号化できないファイルが出来上がることもあるだろう
※dirivやnameファイルを使用しない設定もできるがセキュリティ低下や機能面で問題が出るので中々思うようにいかない
デメリット:結局転送にもrcloneを使う
cppcryptfsの暗号化ファイルを転送する方法は3つほどあるがどれも一長一短あって安定しない
①cppcryptfsでリモート側を標準マウントしたドライブにファイルをD&Dして転送
本来の使い方なのだろうがpCloud側がマルチスレッドコピーに対応しないためにファイルサイズが128MBを超えた辺りからエラーがでて転送できない
現状は128MB以下の小さなファイル向けの転送方法
②ローカルフォルダで暗号化したファイルをブラウザやrcloneマウントで転送
ローカルに暗号化用のフォルダを作ってそこを標準マウントすることで暗号化ファイルが作れる
この暗号化ファイルを直接転送してしまう方法だが
ブラウザかrcloneマウントドライブのどっちでもいいんだけど結局
ブラウザの場合はファイルパスの長さ制限でアップロードできない
rcloneマウントの場合は上記に加えマルチスレッドエラーに引っかかる
chromeなどブラウザはファイル名よりパス長に敏感だったりする
などの制限によりうまくコピーできないことも多い
③暗号化フォルダの構造を維持してrclone copyで転送
ローカルとリモートで暗号化フォルダの構造を維持しておいて
転送したいファイルをそのフォルダに置いてからrclone copyをすれば長いファイルパスやファイル名の場合でも問題なく転送できる
この場合はファイル単位ではなくフォルダ単位での転送になる
結局はrclone様々なのである
デメリットとまでは言わないが:confファイルかパスワード失くすとアウト
rcloneと違ってgocryptfs.confファイルも復号化に必要なキーファイルなので失くすとアウトとなる
これはrcloneのパスワードさえ覚えていれば良いという方式とはある意味セキュリティ的には良い面もあるが
なぜかGUIのデフォルトではconfファイルの作成先が暗号化フォルダのルートだったりするのでクラウドストレージを利用する際は逆に注意しないといけない
ちなみに同じパスワードでもrcloneと違って毎回違うキーデータがconfファイルに書き込まれるので必ず暗号化開始時のものをバックアップしておく必要がある






コメントを残す