用例是用户有一个需要加密的元数据,因此当他们登录时,将“检查” protected 和存储的对象“加密”,以验证明文形式的对象信息是否等于其中的内容加密对象。
问题是,在 Azure Key Vault 中为每个用户提供具有公钥和私钥功能的 key 是否更合适?或者,仅使用单个 key 来加密存储的对象,并在访问对象时取消签名/解密该对象。
对我来说,对象是加密所必需的,并且与 key 的加密方式并不真正相关,因此是一种通用的一 key 多方法。
另一种方法也很有意义,但我必须创建大量的 key 才能促进这种方法。 1000 个或数百万个 key 导致每个用户都有一个 key 是否合适?
各有什么优点或缺点。
我认为同样的做法也适用于 JWT token 签名。
最佳答案
我认为最好拥有一把 key 并定期轮换 key 。
例如,就像他们在 ASP.NET Core 数据保护 API 中所做的那样(我知道您正在使用 Node ),他们每 90 天(默认情况下)将当前 key 替换为新 key ,并且旧 key 仍保留允许解密旧数据。在 .NET 中,他们将其称为 key 环,可容纳许多 key 。
我写了关于此的博客here .
此外,请注意,使用某些带有 Azure Key Vault 的 SDK 时,它们会尝试在启动时一一下载所有 secret 。如果您有很多 secret ,这可能会非常耗时。
关于node.js - 使用 Azure Key Vault 或 JWT 时,设置和检索/解密元数据的正确设计是什么。 1 对多还是 1 对 1 键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74064302/