2016-05-16 72 views
0

我有一个数据库,我打算存储KMS加密的斑点。有些字段未加密(需要加密),有些字段已经过KMS加密。检测Blob是否为AWS KMS加密

查看原始数据,所有KMS加密的东西看起来都有点类似。理想情况下,AWS KMS API或AWS SDK应该有一些像“isEncrypted()方法,但它不会出现。

有没有好的办法来本地检测我的字段是否被加密,短追赶InvalidCiphertextException从在decrypt API

回答

2

我认为你的观察是,加密的东西看起来有点同样是有效的,它是有效的,因为在体内,第一部分实际上是用于加密的密钥名称。这是KMS如何知道如何解密没有你指定的密钥(所以基本上当你加密你得到的东西回来这就是:关键描述+实际加密的东西)

现在,问题是:你真的想依靠这个观察来确保某些东西是否被加密?你想在运行时做到这一点?

就isEncrypted方法而言:与调用解密有什么不同?这仍然是一个方法调用。

真实的答案是:您不应该依赖KMS来加密/解密您存储的东西。你应该依靠KMS来加密/解密你用来加密/解密你的东西(即所谓的信封加密)的密钥。如果您通过KMS直接解密/加密,您将受到可重新启动KMS的电话数量以及您想要加密的最大大小的限制。

如果您切换到信封加密,只需尝试解密并确定内容是否加密,应该是微不足道的。这就是说,我会建议实际上对加密和执行的内容非常严格(即不要猜测)。

因为我们在这里:还看为KMS

+0

重新加密上下文:“你不应该依赖KMS加密/解密您存储的东西。”你能更多地告诉(链接)我吗? –

+0

确定:http://docs.aws.amazon.com/kms/latest/developerguide/workflow.html – Mircea