【问题标题】:Optimising range/wildcard search on encrypted columns.优化加密列的范围/通配符搜索。
【发布时间】:2012-08-04 13:20:44
【问题描述】:

我有几个要求不能很好地相互配合:

  1. 加密名字、姓氏、出生日期以及表中的一些其他列(数据库是 Sql Server)。
  2. 对其中一些加密列执行范围/通配符搜索。即从表中选择 *,其中 first_name 像 '%jo%' 和 last_name 像 '%exceptional%'。

我知道我需要解密整个表然后执行非常缓慢的搜索。但不知何故,我需要优化搜索。

现在我可以考虑使用 dataset/Linq 等在数据库或应用程序内部进行搜索。

那么,哪种方法会相对更快?还有其他优化方法吗?

【问题讨论】:

  • 您使用的是 SQL Server 2008 吗?可以使用 TDE 吗?
  • 我们使用的是 Sql Server 网页版。我试图让管理层相信 TDE。但这对我们来说非常昂贵,几乎 15K GBP/年。
  • 您的要求相互矛盾。您可以对数据进行单元格加密,您可以使用范围搜索。从不两者兼而有之。选择一个意味着牺牲另一个,没有解决方法。使用哈希进行搜索最多只能提供单例查找(探测),但不能提供范围扫描。

标签: sql sql-server optimization encryption


【解决方案1】:

您应该研究数据散列。散列可以让您进行搜索,而不必解密每一行。

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

【讨论】:

  • 在这种情况下创建哈希或 MAC 不合适,因为哈希可用于相等搜索而不是通配符/范围搜索。
猜你喜欢
  • 2020-10-07
  • 1970-01-01
  • 2014-11-24
  • 2017-01-07
  • 2011-01-06
  • 1970-01-01
  • 2021-05-22
  • 1970-01-01
  • 2017-07-17
相关资源
最近更新 更多