私たちには多数のユーザーがいるウェブサイトがあります.PCIのコンプライアンス上の問題のため、暗号化された名前を保存する必要があります(私たちはブローフィッシュを使用しています)。 これで管理パネルの名前でワイルドカード検索機能が必要になりました。これは「照会」の方法で解読できません。暗号化されたテキストを使ってワイルドカード検索を実行するにはどうすればよいですか?
この問題を解決するための一般的な解決策はありますか?
私たちには多数のユーザーがいるウェブサイトがあります.PCIのコンプライアンス上の問題のため、暗号化された名前を保存する必要があります(私たちはブローフィッシュを使用しています)。 これで管理パネルの名前でワイルドカード検索機能が必要になりました。これは「照会」の方法で解読できません。暗号化されたテキストを使ってワイルドカード検索を実行するにはどうすればよいですか?
この問題を解決するための一般的な解決策はありますか?
Luceneなどのインデックスシステムを使用して、すべてのドキュメントをインデックス化(復号化)し、このインデックスを検索します。
私は考えられる2つのアプローチが考えられます。
名前自体が秘密ではなく、それらに関連付けられたデータが最初に機能します。別の検索インデックスを設定することができます。
Name Record Number
---- -------------
John Q. Public 12345
Hector H. Suarez 54321
Katherine T. Carson 98712
インデックスを検索して関連するレコード番号を検索します。特定のレコードを取得および復号化します。
2番目は、名前自体が秘密の場合です。基本的には、名前をパスワードのように扱います。SHA-256のような暗号的に安全なハッシュで各名前をハッシュします。この場合は塩を使用することができません。なぜなら、それは検索のためです。 "John Q. Public"と "John Q Public"(完全停止しない)が非常に異なる値にハッシュするので、検索を前処理する必要があるかもしれません。この検索インデックスは次のようになります。
Hashed Name Record Number
----------- -------------
1A2BFF68C ... CAF4 12345
5820BAA5F ... 67FA 54321
2039F288A ... 9BC2 98712
各検索で、名前をハッシュしてそのハッシュを探します。再度適切なレコードを取得して解読します。すべての主な検索の可能性について同じようなインデックスをいくつか設定する準備ができていない限り、「すべてのスミスを取得する」のような部分名の検索はできません。
PCI DSSバージョン2.0の「PCI DSS Applicaility Information」というタイトルのPCI DSSセクションをよく読んでください。
「PCI DSS要件3.3と3.4はPANにのみ適用されます」ということがわかります。これは、PAN以外のデータを暗号化する必要がないため、名前をプレーンテキストで保存できるという意味での回避策となります。
これは、必ずしもベストプラクティスではありませんが、あなたは絶対に我々はすべての彼らはLuceneの中で復号化しているため、PCI要件に反しているテキスト
て検索をワイルドカードすることができるという機能を持っている必要がある場合に考慮すべきものです。 – inteloid
luceneデータベースを暗号化します。同じキーを使用し、必要な場合にのみ解読しますか? –