简而言之,让我们考虑一个 Web 应用程序,它将一些信息作为加密数据存储在数据库中。虽然我故意试图保持这种通用性,但这里有一些假设:
- 加密数据仅存储在数据库中(不在其他地方)。给定记录中的某些字段是加密的,有些则不是。
- Web 应用程序必须将加密数据写入数据库。
- Web 应用程序必须能够读取和显示加密数据。数据仅显示在应用程序的身份验证和授权管理部分。
- 数据是需要保护的敏感信息,以防数据被暴露/访问(没有密钥*)。
问题:
- 您在哪里/如何存储用于加密的密钥?首先,在Web服务器和数据库服务器相同的系统中,如何管理密钥?其次,在 Web 服务器和 DB 服务器分开的系统中,如何管理密钥?
- 密钥只是受权限限制的文件吗?存储在一些单独的工具/软件中?我已经看到有人提到有时加密密钥也被加密,但不清楚在哪里可能会有所帮助。
我知道这是一个相当基本的安全问题,所以如果有我可能缺少的资源,那也会非常非常有帮助。我花了很多时间(多年来)试图根据有关 Web 应用程序安全性(OWASP、PCI DSS 等)的信息来掌握这些信息,但很多时候这些信息是非常通用的(例如,“保护数据”、“加密数据”)或非常具体的(“用 AES 加密某些东西……”)。
* 我了解这本身并不是一个完整的安全解决方案。我知道有几个向量可以获取这些信息并对其进行解码。我承认这可能是一个糟糕的问题:)
编辑以添加有关此问题假设的更多信息