В Google Chrome используется система, которая автоматически генерирует оптимизированный криптографический код. Подробности были раскрыты исследователями Массачусетского технологического института на недавнем симпозиуме IEEE по безопасности и конфиденциальности.
Криптография используется для обеспечения безопасности связи между браузером и просматриваемым веб-сайтом. До недавнего времени математические алгоритмы, используемые для выполнения криптографии, писались и переписывались вручную.
Исследователи из Лаборатории компьютерных наук и искусственного интеллекта (CSAIL) разработали «Fiat Cryptography», систему, которая автоматически генерирует и одновременно проверяет оптимизированные криптографические алгоритмы для всех аппаратных платформ. Созданный код соответствует производительности лучшего рукописного кода, но намного быстрее.
Их исследователи изучили существующие реализации рукописных алгоритмов ECC на C и языках ассемблера и перенесли эти методы в свою библиотеку кода. Это сгенерировало список наиболее эффективных алгоритмов для каждой архитектуры. Затем в проекте использовался компилятор, который был математически проверен с помощью инструмента проверки под названием Coq. После проверки курица-библиотека имитирует каждый алгоритм и выбирает наиболее эффективный для каждой архитектуры микросхемы.
Оптимизируемые криптографические алгоритмы представляют собой криптографию на основе эллиптических кривых (ECC). Они генерируют ключи различного размера путем случайного выбора числовых точек вдоль пронумерованной изогнутой линии на графике. Поскольку микросхемы обработки не могут хранить такие большие числа в одном месте, они кратко разбиваются на более мелкие цифры, которые сохраняются в регистрах. Способ выполнения разделения имеет различные последствия для производительности и настолько сложен, что разработчики, пишущие алгоритмы ECC, вручную реализуют решения о разделении битов в своем коде. В своей работе исследователи Массачусетского технологического института использовали эти человеческие решения для автоматического создания библиотеки оптимизированных алгоритмов ECC для любого оборудования.
Исследователи оснастили свой компилятор на основе Coq функцией частичной оптимизации вычислений для предварительного вычисления всех методов разделения битов. При сопоставлении их с заданной архитектурой микросхемы он может немедленно отбросить все алгоритмы, которые не будут работать для этой архитектуры, тем самым сокращая время, необходимое для поиска в библиотеке.
Исходя из этого, исследователи собрали библиотеку лучших способов разделения алгоритмов ECC для разных архитектур микросхем.
Автоматически сгенерированный код используется в Google BoringSSL, криптографической библиотеке с открытым исходным кодом, являющейся ответвлением OpenSSL. Google Chrome, приложения для Android и другие программы используют BoringSSL для генерации ключей и сертификатов, используемых для шифрования и дешифрования данных. По данным исследователей, около 90 процентов защищенных коммуникаций Chrome в настоящее время используют их код.
Следующая цель — найти способы сделать компилятор еще быстрее при поиске оптимизированных алгоритмов.