6

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

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

通常我还希望看到一些可以证明令牌来自谁的东西,例如使用发行者的私钥创建的签名,可以使用他们的公钥进行验证。但是,签名似乎也来自内容主密钥或接收者的公钥,没有提及发行者的私钥。

如果没有这个,在我看来——只要知道预期的令牌格式——任何拥有接收者公钥的人(即任何人)都可以生成一个有效的令牌;不仅仅是受信任的身份验证服务器。

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

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

4

1 回答 1

5

JWT 当然允许嵌套有效负载。事实上,在规范中有一个特定的引用,其中cty(content-type) 标头参数可以设置JWT为指示有效负载实际上是另一个 JWT。

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

于 2013-03-19T15:08:59.977 回答