我正在创建一个应用程序,用户可以在其中输入一些文本,但我不想将该文本原样存储在DB中。我将加密它,然后存储它。然而,我面临的问题是加密密钥的安全性。我不知道该怎么保存?。我知道它不应该作为纯文本保存在.js或文本文件中。我想到了env变量,但最近我被告知这不是最佳实践。也想过加密密钥,但考虑到服务器上的解密逻辑,这将毫无意义。这里有人能告诉我存储密钥的最佳做法是什么吗?或者有什么更好的方法可以以安全的方式存储数据?
键最终只是二进制数据。因此,原则上,如果可以像加密消息一样轻松地访问密钥,那么使用密钥加密并没有真正解决任何问题。不同的是,密钥可能会变得更难访问。否则,您只是实现了默默无闻,而不是加密。
一般来说,为了让东西不那么容易获得,你需要一些帮助。例如,您可以让一个人输入密码,从中可以派生密钥。或者,您可以使用系统保护的密钥存储并使用它。或者,您可以使用具有不同访问条件的不同服务器来加密/解密。如果你在同一过程中不需要解密密钥,那么你也可以考虑非对称加密,因为你只需要私钥进行解密(例如在后台(。
然而,密钥管理是密码学的难点,这里绝对没有一刀切的解决方案,这完全取决于上下文。如果在凌晨3点重新启动服务器时需要派生密钥,您可能不希望使用基于密码的加密,仅举一个不匹配密钥管理方案的例子。