2

我将为我的 SQL Server 使用共享主机。我想加密主键列(自动生成的 ID)和 varchar 列。我四处搜寻,发现了 TDE。但是,作为共享主机,我无法使用它。因此,正在寻找任何替代方案。数据已经存在于表中,因此现在无法从应用程序加密。并且有许多使用上述 varchar 列进行搜索的 SQL 语句。所以,性能也是一个问题。

谢谢,开发

4

2 回答 2

1

加密主键列(自动生成的 ID)

如果它的 ID 被加密,你将如何找到记录?回答“我通过加密 ID 搜索”会取消您不加盐密钥的资格...

现在是真正的问题。您说您将在共享主机上进行部署,但您没有提及您期望加密将提供什么样的保护。问题是密钥管理。数据将使用密钥加密,服务器将需要以某种方式解密该 dtaa。无论您如何解决问题,用于解密所有其他密钥的根密钥也将是在共享主机上,因此您只会在获取数据的过程中遇到一点小问题。要设置围栏,必须从共享主机范围之外的某个地方检索密钥,例如。您的应用程序在与用户交互时会要求输入密码来解密根密钥,这在所有实际情况下都是不可能的。请注意,TDE 不会解决任何问题,因为信任根在 TDE 或列加密中存在相同的问题。如果您需要隐私,请使用私人托管。

并回答这个问题:

如果你使用列加密,你永远不会加密主键。这样做完全没有意义。在共享托管环境中要求任何形式的隐私都是白日梦。充其量,您唯一可以保护的就是意外的媒体丢失(托管硬盘出现在跳蚤市场)。

于 2012-06-20T12:20:30.420 回答
0

开发人员,我认为在您的情况下,唯一的选择是从应用程序加密。

或者,您可以重命名表,替换 VIEW 而不是重命名的表。加密所有现有数据:更新 real_table set field1 = call_encrypt_function(field1), field2 = call_encrypt_function(field2) 在该视图中,您可以从 real_table 中选择 call_decrypt_function(field1),call_decrypt_function(field2)。对于插入和更新,您需要掌握 INSTEAD OF INSERT 和 INSTEAD OF UPDATE 触发器。当然,您需要对这些对象使用 WITH ENCRYPTION。我在 XP_CRYPT 中看到了这种方法,但是我更喜欢免费的解决方案。SQL Server 免费提供基本的加密功能。

于 2013-03-27T05:50:55.460 回答