我正在尝试加密我的敏感数据,如用户电子邮件地址到数据库使用aws kms CMK。 我在Java使用的是aws SDK。
我已经将字段加密并存储在数据库中。
我也可以解密数据。
但最主要的问题是当我必须查询数据时。。。 因为我正在取回aws SDK字节,我正在将它转换为基68并存储它。
为什么aws总是在加密后返回相同数据的不同SDK字节? 我不能简单地通过数据搜索。 我得带上所有的清单,解密数据,然后匹配数据。 这要花很多时间。
请建议我使用aws cmk密钥加密数据的好方法。
谢谢Ankit
加密,当正确执行时,永远不是确定性的。 将abc@abc.com
加密为FA3GEFI2NB52JH0
是一个弱点,因为它会泄漏信息(如果您找到两个相等的密文,那么您知道它们包含相同的纯文本。您不知道确切的值,但您知道它是相同的)。 从技术上讲,您使用一个名为IV(初始化向量)的随机值传递给加密过程,但是我们不深入挖掘。
那么,如何处理你的案子。 您可以:
如何使加密具有确定性? 使用恒定IV值。 我不知道这是否可以在AWS中实现,以及如何实现,但那将是最容易的方法。
通过以这种方式使用KMS,您正在执行客户端加密,这将使您在检索到数据之后负责解密。
目前还没有在SQL操作中显式使用KMS密钥的实现,唯一的支持是在文件存储的其余部分进行加密。
您的选项包括: