Существует ли какой-либо стандартный порядок для размещения токенов JWS и JWE? - PullRequest
0 голосов
/ 15 января 2019

Мне нужно передать подписанные (и иногда дополнительно зашифрованные) объекты в кодировке JSON между несколькими экземплярами моего программного обеспечения. Очевидный выбор здесь - JWT.

Тем не менее, JWT позволяет явно подписывать и шифровать токен (JWS и JWE) или вкладывать JWS в JWE (вложенный JWE).

Хотя оба подхода кажутся мне разумными, существует ли «стандартный» способ сделать это? Я не нашел никаких подробностей по этому вопросу.

1 Ответ

0 голосов
/ 15 января 2019

Краткий ответ

Когда необходимо подписать и зашифровать, вы должны сначала подписать сообщение, а затем зашифровать результат. То есть вложение JWS в JWE является правильным подходом.

Длинный ответ

JSON Web Token (JWT) - это открытый стандарт, определяющий компактный и автономный способ безопасной передачи информации между сторонами в виде объекта JSON. JWT - это универсальное имя для следующих типов токенов:

  • JSON Web Signature (JWS): полезная нагрузка закодирована и подписана , поэтому можно проверить целостность заявок.

  • JSON Web Encryption (JWE): их полезная нагрузка зашифрована , поэтому заявки скрыты от других сторон.

JWT, JWS and JWE
Изображение было извлечено с этой страницы .

JWT позволяет явно подписывать и шифровать токен (JWS и JWE) или вкладывать JWS в JWE (вложенный JWE).

Хотя оба подхода кажутся мне разумными, существует ли «стандартный» способ сделать это? Я не нашел никаких подробностей по этому вопросу.

Понятие вложенного JWT определено в RFC 7519 :

JWT, в котором используются вложенные подпись и / или шифрование. В Вложенные JWT, JWT используется в качестве значения полезной нагрузки или открытого текста ограждающая структура JWS или JWE соответственно.

Что касается порядка операций, рекомендуется сначала подписать сообщение, а затем зашифровать результат , как указано в том же документе:

11,2. Заказ на подпись и шифрование

Синтаксически операции подписи и шифрования для Вложенные JWT могут применяться в любом порядке, если подпись и шифрование необходимо, обычно производители должны подписать сообщение, а затем зашифровать результат (тем самым зашифровав подпись). Это мешает атаки, при которых подпись снимается, оставляя только зашифрованный сообщение, а также обеспечение конфиденциальности для подписавшего. Более того, подписи зашифрованного текста не считаются действительными во многих юрисдикции.

...