我应该为每个要加密的字符串创建一个新的 SecretKey 吗?
Should i create a new SecretKey for every String that i want to encrypt?
我想加密每个创建帐户的人的 firstName
和 lastName
并将加密文件存储到数据库中。
然后仅当安全请求到达 @RestController
时才将它们解密回来
我使用来自 javax.crypto.Cipher
的 Cipher
class
我将用于加密的密钥存储在 KeyStore.getInstance("JCEKS")
中
我的问题是,我应该为每个要加密的项目创建一个新的 SecretKey
还是创建一个密钥并用它完成所有工作?
换句话说,userOne
的信息应该得到encrypted/decrypted与secretKeyEntryOne
, userTwo
- secretKeyEntryTwo
, userThree
- secretKeyEntryThree
等等 或 所有用户的所有信息应该是 encrypted/decrypted 和 globalSecretKey
?
如果你不明白这个问题的意思,请告诉我,我会编辑我的问题。
提前致谢。
TL;DR: 有很多密码 (SecretKey
)。它提供了更好的安全性。
从安全的角度来看,最好为每个用户设置一个 SecretKey
,因为这将减少在数据泄露的情况下泄露所有用户信息的可能性,其中您的 globalSecretKey
被泄露。拥有多个 SecretKey
可以更好地保护这些信息,因为最坏的情况是只有一个客户的信息被泄露。
如果您不希望拥有一百万种不同的组合,您可以有一个列表(大约 500;更多 === 更好),其中 ciphers
是随机选择的。这减少了所有用户数据被泄露的可能性。尽管如果您有 space 将每个用户存储为一个特殊密钥,我建议您改为这样做。
我想加密每个创建帐户的人的 firstName
和 lastName
并将加密文件存储到数据库中。
然后仅当安全请求到达 @RestController
我使用来自 javax.crypto.Cipher
的 Cipher
class
我将用于加密的密钥存储在 KeyStore.getInstance("JCEKS")
我的问题是,我应该为每个要加密的项目创建一个新的 SecretKey
还是创建一个密钥并用它完成所有工作?
换句话说,userOne
的信息应该得到encrypted/decrypted与secretKeyEntryOne
, userTwo
- secretKeyEntryTwo
, userThree
- secretKeyEntryThree
等等 或 所有用户的所有信息应该是 encrypted/decrypted 和 globalSecretKey
?
如果你不明白这个问题的意思,请告诉我,我会编辑我的问题。
提前致谢。
TL;DR: 有很多密码 (SecretKey
)。它提供了更好的安全性。
从安全的角度来看,最好为每个用户设置一个 SecretKey
,因为这将减少在数据泄露的情况下泄露所有用户信息的可能性,其中您的 globalSecretKey
被泄露。拥有多个 SecretKey
可以更好地保护这些信息,因为最坏的情况是只有一个客户的信息被泄露。
如果您不希望拥有一百万种不同的组合,您可以有一个列表(大约 500;更多 === 更好),其中 ciphers
是随机选择的。这减少了所有用户数据被泄露的可能性。尽管如果您有 space 将每个用户存储为一个特殊密钥,我建议您改为这样做。