Научная статья на тему 'АЛГОРИТМЫ КРИПТОГРАФИЧЕСКОЙ ЗАЩИТЫ ИНФОРМАЦИИ (СЕТИ ФЕЙСТЕЛЯ)'

АЛГОРИТМЫ КРИПТОГРАФИЧЕСКОЙ ЗАЩИТЫ ИНФОРМАЦИИ (СЕТИ ФЕЙСТЕЛЯ) Текст научной статьи по специальности «Компьютерные и информационные науки»

CC BY
121
25
i Надоели баннеры? Вы всегда можете отключить рекламу.
Ключевые слова
МЕТОДЫ / ЗАЩИТА ДАННЫХ / СЕТИ ФЕЙСТЕЛЯ / ШИФРОВАНИЕ / ДЕШИФРОВАНИЕ

Аннотация научной статьи по компьютерным и информационным наукам, автор научной работы — Куленцан Антон Львович, Ситанов Сергей Вячеславович

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

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

Похожие темы научных работ по компьютерным и информационным наукам , автор научной работы — Куленцан Антон Львович, Ситанов Сергей Вячеславович

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

CRYPTOGRAPHIC INFORMATION PROTECTION ALGORITHMS (FEISTEL NETWORKS)

This article shows the main methods and means of data protection. An example of the implementation of an encryption and decryption program using Feistel networks is given. It is noted that these algorithms have advantages over other encryption methods.

Текст научной работы на тему «АЛГОРИТМЫ КРИПТОГРАФИЧЕСКОЙ ЗАЩИТЫ ИНФОРМАЦИИ (СЕТИ ФЕЙСТЕЛЯ)»

element of the CVG are described by a non-linear function of the angular velocity of the foundation. The results of modeling the envelope amplitudes of the primary and secondary oscillations of the SE with resonant tuning are presented.

Key words: coriolis vibrating gyroscope, mathematical model, oscillation envelope.

Matveev Valery Vladimirovich, doctor of technical sciences, docent, leading researcher, mat-weew.valery@yandex.ru, Russia, Tula, Tula State University,

Pogorelov Maxim Georgievich, candidate of technical sciences, head of the laboratory, mgpogore-loff@yandex.ru, Russia, Tula, Tula State University,

Likhosherst Vladimir Vladimirovich, senior researcher, lvv_01@inbox.ru, Russia, Tula, Tula State University,

Kalikanov Alexey Vladimirovich, junior researcher, kalikanov.aleksei@mail.ru, Russia, Tula, Tula State University,

Kirsanov Maxim Dmitrievich, junior researcher, KirsanovMD@yandex.ru, Russia, Tula, Tula State University,

Streltsov Dmitry Sergeevich, laboratory assistant, researcher, 30st01@mail.ru, Russia, Tula, Tula State University

УДК 517.87

DOI: 10.24412/2071-6168-2022-9-311-316

АЛГОРИТМЫ КРИПТОГРАФИЧЕСКОЙ ЗАЩИТЫ ИНФОРМАЦИИ (СЕТИ ФЕЙСТЕЛЯ)

А.Л. Куленцан, С.В. Ситанов

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

Ключевые слова: методы, защита данных, сети Фейстеля, шифрование, дешифрование.

Вопросы и проблемы, связанные с информационной безопасностью, в настоящее время, являются одними из ключевых для любого государства. На их решение тратятся не только большие денежные, но и физические ресурсы. Защита информации - это обеспечение целостности [1], конфиденциальности и доступности информации, передаваемой или хранимой в какой-либо форме. Информацию необходимо защищать от нарушения её целостности и конфиденциальности в результате вмешательства нелегального пользователя [2]. В ГОСТе Р 50.1.056-2005 были приведены следующие понятия: Доступность представляет собой такое состояние информации, при котором субъекты, имеющие права доступа, могут реализовать их свободно. Конфиденциальность представляет собой такое состояние информации, при котором к ней доступ выполняет только субъект, имеющий на него право. Целостность представляет собой такое состояние информации, при котором никакого изменения не происходит, либо изменение происходит только преднамеренно субъектами, которые имеют на него право [3].

Основные методы и средства защиты данных представлены на схеме 1 [1]. Так, например, криптографические методы по области применения подразделяются на методы общего использования и ограниченного использования, по особенностям алгоритма шифрования на одноключевые (симметричные), двухключевые (асимметричные) и комбинированные (составные), по количеству символов сообщения, шифруемых или расшифровываемых по однотипной процедуре преобразования на потоковые и блочные, по стойкости на совершенные, практически стойкие и нестойкие [4-6].

Шифры перестановки и замены имеют свои плюсы. Однако для того чтобы построить безопасную криптосистему лучше всего воспользоваться объединением данных способов шифрования. Способ объединения нескольких криптографических функций получил название продукционного шифрования. Примером такой системы является шифровальная машина военного времени «Enigma» ("Загадка"), в которой ряд кодовых колес переставлял и преобразовывал символы сообщения в кодовые символы. Огромное количество современных коммерческих способов шифрования основаны прежде всего на проведении большого количества сравнительно простых преобразований и перестановок, которые и образуют безопасную систему [7, 8].

Так шифрование данных (Data Encryption Standard, DES) представляет собой наилучший пример системы такого типа. Данный тип использует цикл из 16 перестановок и преобразований, а также имеет 56-разрядный ключ. Другим примером, использующим способы объединения нескольких криптографических функций, является криптографический алгоритм Blowfish и IDEA (International Data Encryption Algorithm). Данные алгоритмы шифрования данных используют цикл из 8 перестановок и преобразований, а также применяют 128-разрядный ключ. Большую популярность в настоящее время получил алгоритм шифрования - AES (Advanced Encryption Standard), обладающий размером блока 128 бит и размером ключа 128/192/256 бит.

Методы защ!пы данных

I

<и й>

2 о 2 и 0J

Ef •£

X

X

-В«

s 5 ¡1 If

е- & О s

формальные

Средства зашиты данных

неформальные

Рис. 1. Методы и средства защиты информации

В работе будут рассматриваться средства криптографической защиты информации и в частности сити Фейстеля. Данный способ подразумевает деление обрабатываемого блока данных на несколько частей (субблоков). При этом один из субблоков обрабатывается функцией G, а далее происходит воздействие на один или несколько остальных субблоков (рис. 2).

I

ГкЛ

ЬО^нЬ

И 5=1 ьф

а б

Рис. 2. Структура алгоритмов на основе сети Фейстеля: а - шифрования; б - дешифрования

Блок открытого текста делится на две равные части (М0, Б0). Для каждого раунда вычисляется:

\м, = ц_! © о(мм, км) Б, = Мм

где О - некоторая функция; К{1 - ключ /'-го раунда.

Ключ раунда представляет собой результат обработки ключа шифрования процедурой расширения ключа. Ее задача заключается в том, чтобы получить необходимое количество ключей К из исходного ключа шифрования относительно небольшого размера (~ 128 бит). В самом простом случае процедура расширения ключа заключается в разбиении ключа на некоторое количество частей, которые поочередно используются в раундах шифрования. Однако в большинстве случаев процедура расширения ключа является достаточно сложной, а ключи К1 зависят от значений большинства бит исходного ключа

312

шифрования [9, 10]. Таким образом результатом n раундов является (M„, Dn). Так как в n-ом раунде перестановка между Mn и Dn не осуществляется, то можно использовать ту же процедуру и для расшифрования. Только для этого необходимо преобразовать порядок использования раундовой ключевой информации следующим образом:

ГМ,_, = Di ® G(M,, Kt_i) ID = M i

Пример реализации программы шифрования и дешифрования использующие сети Фейстеля приведен на рис. 1 и 2.

public string feistel_crypt(string str, string key) {

if (key.Length < 8)

throw new ArgumentException(" Очень маленький ключ (min = 8 символов)"^

byte[] str_arr = Encoding.Default.GetBytes(str)j t>yte[] key_arr = Encoding.Default.GetBytes(key);

//если длина не кратна 64 битам (8 байтам) int diff = stг_агг.Length % 8;

if (diff != 0) {

byte[] temp = new byte[str_arr.Length + (S - diff)]; Array.Copy(str_arr, temp, strarr.Length); strarr = tempi

;

byte[] res_arr = new byte[str_arr. Length];

//шифруем по блокам

for (int i = 0; i < strarr.Length; i = i + 8) {

byte[] block = new byte[8];

Array.Copy(str_arr, i, block, в, 8);

for (int j = 0; j <= 9; j++)

{

//создаем 2 подблока

byte[] subblock_left_arr = new byte[4]; Array.Copy(block, subblock_left_arrj 4); byte[] subblock_right_arr = new byte[4]; Array.Copy(block, 4, subblock_right_arr, 0, 4)j

//создаем раундовый ключ byte[] subblock_key_arr = new byte[4]; Array.Copy(key_arr, subblock_key_arrj 4); subblockkeyarr = shift_key_left(key_arr, j);

false); true);

if (j != 9)//если j =9, то не надо поблоки менять местами

block = cryptblockfsubblockleftarr, subblockrightarr, subblockkeyarr,

block = crypt_block(subblock_left_arr, subblock_right_arr, subblock_key_arr,

>

//скидываем блок в результирующий массив Array.Copy(block, 0, resarr, i, block.Length);

}

return Encoding.Default.QetString(res_arr)i

у

private byte[] crypt_block(byte[] subblock_left_arr, byte[] subblock_right_arr, byte[]

subblock_key_arr, bool isLast) {

int subblock_left = BitConverter. ToInt32(subblock_left_arr., 0); int subblock_right = BitConverter.ToInt32(subblock_right_arrj 0); int subblock_key = BitConverter.Tolnt32(subblock_key_arr,

//xor

subblock_left = subbloek_left л subblock_key; subblock_left_arr = BitConverter.GetBytes(subblock_left);

byte[] tmp = new byte[2];

Array.Copy(subblock_left_arr, tmp, 2);

Intl6 left = BitConverter.ToIntlB(tmp, 0);

Array.Copy(subblock_left_arr, 2, tmp, 0, 2);

Intl6 right = BitConverter.ToIntl6(subblock_left_arr, 2);

//xor

subblock_right = f(left, right) A subblock_rightj subblock_right_arr = BitConverter.QetBytes(subblock_right);

//меняем иди не меняем подблоки местами при объединении byte[] res_arr = new byte[8]j

if (!isLast) {

Array.Copy(subblock_right_arr, res_arr, 4); Array.Copy(subblock_left_arr, 0, res_arr, 4, 4);

;■

else {

Array.Copy(subblock_left_arr, res_arr, 4); Array.Copy(subblock_right_arr, 0, res_arr, 4, 4);

}

return res_arr;

>

Рис. 1. Фрагмент текста программы шифрования использующие сети Фейстеля

block = decrypt_block(subblock_left_arr., subblock_right_arr, subblock_key_arr, block = decrypt_block(subblock_left_arr, subblock_right_arrj subblock_key_arr,

//xor

subblock_right = f(left, right) A subblock_right;

//xor

subblock_left = subblock_left л subblock_key; subblock_left_arr = BitConverter.GetBytes(subblock_left); subblock_right_arr = BitConverter.GetBytes(subblock_right);

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

//меняем или не меняем подблоки местами при объединении byte[] res_arr = new byte[8];

if (!is Last) {

Array.Copy(subblock_right_arr, res_arr., 4); Array.Copy(subblock_left_arr, 0, res_arr, 4, 4);

}

else {

Array.Copy(subblock_left_arr, res_arr., 4); Array.Copy(subblock_right_arrj res_arr., 4, 4);

}

return re5_arr;

}

private int f(Intl6 left, Intl6 right) {

//циклический сдвиг влево на 7

int 1 = left « 7;

int r = 1 » 16;

left = (Intl6)(l + r);

//циклический сдвиг вправо на 5

1 = right »5;

г = 1 « 11;//16-5

right = (Intl6)(l + г);

//меняем части местами

int res = (int)left « 16;

return res + right;

>

//возвращает интересующую нас левую половину ключа

private byte[] shift_key_left(byte[] key_arr, int i) { - -.....-

byte[] tmp = new byte[4];

Array.Copy(key_arr, tmp, 4);

int left = BitConverter.ToInt32{tmp, 0);

Array.Copy(key_arr, 4, tmp, 0, 4);

int right = BitConverter.ToInt32(tmpj 0);

//циклический сдвиг влево на i * 3

int 1_1 = left « (i * 3);

int r_r = right » (32 - i * 3);

left = 11 + r_r;

return BitConverter.GetBytes(left);

}

Рис. 2. Фрагмент текста программы дешифрования использующие сети Фейстеля

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

Список литературы

1. Афанасьева Д.В., Абидарова А.А. Средства криптографической защиты информации // Известия Тульского Государственного Университета. Технические науки. 2019. № 3. С. 67-71.

2. Владимиров С.М., Габидулин Э.М., Колыбельников А.И., Кшевецкий А.С. Криптографические методы защиты информации // Учебное пособие. 2019. 408 с.

3. Информационная технология. Техническая защита информации. Основные термины и определения // ГОСТ Р 50.1.056-2005. М.: Стандартинформ. 2005. 13 с.

4. Тарасов А.М. Криптография и электронная цифровая подпись: правовые и организационные аспекты // Вестник академии права и управления. 2011. № 22. С. 9-19.

5. Барабанов А.В. Подготовка к сдаче CISSP: модели информационной безопасности // Вопросы кибербезопасности. 2014. № 5(8). С. 59-67.

6. Марков А.С., Цирлов В.Л. Основы криптографии: подготовка к CISSP // Вопросы кибербезопасности. 2015. № 1(9). С. 65-73.

7. Бабенко Л.К., Буртыка Ф.Б., Макаревич О.Б., Трепачева А.В. Методы полностью гомоморфного шифрования на основе матричных полиномов // Вопросы кибербезопасности. 2015. № 1 (9). С. 14-25.

8. Молдовян А.А., Молдовян Н.А., Советов Б.Я. Криптография. СПб.: Издательство «Лань». 2001. 224 с.

9. Короплясов А.В., Румбешт В.В. история создания и обзор архитектуры сетей Фейстеля // Вестник магистратуры. 2012. № 1(4). С. 20-22.

10. Довгаль В.М., Тарасов А.А. Криптографическая защита электронных документов на основе сети Фейстеля с применением детерминированных хаотических отображений // Известия Курского государственного технического университета. 2010. № 1 (30). С. 44-48.

Куленцан Антон Львович, канд. физ.-мат. наук, доцент, kulencan@mail.ru, Россия, Иваново, Ивановский государственный химико-технологический университет,

Ситанов Сергей Вячеславович, канд. хим. наук, доцент, sitanov@yandex.ru, Россия, Иваново, Ивановский государственный химико-технологический университет

CRYPTOGRAPHIC INFORMATION PROTECTION ALGORITHMS (FEISTEL NETWORKS)

A.L. Kulentsan, S.V. Sitanov

This article shows the main methods and means of data protection. An example of the implementation of an encryption and decryption program using Feistel networks is given. It is noted that these algorithms have advantages over other encryption methods.

Key words: methods, data protection, city Feistel, encryption, decryption.

Kulentsan Anton Lvovich, candidate of physical and mathematical sciences, docent, kulen-can@mail.ru, Russia, Ivanovo, Ivanovo State University of Chemical Technology,

Sitanov Sergey Vyacheslavovich candidate of chemical sciences, docent, sitanov@yandex.ru, Russia, Ivanovo, Ivanovo State University of Chemical Technology

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