Защищенный заголовок JWS - PullRequest
       49

Защищенный заголовок JWS

0 голосов
/ 10 октября 2018

Я пытаюсь понять этот пост в блоге о Хосе .В части о 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 голосов
/ 19 октября 2018

Вы на правильном пути.Вероятно, статья ссылается на параметр заголовка "jwk", определенный в RFC-7515 следующим образом:

Параметр заголовка "jwk" (веб-ключ JSON) - этооткрытый ключ, который соответствует ключу, используемому для цифровой подписи JWS.Этот ключ представлен в виде веб-ключа JSON.

Веб-ключ JSON (JWK) является еще одной частью JOSE, определенной в RFC-7517 .Он определяет, как представлять криптографические ключи в формате JSON, чтобы их можно было передавать, например, в заголовке JWS.Ключ RSA в формате JWK может выглядеть примерно так:

{
  "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"
  }
}
...