eCryptfsが許可する最大ファイル名(およびフォルダ)のサイズは何ですか?

eCryptfsが許可する最大ファイル名(およびフォルダ)のサイズは何ですか?

私は新しいeCryptfsユーザーです。非常に基本的な質問がありますが、どこにも見つかりません。 Linuxを使用するSynology NASでeCryptfsを使用することに興味があります。

Synologyの暗号化アプリケーション(eCryptfs)を介してマイフォルダ(EXT4)を暗号化しようとしたときに、ファイル名が45文字を超えることができないというエラーが発生しました(暗号化できません)。

制限が実際に45文字であれば、eCryptfsはほとんどの人が利用できるツールではないでしょう。

eCryptfsを使用してファイルとフォルダを暗号化するときに許可される最大ファイル名のサイズは何ですか? Linuxでは255文字ですか?

答え1

完全公開:私はeCryptfsユーザースペースユーティリティの作成者であり、現在管理者の一人です。

良い質問!

ほとんどのファイルシステム(EXT4を含む)では、Linuxの最大ファイル名長は255文字、最大パス長は4096文字です。

暗号化されたファイルシステム階層ファイルシステムです。実際には、ディスクにデータを書き込むために使用される他のファイルシステム(EXT4など)の上にスタックします。 eCryptfsは常にファイルの内容を暗号化しますが、オプションでファイル名を暗号化(難読化)することもできます。

ファイル名が暗号化されていない場合、サブファイルシステムに作成されたファイル名は単に一致するため、最大255文字までファイル名を安全に作成してその内容を暗号化できます。攻撃者は、index.htmlまたはの内容を読むことはできませんが、budget.xlsどのファイル名が存在するかを知ることができます。あなたの使用量によっては、機密情報が公開されることも、そうでない場合もあります。

ファイル名が暗号化されると、状況はより複雑になります。 eCryptfsは、暗号化されたファイル名を明確に識別できるように、暗号化されたファイル名の前にいくつかのデータを追加します。また、暗号化自体にはファイル名を「パディング」する操作も含まれます。

たとえば、暗号化されたファイルがあります~/.bashrc。ファイル名は私のキーを使用して暗号化されます。

/home/kirkland/.Private/ECRYPTFS_FNEK_ENCRYPTED.dWek2i3.WxXtwxzQdkM23hiYK757lNI7Ydf0xqZ1LpDovrdnruDb1-5l67.EU--

明らかに7文字のファイル名を暗号化するには、7文字以上が必要です。経験上、143文字を超える文字ファイル名は、暗号化に255文字を超える文字が必要であることを発見しました。したがって、eCryptfsアップストリーム開発者として、私たちは通常、ファイル名を約140文字に制限することをお勧めします。

今まとめると、SynologyテクノロジーNAS は、eCryptfs と Linux を組み込んで使用してデバイスのデータを暗号化および保護する商用製品です。私たち(eCryptfsのアップストリーム開発者)はSynologyまたはその製品とは関係ありませんが、eCryptfsが使用されていることを一般的に嬉しく思います。野生で。私が見るには、45文字を推奨するのは印刷上のエラーであるか(私たちが推奨する140文字に比べて)もう少し保守的な見積もりの​​ようです。

答え2

このスレッドは私も同じことを疑問に思っていたので非常に興味深かった。ファイル名が140文字以下でなければ、50,000個のファイルのうち20個のファイル名を変更する必要があるかもしれませんが、あまりにも多くのファイル名を変更する必要があるため、45文字以下ではできません(私の場合)。

私はSynologyに直接同じ質問をした(そしてこの記事を指摘したこともあります)、彼らの答えは興味深かったです。 「暗号化された共有のファイル名は143バイトに制限されています。通常のラテン文字は140文字またはCJKは45文字(中国語、日本語、韓国語)です。」

この回答に基づいて、45、46、140、143、144文字のファイルを使用して、いくつかのテストを直接実行しました。私のテストでは、最大143文字(Synologyの説明とは異なりバイトではない)のファイルは暗号化されていますが、最大144文字のファイルではフォルダは暗号化されません。ただし、NASから受け取ったエラーメッセージは、ファイル名が45文字未満でなければならないことです(実際には144文字未満でなければなりません)。

私はCJK文字でテストしていません...しかし、この記事を読んでいる人なら、システムで何を言っても143文字までは問題ありません。

答え3

Linuxでは、ファイル名あたりの長さ制限が255文字ではなく255バイトであることを明確にしたいと思います。これは重要な違いです。たとえば、UTF-8エンコーディングを使用している場合は、最大100文字のファイル名を持つことができます。

答え4

長いファイル名をサポートするためにホームディレクトリの特定のサブツリーが必要だったので、ecryptを使用したファイル名の長さは私にとってのみ問題でした。結局、ファイル内にファイルシステムを作成してマウントできることに気づきました。

dd if=/dev/zero of=/home/me/.some.img bs=1024 count=1024
mkfs.ext3 /home/me/.some.img
chmod 777 /home/me/longfilenames
sudo mount /home/me/.some.img /home/me/longfilenames

これにはいろいろな種類の効率性の問題があるかもしれませんが、ファイルが私のローカル目的のために定期的に生成されるテスト結果である私の場合は十分です。

私の同僚は彼らのイメージを/ tmpに配置しました。テストデータは特に機密ではありません。私たちは主にテスト結果ではなくソースコードを保護したいと思います。

関連情報