Wired: Достигнут новый уровень возможностей обфускации программ
На Wired вышла большая статья с описанием новых достижений учёных, разработавших новый метод обфускации кода, который подаёт весьма большие надежды для специалистов в области информационной безопасности.
Обфускация или запутывание кода – приведение исходного текста или исполняемого кода программы к виду, сохраняющему её функциональность, но затрудняющему анализ, понимание алгоритмов работы и модификацию при декомпиляции.
В течение многих лет мастер-инструмент под названием обфускация кода казался слишком хорошим, чтобы быть правдой. В течение десятилетий ученые задавались вопросом, существует ли какой-либо безопасный, всеобъемлющий способ запутать компьютерные программы, позволяя людям использовать их, не получая информации, исходного кода программы и иных их внутренних секретов.
Обфускация программы позволит использовать множество полезных приложений: например, вы можете использовать обфускированную программу для делегирования определенных задач стороннему человеку в вашей электронной почте или банке-клиенте другим лицам, не беспокоясь о том, что кто-то может использовать программу таким образом, для которого она не предназначена, или считать ваши учетные данные. Однако, до сих пор все попытки построить практические обфускаторы терпели неудачу.
Те, которые вышли в реальной жизни, взломаны со смехотворной легкостью… обычно в течение нескольких часов после выпуска.
Сахаий, один из ученых-иб исследователей, разработавших новый метод
В 2001 появились плохие новости ещё на стадии теории: самая сильная форма обфускации оказалась невозможной. Так называемая обфускация чёрного ящика требует, чтобы злоумышленники не могли узнать абсолютно ничего о программе, кроме того, что они могут наблюдать, используя программу и видя, что она выводит.
В 2013 году Сахай (представитель Калифорнийского Университета (США)) и пять соавторов предложили протокол ввода-вывода, который разбивает программу на что-то вроде кусочков пазла, который использует криптографические объекты, называемые полилинейными картами, чтобы исказить отдельные кусочки. Если части сложены правильно, искажение отменяется, и программа функционирует так, как задумано, но каждая отдельная часть выглядит бессмысленной. Этот результат был воспринят как прорыв и вызвал появление десятков последующих статей. Но в течение нескольких лет другие исследователи показали, что полилинейные карты, используемые в процессе искажения, не были безопасными.
Другой же профессор-исследователь задался вопросом в 2016 году, есть ли способ построить метод обфускации с использованием машин, которые не должны вычислять так много различных видов полиномов. В итоге выяснилось, что да, возможно построить полилинейные карты, которые вычисляют полиномы, “степень” которых равна 30 или меньше (это означает, что каждый член является произведением не более 30 переменных, считая повторы). В течение следующих нескольких лет она, Сахаий и другие исследователи постепенно выяснили, как сделать аналогичные процедуры понизив степень до 3, что значительно облегчало процесс.
Однако, как бы хорошо инновационный метод не выглядел «на бумаге» практическая его реализация с легкостью взламывалась «белыми хакерами».
Итак, методы с большими степенями были небезопасны и легко взламывались, а метод со степенью 2 невозможно было применить для практической обфускации. Как обычно истина крылась посередине и исследователи представили метод со степенью вида «так скажем» 2.5.
Но чтобы получить от этих менее мощных мультилинейных карт iO, группе учёных для успеха нужен был последний недостающий элемент: новый вид генератора псевдослучайностей для расширения строки случайных битов в более длинную последовательность, которая все ещё выглядит достаточно случайной, чтобы обмануть компьютеры. Именно это исследователи реализовали своей новой статье. Данная схема может быть уязвима при компроментации с использованием квантового компьютера, однако, стоит напомнить, что он ещё не реализован на практике.