Trail of Bits представила SequenceHash для безопасного мультитешинга
SequenceHash и SequenceMAC обеспечивают безопасный мультитешинг
Trail of Bits представила SequenceHash и SequenceMAC — криптографические конструкции для безопасного мультитешинга. Они позволяют разработчикам использовать хеш-функции, отличные от Keccak, избегая атак, связанных с неоднозначным кодированием входных данных. Спецификация SequenceHash и SequenceMAC является открытой и вошла в Community Cryptography Specification Project (C2SP).
SequenceHash работает с любыми хеш-функциями, кроме Keccak
SequenceHash и SequenceMAC совместимы с большинством криптографических хеш-функций, включая SHA256/384/512, BLAKE и RIPEMD. Они не требуют сложной байтовой выравнизации, в отличие от NIST TupleHash, который привязан к Keccak. SequenceMAC поддерживает ключи длиной от 32 байт до ${2}^{128}-1$ байт. Безопасность SequenceHash и SequenceMAC зависит от безопасности используемой базовой хеш-функции. Реализации SequenceHash и SequenceMAC доступны на Rust, Go и Python. Проект также включает набор тестовых векторов для проверки корректности реализаций.
Мультитешинг предотвращает атаки на основе конкатенации данных
Мультитешинг — это процесс хеширования нескольких значений вместе. Простая конкатенация входных данных перед хешированием может привести к серьёзным уязвимостям. Например, при хешировании b'Test 0', b'Test 1' и b'Test 2' с помощью SHA256, различные способы разделения или объединения этих данных могут привести к одинаковому хешу. Это создаёт риски в таких областях, как доказательства с нулевым разглашением (zero-knowledge proofs), где ошибки могут стоить миллионы долларов. Мультитешинг также используется при создании криптографических обязательств (commitments) и аутентификации коллекций данных, например, файлов в архиве или транзакций в криптовалюте. Отсутствие стандартизированного решения приводило к появлению небезопасных или излишне сложных реализаций в экосистеме.
SequenceHash защищает от атак на расширение длины и повторное использование значений
SequenceHash обеспечивает однозначное кодирование входных данных, гарантируя, что каждая последовательность входных данных будет иметь уникальное представление для базовой хеш-функции. Это предотвращает атаки, при которых злоумышленник может манипулировать началом или концом входных данных. Конструкция SequenceHash использует двойное хеширование, что делает её устойчивой к атакам на расширение длины, которым подвержены такие функции, как SHA256 и SHA512. SequenceHash также поддерживает строки кастомизации, которые позволяют привязывать хеши к конкретным шагам или экземплярам протокола, предотвращая атаки повторного использования. Встроенная поддержка строк кастомизации упрощает их использование и позволяет повторно использовать внутреннее хеширование при применении разных строк кастомизации. Режим SequenceMAC, являющийся аналогом HMAC, также предлагает защиту от псевдоколлизий ключей, присущих HMAC, за счёт включения метаданных о ключе и строках кастомизации.
Источник: Trail of Bits