使用 SQL ServerSSL(在连接字符串中加密=true(+ TDE 与使用 SQL Server Always Encrypted 有什么区别?
关于RGPD,一个比另一个更适应吗?
Always Encrypted 的存在不仅仅是为了确保数据在传输过程中被加密的问题。事实上,这甚至不是Always Encryption解决的主要问题。
Always Encrypted 解决的最大问题是,使用透明数据加密 (TDE(,保护加密数据的密钥和证书本身存储在数据库中。对于考虑将其SQL Server数据库放在云中的某人来说,这可能是一个问题,因为云提供商最终拥有解密数据的机密。
使用始终加密时,用于加密/解密列数据的列加密密钥 (CEK( 以其加密形式存储在数据库中。但问题是 -用于加密/解密 CEK 的密钥存储在数据库外部,使数据库无法自行解密数据。
数据库所能做的就是
- 提供加密的 CEK,
- 提供 CMK 的位置,以及
- 提供/存储预加密数据。
由客户端从密钥/证书存储中获取列主密钥 (CMK(,然后使用 CMK 解密 CEK,并使用解密的 CEK 加密/解密数据。
这就是概念上的区别。以下是几页详细介绍它:
- 始终加密的密钥管理概述(Microsoft文档(
- SQL Server Encryption: Always Encrypted (Redgate 文章(
请注意,始终加密在查询数据和其他方面存在一些严重的缺点。本文给出了一个很好的限制列表。其中一些缺点可以通过使用带有安全飞地的始终加密来缓解。