Разработка клиентского приложения для шифрования и дешифрования файлов с использованием сети Фейстеля.
Авторы: Ворожбитов Э.Э., Павлий В.А.
Источник: ИНФОРМАТИКА, УПРАВЛЯЮЩИЕ СИСТЕМЫ, МАТЕМАТИЧЕСКОЕ И КОМПЬЮТЕРНОЕ МОДЕЛИРОВАНИЕ (ИУСМКМ – 2017) - 2017/ Сборник материалов VIII Международной научно-технической конференции в рамках III Международного Научного форума Донецкой Народной Республики. — Донецьк, ДонНТУ — 2017, c. 188-192.
Аннотация
Ворожбитов Э.Э., Павлий В.А. Разработка клиентского приложения для шифрования и дешифрования файлов с использованием сети Фейстеля. В данной статье представлены понятия шифрования и алгоритма сети Фейстеля. Рассмотрены аналоги и общий их недостаток. Даны описания алгоритма и приложения. В конце подведены выводы.
Ключевые слова: шифрование, дешифрование, алгоритм, сеть Фейстеля, клиентское приложение.
Постановка задачи.
В современном мире с множеством разнообразной информации существует угроза её похищения или раскрытия. Для предотвращения этого одним из лучших способов является шифрование данных для сохранения конфиденциальности информации и несанкционированного ознакомления с ними. Практически все существующие программы для шифрования имеют общий минус – невозможность детальной конфигурации шифра.
Исходя из этого, является необходимой программа, в которой может быть произведена индивидуальная для каждого пользователя конфигурация шифрования.
Аналогов, использующих для шифрования сеть Фейстеля, в открытом доступе нет. Существует приложения, которые используют модифицированные от сети Фейстеля шифры или совсем иные алгоритмы[1], но у всех них нет возможности подробной настройки шифрования.
Описание алгоритма.
Сеть Фейстеля — один из методов построения блочных шифров. Сеть состоит из ячеек, называемых ячейками Фейстеля. На вход каждой ячейки поступают данные и ключ. На выходе каждой ячейки получают изменённые данные и изменённый ключ. Все ячейки однотипны, и говорят, что сеть представляет собой определённую многократно повторяющуюся (итерированную) структуру. Ключ выбирается в зависимости от алгоритма шифрования/расшифрования и меняется при переходе от одной ячейки к другой. При шифровании и расшифровании выполняются одни и те же операции; отличается только порядок ключей[2].
Полученные данные делятся на блоки фиксированной длины, которая, как правило, равна значению степени двойки. Первый блок делится на два одинокого размера подблока – “левый”(L0) и “правый” (R0).
Затем “левый” подблок обрабатывается в функции f(L0,K0), где K0 – ключ, и производит операцию “XOR” c “правым” подблоком R0. Результат данного преобразования ставится на место нового “левого” подблока L1. На место нового “правого” подблока R1 ставится без изменений “левый” подблок L0.
После этого данные действия производятся N-1 раз, где N – заданное в алгоритме количество раундов. При этом ключ К изменяется с каждым раундом по определённому правилу.
Дешифрование данных производится аналогично шифрованию, с одним отличием: ключи будут идти в противоположном порядке, то есть от последнего к первому.
Таким алгоритмом зашифровывается весь файл. Если длина выбранного блока меньше заданного размера, тогда блок увеличивается до нужной длины посредством дописывания сзади нулей.
Общая структура алгоритма сети Фейстеля показана на рисунке 1.
Описание приложения.
Шифрование – это преобразование информации, делающее ее нечитаемой для посторонних. При этом доверенные лица могут провести дешифрование и прочитать исходную информацию. Существует множество способов шифрования/дешифрования, но секретность данных основана не на тайном алгоритме, а на том, что ключ шифрования (пароль) известен только доверенным лицам[3].
Для разработки приложения используется язык программирования С#. Также с помощью него был реализован интерфейс, который позволяет пользователю загружать в программу файлы для шифрования, выбирать и настраивать метод шифрования, прогресс выполнения которого можно наблюдать, и выгружать зашифрованный файл.
Для описания возможных взаимодействий пользователя с приложением и указания функционального назначения программы существует диаграмма прецендентов, которая показана на рисунке 2.
В начале работы с программой выбирается существующий файл. В случае выбора, не существующего файла, появится ошибка, сообщающая об этом. Затем производится конфигурирование:
- выбор размера блока, который должен быть равен значению степени двойки;
- выбор одного или нескольких методов шифрования;
- выбор операции замены, определив какие именно элементы будут подвергаться данному действию;
- выбор операции циклического сдвига, с указанием, на какое количество и в какую сторону необходимо сдвигать;
- выбор операции “XOR”, обозначив элемент, и то с чем он будет выполнять данную операцию: с иным элементом или с каким-либо символом или знаком.
После этого происходит процесс шифрования файла, используя сеть Фейстеля с пользовательскими настройками алгоритма.
Для дешифровки файлов необходимо совершить аналогичные действия, только выбрать соответствующую данной операции функцию программы – дешифрование.
В программе предусмотрен визуальный показатель прогресса шифрования и дешифрования файлов, который демонстрируется одновременно с выполнением соответствующей его обозначению операцией.
Общий алгоритм работы приложения показан на рисунке 3.
Выводы
Защита информации является одной из самых важных и первостепенных задач, стоящих перед IT-специалистами. Именно для этой цели разрабатывается приложение для шифрования и дешифрования файлов. Конечно, технологии, как и время, не стоят на месте, поэтому в дальнейшем планируется развитие данной программы.
Список литературы
- Криптография. Алгоритмы симметричного шифрования [Электронный ресурс] – URL:http://alexinternetclic.ru/Kriptograf_1.php
- Википедия – Сеть Фейстеля [Электронный ресурс] – URL:https://ru.wikipedia.org/wiki/Сеть_Фейстеля
- Блог Лаборатории Касперского. Зачем нужно шифрование? [Электронный ресурс] – URL:https://blog.kaspersky.ru/encryption-reasons/879/