在加密列上优化范围/通配符搜索。
问题描述:
我有几个要求,这真的不互相发挥好:在加密列上优化范围/通配符搜索。
- 加密的姓,名,出生日期与表中的其他一些栏目(数据库是SQL服务器)一起。
- 在某些加密列上执行范围/通配符搜索。即从first_name中的'%jo%'和last_name如'%exceptional%'中选择*。
我知道我需要解密整个表,然后执行搜索,这是很痛苦的缓慢。但不知何故,我需要优化搜索。
现在我能想到做搜索无论是在数据库或内部使用的数据集/ LINQ的等
所以应用程序,它的做法会比较快?有没有其他的方式来优化这个?
答
你应该看看数据散列。哈希可以让您执行搜索,而无需解密每一行。
http://blogs.msdn.com/b/sqlsecurity/archive/2011/08/26/data-hashing.aspx
+1
在这种情况下创建哈希或MAC将不适合,因为哈希可用于相等性搜索而非通配符/范围搜索。 – user1520015 2012-08-07 15:41:57
您使用的是SQL Server 2008吗?你可以使用TDE吗? – 2012-08-07 13:51:22
我们正在使用Sql Server网络版。我正试图说服管理层了解TDE。但它对我们来说非常昂贵,差不多每年15K英镑。 – user1520015 2012-08-07 13:53:33
你的要求是相互矛盾的。您既可以对单元格进行加密,也可以使用范围搜索。从来没有。选择一个意味着牺牲另一个,*没有解决方法*。使用散列进行搜索最多可以提供单例查找(探测),但不能进行范围扫描。 – 2012-08-07 16:42:24