Клавиши 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