Выбор ответа Senior Криптография на практике и JWT обновлено

Путаница алгоритмов в JWT

Вопрос

Сервер проверяет токены RS256 публичным ключом, но берёт алгоритм из заголовка токена. Как атакующий подделает токен?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Поставит alg: HS256 и подпишет HMAC публичным ключом сервера. Библиотека, увидев HS256, вызовет проверку HMAC с «ключом», которым у сервера служит публичный ключ, а публичный ключ атакующему известен.

Варианты ответа

  1. Подберёт приватный ключ RSA по нескольким перехваченным токенам
  2. Поставит alg: HS256 и подпишет HMAC публичным ключом сервераправильный ответ
  3. Удалит подпись и поставит alg: RS512, который сервер не проверяет
  4. Зашифрует payload публичным ключом, и сервер примет это как подпись

Разбор

Библиотека, увидев HS256, вызовет проверку HMAC с «ключом», которым у сервера служит публичный ключ, а публичный ключ атакующему известен. Защита: жёстко задавать ожидаемый алгоритм и тип ключа. Перебор RSA нереален, удаление подписи не пройдёт проверку RS512, а шифрование payload не создаёт подпись.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.