在SQL Server 2016中,始终加密和透明数据加密之间有什么区别?


40

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

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


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

Answers:


48

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

  • 仅保护静态数据-备份和数据文件“安全”,但移动或内存中的数据易受攻击
  • 仅整个数据库
  • 所有数据以相同方式加密
  • 备份压缩可能需要更长的时间,并且会适得其反

    • 好吧,实际上,SQL Server 2016进行了一些改进,以克服我们通常试图压缩加密数据的知识-它比以前的版本要好得多,但可能比仅加密少数列(未经测试)还差。
  • tempdb还继承了加密-即使禁用了TDE也会保留
  • 需要企业版
  • 数据始终可供sysadmin访问

始终加密部分或全部解决了所有这些问题:

  • 静态,动态和内存中的数据受到保护-对证书,密钥以及确切的人可以解密数据的更多控制
  • 可以只是一列
  • 加密类型是一种选择:
    • 可以使用确定性加密来支持索引和点查找(例如SSN)
    • 可以使用随机加密来提供更高的保护(例如信用卡号)
  • 由于它不在数据库范围内,因此备份压缩不一定受到影响-当然,加密的列越多,运气就越差
  • tempdb不参与
  • 从SQL Server 2016 Service Pack 1开始,``始终加密''现在适用于所有版本
  • 可以保护数据免受sysadmin(但不能保护sysadmin和Windows安全性/证书/密钥管理员,换句话说,您可以将责任分开,只要这两个组没有共谋)

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


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

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

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

3

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


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

不是吗:TDE是在静止状态下加密的数据,而AE是在线路上,静止状态和内存中加密的数据?
RoastBeast

AFAIK:您可以在MS SQL服务器上结合使用TDE强制协议加密,也可以在线加密它。
TiloBunt17年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.