Always Encrypted 2016 与加密列相比有哪些优势?

gar*_*eth 3 sql-server encryption always-encrypted

我正在阅读 SQL 加密方法,我对 TDE 有很好的了解,然后我阅读了加密列,然后阅读了始终加密。Always Encrypted的描述非常冗长和详细,但带有Encrypted Columns的文本的深度较浅,但在我看来,它似乎在做同样的事情。我想了解2之间的区别,新版本是否有任何优势?

Sha*_*nky 6

我知道的主要区别是

普通列加密

从 SQL Server 2005 引入的普通列加密使用函数Encryptbycert来加密列。与 Always Encrypted 相比,它不如 Always Encrypted 安全,因为使用此方法数据在 SQL Server 中以明文形式提交,并且可以从跟踪中看到此数据。具有 SQL Server 管理员访问权限的 DBA 可以查看数据,因此这实际上并没有完全安全。

始终加密

始终加密的加密是通过 API 在客户端应用程序完成的,例如 ADO.net、ODBC。驱动程序安装在客户端进行加密。这将不允许 SQL Server 看到文本数据,因此不会将其透露给 DBA 和对 SQL Server 具有管理员访问权限的人。Always Encrypted 允许客户端加密客户端应用程序内的敏感数据,并且永远不会向数据库引擎透露加密密钥。

引用自Docs.microsoft

Always Encrypted 使加密对应用程序透明。安装在客户端计算机上的启用 Always Encrypted 的驱动程序通过自动加密和解密客户端应用程序中的敏感数据来实现这一点。驱动程序在将数据传递到数据库引擎之前对敏感列中的数据进行加密,并自动重写查询以保留应用程序的语义。同样,驱动程序透明地解密存储在加密数据库列中的数据,这些数据包含在查询结果中。

我希望我能够让您对这两种技术有所了解。