验证使用JSON Web加密(JWE)加密的安全令牌的颁发者?

Gre*_*ech 6 security encryption jwt jwe

我一直在阅读JSON Web加密(JWE)规范,最新的草案是08,因为我们正在考虑在我们的身份验证服务器中支持JSON Web令牌(JWT).

使用它定义的非对称加密方法,使用收件人公钥加密对称密钥(内容主密钥).这是有道理的,这样只有收件人才能解密它,并确保令牌是为他们准备的.

通常情况下我还希望也看到一些证明令牌是谁从,例如使用发行人可使用其公钥来验证私钥创建的签名.但是,签名似乎也来自内容主密钥或收件人的公钥,而没有提及发行者的私钥.

如果没有这个,我觉得 - 只要知道预期的令牌格式是已知的 - 拥有收件人公钥的任何人(即任何人)都可以生成有效令牌; 不只是受信任的身份验证服务器

我不是密码学方面的专家(远非它)所以我确定我在这里遗漏了一些东西.收件人如何验证非对称加密令牌是否来自受信任的颁发者?

鉴于JSON Web签名(JWS)规范确实定义了使用发行者私钥并且可以使用其公钥进行验证的签名,我想知道JWE令牌的有效负载是否应该是JWS令牌?

Sha*_*eep 5

JWT 当然允许嵌套有效负载。事实上,规范中有一个特定的参考,其中cty(内容类型)标头参数可以设置JWT为指示有效负载实际上是另一个 JWT。

因此,您很可能会创建一个 JWE 并将其包装在 JWS 中,并使用您的私钥进行签名。这似乎也是 JOSE 邮件列表上此线程的结论(或至少一种解决方案)。还有另一个关于减少有效载荷大小的相关线程。一般来说,该邮件列表可能值得关注,因为它是规范背后的人聚集的地方。

  • 酷,感谢您的参考。更仔细地重新阅读规范后,第 10 节似乎也涵盖了这一点,并提供了一些额外的指导:“虽然在语法上,嵌套 JWT 的签名和加密操作可以按任何顺序应用,但通常发送者应该对消息进行签名并然后对结果进行加密(从而对签名进行加密)。这可以防止签名被剥离,只留下加密消息的攻击,并为签名者提供隐私。此外,加密文本上的签名在许多司法管辖区不被认为是有效的。 ” (3认同)