如何以安全的方式存储我的加密密钥
how to store my encryption key in a secure way
我目前正在开发一个托管在 Microsoft azure 中的应用程序 ASP.net MVC5,我需要在其中存储大量密码。我想我不能使用哈希,因为我需要能够获取密码。
对于这些密码中的 encryption/decryption,我认为使用 RijndaelManaged class 这似乎是安全的。
问题是我不知道如何存储此 encryption/decryption 的密钥以使应用程序尽可能安全。
我已经看到了几个与此相关的主题,但我们什么都看到了。我应该将密钥存储在实现中、数据库中、conf 文件中还是 blob azure(或其他东西)中?
确实没有安全的方法来存储密钥并让网络应用程序访问它们。也就是说,"safest" 方法是使用 Azure Key Vault。它是经过 FIPS-140 2 级认证的 HSM,可以在您的应用程序不需要访问密钥的情况下执行加密操作。
当然,如果您的应用程序只能请求它想要的任何解密(如果攻击者破坏了该应用程序,他们可以自己发出请求),这只会稍微提高安全性。但至少,物理介质受到保护,并且您正在将实际的加密操作转移到安全的环境中。它也更有可能满足监管要求,而不是将原始密钥存储在配置文件中。
可以找到显示示例代码的简单教程here
我目前正在开发一个托管在 Microsoft azure 中的应用程序 ASP.net MVC5,我需要在其中存储大量密码。我想我不能使用哈希,因为我需要能够获取密码。 对于这些密码中的 encryption/decryption,我认为使用 RijndaelManaged class 这似乎是安全的。
问题是我不知道如何存储此 encryption/decryption 的密钥以使应用程序尽可能安全。 我已经看到了几个与此相关的主题,但我们什么都看到了。我应该将密钥存储在实现中、数据库中、conf 文件中还是 blob azure(或其他东西)中?
确实没有安全的方法来存储密钥并让网络应用程序访问它们。也就是说,"safest" 方法是使用 Azure Key Vault。它是经过 FIPS-140 2 级认证的 HSM,可以在您的应用程序不需要访问密钥的情况下执行加密操作。
当然,如果您的应用程序只能请求它想要的任何解密(如果攻击者破坏了该应用程序,他们可以自己发出请求),这只会稍微提高安全性。但至少,物理介质受到保护,并且您正在将实际的加密操作转移到安全的环境中。它也更有可能满足监管要求,而不是将原始密钥存储在配置文件中。
可以找到显示示例代码的简单教程here