为什么JSON Web加密(JWE)不保护IV和内容加密密钥的完整性?

3
所有 JWE 都使用带有关联数据 (AAD) 的认证加密算法进行加密。你是否有任何理由不想在 AAD 中包含 IV 和加密的内容加密密钥 (CEK)?这样做会使 JWE 受到攻击吗?
编辑:我继续研究了这个问题,并发现根据 RFC 5116 第 2.1 节
“nonce” 在算法内部被验证,因此无需将其包括在 AD 输入中。如果方便应用程序,则可以在 P 或 A 中包含 nonce。
另外:
必须不将密钥 K 包含在其他任何输入 (N、P 和 A) 中。这个限制并不意味着必须检查这些输入的值以确保它们不包括与密钥匹配的子字符串;相反,它意味着密钥不能明确地复制到这些输入中。
所以我唯一剩下的问题是,考虑到加密内容密钥等同于随机值,将其包含在aad中是否可以?这完全是为了方便。或者这会导致信息泄露的可能性?
1个回答

2

无需完整性保护IV或加密内容加密密钥(CEK)。对它们的任何修改都会导致解密失败,无论它们是否包含在AAD中。然而,为了避免时序预言攻击, 实现必须经过整个解密过程,包括解密CEK,验证MAC(对于AES-CBC + HMAC-SHA2算法)和内容解密。

所以说,没有必要通过将IV或CEK包含在AAD中来保证其完整性,但是在AAD中包含它们有什么危害吗?正如您在问题中指出的那样,RFC 5116表明,在AAD中包含IV是可以的,但是CEK不能包含在其他算法输入中,包括AAD中。但是,加密CEK(假设加密算法是安全的)与随机数据在计算上是难以区分的,因此将其包含在AAD中应该是可以的。


我不是在谈论所有认证加密(AE)密码,而只是那些有关联数据(AEAD)的密码。因此,如果我有一些AEAD密码,E(plainText,key,iv,aad)->(cipherText,tag),如果aad = F(key) + iv,那么我的加密系统的安全性会降低吗?其中F() 是密钥的某种置换,在jwe的情况下,它将是密钥管理算法。显然,这些东西被视为已知值,因为它们作为jwe的一部分传输。但是,如果对手在aad中包括具有身份验证标记,是否会获得任何优势呢? - k0mrade_kangaroo
我不这么认为 - 我已经更新了答案以澄清。但是我不是密码学家,所以不要把我的建议当作圣经。 - frasertweedale

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接