我正在使用 .NET 框架中的 AES 加密类来加密医疗保健行业的数据。有哪些推荐的安全存储密钥的位置?在开发过程中,我将其放在了 web.config 文件中,但这显然不适用于生产环境。
我正在使用 .NET 框架中的 AES 加密类来加密医疗保健行业的数据。有哪些推荐的安全存储密钥的位置?在开发过程中,我将其放在了 web.config 文件中,但这显然不适用于生产环境。
如果只有可以绝对信任的人需要使用密钥,一种提供良好安全性的方法是将密钥加密存储在另一个密钥中,并为每个用户存储副本,该副本使用该用户密码的哈希值进行加密(与用于密码验证的哈希值不同)。即使拥有与数据库密钥相关的每一位数据的、来自宇宙中任何地方的恶意人也无法访问数据库而不进行至少一个密码的反向工程。
请注意,如果所有有效账户的密码都丢失或遗忘,则数据将无法检索。这是真正安全性的一部分。如果想要避免可能的数据丢失,必须确保备份必要的密钥和/或密码已被安全地存储。
如果应用程序需要使用您的密钥进行身份验证,则在Unix机器上的正常方法是以散列形式存储密码。您可以使用sha-512+盐。
然后,当用户输入密码时,您可以计算哈希并检查是否与您的哈希相匹配。
如果已经哈希,则密码/密钥本身可以存储在任何地方。如果没有存储在技术用户目录中,那么就没有人可以访问它。
编辑:对于那些不想花太多功夫理解我提出的用例的人
Johny有一些AES加密数据。
他将其密钥存储在头部。
他想将这个密钥存储在PC上的某个地方以实现自动访问。
他可以将其存储为web.config中的ASCII。
但他可以对其进行哈希处理,以便不再是ASCII,而是哈希值。
在身份验证期间,应用程序计算哈希并检查它是否为正确的密钥,然后使用此密钥....
低概率与适当的算法发生冲突。
附言:只是发布了我的观点。
为什么你这么在意“哈希”这个词???
编辑2
我知道什么是哈希,
我知道所谓的双向加密....