受保护的标头JWS

时间:2018-10-10 19:43:52

标签: json encryption jwt jose

我正试图了解this blog post about JOSE。在有关JWS的部分中,它表示以下内容:

  

在受保护的标头中包含公钥不仅会   服务器验证签名的能力,我们也将   确保它是正确的,因为受保护的标头是   完整性受保护!

示例对象的外观如下:

{
    "payload": "eyAKICAgICAgICAiZnJvbSI6ewogICAgICAgICAgICAibmFtZSI6ICJUaW0gWXNld3luIiwKICAgICAgICAgICAgImFjY291bnQiOiAiQ2hlY2tpbmcgYWNjb3VudCIKICAgICAgICB9LAogICAgICAgICJ0byI6ewogICAgICAgICAgICAibmFtZSI6ICJUaW0gWXNld3luIiwKICAgICAgICAgICAgImFjY291bnQiOiAiU2F2aW5ncyBhY2NvdW50IgogICAgICAgIH0sCiAgICAgICAgImFtb3VudCI6IDI1MAogICAgICAgICJjdXJyZW5jeSI6ICJFVVIiCiAgICB9",
    "protected": "eyAKICAgICAgICAiYWxnIjogIlJTMjU2IgogICAgfQ==",
    "header": {
        "signature": "DtEhU3ljbEg8L38VWAfUAqOyKAM6-Xx-F4GawxaepmXFCgfTjDxw5djxLa8ISlSApmWQxfKTUJqPP3-Kg6NU01Q"
    }
}

受保护的标头是以下内容的base64url编码:

{ 
    "alg": "ES256"
}

我可以找到的唯一将公用密钥放入其中的参考是使用密钥ID字段kid,如下所示:

{"alg":"RSA1_5","kid":"2011-04-29"}

这是帖子所指的吗?还是指其他东西(例如将整个公钥放入受保护的标头中,如:

{"alg":"RSA1_5","key":"somepublickeyhere"}

1 个答案:

答案 0 :(得分:1)

您在正确的道路上。这篇文章可能指的是RFC-7515中定义的"jwk"标头参数,如下所示:

  

“ jwk”(JSON Web密钥)标头参数是指      对应于用于对JWS进行数字签名的密钥。这个钥匙是      表示为JSON Web密钥。

JSON Web密钥(JWK)是RFC-7517中定义的JOSE的另一部分。它定义了如何以JSON格式表示加密密钥,以便可以将其传输,例如在JWS标头中。 JWK格式的RSA密钥可能如下所示:

{
  "kty":"RSA",
  "n": "0vx7 (...) DKgw",
  "e":"AQAB",
  "alg":"RS256",
  "kid":"2011-04-29"
}

以及(如本文所述)带有密钥的(受保护的)JWS标头可能如下所示:

{
  "alg": "RS256",
  "jwk": {
    "kty":"RSA",
    "n": "0vx7 (...) DKgw",
    "e":"AQAB",
    "alg":"RS256",
    "kid":"2011-04-29"
  }
}