Выбор ответа Middle Криптография на практике и JWT обновлено
Сравнение за постоянное время
Вопрос
Почему подпись вебхука нужно сравнивать функцией hmac.compare_digest, а не ==?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: == останавливается на первом несовпавшем байте, и по времени подпись подбирают. Тайминговая атака измеряет, сколько байт совпало, по времени ответа.
Варианты ответа
==неверно сравнивает байтовые строки разной кодировки, аcompare_digestих нормализуетcompare_digestдополнительно расшифровывает подпись и проверяет её по ключу==останавливается на первом несовпавшем байте, и по времени подпись подбираютправильный ответcompare_digestбыстрее на длинных строках, потому что сравнивает их блоками
Разбор
Тайминговая атака измеряет, сколько байт совпало, по времени ответа. Функции сравнения за постоянное время проверяют все байты всегда. == работает с байтами, ничего не расшифровывается, а скорость здесь не цель.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.