首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >AES128GCM加密算法中的SALT角色是什么?

AES128GCM加密算法中的SALT角色是什么?
EN

Stack Overflow用户
提问于 2017-08-18 12:19:39
回答 2查看 1.8K关注 0票数 0

我正在尝试实现一个aes128gcm加密算法,这样我就可以在网上推送通知。然而,我错过了一些东西,因为我找不到在任何地方使用盐的目的。

加密内容编码头必须具有salt值,即16字节长。它是否用于沿所提供的公钥生成128位密钥?或者在加密过程中我应该在其他地方使用它呢?

事先谢谢,我对这个世界有点陌生,似乎在任何地方都找不到答案。

EN

回答 2

Stack Overflow用户

发布于 2017-08-18 20:03:18

AES128GCM加密算法中的SALT角色是什么?

没有。Salt通常用于随机化密码散列,但这不是AES-GCM的一部分,它需要密钥(不是密码!)、IV和明文来生成密文和身份验证标记。

当然可以使用salt和密码来派生密钥,但这不是AES-GCM的一部分。

票数 1
EN

Stack Overflow用户

发布于 2017-08-18 12:40:59

如果您有一个完全确定性的加密算法,那么它很容易受到字典攻击。

例如,如果“密码”总是加密到“qbttx启示”,那么攻击者可以查看加密密码的列表,并知道无论他在哪里看到“qbttx型式”,普通密码都是“密码”。

我遇到了一个消息传递系统,在这个系统中,消息是在没有盐的情况下被加密存储的。一个客户经常发送相同的消息。虽然您无法知道内容是什么,但是您可以知道有多少消息是相同的。攻击者可以利用这一点。

当然,有很多更微妙的方法可以利用这个属性。

为了避免这种情况,我们在诉讼程序中引入了一个盐。

  • 加密的输入包含明文、密钥和随机生成的盐值。
  • 发送给预期收件人的有效载荷包含密文和盐分。
  • 解密的输入包含密文、密钥和盐。

因此,您需要为每条消息随机生成16字节的盐分,并且您需要在传输协议中腾出空间来与密文进行通信。只要把它放在密文前面就可以了。

如果您硬编码一个固定的盐类,并在两端使用它,它将“工作”在某种意义上,您将能够加密和解密以相同的消息--但您将有我描述的漏洞。

顺便说一句,围绕加密算法设计协议充满了极其微妙的陷阱,最好留给真正的专家(我有20年在安全互联网协议方面的工作经验--我也不相信自己会设计一个防弹加密层)。尽可能使用已建立的东西(例如SSL或S/MIME)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45756502

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档