5.7.3. JSON структура ключа

5.7.3.1. JSON Web Key (JWK) - это структура данных в формате JSON, представляющая криптографический ключ. Параметры этой структуры представляют свойства ключа, в том числе и значение ключа. Ниже приведена типовая структура ключа, независимо от его типа. Кроме того, в состав структуры JWK могут входить параметры, специфические для конкретных криптографических алгоритмов, использующих ключ.

5.7.3.2. В состав JWK входят следующие параметры:

- <kty>: (обязательный) тип ключа; определены следующие значения:

- "EC": ключ для криптографического алгоритма на базе эллиптической кривой,

- "oct": последовательность октетов, используемая для представления симметричного ключа;

- "use": (опциональный) предполагаемое использование открытого ключа; определены следующие значения:

- "sig" - подпись,

- "enc" - шифрование;

- "key_ops": (опциональный) идентифицирует операции, для которых предполагается использовать ключ; определены следующие значения этого параметра:

- "sign" - вычисление цифровой подписи или кода аутентификации сообщений,

- "verify" - проверка цифровой подписи или кода аутентификации сообщений,

- "encrypt" - шифрование контента,

- "decrypt" - расшифрование контента и проверка расшифрованного, если возможно,

- "wrapKey" - шифрование ключа,

- "unwrapKey" - расшифрование ключа и проверка расшифрованного, если возможно,

- "deriveKey" - вычисление производного ключа,

- "deriveBits" - вычисление производных битов не для использования в качестве ключа;

- <alg> - (опциональный) идентифицирует криптографический алгоритм, в котором предполагается использование ключа;

- <kid> - (опциональный) идентификатор ключа; используется для того, чтобы выбрать нужный ключ в документе JWK Set;

- <x5u>, <x5c>, <x5t>, <x5t#S256>: (опциональные) как в JWS (см. пункт 5.7.1).

В зависимости от типа ключа <kty> в состав структуры JWK включаются также другие специфические параметры.

5.7.3.3. JSON-структура набора ключей JWK Set состоит из одного параметра <keys>, который является JSON-массивом ключей в формате JWK.

5.7.3.4. Документ Key Set, на который указывает значение параметра <jwks_uri> документа Discovery сервера авторизации (см. подпункт 5.4.4.1), содержит ключ(и) проверки подписи сервера авторизации. Он также может содержать открытые ключи, для которых вырабатывается общий ключ шифрования запросов к серверу авторизации. Набор Key Set, на который указывает значение параметра <jwks_uri> метаданных клиента (см. подпункт 5.4.4.5), содержит ключ(и) проверки подписи клиента. Он также может содержать открытые ключи, для которых вырабатывается общий ключ шифрования запросов к клиенту.

Если в наборе Key Set присутствуют как ключи проверки подписи, так и ключи шифрования, в структуре JWK каждого ключа должно быть указано значение параметра <use>. Не допускается использование одного и того же ключа как для целей подписи, так и для шифрования. Параметр JWK <x5c> может использоваться для предоставления ключей в формате сертификата X.509. В этом случае значение открытого ключа также должно присутствовать в составе JWK и совпадать со значением в сертификате.

Примечания

1 Общие требования к структурам JWK и JWK Set приведены в RFC 7517 [36].

2 Структуры JWK и JWK Set определяются на этапе разработки сервера авторизации и клиента.