我们有一个拥有大量用户的网站,由于PCI合规性问题,我们必须加密他们的名字(我们使用河豚)。 现在我们需要通过管理面板中的名称来设置通配符搜索功能,我们无法以“查询”方式解密。
解决这个问题有哪些一般解决方案?
答案 0 :(得分:1)
我可以想到两种可能的方法。
第一个工作的地方名称本身并不是秘密,但与之相关的数据是。您可以设置单独的搜索索引:
Name Record Number
---- -------------
John Q. Public 12345
Hector H. Suarez 54321
Katherine T. Carson 98712
搜索索引以查找相关记录编号。检索并解密该特定记录。
第二个是名字本身是秘密的。基本上,将名称视为密码:使用加密安全散列(如SHA-256)散列每个名称。在这种情况下,您将无法使用salt,因为它用于搜索。您可能还需要预先处理搜索,因为“John Q. Public”和“John Q Public”(没有句号)会散列到非常不同的值。此搜索索引如下所示:
Hashed Name Record Number
----------- -------------
1A2BFF68C ... CAF4 12345
5820BAA5F ... 67FA 54321
2039F288A ... 9BC2 98712
对于每次搜索,您都会对名称进行哈希处理并查找该哈希值。再次检索和解密相应的记录。您不能进行部分名称搜索,例如“检索所有Smiths”,除非您准备为所有主要搜索可能性设置许多类似的索引。
答案 1 :(得分:0)
使用Lucene等索引系统,索引每个文档(解密),并搜索此索引。
答案 2 :(得分:0)
仔细阅读PCI DSS 2.0版中标题为“PCI DSS应用信息”的PCI-DSS部分。
您应该从阅读中发现“PCI DSS要求3.3和3.4仅适用于PAN”。这可能是您不必加密PAN以外的数据的解决方法 - 这意味着名称可以以纯文本格式存储。
这不一定是最佳做法,但如果您必须具备能够通过文本进行通配符搜索的功能,则需要考虑