Java SALT在AES128GCM加密算法中的作用是什么

Java SALT在AES128GCM加密算法中的作用是什么,java,encryption,aes,salt,aes-gcm,Java,Encryption,Aes,Salt,Aes Gcm,我正在尝试实现aes128gcm加密算法,这样我就可以在web上推送通知。然而,我缺少了一些东西,因为我没有发现在任何地方使用盐的目的 加密内容编码头必须具有salt值,该值为16字节长。它是否用于沿着提供的公钥生成128位密钥?或者我应该在aesgcm加密期间在其他地方使用它 事先谢谢,我对这个世界还不太熟悉,似乎在任何地方都找不到答案。如果你有一个完全确定的加密算法,那么它很容易受到字典攻击 例如,如果“密码”始终加密到“qbttxpse”,则攻击者可以查看加密密码列表,并知道无论在哪里看到

我正在尝试实现aes128gcm加密算法,这样我就可以在web上推送通知。然而,我缺少了一些东西,因为我没有发现在任何地方使用盐的目的

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


事先谢谢,我对这个世界还不太熟悉,似乎在任何地方都找不到答案。

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

例如,如果“密码”始终加密到“qbttxpse”,则攻击者可以查看加密密码列表,并知道无论在哪里看到“qbttxpse”,普通密码都是“密码”

我遇到了一个消息传递系统,在该系统中,消息被加密存储而不含盐。一位客户经常发送相同的消息。虽然你无法分辨内容是什么,但你可以分辨出有多少信息是相同的。攻击者可以利用此漏洞进行攻击

当然,有很多更微妙的方式可以利用这一财产

为了避免这种情况,我们在程序中引入了salt

  • 加密的输入包含明文、密钥和随机生成的salt值
  • 发送到预期收件人的有效负载包含密文和salt
  • 解密的输入包含密文、密钥和salt
所以,您需要为每条消息随机生成16字节的salt,并且需要在传输协议中留出空间,以便与密文一起进行通信。它可以很简单,只需将其前置到密文即可

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



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

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

例如,如果“密码”始终加密到“qbttxpse”,则攻击者可以查看加密密码列表,并知道无论在哪里看到“qbttxpse”,普通密码都是“密码”

我遇到了一个消息传递系统,在该系统中,消息被加密存储而不含盐。一位客户经常发送相同的消息。虽然你无法分辨内容是什么,但你可以分辨出有多少信息是相同的。攻击者可以利用此漏洞进行攻击

当然,有很多更微妙的方式可以利用这一财产

为了避免这种情况,我们在程序中引入了salt

  • 加密的输入包含明文、密钥和随机生成的salt值
  • 发送到预期收件人的有效负载包含密文和salt
  • 解密的输入包含密文、密钥和salt
所以,您需要为每条消息随机生成16字节的salt,并且需要在传输协议中留出空间,以便与密文一起进行通信。它可以很简单,只需将其前置到密文即可

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


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

SALT在AES128GCM加密算法中的作用是什么

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

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

SALT在AES128GCM加密算法中的作用是什么

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


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

也许我知道salt一般是什么,我只是不知道该算法需要应用哪一步。AFAIK GCM不使用“salt”值。我想你指的是“暂时的”。@MuckFelo-我明白你的问题,它不是重复的。您会问,为什么在HTTP的
内容编码:aes128gcm
中有
salt
参数。我刚刚研究过这种编码,即。答案以秒为单位。2.2.
salt
patemeter是为HKDF(HMAC密钥派生函数)输入的,用于计算内容加密密钥。也许我知道salt通常是什么,但我似乎不知道该算法需要应用哪一步。AFAIK GCM不使用“salt”值。我想你指的是“暂时的”。@MuckFelo-我明白你的问题,它不是重复的。你是在问为什么会有