SQL 服务器 SSL + TDE 与始终加密

SQL Server SSL + TDE vs Always Encrypted

使用 SQL 服务器 SSL(连接字符串中的 Encrypted=true)+ TDE 与使用 SQL 服务器始终加密有什么区别?

关于 RGPD,一个比另一个更适应吗?

Always Encrypted 的存在不仅仅是为了解决确保数据在传输过程中加密的问题。事实上,这甚至不是 Always Encrypted 解决的主要问题。

Always Encrypted 解决的大问题是 使用透明数据加密 (TDE),保护加密数据的密钥和证书本身存储在数据库中。 这可能对于考虑将他们的 SQL 服务器数据库放在云中的人来说,这是一个问题,因为云提供商最终拥有解密数据的秘密。

使用 Always Encrypted,用于 encrypt/decrypt 列数据的列加密密钥 (CEK) 以加密形式存储在数据库中。但问题在于 - 用于 encrypt/decrypt CEK 的密钥存储在数据库外部让数据库无法自行解密数据。

数据库能做的就是

  1. 提供加密的CEK,
  2. 提供 CMK 的位置,并且
  3. serve/store 预加密数据。

由客户端从 key/certificate 存储中获取列主密钥 (CMK),无论它位于何处,然后使用 CMK 解密 CEK,并将解密后的 CEK 用于 encrypt/decrypt数据。

这就是概念上的区别。这里有几页详细介绍了它:

请注意,Always Encrypted 在查询数据和其他方面存在一些严重缺陷。 This article gives a pretty good list of limitations. Some of these drawbacks can be mitigated using Always Encrypted with secure enclaves.