Научная статья на тему 'РАЗРАБОТКА И ИССЛЕДОВАНИЕ МЕТОДОВ ПОВЫШЕНИЯ БЕЗОПАСНОСТИ РАБОТЫ JAVA-ПРИЛОЖЕНИЙ'

РАЗРАБОТКА И ИССЛЕДОВАНИЕ МЕТОДОВ ПОВЫШЕНИЯ БЕЗОПАСНОСТИ РАБОТЫ JAVA-ПРИЛОЖЕНИЙ Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
59
14
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
ШИФРОВАНИЕ / ДЕКОМПИЛЯЦИЯ / РЕВЕРС-ИНЖИНИРИНГ / СИСТЕМЫ СБОРКИ

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Часов Е. А., Марина М. А., Касаткин Т. В.

В данной статье рассматриваются недостатки запуска и работы приложений на Java, упакованных в архив JAR. Описывается проблема легкой декомпиляции и реверс-инжиниринга в т. ч. с целью совершения злонамеренных действий и внедрения вредоносного кода. Предлагается решение проблемы путем шифрования архива и упаковки его во внешний JAR.

i Надоели баннеры? Вы всегда можете отключить рекламу.

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Часов Е. А., Марина М. А., Касаткин Т. В.

iНе можете найти то, что вам нужно? Попробуйте сервис подбора литературы.
i Надоели баннеры? Вы всегда можете отключить рекламу.

RESEARCH AND DEVELOPMENT IMPROVEMENT SECURITY JAVA APPLICATIONS WORK METHODS

In this article, consider disadvantages of starting and working Java applications packed into the JAR archive. Describes the problem of easy decompilation and reverse engineering for the purpose of committing malicious acts and introduction of malicious code. Propose a solution to the problem by encrypting the archive and packing it into external JAR.

Текст научной работы на тему «РАЗРАБОТКА И ИССЛЕДОВАНИЕ МЕТОДОВ ПОВЫШЕНИЯ БЕЗОПАСНОСТИ РАБОТЫ JAVA-ПРИЛОЖЕНИЙ»

какая из них лучшая, поэтому СУБД следует подбирать, исходя из требований конкретного проекта, а не руководствуясь абстрактными показателями производительности и эффективности. Выводом данной статьи является понимание, что базы данных являются неотъемлемой частью современного информационного мира, они лежат в основе работы многих современных организации и будут применяться еще более обширно.

Использованные источники:

1. Бедняк С.Г., Тихонова А.А. ВИРТУАЛИЗАЦИЯ В ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЯХ Научные труды SWorld. - 2014. -Т. 5. № 1. - С. 27-29.

2. Кириллов В.В., Громов Г.Ю. Введение в реляционные базы данных. -Издательство: БХВ-Петербург, 2009

3. Елманова Н. Системы управления базами данных ведущих производителей [Электронный ресурс] // КомпьютерПресс. - 2005. - №7. -URL: http://compress.ru/article.aspx?id=11399 (Дата обращения: 20.08.2017)

4. Персональные и профессиональные СУБД. Сравнительные характеристики СУБД [Электронный ресурс]. - URL: http://shpora.net/index.cgi?act=view&id=30970. (Дата обращения: 22.08.2017)

5. DB-Engines Ranking - Trend Popularity [Электронный ресурс] // DBengines. - 2017. - URL: https://db-engines.com/en/ranking trend. (Дата обращения: 17.08.2017)

УДК 004

Часов Е. А. старший преподаватель кафедра информатики и вычислительной техники

Марина М. А. старший преподаватель кафедра информатики и вычислительной техники

Касаткин Т. В. студент гр. ИСТ-51 ФГБОУ ВО ПГУТИ Россия, г. Самара РАЗРАБОТКА И ИССЛЕДОВАНИЕ МЕТОДОВ ПОВЫШЕНИЯ БЕЗОПАСНОСТИ РАБОТЫ JAVA-ПРИЛОЖЕНИЙ Аннотация: В данной статье рассматриваются недостатки запуска и работы приложений на Java, упакованных в архив JAR. Описывается проблема легкой декомпиляции и реверс-инжиниринга в т. ч. с целью совершения злонамеренных действий и внедрения вредоносного кода. Предлагается решение проблемы путем шифрования архива и упаковки его во внешний JAR.

Ключевые слова: Java, jar, шифрование, декомпиляция, реверс-инжиниринг, системы сборки.

Chasov E. A.

Lecturer of Department of Informatics and Computer Engineering Povolzhskiy State University of Telecommunications and Informatics

Russia, Samara Marina M. A.

Lecturer of Department of Informatics and Computer Engineering Povolzhskiy State University of Telecommunications and Informatics

Russia, Samara Kasatkin T. V.

Student

Povolzhskiy State University of Telecommunications and Informatics

Russia, Samara

RESEARCH AND DEVELOPMENT IMPROVEMENT SECURITY JAVA APPLICATIONS WORK METHODS

Annotation: In this article, consider disadvantages of starting and working Java applications packed into the JAR archive. Describes the problem of easy decompilation and reverse engineering for the purpose of committing malicious acts and introduction of malicious code. Propose a solution to the problem by encrypting the archive and packing it into external JAR.

Keywords: Java, JAR, encryption, decompilation, reverse engineering, build automation tools.

Известно, что JAR-файл — это Java-архив (сокращение от англ. Java ARchive). Он представляет собой ZIP-архив, в котором содержится часть программы на языке Java. Чтобы JAR-файл был исполняемым, он должен содержать файл MANIFEST.MF в каталоге META-INF, в котором должен быть указан главный класс программы (такой класс должен содержать метод main(Strmg[] args) и задаётся параметром Main-Class).

JAR хранит скомпилированные классы на языке Java - файлы с расширением .class. Содержимое файлов представляет собой байт-код, который при запуске JAR передается на исполнение виртуальной машине Java. Байт-код по виду напоминает привычный ассемблер, который сложно прочесть разработчику и понять, какую логику код реализует.

Однако современные инструменты разработчика позволяют легко, едва ли не в один клик, декомпилировать байт-код в читаемый человеком код на языке Java и понять, какая бизнес-логика исполняется приложением. Например, среда разработка Intellij IDEA имеет подобный функционал: по клику на скомпилированном классе среда выполняет декомпиляцию и открывает исходный код в редакторе. Подобные приемы могут использоваться как для отладки, так и позволяют злоумышленнику провести

некоторые злонамеренные действия. Это является проблемой в безопасности исполнения и хранения JAR, усугубляемой тем, что при работе с Java-приложениями без их соответствующей обработки и мер по повышению безопасности сильно упрощается реверс-инжиниринг.

При этом проблему реверс-инжиниринга решает механизм обфускации - искусственного запутывания и изменения кода с целью сделать его нечитаемым для человека. Обфускация проводится при помощи специальных алгоритмов, которые имеют разную степень эффективности, но, в целом, справляются со своей задачей. Однако обфускация не защищает от внедрения вредоносного кода.

Одним из вариантов решения проблемы может послужить шифрование JAR при помощи известных алгоритмов шифрования с их последующей дешифровкой на этапе «предзагрузки» и исполнения. Кратко алгоритм можно описать следующим образом: разработанное приложение, уже упакованное в JAR, шифруется при помощи произвольного или специально разработанного алгоритма и с помощью системы сборки (например, Maven) пакуется внутрь внешнего JAR, код которого занимается дешифровкой целевого приложения, также упакованного в JAR и при помощи стандартных средств виртуальной машины или рефлексии запускает дешифрованное приложение на исполнение. Структурная схема такого подхода и, соответственно, приложения, приведена на рисунке 1.

Целевое приложение стандартными средствами компилируется и упаковывается в архив. Далее в случае использования фреймворков и/или систем автоматической сборки и управления приложениями управление передается им и при помощи специально указанных параметров в конфигурации проекта приложение упаковывается во внешний JAR. Для того, чтобы можно было использовать приложение внутри JAR, нужно указать путь к нему через специальный параметр classpath.

Запускаемый JAR

Целевой JAR

Рисунок 1. Структурная схема измененного JAR Подобный алгоритм действий позволяет сокрыть реализацию кода, который нужно защитить, а тот код, который хранится во «внешнем» JAR, не нуждается в подобных средствах защиты: его логика может сводиться к следующему алгоритму: создать виртуальную файловую систему, загрузить в нее внутренний целевой JAR, расшифровать его, запустить его на исполнение. В качестве дополнительной меры защиты приложения

исходный код как внешнего, так и целевого приложения можно обработать алгоритмами обфускации. Таким образом, защита работы Java-приложения теоретически повысится настолько, что узнать алгоритм его работы и/или внедрить вредоносный код, потребуется искать уязвимости в работы JVM -виртуальной машины Java.

Недостатком такого метода может оказаться дополнительное усилие по хранению ключей шифрования: в том или ином виде его нужно передать приложению для расшифровки защищенного архива. Также в случае применения виртуальной файловой системы на ее создание, работу с ней потребуются дополнительные вычислительные ресурсы. Это может быть некритичным, если требования безопасности по приоритету находятся выше, чем ресурсы системы.

Разумеется, чтобы оценить достоверность предположений, описанных выше, требуется проводить тестирование работы подобного алгоритмах на различных наборах приложений, анализ работы виртуальной машины, потребления ресурсов и целесообразности применения подобного подхода.

Использованные источники:

1. Эккель, Б. Философия Java. Библиотека программиста [Текст]/Б. Эккель -4-е изд. - СПб.: Питер, 2009. - 640 с.

2. Шилдт, Г. Java. Полное руководство [Текст]/Г. Шилдт - 8-е изд.: пер. с англ. - М.: ООО «И.Д. Вильямс», 2012. - 1104 с.

3. Спецификация языка Java [Электронный ресурс]/2017.- Режим доступа: http://java.sun.com/docs/books/jls, свободный. - Загл. с экрана

4. Спецификация виртуальной машины Java [Электронный ресурс]/2017-Режим доступа: http://java.sun.com/docs/books/jvms/, свободный. - Загл. с экрана

1. Eckel, B. Thinking in Java [Text]/B. Eckel - 4-d ed. - MindView Inc, 2009. -640 p.

2. Schildt, H. Java: The Complete Reference [Text]/H. Schildt - 9-th ed.:. -Osborn, Inc 2012. - 1104 p.

3. Javadoc [URL]/2017.- URL: http://java.sun.com/docs/books/jls

4. JVM Specification [URL]/2017- URL: http://java.sun.com/docs/books /jvms/

i Надоели баннеры? Вы всегда можете отключить рекламу.