3

最近、SSNなどのデータベースフィールドを暗号化するという問題が発生しましたが、それでも「部分検索」を実行し続ける必要があります。

例:SSN 123-45-6789は、データベース内のabcdxyzに暗号化されています。ユーザーが検索ボックスに「2345」と入力すると、結果に表示される必要があります。

データベースには数百万のレコードがあります。SQL Server2008R2を使用しています。私はぐるぐる回っていますが、まだ良い解決策は見当たりません。これに対する良い解決策はありますか?

手伝ってくれてありがとう。

4

2 に答える 2

12

いいえ、ありません。暗号化されたフィールドを検索できるとしたら、定義上、暗号化が不十分になります。可能な代替案は次のとおりです。

  1. 復号化された値を検索します。クエリごとに何百万もの値を復号化する必要があるため、これは実際には耐え難いほど遅いです。
  2. 完全一致のみを検索します。暗号化された値はソルト化されているため、完全一致検索は、暗号化されたデータとともに暗号化された安全なハッシュが保存され、ハッシュ値に対して検索が行われる場合にのみ可能です。
  3. 列の暗号化の代わりに透過的なデータ暗号化を使用します。

オプション3)は断然最高ですが、EnterpriseEditionのライセンスが必要です。TDEが利用できない場合は、部分検索の要件を削除する必要があります。これを満たす現実的な方法はありません。

于 2012-09-04T08:03:07.127 に答える
4

SSNの可能な値は10億未満であり、分布は均一ではありません。誰かがあなたのデータベースのコピーを入手した場合、特定のレコードに対するブルートフォース攻撃は簡単です。実際、その人の生年月日と州が記録に平文であり、2011年より前に生まれた場合、カスタムアルゴリズムにより、可能性のあるSSNの数を大幅に減らすことができ、ブルートフォース攻撃がはるかに簡単になります。

お気づきのように、データを暗号化すると、最初にすべてのレコードを復号化せずにデータのクリアテキストを検索することはできません。これは不当にコストのかかる操作です。

人々のプライバシーを保護したいという願望を称賛しますが、このような個々のフィールドを暗号化するのではなく、TDE、BitLocker、またはEFSを使用する必要があります。

于 2012-09-04T08:23:32.037 に答える