確定的暗号化での絞り込みのサポート
データが暗号化されているときに絞り込みを使用できるようにするには、データ内に何らかのパターンを許容する必要があります。確定的暗号化では、静的初期化ベクトル (IV) を使用することで、暗号化されたデータを特定の項目値と照合できるようにしています。システムは暗号化されたデータを読むことはできませんが、静的 IV を使用することで、そのデータを表す暗号文字列を取得することができます。特定組織の特定項目の IV は一意であり、組織固有の暗号化鍵でしか復号化できません。
暗号化手法の相対的な強さと弱さは、特定のアルゴリズムに対して行われる可能性のある攻撃の種類に基づいて評価します。また、攻撃が成功するまでに要する時間も考慮します。たとえば一般に、AES 256 ビット鍵に対するブルートフォース攻撃は、現在のコンピューティング能力ではとんでもない年数がかかると言われています。それでも、定期的に鍵の循環を行うのが一般的です。
完全にランダムな暗号文字列でない場合は、特定の種類の攻撃がそれほど非現実的ではなくなります。たとえば、攻撃者は確定的に暗号化された暗号文字列を分析して、クリアテキスト文字列の Alice が常に暗号文字列の YjNkY2JlNjU5M2JkNjk4MGJiNWE2NGQ5NzI5MzU1OTcNCg== に解決されることを特定できる可能性があります。十分な時間をかけて傍受すれば、攻撃者はクリアテキスト値と暗号文字列値の辞書を作成することで、暗号化を破ることができます。
Salesforce Shield の手法では、正規のユーザが暗号化データを絞り込むのに十分なだけの確定性を公開しつつ、特定のプレーンテキスト値がすべての項目、オブジェクト、組織で一様に同じ暗号文字列値にならない程度に確定性を制限しています。攻撃者が 1 つの項目でクリアテキストと暗号化された値を一致させることに成功しても、別の項目や別のオブジェクトの同じ項目に対しては最初からやり直す必要があります。
こうすることで、確定的暗号化による強度の低下を、絞り込みを可能にするのに最低限必要な程度に抑えることができます。