始终加密(Always Encrypted)2016与加密列(Encrypted Columns)相比有哪些优势?

我正在阅读关于SQL加密方法的内容,对TDE有很好的理解,然后我了解了加密列,接着又了解了始终加密。始终加密的描述非常冗长和详细,但是加密列的文本则不太深入,但在我看来似乎做的是同样的事情。我想要了解这两者之间的区别,以及新版本是否有任何优势?
1个回答

我所知道的主要区别是 普通列加密 从SQL Server 2005引入的普通列加密使用函数Encryptbycert来加密列。与始终加密相比,它的安全性较低,因为使用这种方法时,数据以明文形式提交到SQL Server,并且可以从跟踪中查看这些数据。具有对SQL Server的管理员访问权限的数据库管理员可以看到数据,因此实际上并不是完全安全的。 始终加密 始终加密通过API(如ADO.net、ODBC)在客户端应用程序中进行加密。在客户端安装驱动程序来执行此加密操作。这将阻止SQL Server查看文本数据,因此不会将其透露给数据库管理员和具有对SQL Server的管理员访问权限的人员。始终加密允许客户端在客户端应用程序内部加密敏感数据,并且不向数据库引擎透露加密密钥。 引用自Docs.microsoft Always Encrypted使加密对应用程序透明化。客户端计算机上安装的Always Encrypted启用的驱动程序通过自动加密和解密客户端应用程序中的敏感数据来实现这一点。驱动程序在将数据传递给数据库引擎之前,会对敏感列中的数据进行加密,并自动重写查询,以保留应用程序的语义。同样,驱动程序会透明地解密存储在加密数据库列中的数据,并包含在查询结果中。 希望我能为您提供一些关于这两种技术的见解。