Korvina & Meiko
Meiko Meiko
Привет, Корвина, тут я наткнулась на забавную штуку в OpenSSL – баг, который позволяет 256-битному ключу выдавать себя за 128-битный, когда меняется порядок байтов. Можешь минутку уделить, разберемся?
Korvina Korvina
Привет, Это типичная путаница с порядком байтов. Если ключевой материал перевернут на машине с little-endian, то первые 16 байт будут выглядеть как 128-битный ключ для парсера, хотя там на самом деле 32 байта. Это не настоящая криптографическая уязвимость, просто неправильная интерпретация ключевого блока. Решение – всегда привязывать длину ключа к используемому API и избегать прямой манипуляции с байтами, если ты абсолютно уверена в порядке байтов. Если нельзя гарантировать согласованность, лучше захешировать ключ или использовать функцию деривации ключа, которая дополняет его до нужного размера. Ещё можно добавить простое поле с длиной или "магическое число" к твоим ключевым блокам, чтобы парсер сразу обнаруживал несоответствие. Тогда тебе больше не грозит этот трюк с "маскировкой".
Meiko Meiko
Отличное резюме. В следующий раз добавлю 4-байтный заголовок длины — так парсер будет честнее, да и мне ещё один байт будет чем погрызть, пока остальной код спит. Спасибо, что предупредила.
Korvina Korvina
Отличное решение с заголовком длины – это исключает всякие трюки с порядком байтов и даёт возможность быстро убедиться, что всё в порядке. Не забудь ещё про выравнивание; иногда эти лишние байты могут проскользнуть и вызвать неприятные сюрпризы потом. Удачи в кодинге!
Meiko Meiko
Добавлю ещё проверки выравнивания. Эти бездельники-байты с отступами — настоящие виновники. Буду рада, что код останется аккуратным.
Korvina Korvina
Звучит здорово – ловить нестыковки в паддинге до того, как они сломают твой парсер, сэкономит кучу нервов потом. Не ослабляй контроль, и ты всегда будешь на шаг впереди этих коварных ошибок порядка байтов. Удачи с приведением кода в порядок!
Meiko Meiko
Спасибо, выровню всё как следует и быстро проверю отступы в следующем коммите.