Почему клиент должен расшифровать JWE?

Если я использую JWE для отправки зашифрованного сообщения JSON, которое будет храниться на стороне клиента для использования с авторизацией, зачем клиенту дешифровать это сообщение?

Клиент присоединяет токен JWE ко всем запросам. Сервер идентифицирует клиента с помощью токена JWE и отвечает или отклоняет запрос. Во всем, только сервер может расшифровать.

Если с этой структурой нет проблем, как лучше ее реализовать? Должен ли я использовать асимметричное шифрование и не предоставлять открытый ключ (возможно ли это в спецификации JWE)?

Кроме того, как лучше всего убедиться, что токен JWE не был перехвачен и, хотя и не расшифрован, присоединен к запросу вредоносного сервера, что позволяет злоумышленнику выдать себя за клиента?

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

1 ответ

Решение

Если я использую JWE для отправки зашифрованного сообщения JSON, которое будет храниться на стороне клиента для использования с авторизацией, зачем клиенту дешифровать это сообщение?

Когда клиент должен прочитать некоторые данные, содержащиеся в JWT, такие как идентификатор пользователя или срок действия. Это не нужно во всех сценариях.

Клиент присоединяет токен JWE ко всем запросам. Сервер идентифицирует клиента с помощью токена JWE и отвечает или отклоняет запрос.

Да, это обычный поток авторизации

Во всем, только сервер может расшифровать.

Не обязательно. Сервер может зашифровать ключ шифрования с помощью открытого ключа получателя, используя, например, RSAES-OAEP. После этого получатель сможет расшифровать JWT своим закрытым ключом.

Если с этой структурой нет проблем, как лучше ее реализовать? Должен ли я использовать асимметричное шифрование и не предоставлять открытый ключ (возможно ли это в спецификации JWE)?

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

Кроме того, как лучше всего убедиться, что токен JWE не был перехвачен и, хотя и не расшифрован, присоединен к запросу вредоносного сервера, что позволяет злоумышленнику выдать себя за клиента?

Представление JWT является доказательством аутентификации. Если токен украден, то злоумышленник может выдать себя за пользователя. Таким образом, вы должны защитить его, чтобы снизить риск:

  • В основном используйте HTTPS для шифрования канала связи

  • Надежно храните его на клиенте.

Другие вопросы по тегам