公开使用受保护的对称密钥加密的端点安全吗?



我想简化一个过程,其中非特权人员需要使用对称密钥(AES-GCM)加密数据并将结果提供给我。非特权仅仅意味着这个人没有访问加密密钥的权限。

对于像RSA和EC这样的非对称密码,向任何人提供公钥当然是整个想法的一部分,但对于对称密码,特权方是唯一可以解密加密的一方,显然。

为了简化我的工作流程,我正在考虑设置一个简单的HTTP端点,使用我的私有对称密钥加密给定的字符串并返回结果。就像

GET somewhere.com/encrypt?keyId=foo&data=Hello%20world

返回类似

的内容
{
"keyId": "foo",
"encryptedData": "xxxxxx"
}

在幕后,这可能是一个AWS Lambda函数,使用由keyId指定的KMS密钥对data进行加密并返回加密结果。

但是,我想确定这本身不是一个安全问题。例如,是否存在一种已知的攻击,有人可以从加密数十亿个字符串中找到AES的关键材料,然后处理源字符串及其加密副本?换句话说,公开加密端点会有问题吗?

听起来你正在使用对称加密,而不对称加密更符合目的。

如果出于某种原因需要对称,那么如果可能的话,让服务自己发送加密结果给你会更安全,而不是将其返回给不受信任的一方。

您建议的方式将允许直接选择明文攻击(建议的服务,只是一个选择的明文设施)。虽然您的标签建议的AES-GCM实际上并不容易受到选择的明文攻击(其他更了解加密的人请纠正我,如果这不是真的),这可能仍然是一个坏主意,因为

  1. 让oracle使用加密密钥可能会在架构的其他地方导致问题(或者不会,这取决于系统的其他部分发生了什么,但这可能会导致更多的系统漏洞),并且
  2. 虽然不太可能,但可能会发现针对AES的新攻击。

你的想法本身没有安全漏洞。暴力攻击(某人通过数十亿次尝试找到密钥)的可行性取决于您使用的AES密钥大小。建议密钥大小为256位,因为这将需要平均2^256次尝试,这是不可行的。

旁注:Evervault为这个用例提供了服务/sdk。它们有一个不错的免费层,所以考虑使用它们而不是自己实现加密API(冒着安全错误的风险)可能是件好事。

相关内容

  • 没有找到相关文章

最新更新