客户希望数据库中的所有数据都加密,如何高效查询字段加密?
The customer wants all data encrypted in database, how to make efficient queries fields are encrypted?
如今,一些非技术客户询问是否所有数据 都以加密形式存储(和传输)。他们不喜欢只对密码进行哈希处理的想法。
最佳做法是什么,例如如果所有数据都被加密,如何进行高效的 SQL 查询?
如何查询例如部分搜索的用户名/JOHN/,如果所有字段都被加密?根据最终用户的需要对每个字段进行加密会导致可用性问题、缓慢和 cpu 成本,95% 的数据字段不是敏感数据。
或者是否足以假设:
强制使用 HTTPS 意味着数据以加密形式传输
在 Web 浏览器客户端和后端之间。
保持硬盘文件系统加密就足够了,因此 mysql 数据库以加密形式存储在最低级别,相对于后端应用程序是否真的需要将每个数据字段写入加密形式?
数据库和后端运行在同一服务器,客户端html5。
如果后端 php 源代码具有访问位于同一硬盘上的 sql 数据库的加密密钥,它真的会提供一些额外的安全性吗?
另一种方式是 100% 安全;假设我们将登录名+密码组合设为某种唯一的加密密钥,但如果客户忘记密码,我们就会遇到严重的问题,根本无法访问他们的数据库列。
"Data is encrypted at rest" 是常见的安全要求。这通常意味着 - 正如您所指出的那样 - 在文件系统上加密。大多数 DBMS 都支持此功能。
另一方面,将数据作为加密值写入数据库表通常需要:
- 在这个级别加密和解密是资源廉价的(它不是)
- 您可以继续查询加密数据,无需进一步操作
(你不能)
- 自定义实现(维护成本高,容易暴露)
- 您的实施没有公开加密密钥 - 这
需要将其存储在异地
一个合理的中间立场可能是加密他们关心的任何敏感数据。这样做的好处是:
- 当数据库或其基础数据从文件系统复制时
在未加密的形式下,敏感数据仍然是加密的
- 数据库安全漏洞(例如数据库用户名和
密码)不一定会导致敏感数据泄露
总的来说,显式加密数据库中的数据有好处,但性能和维护成本也不容忽视。
如今,一些非技术客户询问是否所有数据 都以加密形式存储(和传输)。他们不喜欢只对密码进行哈希处理的想法。
最佳做法是什么,例如如果所有数据都被加密,如何进行高效的 SQL 查询?
如何查询例如部分搜索的用户名/JOHN/,如果所有字段都被加密?根据最终用户的需要对每个字段进行加密会导致可用性问题、缓慢和 cpu 成本,95% 的数据字段不是敏感数据。
或者是否足以假设:
强制使用 HTTPS 意味着数据以加密形式传输 在 Web 浏览器客户端和后端之间。
保持硬盘文件系统加密就足够了,因此 mysql 数据库以加密形式存储在最低级别,相对于后端应用程序是否真的需要将每个数据字段写入加密形式?
数据库和后端运行在同一服务器,客户端html5。 如果后端 php 源代码具有访问位于同一硬盘上的 sql 数据库的加密密钥,它真的会提供一些额外的安全性吗?
另一种方式是 100% 安全;假设我们将登录名+密码组合设为某种唯一的加密密钥,但如果客户忘记密码,我们就会遇到严重的问题,根本无法访问他们的数据库列。
"Data is encrypted at rest" 是常见的安全要求。这通常意味着 - 正如您所指出的那样 - 在文件系统上加密。大多数 DBMS 都支持此功能。 另一方面,将数据作为加密值写入数据库表通常需要:
- 在这个级别加密和解密是资源廉价的(它不是)
- 您可以继续查询加密数据,无需进一步操作 (你不能)
- 自定义实现(维护成本高,容易暴露)
- 您的实施没有公开加密密钥 - 这 需要将其存储在异地
一个合理的中间立场可能是加密他们关心的任何敏感数据。这样做的好处是:
- 当数据库或其基础数据从文件系统复制时 在未加密的形式下,敏感数据仍然是加密的
- 数据库安全漏洞(例如数据库用户名和 密码)不一定会导致敏感数据泄露
总的来说,显式加密数据库中的数据有好处,但性能和维护成本也不容忽视。