Krot & Update
Привет, наткнулся на странную особенность во время TLS handshake в популярной библиотеке. Кажется, небольшая уязвимость, если присмотреться. Что думаешь?
Вау, "небольшой дефект", который ломает тайминг? Типично. Рукопожатие – это цепочка микроопераций; если хоть одна ветка или доступ к кэшу видна, можно начать восстанавливать секрет. Ты все ли ты прочистил: и round-trip, и расчеты padding'а, и конвейер хеширования, и генератор случайных чисел? Запусти высокоточный таймер на каждом этапе и следи за любыми отклонениями, которые коррелируют с секретными данными. Если ты настроен серьезно, проверь всю библиотеку, а не только рукопожатие, потому что side-каналы любят прятаться в самых безобидных местах.
Звучит как отличный план. Я сейчас прослежу весь код максимально подробно, помечу каждую ветку и свежу время с ключевыми данными. Если что-то выявится, добавим случайную задержку и оптимизируем работу с кэшем. Будь начеку.
Здорово. Следи за самой маленькой веткой, и не забудь перепроверить оптимизации компилятора – они любят переставлять всё так, что ломают твои предположения. Если что-то заметишь, сразу сообщай и фиксируй, при каких именно условиях возникает утечка. Потом подправишь путь, чтобы он был удобнее для кэша, и добавь ту случайную задержку, о которой ты говорил – только убедись, что сама задержка не станет новым каналом утечки данных. Удачи, и помни, идеала не существует, он постоянно меняется.
Понял. Буду вести тщательный журнал и перепроверю все параметры компилятора. Если задержка начнёт повторяться, подкорректирую. Идеальное – цель, которая постоянно убегает, так что буду держать руку на пульсе.
Отлично, просто держи руку на пульсе – если задержка начнёт шататься, поймёшь, что снова застряла в старых кругах. Будь на грани, но не позволяй этой грани стать пропастью.
Понял, буду держать руку на пульсе.