【初心者向け】Shield Platform Encryptionの「確率的暗号化」と「確定的暗号化」の違いとは?

今回はShield Platform Encryptionの「確率的暗号化」と「確定的暗号化」の違いについてご紹介します。

はじめに

Salesforceの「Shield Platform Encryption」は、データを強力に守ってくれる頼もしい機能ですよね。
しかし、いざ設定画面を開くと「確率的暗号化」と「確定的暗号化」のどちらかを選ばなければならず、リファレンスを見ても違いのイメージがつきづらいと頭を悩ませるエンジニアの方は多いのではないでしょうか。
今回はそれぞれの方式の具体的なイメージを交えながら、違いと選定基準について分かりやすく解説します。

① 確率的暗号化(Probabilistic Encryption)とは?

どんな方式?

「暗号化するたびに完全にランダムな暗号文になる」方式です。
例えば「テラスカイ」という文字を保存したとしましょう。同じ文字を保存したとしても、裏側ではランダムに「ABC」や「DEF」といった全くパターンのない文字列に暗号化されてデータベースに格納されます。(※アルファベットはあくまでイメージです)

メリットは?

セキュリティの強さが最高レベルです!
同じ「テラスカイ」というデータでも毎回違う暗号文になるため、攻撃者が暗号文のパターンを読んで元のデータを推測することはできません。

制限事項

セキュリティが強固であるが故に、Salesforce上での「検索」が実質できなくなります。
保存時に「ABC」となったデータに対して、後から「テラスカイ」というキーワードで検索しようとすると、システムは検索キーワードの「テラスカイ」も暗号化して探しにいきます。
しかし、確率的暗号化は毎回ランダムに暗号化される仕組み上、検索時は「GHI」というワードに変換されるため、データベース上の「ABC」と検索時に入力文が変換された「GHI」は一致せず、検索に引っかかりません。
そのため、レポートの条件絞り込みやリストビューでの検索も利用できません。

どんな時に使う?

業務の中で「検索キー」として扱う必要がなく、安全に保管して詳細画面で読めればよいというデータに適しています。(例:クレジットカード番号、マイナンバー、医療診断のテキスト等)

② 確定的暗号化(Deterministic Encryption)とは?

どんな方式?

同じデータなら「いつ暗号化しても必ず同じ暗号文になる」方式です。
先ほどの例を用いると、「テラスカイ」という文字は、いつ保存しても常に「JKL」という暗号文になります。
※なお、確定的暗号化には大文字小文字を区別する/しないの2種類があり、用途に応じて選択します。

メリットは?

「完全一致(=)」での検索ができます!
ユーザーが検索窓で「テラスカイ」と入力すると、システムはそれを「JKL」へと変換してデータベースを探しにいきます。データベース上にも同じく「JKL」として保存されているので、無事マッチして結果が返ってきます。

制限事項

「部分一致(LIKE検索)」や前方・後方一致はできません。
理由としては、「テラスカイ」が「JKL」になるのに対して、「テラスカイ関連データ」という文字は「XYZ」のようにまったく別物へと暗号化されるためです。
元の文字が含まれていても、暗号化されると別の暗号文へと変換されるため「〜を含む」という探し方ができません。
また、辞書順もバラバラになるため、データの並び替え(ソート)も行うことができなくなります。
そして、常に同じ暗号文になる構造上、確率的暗号化に比べるとパターン推測のリスクが理論上はわずかに存在します。

どんな時に使う?

セキュリティを高めつつ、レポートの条件絞り込みやリストビューでの検索を活かしたいというデータ向けです。
コンプライアンス的に暗号化は絶対条件だが、日々の業務で検索キーとして頻繁に利用するという項目に適しています。(例:顧客メールアドレス、電話番号等)

比較まとめ

比較項目 確率的暗号化 確定的暗号化 
セキュリティ強度 最高(毎回ランダムに生成) 高(毎回同じ暗号文を生成)
完全一致検索 × 不可 ○ 可能
部分一致検索 × 不可 × 不可
ソート(並び替え) × 不可 × 不可
主なユースケース クレジットカード番号、マイナンバーなど検索不要なデータ メールアドレス、電話番号など検索キーとなるデータ

おわりに

ここまでお読みいただきありがとうございます!
2つの暗号化の違いについて、イメージはつきましたでしょうか?
確率的暗号化と確定的暗号化については、検索の可否をはじめとする大きな違いがあります。
そのため、どのデータを暗号化するのか、そしてそのデータは現場でどう使われるのかを考慮し、最適な方式を選んでいただければと思います。