Клавиши JWT - асимметричные и симметричные

Я понимаю разницу между симметричными и асимметричными ключами. Я понимаю, что ключи используются для вычисления подписи, а затем проверяют их. Однако, погружаясь немного глубже, я хотел бы понять немного больше, что у меня проблемы с поиском в Интернете.

Являются ли ключи, предоставленные потребителям для проверки содержимого? Разве это не даст потребителям возможность изменять содержимое JWT, если используются симметричные ключи?

Когда используются асимметричные ключи, это подпись, вычисленная с помощью частного или открытого ключа? Является ли потребитель открытым/закрытым ключом?

Спасибо

Ответ 1

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

Подписи асимметричного ключа (как в JWT, так и в целом) создаются отправителем с помощью закрытого ключа и проверяются получателем с помощью открытого ключа. Потребителю/получателю предоставляется только открытый ключ, который происходит out_of_band (т.е. через другое средство связи, чем то, которое вы используете для обмена защищенными данными).

Ответ 2

С асимметричными JWT (JWS), которые подписаны с помощью закрытого ключа отправителя, получатель токена в основном получает полезную нагрузку (заголовок/утверждения), которые находятся в открытом тексте, а другие кодируются в base64. Вот почему они должны быть переданы в среде Secure Socket Layer (SSL). Чтобы проверить полученную подпись, Получатель использует открытый ключ для пересчета подписи полученной полезной нагрузки. Если две подписи, полученная подпись и вычисленная подпись, не совпадают, то полезная нагрузка не может быть trusted--, она недействительна Следовательно, такой асимметричный JWS не будет хорошим методом для включения конфиденциальной "заявки", такой как номер социального страхования, поскольку содержимое полезной нагрузки не зашифровано. Включить такие конфиденциальные данные в JWT JWE Json Web Token Encrypted. В JWE вся полезная нагрузка зашифрована.

Ответ 3

Никто не будет шифровать полезную нагрузку JWT. Это все о подписи! Подписи RSA или ECDSA (обе асимметричные) можно проверить только с помощью общего ключа, для подписей с симметричной подписью вам понадобится аутентификационная служба.

Наиболее распространенные алгоритмы подписывания JWT:

HMAC + SHA256
RSASSA-PKCS1-v1_5 + SHA256
ECDSA + P-256 + SHA256

увидеть больше https://tools.ietf.org/html/rfc7518#section-3