在加密列上优化范围/通配符搜索。

问题描述:

我有几个要求,这真的不互相发挥好:在加密列上优化范围/通配符搜索。

  1. 加密的姓,名,出生日期与表中的其他一些栏目(数据库是SQL服务器)一起。
  2. 在某些加密列上执行范围/通配符搜索。即从first_name中的'%jo%'和last_name如'%exceptional%'中选择*。

我知道我需要解密整个表,然后执行搜索,这是很痛苦的缓慢。但不知何故,我需要优化搜索。

现在我能想到做搜索无论是在数据库或内部使用的数据集/ LINQ的等

所以应用程序,它的做法会比较快?有没有其他的方式来优化这个?

+1

您使用的是SQL Server 2008吗?你可以使用TDE吗? – 2012-08-07 13:51:22

+0

我们正在使用Sql Server网络版。我正试图说服管理层了解TDE。但它对我们来说非常昂贵,差不多每年15K英镑。 – user1520015 2012-08-07 13:53:33

+1

你的要求是相互矛盾的。您既可以对单元格进行加密,也可以使用范围搜索。从来没有。选择一个意味着牺牲另一个,*没有解决方法*。使用散列进行搜索最多可以提供单例查找(探测),但不能进行范围扫描。 – 2012-08-07 16:42:24

你应该看看数据散列。哈希可以让您执行搜索,而无需解密每一行。

http://blogs.msdn.com/b/sqlsecurity/archive/2011/08/26/data-hashing.aspx

+1

在这种情况下创建哈希或MAC将不适合,因为哈希可用于相等性搜索而非通配符/范围搜索。 – user1520015 2012-08-07 15:41:57