На недавнем Симпозиуме IEEE по основам компьютерной науки специалисты Массачусетского технологического института представили доклад, в котором они показывают, что задача неотличимой обфускации (indistinguishability obfuscation, IO), прежде считавшаяся самостоятельной, является вариантом задачи функционального шифрования, способов решения которой на сегодня гораздо больше.
Идея IO была предложена несколько лет назад как более слабый вариант универсального обфускатора, превращающего код в «черный ящик»: из текста пропущенной через такой обфускатор программы выяснить о ней нельзя абсолютно ничего. К IO требования менее строгие: если обработать им две разные программы, решающие одну и ту же задачу, то по результатам невозможно установить, какой из них относится к каждой из версий исходного кода. Доказано, что IO это и есть лучший из возможных обфускаторов: допустим, существует более совершенный обфускатор; если пропущенную через него программу обработать с помощью IO вместе с оригинальной, то нельзя будет определить, какой из двух результатов получен из оригинала, а значит, IO как минимум не хуже скрыл ее секреты, чем «совершенный» обфускатор.
С помощью IO можно реализовать любую из существующих криптографических схем, объясняют ученые: например, схему шифрования с открытым ключом можно воспроизвести, если написать программу, реализующую какой-либо криптографический алгоритм, запутать ее с помощью обфускации и распространять в свободном доступе — кто угодно сможет зашифровать с ее помощью данные, а возможность расшифровки будет только у автора. Можно также создавать и новые схемы шифрования.
Лишь немногие исследователи занимались разработкой схем IO, и они в основном строились на сложных малоосвоенных математических концепциях, в частности, на полилинейных отображениях. Одна из таких схем, предложенная несколько лет назад, простейшую программу раздувала до огромных размеров. Хотя ряд попыток взломать ее провалился, сами авторы вероятность взлома не исключают.
В свою очередь исследования в области функционального шифрования ведутся в последние годы очень активно, порождая методы, с помощью которых можно выполнять операции над зашифрованными данными без их раскодирования. КПД таких методов растет, и то, что один из наиболее эффективных эквивалентен неразличимой обфускации, как раз и показали в МТИ.