部分搜索加密字段

Kho*_*yen 0 database sql-server encryption search

最近我被分配了一个问题,加密数据库字段,如SSN,但仍然必须保持"部分搜索"工作.

例如:SSN 123-45-6789在数据库中加密为abcdxyz.当用户在搜索框中输入"2345"时,它必须出现在搜索结果中.

我们在数据库中有数百万条记录.我们正在使用SQL Server 2008 R2.我一直在谷歌搜索,但仍然没有看到任何好的解决方案.对此有什么好的解决方案吗?

感谢帮助.

Rem*_*anu 9

不,没有.如果可以搜索加密字段,那么根据定义它将被严重加密.可能的替代方案是:

  1. 搜索解密的值.这在实践中是难以忍受的,因为每个查询必须解密数百万个值.
  2. 仅搜索完全匹配.由于加密值是盐化的,因此只有在加密数据与加密数据一起存储并且对散列值进行搜索时才能进行精确匹配搜索.
  3. 使用透明数据加密而不是列加密.

选项3)是迄今为止最好的,但需要企业版许可.如果TDE不可用,则必须删除部分搜索的要求,没有现实的方法来满足它.