Документ утратил силу или отменен. Подробнее см. Справку

5.7.1. Цифровая подпись в формате JSON

5.7.1.1. JWS (JSON Web Signature) - структура данных в формате JSON, представляющая сообщение с цифровой подписью или кодом аутентификации сообщений.

5.7.1.2. JWS состоит из трех частей:

- <JOSE Header>: JOSE заголовок - JSON-объект, содержащий параметры, описывающие криптографические операции и их параметры (см. подпункт 5.7.1.4);

- <JWS Payload>: функциональное содержимое JWS (полезная нагрузка) - последовательность октетов, подлежащих защите, другими словами - сообщение; функциональное содержимое может состоять из произвольной последовательности октетов;

- <JWS Signature>: цифровая подпись или код аутентификации сообщений, вычисленные на основе защищенного заголовка JWS и функционального содержимого JWS.

Заголовок <JOSE Header> JWS состоит из двух частей:

- <JWS Protected Header>: защищенный заголовок JWS - JSON-объект, содержащий параметры заголовка, целостность которых защищена цифровой подписью JWS или операцией MAC;

- <JWS Unprotected Header>: незащищенный заголовок JWS - JSON-объект, который содержит параметры заголовка, целостность которых не обеспечивается.

5.7.1.3. Для передачи структуры JWS может использоваться один из двух типов сериализации:

- компактная сериализация - представление JWS в виде компактной URL-строки,

- JSON-сериализация - представление JWS в виде объекта JSON.

При использовании компактной сериализации JWS представляется как строка:

BASE64URL(UTF8(<JWS Protected Header>) || '.' || BASE64URL

(<JWS Payload>) || '.' || BASE64URL(<JWS Signature>)

Порядок элементов строки критичен.

В JSON-сериализации JWS представляется в виде JSON-объекта, содержащего значения следующих параметров:

- <protected>: со значением BASE64URL(UTF8(<JWS Protected Header>)), если значение параметра <JWS Protected Header> не пустое; иначе значение параметра <protected> должно отсутствовать;

- <header>: со значением <JWS Unprotected Header>; этот параметр должен присутствовать, если значение <JWS Unprotected Header> не пустое, иначе он должен отсутствовать;

- <payload>: (обязательный) со значением BASE64URL(<JWS Payload>);

- <signature>: (обязательный) со значением BASE64URL(<JWS Signature>).

5.7.1.4. Имена параметров заголовка <JOSE Header> должны быть уникальными; синтаксические анализаторы JWS должны либо отклонить JWS с повторяющимися именами параметров заголовка, либо использовать анализатор JSON, который возвращает только лексически последнее повторяющееся имя элемента. Реализации настоящего стандарта должны понимать параметры <JOSE Header>, обозначенные в стандарте как "должны быть поняты", и обрабатывать их так, как определено в стандарте. Все остальные параметры <JOSE Header>, определенные в настоящем стандарте, но не обозначенные таким образом, должны игнорироваться, если они не поняты.

<JOSE Header> может включить следующие параметры:

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

- <jku>: (опциональный) URI, который указывает на ресурс, где находится ключ проверки подписи в представлении JWK (см. пункт 5.7.3), который используется для проверки цифровой подписи JWS;

- <jwk>: (опциональный) ключ проверки подписи в представлении JWK (см. пункт 5.7.3), который используется для проверки цифровой подписи JWS;

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

- <x5u>: (опциональный) URI, который ссылается на ресурс сертификата формата X.509 или цепочки сертификатов ключа проверки цифровой подписи JWS; данный ресурс должен содержать представление сертификата или цепочки сертификатов в соответствии с RFC 5280 [32] в PEM кодировании; сертификат ключа проверки цифровой подписи JWS должен быть первым сертификатом; в цепочке сертификатов каждый последующий сертификат должен использоваться для сертификации предыдущего; получатель должен проверить цепочку сертификатов в соответствии с RFC 5280 [32], считать сертификат или цепочку сертификатов и подпись JWS недействительными в случае отрицательного результата проверки; для получения ресурса должен использоваться HTTP запрос GET и протокол TLS;

- <x5c>: (опциональный) сертификат формата X.509 или цепочка сертификатов проверки цифровой подписи JWS; сертификат или цепочка сертификатов представлены в виде JSON-массива строк значений сертификата; каждая строка массива содержит кодировку Base64 (раздел 4 RFC 4648 [14], не Base64url кодирование) значение DER-представления сертификата формата X.509; сертификат ключа проверки цифровой подписи JWS должен быть первым сертификатом; в цепочке сертификатов каждый последующий сертификат должен использоваться для сертификации предыдущего; получатель должен проверить цепочку сертификатов в соответствии с RFC 5280 [32], считать сертификат или цепочку сертификатов и подпись JWS недействительными в случае отрицательного результата проверки;

- <typ> (Type): (опциональный) тип сериализации ("JOSE" - компактная сериализация, "JOSE+-JSON" - JSON-сериализация);

- <cty> (Content Type): (опциональный) тип (media type) функционального содержимого JWS; как правило, используется, если в приложении несколько типов объектов могут быть представлены в качестве содержимого <JWS Payload>;

- <crit>: (опциональный) JSON-массив имен критичных параметров заголовка; если какой-то из параметров, чье имя внесено в этот массив, не поддерживается или не понято получателем, JWS считается недействительной; если параметр <crit> присутствует, он должен быть понят и обработан получателем.

5.7.1.5. Значение цифровой подписи или MAC <JWS Signature> вычисляется с помощью алгоритма, указанного значением параметра алгоритма <alg>, используя на входе алгоритма подписи (MAC) ключ, идентифицируемый параметрами <jku>, <jwk>, <kid>, <x5u>, <x5c>, и следующую подписываемую последовательность октетов:

ASCII (BASE64URL (UTF8((<JWS Protected Header>))

|| '.' || BASE64URL(<JWS Payload>))

Проверка подписи JWS выполняется с помощью преобразования проверки цифровой подписи. Если проверка формата JWS или проверка подписи дала отрицательный результат, JWS отвергается как не валидная.

Примечания

1 Общие сведения о структуре JWS и алгоритмах работы с ней приведены в RFC 7515 [34].

2 Выбор используемых криптографических алгоритмов производится на этапе разработки сервера авторизации и клиента.