繁体   English   中英

SQL Server 2008列加密

[英]SQL Server 2008 Column Encryption

我一直在努力寻找一种加密数据库中敏感列的好方法。 我以为SQL Server的内置加密机制可以解决问题,但是我丢失了某些东西或做错了。

最初的计划是创建一个表,该表包含用对称密钥加密的列,并具有一个视图,该视图从表中选择未加密的数据。 但是,我无法弄清楚如何在视图选择语句中使用DecryptByKey方法。 加上我想到,到视图和从视图访问数据时,数据将不会被加密,因此,除非连接是安全的,否则它将毫无意义。

然后,我想到将所有加密/解密都带到我的应用程序中。 我认为

  1. 如果数据库完全无法解密自己的数据,那么渗入数据库的人将根本无能为力。

  2. 这将节省服务器尝试解密/加密信息的工作量,因为数据库中的加密/解密可能会全局影响性能,而不仅仅是在单个工作站上。

因此,我的应用程序为需要加密的每一列提供了“硬编码” IV和密钥。 它将加密的信息发送到数据库,并从数据库接收加密的信息。 这只是为了使您头脑混乱,我知道我必须将IV和键放在其他位置...它们在应用程序代码中根本不安全。

我在想这个疯狂的主意:

客户端应用程序将包含一个键和IV。 服务器将在单个表中包含所有加密列的密钥/ IV。 但是,密钥/ IV的值将使用客户端应用程序持有的密钥/ IV进行加密。

启动时,客户端应用程序会将所有密钥/ IV从数据库加载到内存中,并根据需要解密它们以查看从服务器选择的数据。

也可能存在一种关系,它将用户与允许他们使用的密钥结合在一起。 因此,该应用程序只会解密用户有权查看的列。

您认为这个想法是成功还是失败? 给定客户端应用程序/ SQL Server方案,您中的某些人如何实现加密?

你松了。 点。 没有机会使用索引等

如果需要安全保护,请将其放在安全的服务器上并加载Enterprise Edition并使用数据库文件加密。

考虑使用中间层为您处理加密/解密。 假设您可以将其放在服务器上,则可以控制位,而不必担心客户端应用程序(可能有些失控)被反编译(和公开密钥)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM