2011-12-15 6 views
2

私たちには多数のユーザーがいるウェブサイトがあります.PCIのコンプライアンス上の問題のため、暗号化された名前を保存する必要があります(私たちはブローフィッシュを使用しています)。 これで管理パネルの名前でワイルドカード検索機能が必要になりました。これは「照会」の方法で解読できません。暗号化されたテキストを使ってワイルドカード検索を実行するにはどうすればよいですか?

この問題を解決するための一般的な解決策はありますか?

答えて

0

Luceneなどのインデックスシステムを使用して、すべてのドキュメントをインデックス化(復号化)し、このインデックスを検索します。

+0

て検索をワイルドカードすることができるという機能を持っている必要がある場合に考慮すべきものです。 – inteloid

+0

luceneデータベースを暗号化します。同じキーを使用し、必要な場合にのみ解読しますか? –

1

私は考えられる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 

各検索で、名前をハッシュしてそのハッシュを探します。再度適切なレコードを取得して解読します。すべての主な検索の可能性について同じようなインデックスをいくつか設定する準備ができていない限り、「すべてのスミスを取得する」のような部分名の検索はできません。

+0

ご回答いただきありがとうございます。 2番目のアプローチはうまくいきません。なぜなら、すべてのスミスを取得することはできないし、最初のものについても考えました。今はPCI用のものであればレスポンスを待っています。 もう一度ありがとうございます。 – inteloid

+0

姓のハッシュ・インデックスを事前に準備していれば、すべてのスミスを取得できます。検索は、すでに索引を準備していたフィールドに限定されます。自由形式/ワイルドカード検索は不可能です。 – rossum

0

PCI DSSバージョン2.0の「PCI DSS Applicaility Information」というタイトルのPCI DSSセクションをよく読んでください。

「PCI DSS要件3.3と3.4はPANにのみ適用されます」ということがわかります。これは、PAN以外のデータを暗号化する必要がないため、名前をプレーンテキストで保存できるという意味での回避策となります。

これは、必ずしもベストプラクティスではありませんが、あなたは絶対に我々はすべての彼らはLuceneの中で復号化しているため、PCI要件に反しているテキスト

関連する問題