Дипломная работа на тему "Алгоритмы упаковки и шифрования исполняемого кода | Синергия [ID 50172]"

Эта работа представлена в следующих категориях:

Работа на тему: Алгоритмы упаковки и шифрования исполняемого кода
Оценка: отлично.
Оригинальность работы на момент публикации 50+% на антиплагиат.ру.
Ниже прилагаю все данные для покупки.
https://studentu24.ru/list/suppliers/Anastasiya1---1326

Демо работы

Описание работы

НЕГОСУДАРСТВЕННОЕ ОБРАЗОВАТЕЛЬНОЕ ЧАСТНОЕ УЧРЕЖДЕНИЕ ВЫСШЕГО ОБРАЗОВАНИЯ
«МОСКОВСКИЙ ФИНАНСОВО-ПРОМЫШЛЕННЫЙ УНИВЕРСИТЕТ «СИНЕРГИЯ»
Факультет онлайн обучения

Направление подготовки: Информатика и вычислительная техника Магистерская программа: Безопасность информационных систем

ВЫПУСКНАЯ КВАЛИФИКАЦИОННАЯ РАБОТА
АЛГОРИТМЫ УПАКОВКИ И ШИФРОВАНИЯ ИСПОЛНЯЕМОГО КОДА

Москва 2018 г.

Оглавление
ВВЕДЕНИЕ 4
ГЛАВА 1. ИСПОЛЬЗОВАНИЕ АЛГОРИТМОВ УПАКОВКИ И ШИФРОВАНИЯ ИСПОЛНЯЕМОГО КОДА 9
1.1. Актуальность темы 9
1.1.1. Алгоритмы упаковки 10
1.1.2. Алгоритмы шифрования 11
1.2. Основные цели использования алгоритмов упаковки и шифрования на разных платформах 12
1.2.1. Мобильные устройства 12
1.2.2. Веб-разработка 15
1.2.3. Прикладное ПО 17
1.2.4. Системное ПО 22
1.3. Распаковка кода 24
1.3.1. Практические аспекты 24
1.3.2. Reverse engineering 24
1.3.3. Декомпиляторы 26
1.3.4. Дизассемблеры 26
1.3.5. Взлом ПО 27
ГЛАВА 2. ОБЗОР МЕТОДОЛОГИЙ 31
2.1. Методы упаковки 31
2.1.1. Алгоритмы сжатия 31
2.1.2. Компрессоры 36
2.1.3. Архиваторы 38
2.2. Методы шифрования 41
2.2.1. Шифрование 43
2.2.2. Мутация кода 50
2.2.3. Обфускация 53
2.2.4. Самомодифицирующийся код 56
2.3. «Ненормальное» программирование 57
ГЛАВА 3. РАЗРАБОТКА ПО ДЛЯ ШИФРОВАНИЯ И УПАКОВКИ ИСХОДНОГО КОДА 61
3.1. Выбор инструментов 61
3.2. Практическая реализация 67
3.2.1. Структура ПО 67
3.2.2. Особенности реализации 69
3.3. Тестирование ПО 72
ЗАКЛЮЧЕНИЕ 78
СПИСОК ИСТОЧНИКОВ 81

ВВЕДЕНИЕ
В современном мире упаковка и шифрование исполняемого кода находятся в стагнации относительно других технологий в IT-индустрии, несмотря на то что эти два аспекта являются крайне важными и актуальными.
Кажется, что современные скорости процессоров и пропускные способности каналов с легкостью нивелируют большой размер исходного кода, но это не так: пользователи не хотят ждать, пока загрузится большой веб-сайт, хотят, чтобы на устройстве после установки нужных приложений оставалось место для фотографий, хотят, чтобы данные были в безопасности.
IT-компании хотят, чтобы у них было больше пользователей (которые будут уходить, если продукт будет медленно работать) и чтобы конкуренты не могли украсть важные для проекта и технически сложные решения. Однако балансировать на грани удобства использования и сохранением коммерчески важных реализаций сейчас не позволяет почти ни одно программное обеспечение. Безопасность приложений относится к первым десяти трендам и угрозам информационной безопасности уже много лет. Современные бизнес-процессы все больше зависят от различных приложений, будь это приложения для управления конвейерами на производстве, внутренние корпоративные инструменты, устройства Internet-of- Things (IoT) или другие. Однако специализированных средств защиты приложений практически нет, обычно эта ответственность возложена на разработчиков продукта, которые пользуются различными мониторингами, фреймворками, средствами очистки и нормализации данных и многими другими инструментами.
Наконец, упаковка исходного кода актуальна и на скрытой от бизнеса и конечных пользователей стороне: разработчики хотят, чтобы среда разработки разворачивалась парой команд, а системные администраторы - чтобы сервисы обновлялись не десятком строк в консоли, а одной-двумя.
Актуальность темы исследования обусловлена вступлением мировой экономики в эпоху цифровых перемен. И хотя традиционно от IT считаются зависимыми телекоммуникационные компании и компании, связанные с банковской сферой, в ближайшие годы эта тенденция станет определяющим факторов развития подавляющего большинства организаций. Предприятия будут активно наращивать свои информационные активы, чтобы устанавливать новые рекорды операционной эффективности, использовать самые современные возможности по привлечению клиентов и выходу на рынки и создавать продукты и услуги, в которых ИТ- составляющая будет если не главным, то одним из центральных факторов успеха. В этих условиях защита информационных активов становится одним из ключевых направлений цифровой трансформации. [1]
Среди важнейших информационных активов – приложения, которые лежат в основе предоставления бизнесу и внешним клиентам большинства современных сервисов для предоставления. Часто процесс ввода в эксплуатацию новой программной систем сопровождается серьезным риском для информационной безопасности. Это могут быть как уязвимости, вызванные невнимательностью разработчиков (забытые в исходном коде ключи, комментарии относительно внутреннего устройства продукта и т.д.), так и более серьезные: неправильное программирование, проектирование или использование инструментов, которые больше не поддерживаются, с известными и описанными не раз уязвимостями может привести к появлению серьезнейших пробелов в безопасности системы, которыми могут воспользоваться злоумышленники.
Наибольший интерес в выстраивании процесса создания безопасного программного обеспечения высказывают компании, которые создают системы, связанные с различного рода биллингом, банковской сферой, предоставлением ежедневно используемых миллионами людей сервисов (почта, мессенджеры), а также телекоммуникациями (сотовые операторы, агрегаторы и т.п.).
Научная новизна работы заключаются в том, что на сегодняшний день не существует универсального программного обеспечения для упаковки и шифрования исполняемого кода. Существуют отдельные решения для упаковки, отдельные решения для шифрования, однако комплексно эти возможности не предоставляет ни один инструмент.
Шифрование – это разновидность криптографического преобразования открытой информации на основе алгоритма и ключа, в результате которого возникает шифрованный текст, нечитаемый для неавторизованных лиц. Авторизованные лица при этом могут провести обратную процедуру (дешифрование) и прочитать исходную информацию. Следует отличать шифрование от кодирования: кодирование тоже преобразует данные, но лишь с целью удобства и оптимизации из передачи или хранения, секретность не является для кодирования приоритетом.
Цель исследования заключается в создании программного обеспечения, сочетающего в себе функции упаковщика и шифровальщика. Особенностью данного программного обеспечения является нацеленность на исходный код: в упакованном и зашифрованном виде он должен работать так же корректно, как и в исходном.
Задачами исследования являются:
• изучение рынка упаковщиков и шифровальщиков исходного кода
• изучение профильной литературы
• анализ и классификация методологий упаковки и шифрования исходного кода
• создание программного обеспечения для упаковки и шифрования исходного кода
• тестирование созданного программного обеспечения
Практическая ценность исследования может быть сформулирована двумя тезисами:
• более безопасное распространение программного обеспечения с точки зрения коммерческой тайны
• более удобное распространение программного обеспечения с точки зрения объема распространяемой информации.
При подготовке работы использованы различные источники:
• зарубежная литература по криптографии, антивирусной защите, взлому, декомпиляции, обратной разработке и созданию безопасного программного обеспечения,
• отечественная справочная литература по алгоритмам архивации и сжатия, обратной разработке и дизассемблировании программного обеспечения,
• спецификации алгоритмов и встроенных инструментов семейства операционных систем *nix,
• официальные спецификации для разработчиков мобильных приложений и библиотек для *nix, статьи по оптимизации web-performance,
• документация языка Python 3.5.6 и его стандартных модулей, а также документации сопутствующих разработке программного обеспечения инструментов,
• статьи с сайта «Хабр», крупнейшего в Европе ресурса для IT- специалистов, издаваемого компанией «ТМ», и с сайта журнала «Мир ПК»,
• независимые сравнительные бенчмарки алгоритмов сжатия.
В связи с высокими темпами развития ИТ-индустрии значительная часть литературы не имеет перевода на русский язык, поэтому при подготовке были использованы оригинальные версии текста на английском языке.
В ходе работы над магистерской диссертацией был произведен анализ методологий упаковки и шифрования, подходящих для работы с исходным кодом. Было выявлено, что сфера действительно развивается слишком медленно относительно других в IT-индустрии – за последние 30 лет появилось всего лишь пара алгоритмов сжатия, получивших широкую популярность. Также было написано и протестировано программное обеспечение для упаковки и шифрования исходного кода на языке Python с использованием технологий токенизации, обфускации, и сжатия данных.

СПИСОК ИСТОЧНИКОВ
1. Медведев А. Защита цифровых активов — задача стратегическая // Мир ПК. Май 2016.
2. McMahon M. What Is a File Binder? [Электронный ресурс] // wiseGEEK: [сайт]. [2018]. U
3. Николаенко В. Обфускация программ // Habr. 2015.
4. Inside the Android Application Framework // Google I/O Session Videos and Slides. 2008.
5. Application Fundamentals [Электронный ресурс] // Google Developers: [сайт]. [2018].
6. Akulov I. webpack for real tasks: decreasing front-end size and improving caching // Ivan Akulov Blog. 2017.
7. Documentation [Электронный ресурс] // Webpack: [сайт].
8. Солдатенкова Е. Обзор современных инструментов для разработки и упаковки кода клиенткой части web-приложений, 2018.
9. Козуля В. Как унизить джаваскриптера: теория и практика. Москва: Вильямс, 2014.
10. Linux Standard Base (LSB) // Linux Foundation Wiki. 2017.
11. Chapter 13. Inside the Spec File [Электронный ресурс] // Maximum RPM: Taking the RPM Package Manager to the Limit: [сайт]. [2000].
12. Chikofsky E.J., Cross J.H. Reverse engineering and design recovery: A taxonomy // IEEE Software. 1990. Vol. 7. No. 13-17.
13. Ashby W.R. Chapter 6: THE BLACK BOX // In: Introduction to Cybernetics / Ed. by Ashby W.R. London: Chapman & Hall, 1956.
14. Юричев Д. Reverse Engineering для начинающих или Понимание языка ассемблера. 2018.
15. Пирогов В. Ассемблер и дизассемблирование. СПб: БХВ- Петербург, 2006.
16. Середа С.А. Этапы преодоления систем защиты программного обеспечения // Центр Информационных Технологий. 2005.
17. Голованов В. Алгоритмы сжатия данных без потерь // Habr. 2014.
18. Spinellis D. Reliable identification of bounded-length viruses is NP- complete // IEEE Transactions on Information Theory. 2003.
19. Raghunathan S. Protecting anti-virus software under viral attacks. 2007.
20. Mateas M., Montfort N. A Box, Darkly: Obfuscation, Weird Languages, and Code Aesthetics 2005.
21. Ortiz C.E. On Self-Modifying Code and the Space Shuttle OS // Order within Chaos: A hitchhiker guide to chaos within "order". 2007.
22. Яковлев В. Ненормальное функциональное программирование на
python // Habr. 2013.
23. Stroustrup B. The C++ Core Guidelines are a set of tried-and-true guidelines, rules, and best practices about coding in C++ // Standard C++.
24. Python 3.5.6 Documentation [Электронный ресурс] [2018].
25. The Hitchhiker’s Guide to Python [Электронный ресурс] [2018].
26. ANTLR 4 Documentation // Antlr Project GitHub. 2017.
27. Meurer. A. Brown Water Python: Better Docs for the Python tokenize Module 2018.
28. re — Regular expression operations [Электронный ресурс] [2018].
29. ast — Abstract Syntax Trees [Электронный ресурс] [2018].
30. tokenize — Tokenizer for Python source [Электронный ресурс] [2018].
31. zlib — Compression compatible with gzip [Электронный ресурс] [2018].
32. Collin L. A Quick Benchmark: Gzip vs. Bzip2 vs. LZMA // The Tukaani Project. 2005.
33. J. O. Compression Benchmarks: brotli, gzip, xz, bz2 [Электронный ресурс] // Open CPU: [сайт]. [2015].
34. Quick Benchmark: Gzip vs Bzip2 vs LZMA vs XZ vs LZ4 vs LZO [Электронный ресурс] // Catch Challenger: [сайт]. Quick_Benchmark:_Gzip_vs_Bzip2_vs_LZMA_vs_XZ_vs_LZ4_vs_LZO
35. Litzenberger D. PyCrypto - The Python Cryptography Toolkit [Электронный ресурс]
36. Behnel S., Bradshaw R., Seljebotn D.S., Ewing G., Stein W., Gellner
G. Cython - C-extentions for Python [Электронный ресурс] [2018].
37. unittest — Unit testing framework [Электронный ресурс] // Python
3.5.6 Documentation: [сайт]. [2018].
38. Green - A clean, colorful, fast python test runner. [Электронный ресурс] [2018].
39. Cifuentes C., Gough K.J. Decompilation of Binary Programs, Vol. July, No. 811–829, 1995.
40. // Apple Developer: [сайт].
41. Ватолин Д., А. Р., М. С., В. Ю. Методы сжатия данных. Устройство архиваторов, сжатие изображений и видео. Москва: ДИАЛОГ-МИФИ, 2002.

Похожие работы

Другие работы автора


Бухгалтерский учет анализ и аудит
Дипломная работа
Автор: Maksim

НЕ НАШЛИ, ЧТО ИСКАЛИ? МОЖЕМ ПОМОЧЬ.

СТАТЬ ЗАКАЗЧИКОМ