【问题标题】:Is there any standard order for nesting JWS and JWE tokens?嵌套 JWS 和 JWE 令牌是否有任何标准顺序?
【发布时间】:2019-06-09 13:16:58
【问题描述】:

我需要在我的软件的多个实例之间传递 JSON 编码的签名(有时还额外加密)对象。这里显而易见的选择是 JWT。

然而,JWT 显然允许签名和加密令牌(JWS 和 JWE)或将 JWS 嵌套到 JWE(嵌套 JWE)中。

虽然这两种方法对我来说似乎都是合理的,但是否有一种“标准”的方式来做到这一点?我还没有找到任何细节。

【问题讨论】:

    标签: json jwt jwe


    【解决方案1】:

    简答

    当签名和加密都需要时,您应该首先对消息进行签名,然后对结果进行加密。也就是说,将 JWS 嵌套到 JWE 中是一种有效的方法。

    长答案

    JSON Web Token (JWT) 是一种开放标准,它定义了一种紧凑且自包含的方式,用于在各方之间以 JSON 对象的形式安全地传输信息。 JWT 是以下类型令牌的通用名称

    • JSON Web Signature (JWS):负载经过编码和签名,因此可以验证声明的完整性

    • JSON Web Encryption (JWE):它们的有效负载是加密的,因此声明对其他方隐藏


    图片是从这个page中提取的。

    显然,JWT 允许签名和加密令牌(JWS 和 JWE)或将 JWS 嵌套到 JWE(嵌套 JWE)中。

    虽然这两种方法对我来说似乎都是合理的,但是否有一种“标准”的方式来做到这一点?我还没有找到这方面的任何细节。

    嵌套JWT的概念在RFC 7519中定义:

    采用嵌套签名和/或加密的 JWT。在 嵌套的 JWT,一个 JWT 被用作一个有效载荷或明文值 分别包含 JWS 或 JWE 结构。

    关于操作的顺序,建议先对消息签名,然后对结果进行加密,如同一文档中所述:

    11.2. Signing and Encryption Order

    虽然从语法上讲,嵌套的签名和加密操作 JWTs 可以按任何顺序应用,如果签名和加密都是 必要的,通常生产者应该在消息上签名,然后 加密结果(从而加密签名)。这可以防止 剥离签名的攻击,只留下一个加密的 消息,以及为签名者提供隐私。此外, 加密文本上的签名在许多情况下被认为是无效的 司法管辖区。

    【讨论】:

      猜你喜欢
      • 2018-04-08
      • 2019-03-16
      • 2015-11-03
      • 2018-07-06
      • 2016-11-21
      • 2022-10-31
      • 2013-09-27
      • 2017-02-09
      • 2017-03-21
      相关资源
      最近更新 更多