Внедрение поддержки LLVM для к... Заметка
RSS Блог "След бит"

Внедрение поддержки LLVM для константного времени для защиты криптографического кода

Trail of Bits внедрила поддержку кода с постоянным временем выполнения в LLVM, стремясь защитить криптографические реализации от атак по времени. Эта новая функция, ожидаемая в LLVM 22, включает встроенную функцию `__builtin_ct_select` и поддерживающую инфраструктуру. Компиляторы, использующие это, будут предотвращать оптимизации кода, которые непреднамеренно создают уязвимости. Современные компиляторы оптимизируют для скорости, но могут нарушать свойства постоянного времени выполнения, критически важные для криптографии. Простая функция поиска, например, может быть оптимизирована с включением ветвлений, создавая побочные каналы времени выполнения, которые могут быть использованы злоумышленниками. Встроенная функция `__builtin_ct_select` гарантирует, что условные выборы остаются с постоянным временем выполнения независимо от уровней оптимизации. Это действует как барьер, сохраняя критически важные для безопасности операции от преобразований. Исследования показали, что существующие компиляторы вносят уязвимости в производственные криптографические библиотеки. Новая встроенная функция позволяет разработчикам писать более безопасный код с постоянным временем выполнения, что демонстрируется на примере пересмотренной функции поиска. Эта работа основана на предыдущих усилиях и вызвала большой интерес со стороны сообществ, таких как Rust Crypto и BearSSL. Реализация обеспечивает поведение с постоянным временем выполнения на различных архитектурах, таких как x86-64, i386 и ARM. Первоначальное тестирование показывает минимальные накладные расходы на производительность и полное сохранение свойств постоянного времени выполнения. Будущие планы включают расширение поддержки на арифметические и строковые операции, а также обеспечение внедрения в другие языки, ориентированные на LLVM.