上下文: Multi-Tenancy 应用
特性:敏感数据加密
故事: 作为租户的管理员,我想使用我自己的密码或密码短语来加密敏感数据,这样我(而且只有我)可以完全控制所使用的 key 。
验收标准:
- 每个租户的管理员应该能够定义用于加密的密码或密码
- 只有提供原始密码或密码短语的租户管理员才应该知道 key
- 租户管理员提供密码或通行短语后,应将其安全存储
我的问题
- 到目前为止,我们一直在使用对称 key 加密,并在应用程序中硬编码应用程序范围的 key 。如果每个租户都想使用自己的 key ,这将不再有效。我们如何让每个用户定义自己的 key ?
- 如何以及在哪里存储 key ?
- 将密码/通行短语存储在证书中是一个有效的选择吗?如果是,那么如何保护 keystore ?
最佳答案
在不知道 key 的情况下无法加密/解密。否则,使用 key 派生函数 (PBKDF2) 的 PBE 似乎是一个明确的案例。您可以使用非对称加密,但它只会在您的用例加密期间保护私钥。
关于java - 基于用户输入 key 的加密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10391505/