use*_*584 3 php sql-server encryption performance search
我需要对应用程序数据库中的个人身份信息 (PII) 数据进行加密。该应用程序在系统中使用智能搜索,使用声音、名称词根和部分单词搜索来快速查找姓名和地址。
如果我们对这些字段进行加密(在应用程序层加密的 PII 数据),搜索将受到记录量的影响,因为我们不能以正常方式依赖 SQL,并且搜索引擎(在应用程序中)将切换读取所有值,解密它们并进行搜索。
有没有简单的方法可以解决这个问题,以便我们始终可以加密 PII 数据并为我们的用户群提供快速搜索功能?
我们正在使用 PHP Web/应用程序层(Zend Server 和 SQL Server DB)。该应用程序目前未使用 Lucene 等技术。
谢谢
干杯
加密数据还使其看起来很像随机位串。这排除了通过索引搜索快捷方式的任何操作。
对于某些加密数据,例如社会安全号码,您可以将号码的哈希存储在单独的列中,然后索引该哈希字段并搜索哈希。这显然实用性有限,并且在搜索“ROB%”等名称时没有任何价值
如果您的数据库受到适当的保护,这听起来不错,但如果坏人可以闯入并窃取您的服务器或备份,则很难实现。如果它确实是要求(而不仅仅是一个可协商的营销驱动项目),那么您就必须遵守。
您可以协商以未加密的方式存储部分数据,例如姓氏的前 3 个字符等,以便您仍然可以拥有有用的(如果不是完美的)索引。
添加
我应该补充一点,您可能被允许对名称字段的一部分进行散列,并在该散列上进行搜索 - 假设您不允许存储未加密的部分名称 - 您会再次失去用处,但它仍然可能比没有索引好根本不。
为了使这种散列有用,它不能被播种——即,所有记录必须基于相同的种子(或没有种子)进行散列,否则您将陷入执行表扫描的困境。
您还可以创建覆盖索引,当然仍然是加密的,但由于所需的 I/O 和内存减少,表扫描可能会快得多。
| 归档时间: |
|
| 查看次数: |
2436 次 |
| 最近记录: |