УДК 004.056:378(06) Проблемы информационной безопасности в системе высшей школы О.И. РЫСЬКОВ Научный руководитель – А.А. МАТРОСОВ, аспирант Московский инженерно-физический институт (государственный университет) НОВЫЕ ПОДХОДЫ К ЗАПУТЫВАНИЮ ОБЪЕКТНО-ОРИЕНТИРОВАННОГО КОДА Целью данной работы является создание нового подхода к запутыванию объектного кода высокоуровневых языков программирования. В данной работе предлагается новый подход для запутывания объектно-ориентированного кода – структурные преобразования, производимые над экземплярами классов и иерархией объектов, представленные в промежуточной форме. Такой подход позволяет создать единый движок запутывания данных для всех языков объектноориентированного программирования. На сегодняшний день огромную популярность получили объектноориентированные языки программирования, которые обеспечивают независимость кода от аппаратного и программного обеспечения путем компиляции в промежуточный код. Недостатком промежуточного кода является невозможность применить методов защиты, применяемые к обычному native-коду, а также его уязвимость к декомпиляции. Для того, чтобы противостоять проблеме декомпиляции необходимо применять специальные инструментальные средства – обфускаторы, которые проводят запутывающие преобразования над различными объектами программы. В работе [1] производится классификация таких запутывающих преобразований по видам объектов, к которым эти преобразования применяются: Лексические преобразования Преобразования над данными Преобразования над графом потока управления Лексические преобразования включают в себя замену имен идентификаторов (имен переменных, массивов, структур, хешей, функций, процедур и т.д.), на произвольные длинные наборы символов, которые трудно воспринимать человеку, используя специальную технику перегрузки таких идентификаторов. К преобразованиям данных относится изменение интерпретации данных определенного типа; изменение срока использования хранилищ данных, например переход от локального их использования к глобальному и наоборот; разделение переменных; реструктурирование массивов; изменение структуры классов и иерархий наследования классов, осуществляеISBN 978-5-7262-0886-2. XV Всероссийская научная конференция 153 УДК 004.056:378(06) Проблемы информационной безопасности в системе высшей школы мая путем усложнения иерархии наследования при помощи создания дополнительных классов или использования ложного разделения классов. К преобразованиям графа потока управления добавления недостижимого кода; устранение библиотечных вызовов; добавление избыточных операций (мертвого кода) в те участки программного кода, которые наиболее трудные для изучения и т.п. Большинство коммерческих обфускаторов не учитывают объектную направленность промежуточного кода и проводят лишь более или менее эффективные лексические преобразования, преобразования графа потока управления; но в тоже время преобразования над данными представлены лишь шифрованием строк. При этом хочется заметить, что главными данными в объектно-ориентированной среде являются объекты и именно они должны являться приоритетным направлением запутывающих преобразований. При разработке концептуально обобщенной методологии запутывающих преобразований на уровне объектно-ориентированной парадигмы разработки программного обеспечения, можно говорить о введении обобщенных запутывающих концепций для объектной модели в целом. Такой уровень абстракции запутывающих преобразований позволит нам абстрагировать генерацию запутанных алгоритмов от какого-либо конкретного языка. Дальше при совершенствовании этих концепций, можно говорить о построении кросс-языкового обфускатора, который будет работать с любой программой, которая использует объектно-ориентированную модель, стандартизированную в рамках обфускатора. В данной работе предпринята попытка создания общих для всех языков объектно-ориентированного программирования методов запутывания кода. При этом все программы, написанные на различных объектноориентированных языках программирования переводятся в общую универсальную объектную модель, и запутывающие преобразования производятся над этой моделью. При этом большое внимание уделяется эффективностью и разнообразию запутывающих преобразований, проводимых над классами и иерархией классов. Задачами ближайшего времени являются интеграция с другим видом запутывающих преобразований – преобразований над графом потока управления и создание эффективной комплексной системы запутывающих преобразований. ISBN 978-5-7262-0886-2. XV Всероссийская научная конференция 154 УДК 004.056:378(06) Проблемы информационной безопасности в системе высшей школы Список литературы 1. Christian Collberg, Clark Thomborson, Douglas Low “A Taxonomy of Obfuscating Transformations” http://www.cs.arizona.edu/~collberg/Research/Publications/CollbergThomborsonLow97a/index.ht ml 2. Гради Буч “Объектно-ориентированный анализ и проектирование примерами приложений на С++”, второе издание http://vmk.ugatu.ac.ru/book/buch/index.htm 3. Tim Lindholm, Frank Yellin "The Java Virtual Machine Specification, Second Edition" http://java.sun.com/docs/books/jvms/ 4. Standard ECMA-335 Common Language Infrastructure (CLI) 4th edition (June 2006) http://www.ecma-international.org/publications/standards/Ecma-335.htm 5. Gregory Wroblewski "General method of program code obfuscation" Wroclaw 2002 http://citeseer.ist.psu.edu/541708.html 6. Чернов А.В. "Анализ запутывающих преобразований программ" Труды института системного программирования http://www.citforum.ru/security/articles/analysis/ ISBN 978-5-7262-0886-2. XV Всероссийская научная конференция 155