web-dev-qa-db-ja.com

cryfsで暗号化されたファイルのサイズが大きすぎるのはなぜですか?

Cryfsを使用して1GBのフォルダーを暗号化し、暗号化されたフォルダーは6元のフォルダーよりも大きいように見えましたか?暗号化されたファイルは常に元のファイルよりも大きいことを知っていますが、6倍ですか?!?

これはバグの原因ですか、それともencfsや他の暗号化アプリよりも多くのことをするCryFsにとっては正常ですか?

3
alien250

CryFSの目標は、ファイルの内容だけでなく、ファイルサイズ、メタデータ、ディレクトリ構造を機密にすることです。

ファイルサイズを隠すために、CryFSはファイルのコンテンツを同じサイズのブロックに分割し、これらのブロックを個別に暗号化します。ツリー構造を使用して、ブロックがどのように一緒になってファイルを形成するかを記憶します。このツリー構造にはオーバーヘッドがほとんどなく、暗号化された同じサイズのブロックを使用して保存されます。ファイルのメタデータとディレクトリ構造を隠すために、それらは暗号化された同じサイズのブロックを使用して表されます。

ソース:

https://www.cryfs.org/howitworks

1
Elder Geek

以下は開発者のSebastian M.から直接です:(これが同じ質問を持っている人の助けになることを願っています)

tldr;>これは、CryFSの動作方法が原因で発生する可能性がありますが、今後の0.10リリースシリーズではさらに改善されるはずです。また、ファイルシステムのブロックサイズを変更することにより、0.9.xバージョンを使用する場合に改善できます。

背景:CryFS 0.9.xは、デフォルトで32kbのブロックですべてのデータを割り当てます。ファイルが非常に小さい場合でも、各ファイルには少なくとも1つのブロックが必要であり、少なくともこれらの32kbのスペースが必要です。これは、CryFSがこれを使用してファイルサイズを隠すためです。なぜこれが重要なのかについては、2番目の段落で詳しく読むことができます。 https://www.cryfs.org/comparison#encfs CryFSの論文には、攻撃者があなたを見つけられないセキュリティの証拠があります。ディレクトリ構造、またはファイルが暗号化されたファイルシステムを見ることからの大きさ。

しかし、残念なことに、これは、膨大な数の小さなファイルを保存するシナリオでは、膨張が非常に大きくなる可能性があることを意味します。 0.10.xでは、デフォルトが16kbブロックを使用するように変更されたため、膨張ははるかに小さくなるはずです。ただし、それを待つ必要はありません。ファイルシステムを作成するときに、ブロックサイズを選択できます。より小さいブロックサイズを選択すると、バイナリの膨張は軽減されます(4 kbまで下げることができます)が、大きなファイルにアクセスする場合、ファイルシステムが少し遅くなる場合があります。

1
alien250