Хакер #305. Многошаговые SQL-инъекции
Превратить исходный код программы в некое подобие математической задачи — возможно, хороший способ спрятать исходники от посторонних глаз. Консорциум из нескольких университетов, работающих над этой идеей, недавно получил правительственный грант $5 млн на дальнейшие исследования.
Исследователи из Center for Encrypted Functionalities работают над методами математической обфускации кода. В некоторых приложениях это действительно помогает улучшить безопасность системы, поскольку в случае очевидных багов у злоумышленника теперь нет возможности посмотреть исходники и сразу же эксплуатировать найденные уязвимости. Кроме того, надёжная защита кода нужна в тех случаях, если код содержит важные торговые секреты фирмы. Это могут быть алгоритмы, над созданием которых авторы работали десятилетиями и не хотят ни с кем делиться, такие как алгоритмы в системе рекомендаций Amazon.
Обфускатор добавляет дополнительный этап на этапе компиляции кода. Вместо обычной компиляции здесь происходит обработка обфусцирующим компилятором, а для выполнения программы требуется пропустить результат через программу-верификатор, написанную на ассемблере, которая складывает кусочки «паззла» воедино.
Таким образом, если посторонний изменил фрагменты программы, то она не пройдёт проверку и не будет запущена на исполнение.
По мнению независимых экспертов, работа специалистов из Center for Encrypted Functionalities пока не готова для практического использования. Но это доказательство того, что идея имеет право на жизнь, пусть и не для всех видов программных приложений.
Криптографы давно обсуждали идею идеальной обфускации в «чёрном ящике», а в 2001 году вышла научная работа, которая доказывает невозможность такого шифрования без получения информации (ключа шифрования) извне. Тем не менее, работа оставила теоретическую возможность создания «неидеальной обфускации», когда расшифровка обфусцированного кода потребует слишком большого количества ресурсов у взломщика. Исследования в этой области продолжаются.