СДЕЛАЙТЕ СВОИ УРОКИ ЕЩЁ ЭФФЕКТИВНЕЕ, А ЖИЗНЬ СВОБОДНЕЕ

Благодаря готовым учебным материалам для работы в классе и дистанционно

Скидки до 50 % на комплекты
только до

Готовые ключевые этапы урока всегда будут у вас под рукой

Организационный момент

Проверка знаний

Объяснение материала

Закрепление изученного

Итоги урока

Школьный проект: "Обфускация данных"

Категория: Информатика

Нажмите, чтобы узнать подробности

Школьный проект, посвященный защите данных (защите программного кода от копирования).

Просмотр содержимого документа
«Школьный проект: "Обфускация данных"»

МУНИЦИПАЛЬНОЕ АВТОНОМНОЕ НЕТИПОВОЕ ОБЩЕОБРАЗОВАТЕЛЬНОЕ УЧРЕЖДЕНИЕ «ГИМНАЗИЯ №2»





Секция «Информационные технологии»

Возрастная номинация: 9-11 класс



Проектная работа по теме:

«Обфускация данных, как метод защиты информации»



Выполнил:

Крючков Виталий,

ученик 11 «А» класса

Руководитель:

Куренко Н.В.,

учитель информатики

МАНОУ «Гимназия № 2»

Баранова Т.А.,

Учитель информатики

МАНОУ «Гимназия №2»





г. Мариинск

2022 год

Оглавление



Введение 3

Основная часть 5

  1. Что такое обфускации 5

  2. Методы обфускации данных 5

  3. Практическое применение с помощью Python 6

Заключение 13

Список использованных источников литературы 14



Введение

«Кто владеет информацией, тот владеет миром»

Н. Ротшильд.


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

Современный мир – мир высоких технологий и сделанных на их основе изобретений. Именно поэтому одним из важнейших современных активов любого предприятия является информация.

Зависимость человечества от неё действительно сложно переоценить. Информация – это самый ценный ресурс человека на данном этапе его развития. Безусловно, именно поэтому она подлежит защите. И одной из самых надежных защитных технологий является шифрование информации.

Именно поэтому проект посвящён теме шифрования данных и его видов.

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

Объект исследования: программный код.

Предмет исследования: способы различного запутывания кода.

Цели проекта: разработать и повысить уровень защиты программного кода за счет использования элементов обфускации.

Задачи проекта:

  • Провести анализ существующих методов обфускации данных;

  • Выбрать самые эффективные из методов обфускации программного кода, исходя из времени выполнения их программы;

  • Выявить наиболее подходящие под критерии методы.

Методы исследования:

  1. Описательный

  2. Аналитический

  3. Практический

Основная часть

  1. Что такое обфускации

Обфускации, или запутывание кода – это приведение исходного или исполняемого кода программы к виду, при котором сохраняются функциональность и работоспособность программы, но затрудняется анализ, понимание работы алгоритмов, их модификация или декомпиляция.

  1. Методы обфускации данных

Методы обфускации данных делятся на: обфускации хранения, обфускации соединения, обфускации переупорядочивания.

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

Включает следующие преобразования:

  • разделение переменных;

  • замена статических данных на процедурные, например, замена строк на функцию, возвращающую требуемую строку в зависимости от входных параметров;

  • изменение области видимости переменных.

Обфускация соединения состоит в объединении или разделении данных, или структур данных.

В качестве примера таких методов могут служить операции с массивами:

  • разделение одного массива на множество массивов,

  • изменение размерности массивов,

  • соединение нескольких переменных в массив.

Обфускация переупорядочивания состоит в изменении порядка следования объектов.

Включает следующие преобразования:

  • изменение порядка объявления переменных,

  • изменение порядка следования функций,

  • изменения внутренней организации структур и классов.


  1. Практическое применение с помощью Python

В своей программе я буду применять несколько методов обфускации данных на практике (объединение переменных в массив, объединение массивов, изменение размерности массива, изменение параметров функции, разделение данных массива) и сравнивать время, за которое программа выполняется.

Исходный код программы выглядит так:

def formula(so, ks, k, ko):

return ((so*ks)/(k*ko))

ks=1204

ko=20

a=37

b=23.4

d=[5,9,7,3,1,3,2,10,6,7,9,4,9,3,6,8,9,2,7,9]

k=a*b

so=sum(d)

y=formula(so, ks, k, ko)

if y5:

print('В первой сотне')

else:

print('Не в первой сотне')

Время выполнения исходной программы: 2,05365 секунд





Объединение переменных в массив:

def formula(so, ks, a, b, ko):

return ((so*ks)/(a*b*ko))

c= [1204, 20, 37, 23.4]

d=[5,9,7,3,1,3,2,10,6,7,9,4,9,3,6,8,9,2,7,9]

y= formula (sum(d), c[0], c[3], c[2], c[1])

if y5:

print ('В первой сотне')

else:

print ('Не в первой сотне')

Время выполнения программы: 2,38165 секунд



Объединение массивов и изменение размерности массива:

def formula(so, ks, a, b, ko):

return ((so*ks)/(a*b*ko))

c=[1204, 20, 37, 23.4]

d=[[5,9,7,3],[1,3,2,10],[6,7,9,4],[9,3,6,8],[9,2,7,9], [1204,20,37,23.4]]

s=0

for i in range(len(d)-1):

for j in range(len(d[i])):

s+=d[i][j]

y=formula(s, d[5][0],d[5][3], d[5][2], d[5][1])

if y5:

print('В первой сотне')

else:

print('Не в первой сотне')



Время выполнения программы: 2,61335 секунд

Изменение параметров функции:

d=[[5,9,7,3],[1,3,2,10],[6,7,9,4],[9,3,6,8],[9,2,7,9], [1204,20,37,23.4]]

s=0

def formula():

return ((s*d[5][0])/(d[5][3]*d[5][2]*d[5][1]))

for i in range(len(d)-1):

for j in range(len(d[i])):

s+=d[i][j]

y=formula()

if y5:

print('В первой сотне')

else:

print('Не в первой сотне')



Время выполнения программы: 2,67835 секунд

Разделение данных массива:

d=[[5,9,7,3],[1,3,2,10],[6,7,9,4],[78.9, 403, 37, 23.4]]

s=0

m=0

t=[[9,3,6,8],[9,2,7,9],[1204,20,9,0]]

for i in range(len(d)-1):

for j in range(len(d[i])):

s+=d[i][j]

def formula():

return (((s+m)*t[2][0])/ (d[3][2]*d[3][3]*t[2][1]))

for i in range(len(t)-1):

for j in range(len(t[i])):

m+=t[i][j]

y=formula()

if y5:

print('В первой сотне')

else:

print('Не в первой сотне')

Время выполнения программы: 2,92435 секунд



Заключение

В ходе выполнения проекта на практике были изучены методы применения обфускаций данных. Разработаны и протестированы рабочие алгоритмы запутывания программного кода на языке Python.

Наиболее эффективными методами обфускации данных являются “Разделение данных массива”, “Изменение параметров функции”, которые позволяют повысить сложность понимания и анализа работы программы, что подтверждается сокращением времени обработки программы на 42% и 30%.

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



Список использованных источников литературы:

  1. https://ru.wikipedia.org/wiki/Обфускация_(программное_обеспечение)

  2. https://studme.org/128268/informatika/opredelenie_obfuskatora

  3. https://habr.com/ru/post/533954/

  4. https://www.techtarget.com/searchsecurity/definition/obfuscation

  5. https://stackoverflow.com/questions/3344115/how-to-obfuscate-python-code-effectively





3