在撰写本文时,我仍在等待SQL Server 2016的正式发布,以便我们探索其“始终加密”功能的有用性。

我想知道始终加密与SQL Server 2016中当前可用的透明数据加密之间的特定区别是什么,以便我们可以为将来的项目做出正确的决定。

评论

使用始终加密,客户端驱动程序在TDE在SQL Server本身上运行时,在数据到达SQL Server之前对其进行加密/解密。 IMHO TDE在云/安全数据中心场景中几乎没有用(滚动到“ TDE在云中不是很有用”)。如果您对高级数据安全性感兴趣,请同时检查Crypteron。全面披露:我在那工作

#1 楼

与始终加密相比,透明数据加密的缺点:


仅保护静态数据-备份和数据文件是“安全的”,但移动或内存中的数据易受攻击
整个仅数据库
所有数据都以相同的方式加密

备份压缩可能需要更长的时间,并且会适得其反


实际上,有一些SQL Server 2016中的改进不符合我们通常尝试压缩加密数据的已知知识-它比以前的版本要好得多,但可能比仅加密少数列(未经测试)还差劲


tempdb也继承了加密–即使禁用了TDE,它仍然保持不变。 :


静态,动态和内存中的数据受到保护-对证书,密钥以及确切的人可以解密数据进行更多控制
可以只需一个列即可
选择加密类型:


可以使用确定性加密来支持索引和点查找(例如SSN)
可以使用随机加密以获得更高的保护(例如信用卡号)


由于它不在数据库范围内,因此备份压缩不一定受到影响-当然,加密的列越多,运气就越差从SQL Server 2016 Service Pack 1开始,始终加密现在在所有版本中都可以使用/ cert / key admins,换句话说,您可以将责任分开,只要这两个组不合在一起即可。

但是有一个限制,那就是并非所有驱动程序和应用程序都可以处理直接使用加密数据,因此在某些情况下,这将需要更新/更改驱动程序和/或修改代码。

评论


您能否解释一下,“始终加密”如何加密内存中的数据?我试图在MSDN中找到此信息,但它仅说明了静态数据和运动加密中的数据。谢谢 :)

–维多利亚马来亚
16-11-25在21:56

@Victoria数据在SQL Server看到之前由提供者加密。因此,SQL Server接收一个加密的值,将该加密的值放在磁盘上,并在该页位于内存中时将加密的值加载到内存中。加密不会像您想的那样在内存中发生,并且仅当客户端拥有具有解密能力的证书时才会发生解密...

–亚伦·伯特兰(Aaron Bertrand)
16年11月25日在22:12

据我所知,最大的区别之一就是查询数据的时间。使用TDE,您可以像往常一样运行任何查询,而使用AE,在查询加密列时就受到很大的限制,即,您只能进行相等比较(这要求选择确定性加密)。没有检查日期范围,没有LIKE查询等。

–musefan
17年8月22日在9:12



#2 楼

简而言之,TDE是静态(在磁盘上)加密的数据,AE是另外在线上加密的数据。

评论


我想您可能会倒退,不是吗?

–zwerdlds
16年5月4日在22:22

不是吗:TDE是在静止状态下对数据进行加密,而AE是在线路上,处于静止状态还是在内存中进行加密的数据?

– RoastBeast
16年5月12日在14:04

AFAIK:您可以在MS SQL服务器上结合使用TDE和强制协议加密,也可以在线加密它。

– TiloBunt
17年6月16日在17:52