この文章は Salesforce 機械翻訳システムを使用して翻訳されました。詳細はこちらをご参照ください。
英語に切り替える

確定的暗号化での絞り込みのサポート

デフォルトでは、Shield Platform Encryption では、データを暗号化するときに確率的暗号化スキームが使用されます。各データは暗号化されるたびに、完全にランダムな暗号文字列に変換されます。通常、暗号化は、データを参照する権限を持つユーザに影響しません。例外は、データベース内でロジックが実行される場合や、暗号化された値が文字列または別の暗号化された値と比較される場合です。これらの場合は、データがランダムでパターンのない文字列に変換されているため、絞り込みが不可能です。たとえば、カスタム Apex コード内で、Contact オブジェクトに対して LastName = 'Smith' の SOQL クエリを実行するとします。LastName 項目が確率的暗号化を使用して暗号化されている場合、このクエリを実行できません。確定的暗号化は、この問題に対応しています。

データが暗号化されているときに絞り込みを使用できるようにするには、データ内に何らかのパターンを許容する必要があります。確定的暗号化では、静的初期化ベクトル (IV) を使用することで、暗号化されたデータを特定の項目値と照合できるようにしています。システムは暗号化されたデータを読むことはできませんが、静的 IV を使用することで、そのデータを表す暗号文字列を取得することができます。特定組織の特定項目の IV は一意であり、組織固有の暗号化鍵でしか復号化できません。

暗号化手法の相対的な強さと弱さは、特定のアルゴリズムに対して行われる可能性のある攻撃の種類に基づいて評価します。また、攻撃が成功するまでに要する時間も考慮します。たとえば一般に、AES 256 ビット鍵に対するブルートフォース攻撃は、現在のコンピューティング能力ではとんでもない年数がかかると言われています。それでも、定期的に鍵の循環を行うのが一般的です。

完全にランダムな暗号文字列でない場合は、特定の種類の攻撃がそれほど非現実的ではな��なります。たとえば、攻撃者は確定的に暗号化された暗号文字列を分析して、クリアテキスト文字列の Alice が常に暗号文字列の YjNkY2JlNjU5M2JkNjk4MGJiNWE2NGQ5NzI5MzU1OTcNCg== に解決されることを特定できる可能性があります。十分な時間をかけて傍受すれば、攻撃者はクリアテキスト値と暗号文字列値の辞書を作成することで、暗号化を破ることができます。

Salesforce Shield の手法では、正規のユーザが暗号化データを絞り込むのに十分なだけの確定性を公開しつつ、特定のプレーンテキスト値がすべての項目、オブジェクト、組織で一様に同じ暗号文字列値にならない程度に確定性を制限しています。攻撃者が 1 つの項目でクリアテキストと暗号化された値を一致させることに成功しても、別の項目や別のオブジェクトの同じ項目に対しては最初からやり直す必要があります。

こうすることで、確定的暗号化による強度の低下を、絞り込みを可能にするのに最低限必要な程度に抑えることができます。

確定的暗号化には、大文字と小文字を区別するものと、大文字と小文字を区別しないものの 2 種類があります。大文字と小文字を区別する暗号化では、取引先責任者オブジェクトに対する SOQL クエリで LastName = Jones とすると、Jones のみが返され、jones や JONES は返されません。同様に、大文字と小文字を区別する確定的スキームで一意性をテストする場合、「Jones」の各バージョンがすべて一意になります。

大文字と小文字を区別しない場合、リードオブジェクトに対する SOQL クエリで Company = Acme とすると、Acme、acme または ACME が返されます。大文字と小文字を区別しないスキームで単一性 (一意性) をテストする場合、「Acme」の各バージョンは同一とみなされます。

取引先責任者オブジェクトのメールアドレス項目では、確率的暗号化はサポートされません。セルフ登録時に取引先が重複して作成されないようにするには、確定的暗号化を使用してください。

重要