ファイルシステム暗号化は、写真の読み取りやサムネイルの書き込みに暗号処理を追加しますが、インデックス作成への影響は主にハードウェアアクセラレーション、ファイルサイズ、メタデータ、キャッシュによって決まります。
写真インデクサーは、多数のオリジナル画像を開き、EXIFデータを読み取り、画像をデコードし、複数のサムネイルを生成し、コンテンツをハッシュ化して、データベースのレコードを書き込みます。透過的なファイルシステム暗号化はこれらの処理より下位で動作し、鍵が利用可能になるとファイルの内容や、多くの場合ファイル名を復号します。最新のCPUでは暗号処理の追加コストは小さい場合がありますが、何百万もの小さなファイルのオープン、画像のデコード、NASのランダムアクセス遅延、ロックされたディレクトリなどが、全体の所要時間を左右することがあります。
暗号化は保護されたすべての読み取り・書き込み経路に存在する
ファイルレベルの暗号化は、ストレージとページキャッシュの間をブロックが移動する際に、保護されたファイルの内容とファイル名を変換します。ロックを解除すると、アプリケーションは通常のパスとファイルAPIを使用できます。写真サービスが暗号文を理解する必要はありませんが、そのI/Oでは暗号処理のCPU負荷が発生します。
Linuxカーネルの透過的暗号化では、fscryptを対応ファイルシステムに統合された透過的な暗号化として説明しています。その対象範囲から、ファイルの内容と名前を保護しつつ、通常のインデックス作成やデコード処理はアプリケーションが行うことが分かります。
サムネイルの出力先は、同じ暗号化ツリー、別のアプリケーションボリューム、または暗号化されていないキャッシュのいずれかになります。選択した境界によって、オリジナル、派生ファイル、データベースファイルのどれに暗号化を適用するか、あるいは3つすべてに適用するかが決まります。この影響は、想定するホームサーバーのワークロードで測定可能な状態にしておく必要があります。
小さなファイルのメタデータが暗号処理のスループットを左右することがある
大きな写真を読み取る場合、長い連続バッファが提供されるため、最新の暗号命令で効率的に処理できます。しかし、何千ものファイルをインデックス化する場合は、パス検索、権限チェック、inodeへのアクセス、EXIFの読み取り、データベーストランザクション、小さなサムネイルの書き込みも実行されるため、ファイルごとの遅延が暗号化のバルク帯域幅を上回ることがあります。
fscryptプロジェクトのfscrypt鍵管理では、ディレクトリポリシー、鍵管理、メタデータ、対応するネイティブファイルシステムインターフェースについて説明しています。これらの運用レイヤーにより、鍵がロックされた状態やファイル名の処理によって、画像のデコードが始まる前に検出が停止する理由が分かります。複数のパイプライン段階が同じストレージとメモリ容量を共有する場合、この違いが重要になります。
ページキャッシュにヒットすると、すでに復号されたデータが提供されるため、キャッシュが温まった状態での再実行は、コールドスキャンよりはるかに高速に見えることがあります。ベンチマークでは、最初の読み取り、キャッシュ済みの読み取り、サムネイルの再生成を分けて測定し、差のすべてを暗号化の影響だと見なさないようにする必要があります。
ロックされた鍵と非対応の経路が明確な境界を作る
インデクサーの起動時に暗号化鍵を利用できない場合、ファイル名にアクセスできなかったり、エンコードされた名前として表示されたりし、内容を読み取れなくなります。リモートマウント、コンテナ、サービスアカウントでは、対話的なログイン時とは鍵の可視性が異なる場合もあります。
CephFSの暗号化されたファイル名では、ディレクトリごとのfscryptの動作を説明し、ファイル名と内容が暗号化されることを示しています。これは、暗号処理の生の速度だけでなく、ポリシーと鍵の範囲が重要である理由を示す分散ファイルシステムの例です。この境界は、想定した家庭内データを使ってテストする必要があり、思い込みで判断してはいけません。
失敗の境界とは、ロックが解除された温かいキャッシュだけを測定し、暗号化されたインデックス作成は常に無料だと結論づけることです。再起動、コールドキャッシュ、鍵の利用不能、CPU競合、サムネイルの書き込みによって、コストや完全なアクセス失敗が明らかになることがありますが、温かいキャッシュでのテストでは隠れてしまいます。
暗号化された写真のインデックス作成に関するFAQ
暗号化によってサムネイルの画質は低下しますか?
いいえ。透過的なファイルシステム暗号化は保存されるバイト列を変更しますが、デコーダーが読み取る前に元のデータへ復元します。サムネイルの画質が変わるのは、写真アプリケーションが異なるリサイズ、コーデック、圧縮設定を使用する場合だけです。この影響は、想定するホームサーバーのワークロードで測定可能な状態にしておく必要があります。
ハードウェアAESアクセラレーションですべてのオーバーヘッドをなくせますか?
バルク暗号処理のコストを大幅に削減できる可能性はありますが、パス検索、鍵のセットアップ、ファイルシステムのメタデータ処理、画像のデコード、データベースへの書き込み、ネットワーク遅延までなくすことはできません。小さなファイルのインデックス作成は、別の要因によって制限される場合があります。複数のパイプライン段階が同じストレージとメモリ容量を共有する場合、この違いが重要になります。
サムネイルを暗号化されたデータセットの外部に保存すべきですか?
そうすることで分離性や利便性が向上する場合がありますが、サムネイルから機密性の高い視覚情報が漏れる可能性があります。派生ファイルを無害なキャッシュファイルと見なすのではなく、脅威モデル、アクセス制御、バックアップポリシー、測定したパフォーマンスに基づいて判断してください。この境界は、想定した家庭内データを使ってテストする必要があり、思い込みで判断してはいけません。
コールド、ウォーム、鍵ロック状態のインデックス作成をベンチマークする
同じ写真セットを、条件の近い暗号化ファイルシステムと暗号化されていないファイルシステムで使用します。最初のコールドスキャン、ウォーム状態での再スキャン、サムネイルの再生成を測定し、1秒あたりのファイル数、メタデータ操作、読み取り・書き込みバイト数、CPUサイクル、I/O待ち時間、キャッシュ状態、データベースの増加量、エラーを記録します。
一時領域の段階で説明されている一時領域の処理も含めます。実際のコンテナまたはアカウント内で、再起動後のサービス起動をテストし、鍵の利用可能性、マウントのタイミング、ファイル名へのアクセスが本番環境と一致するようにします。この影響は、想定するホームサーバーのワークロードで測定可能な状態にしておく必要があります。
ファイルシステム、ストレージ、写真形式、サムネイルサイズ、データベース、キャッシュ条件を一定に保ったうえで、速度低下の原因を特定します。サムネイルがプライベートなコンテンツを露出させる場合は保護を維持し、管理されていない時間差を根拠に暗号化を弱めるのではなく、本当のボトルネックを最適化してください。
テック&AIハブ
もっと読む

ホームカメラはクラウドの時刻サービスなしでイベントを同期できますか?
クラウドを使わないカメラ時刻の仕組みを優先した説明、共有リソースに伴うトレードオフ、クエリのファンアウトに関する3つのFAQ、そして実践的な検証手順。

ローカルAIサービスは推論前に破損したモデルレイヤーを検出できますか?
破損したモデル層の検出について、メカニズムを優先して説明し、共有リソースのトレードオフ、クエリのファンアウトに関する3つのFAQ、実践的な検証プロトコルを取り上げます。

すべての埋め込みを再生成せずにRAGシステムを復元できますか?
再埋め込みなしでRAGを復元する仕組み優先の説明、共有リソースのトレードオフ、クエリファンアウトに関する3つのFAQ、そして実践的な検証プロトコル。

