Реализация алгоритма шифрации/дешифрации данных — КиберПедия 

Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...

Адаптации растений и животных к жизни в горах: Большое значение для жизни организмов в горах имеют степень расчленения, крутизна и экспозиционные различия склонов...

Реализация алгоритма шифрации/дешифрации данных

2022-09-12 46
Реализация алгоритма шифрации/дешифрации данных 0.00 из 5.00 0 оценок
Заказать работу

САРАТОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ ИМЕНИ ГАГАРИНА Ю.А.

 

Институт электронной техники и приборостроения

Направление Инфокоммуникационные технологии и системы связи
Профиль Системы мобильной связи

КУРСОВАЯ РАБОТА

по дисциплине «Информационные технологии в системах мобильной»

Реализация алгоритма шифрации/дешифрации данных
(тема)
Работу выполнил студент Мартынов Сергей Андреевич ИнЭТиП, б1-ИКТСипу-41 Номер зачетной книжки 182891
Руководитель работы к.ф.-м.н., доцент каф. РТ Дорошенко В.М.

Оценка работы ____________________

Подписи членов комиссии

_____________________ Балакин М.И.

_____________________ Дорошенко В.М.

Саратов – 2022


Федеральное государственное бюджетное образовательное учреждение

высшего образования

 

САРАТОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ ИМЕНИ ГАГАРИНА Ю.А.

Кафедра «Радиоэлектроника и телекоммуникации»

ЗАДАНИЕ

На курсовую работу

по дисциплине «Информационные технологии в системах мобильной»

Студенту учебной группы б1-ИКТСипу-41 Института ЭТиП

Мартынову Сергею Андреевичу

ТЕМА РАБОТЫ

Реализация алгоритма шифрации/дешифрации данных

 

Начало проектирования «15» января 2022 г.

Дата сдачи на проверку «25» января 2022 г.

 

Оценка защиты _______________

к.ф.-м.н., доцент                                                                Дорошенко В.М.


Оглавление

введение 5

1. аналитическая часть 6

1.1. Обзор симметричных методов шифрования 7

1.2. Алгоритм ГОСТ 28147-89 11

1.2.1. Достоинства алгоритма. 12

1.2.2. Недостатки алгоритма. 12

2. конструкторская часть 14

2.1. Архитектура программной системы 14

2.2. Обоснование выбора инструментальных средств разработки 15

2.3. Алгоритмическое конструирование 15

2.4. Программная реализация 22

3. Экспериментальная часть 25

3.1. Тестирование правильности работы программы 25

3.2. Тестирование подмены ключей 26

3.3. Тестирование подмены символа шифр-текста 27

3.4. Тестирование на сообщении с повторяющимися блоками 27

3.5. Тестирование различия шифр-текстов 28

заключение 29

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

ПРИЛОЖЕНИЕ 31

 


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

«__» января 2022 г.               _________________________С.А. Мартынов


Введение

Одной из основных ценностей всегда считалась информация. ХХ век – век информатики и информатизации. Технология дает возможность передавать и хранить все большие объемы информации. Это благо имеет и оборотную сторону. Информация становится все более уязвимой по разным причинам:

· возрастающие объемы хранимых и передаваемых данных;

· расширение круга пользователей, имеющих доступ к ресурсам ЭВМ, программам и данным;

· усложнение режимов эксплуатации вычислительных систем.

Поэтому все большую важность приобретает проблема защиты информации от несанкционированного доступа (НСД) при передаче и хранении.

Методы и средства защиты обеспечивают:

· исключение НСД к ресурсам ЭВМ, программам и данным;

· проверку целостности информации;

· исключение несанкционированного использования программ (защиту программ от копирования).

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

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

 


Аналитическая часть

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

Применение методов шифрования информации позволяет решать следующие задачи:

· защита информации от разглашения и искажения при хранении в ненадёжных источниках;

· защита данных от разглашения и искажения при передаче по открытому каналу связи;

· защита от отказа от факта получения сообщения;

· обеспечение юридической значимости электронных документов.

К алгоритмам шифрования предъявляются определенные требования:

· высокий уровень защиты данных против дешифрования и возможной модификации;

· защищенность информации должна основываться только на знании ключа и не зависеть от того, известен алгоритм или нет (правило Керкхоффа);

· малое изменение исходного текста или ключа должно приводить к значительному изменению шифрованного текста (эффект «обвала»);

· область значений ключа должна исключать возможность дешифрования данных путем перебора значений ключа;

· экономичность реализации алгоритма при достаточном быстродействии;

· стоимость дешифрования данных без знания ключа должна превышать стоимость данных.

Криптографические алгоритмы шифрования с ключом делятся на:

1. Алгоритмы шифрования с секретным ключом (симметричные)

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

Алгоритм ГОСТ 28147-89

ГОСТ 28147-89 — советский и российский стандарт симметричного шифрования, введённый в 1990 году, также является стандартом СНГ. Полное название — «ГОСТ 28147-89 Системы обработки информации. Защита криптографическая. Алгоритм криптографического преобразования». Блочный шифроалгоритм. При использовании метода шифрования с гаммированием, может выполнять функции поточного шифроалгоритма.

По некоторым сведениям, история этого шифра гораздо более давняя. Алгоритм, положенный впоследствии в основу стандарта, родился, предположительно, в недрах Восьмого Главного управления КГБ СССР (ныне в структуре ФСБ), скорее всего, в одном из подведомственных ему закрытых НИИ, вероятно, ещё в 1970-х годах в рамках проектов создания программных и аппаратных реализаций шифра для различных компьютерных платформ.

С момента опубликования ГОСТа на нём стоял ограничительный гриф «Для служебного пользования», и формально шифр был объявлен «полностью открытым» только в мае 1994 года. История создания шифра и критерии разработчиков по состоянию на 2010 год не опубликованы.

ГОСТ 28147-89 — блочный шифр с 256-битным ключом и 32 циклами преобразования, оперирующий 64-битными блоками. Основа алгоритма шифра — Сеть Фейстеля. Базовым режимом шифрования по ГОСТ 28147-89 является режим простой замены (определены также более сложные режимы гаммирование, гаммирование с обратной связью и режим имитовставки).

Достоинства алгоритма

1. Бесперспективность силовой атаки (XSL-атаки в учёт не берутся, так как их эффективность на данный момент полностью не доказана).

2. Эффективность реализации и соответственно высокое быстродействие на современных компьютерах.

3. Наличие защиты от навязывания ложных данных (выработка имитовставки) и одинаковый цикл шифрования во всех четырех алгоритмах ГОСТа.

4. В режиме гаммирования все элементы гаммы различны для реальных шифруемых массивов и, следовательно, результат зашифрования даже двух одинаковых блоков в одном массиве данных будет различным.

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

Недостатки алгоритма

Основные проблемы ГОСТа связаны с неполнотой стандарта в части генерации ключей и таблиц замен. Тривиально доказывается, что у ГОСТа существуют «слабые» ключи и таблицы замен, но в стандарте не описываются критерии выбора и отсева «слабых». Также стандарт не специфицирует алгоритм генерации таблицы замен (S-блоков). С одной стороны, это может являться дополнительной секретной информацией (помимо ключа), а с другой, поднимает ряд проблем:

1. Нельзя определить криптостойкость алгоритма, не зная заранее таблицы замен;

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

3. Возможность преднамеренного предоставления слабых таблиц замен лицензирующими органами РФ;

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


Конструкторская часть

Программная реализация

Алгоритм шифрования ГОСТ 28147-89 реализован в одноимённом классе. В нём имеются следующие поля:

· private byte[] key - ключ используемый при шифровании в байтовом массиве;

· private BitArray baKey - ключ в битовом виде;

· ulong SyncMessage - синхропосылка;

· private List<byte> cryptMessage - список байтов сообщения для шифрования;

· private byte[,] matrixH - таблица замен;

Методы класса:

· public string Key() – возвращает ключ в виде строки;

· public byte[] KeyByte() – возвращает ключ в виде байтового массива;

· public GOST2814789(byte[] key) и public GOST2814789() – конструкторы класса;

· public byte[] Crypt(string source) и public void Crypt(FileStream fs) – методы шифрующие строку и файл соответственно;

· public string Decrypt(byte[] source) и public void Decrypt(FileStream fs) – методы расшифровывающие байтовый массив и файл соответственно;

· private byte[] MainStep(BitArray N, BitArray X) – основной шаг криптографического преобразования. Принимает 64-битный блок шифруемых данных и 32-битный элемент ключа;

· private byte[] CryptStep(BitArray N) – процедура шифрования. Принимает 64-битный блок данных для зашифровки и итеративно выполняет с ним основной шаг криптопреобразования меняя элементы ключа;

· private byte[] DoCrypt(byte[] source) – метод принимает шифруемый байтовый массив, делит его на блоки, генерирует для каждого блока элемент гаммы и выполняет операцию наложения гаммы. Возвращает зашифрованный байтовый массив;

· private byte[] DoDecrypt(byte[] source) – метод принимает расшифровываемый байтовый массив, делит его на блоки, генерирует для каждого блока элемент гаммы и выполняет операцию наложения гаммы. Возвращает расшифрованный байтовый массив;

· public void GenerateKey() – метод генерации ключа;

· public byte[] Xoring(byte[] first, byte[] second) – метод принимает два байтовых массива. Возвращает результат наложения первого на второй операцией исключающего или в виде массива байт;

· private BitArray Exchange(BitArray source) – метод реализующий обмен частей в блоке данных.

Реализация перечисленных методов на языке C# с комментариями представлена в приложении.


Экспериментальная часть

Целью тестирования системы является выявление ошибок в работе, связанных с обработкой данных, общего функционирования программной системы; проверка функциональных характеристик разработанной системы

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

Тестирование подмены ключей

Описание: Выбираем для шифрования текстовое сообщение небольшого размера. Задаем исходный ключ.

Информация в файле:

 

Hello, world! How are you?

 

Шифр-текст:

 

¼³_ÑR‘*M£^éCœSŒl›†ñý×ÁG©^¶_ý Ø3

 

На этапе расшифрования меняем ключ. Результат цикла расшифрования:

 

'�No<���}*!?J9�n�e!���?�

 

Результат: Полученное дешифрованное сообщение не совпадает с исходным.


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

1. Собственный конспект лекций по дисциплине «Основы криптографии», 2017.

2. Санников В.Г. Введение в теорию и методы криптографической защиты информации: Учебное пособие. — М.: МТУСИ, 2009.

3. Рябко Б.Я., Фионов А.Н. Криптографические методы защиты информации: Учебное пособие. М.: Горячая линия — Телеком, 2005.

4.  Потемкин В.Г., MATLAB: Справочное пособие. М.: Диалог-МИФИ., 1997;

5. Дьяконов В.П. Справочник по применению системы PC MatLAB. М.: Наука, Физматлит., 1993.

6. IT портал [http://habrahabr.ru].

7. A blog covering security and security technology [www.schneier.com].

8. М. Масленников, Практическая криптография / Масленников М. - Спб.: БХВ-Петербург, 2003. - 458 с.

9. С. Панасенко, Алгоритмы шифрования / Панасенко С. - СПб.: БХВ-Петербург, 2009. - 576 с.

10. И. Ященко, Основные математические понятия криптографии / Ященко И.В. - М.: Москва, 2003.
ПРИЛОЖЕНИЕ

namespace GOST

{

public class GOST2814789

{

private byte[] key = new byte[8];

private BitArray baKey;

ulong SyncMessage = 6413657231357313579; // синхропосылка

/// <summary>

/// Ключ

/// </summary>

public string Key

{

get

{

return this.ToStringFromByteArray(this.key);

}

}

public byte[] KeyByte

{

get

{

return this.key;

}

}

private List<byte> cryptMessage;

/// <summary>

/// Таблица замен 8 на 16 состоящая из 4битовых чисел, то есть от 0 до 15.

/// </summary>

private byte[,] matrixH = new byte[8, 16] {

{4,10,9,2,13,8,0,14,6,11,1,12,7,15,5,3},

{14,11,4,12,6,13,15,10,2,3,8,1,0,5,7,9},

{5,8,1,13,10,3,4,2,14,15,12,7,6,0,9,11},

{7,13,10,1,0,8,9,15,14,4,6,12,11,2,5,3},

{6,12,7,1,5,15,13,8,4,10,9,14,0,3,11,2},

{4,11,10,0,7,2,1,13,3,6,8,5,9,12,15,14},

{13,11,4,1,3,15,5,9,0,10,14,7,6,8,2,12},

{1,15,13,0,5,7,10,4,9,2,3,14,6,11,8,12} };

public GOST2814789(byte[] key)

{

this.key = key;

this.baKey = new BitArray(key);

}

public GOST2814789()

{

// Генерируем Ключ

GenerateKey();

}

/// <summary>

/// Шифровать строку

/// </summary>

/// <param name="source">Строка для зашифровки</param>

/// <returns>Шифр</returns>

public byte[] Crypt(string source)

{

Encoding enc = System.Text.Encoding.GetEncoding("utf-8");

return DoCrypt(enc.GetBytes(source));

}

/// <summary>

/// Шифрует файл

/// </summary>

/// <param name="fs">Files strem</param>

/// <returns>В той же папке создаётся файл с расширением crypt</returns>

public void Crypt(FileStream fs)

{

BinaryWriter bw;

BinaryReader br = new BinaryReader(fs);

byte[] crypt = DoCrypt(br.ReadBytes((int)fs.Length));

// save crypt file

FileStream fsc = new FileStream(fs.Name+".crypt", FileMode.CreateNew);

bw = new BinaryWriter(fsc);

bw.Write(crypt);

bw.Close();

fsc.Close();

fs.Close();

// save key

FileStream fsk = new FileStream(fs.Name + ".key", FileMode.CreateNew);

bw = new BinaryWriter(fsk);

bw.Write(this.key);

bw.Close();

fsk.Close();

}

/// <summary>

/// Расшифровывает строку

/// </summary>

/// <param name="source">Строка для расшифровки</param>

/// <returns>Расшифрованная строка</returns>

public string Decrypt(byte[] source)

{

return System.Text.UTF8Encoding.UTF8.GetString(DoDecrypt(source));

}

/// <summary>

/// Расшифровывает файл

/// </summary>

/// <param name="fs">Files strem</param>

/// <returns>В той же папке создаётся файл с расширением decrypt</returns>

public void Decrypt(FileStream fs)

{

BinaryReader br;

FileStream fsk = new FileStream(fs.Name.Replace(".crypt","") + ".key", FileMode.Open);

br = new BinaryReader(fsk);

byte[] key = br.ReadBytes((int)fs.Length);

br.Close();

fsk.Close();

br = new BinaryReader(fs);

byte[] dcrypt = DoDecrypt(br.ReadBytes((int)fs.Length));

FileStream fsc = new FileStream(fs.Name + ".decrypt", FileMode.CreateNew);

BinaryWriter bw = new BinaryWriter(fsc);

bw.Write(dcrypt);

bw.Close();

fsc.Close();

fs.Close();

}

Размещено на Allbest.ru

САРАТОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ ИМЕНИ ГАГАРИНА Ю.А.

 

Институт электронной техники и приборостроения

Направление Инфокоммуникационные технологии и системы связи
Профиль Системы мобильной связи

КУРСОВАЯ РАБОТА

по дисциплине «Информационные технологии в системах мобильной»

Реализация алгоритма шифрации/дешифрации данных
(тема)
Работу выполнил студент Мартынов Сергей Андреевич ИнЭТиП, б1-ИКТСипу-41 Номер зачетной книжки 182891
Руководитель работы к.ф.-м.н., доцент каф. РТ Дорошенко В.М.

Оценка работы ____________________

Подписи членов комиссии

_____________________ Балакин М.И.

_____________________ Дорошенко В.М.

Саратов – 2022


Федеральное государственное бюджетное образовательное учреждение

высшего образования

 

САРАТОВСКИЙ ГОСУДАРСТВЕННЫЙ ТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ ИМЕНИ ГАГАРИНА Ю.А.

Кафедра «Радиоэлектроника и телекоммуникации»

ЗАДАНИЕ

На курсовую работу

по дисциплине «Информационные технологии в системах мобильной»

Студенту учебной группы б1-ИКТСипу-41 Института ЭТиП

Мартынову Сергею Андреевичу

ТЕМА РАБОТЫ

Реализация алгоритма шифрации/дешифрации данных

 

Начало проектирования «15» января 2022 г.

Дата сдачи на проверку «25» января 2022 г.

 

Оценка защиты _______________

к.ф.-м.н., доцент                                                                Дорошенко В.М.


Оглавление

введение 5

1. аналитическая часть 6

1.1. Обзор симметричных методов шифрования 7

1.2. Алгоритм ГОСТ 28147-89 11

1.2.1. Достоинства алгоритма. 12

1.2.2. Недостатки алгоритма. 12

2. конструкторская часть 14

2.1. Архитектура программной системы 14

2.2. Обоснование выбора инструментальных средств разработки 15

2.3. Алгоритмическое конструирование 15

2.4. Программная реализация 22

3. Экспериментальная часть 25

3.1. Тестирование правильности работы программы 25

3.2. Тестирование подмены ключей 26

3.3. Тестирование подмены символа шифр-текста 27

3.4. Тестирование на сообщении с повторяющимися блоками 27

3.5. Тестирование различия шифр-текстов 28

заключение 29

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

ПРИЛОЖЕНИЕ 31

 


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

«__» января 2022 г.               _________________________С.А. Мартынов


Введение

Одной из основных ценностей всегда считалась информация. ХХ век – век информатики и информатизации. Технология дает возможность передавать и хранить все большие объемы информации. Это благо имеет и оборотную сторону. Информация становится все более уязвимой по разным причинам:

· возрастающие объемы хранимых и передаваемых данных;

· расширение круга пользователей, имеющих доступ к ресурсам ЭВМ, программам и данным;

· усложнение режимов эксплуатации вычислительных систем.

Поэтому все большую важность приобретает проблема защиты информации от несанкционированного доступа (НСД) при передаче и хранении.

Методы и средства защиты обеспечивают:

· исключение НСД к ресурсам ЭВМ, программам и данным;

· проверку целостности информации;

· исключение несанкционированного использования программ (защиту программ от копирования).

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

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

 


Аналитическая часть

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

Применение методов шифрования информации позволяет решать следующие задачи:

· защита информации от разглашения и искажения при хранении в ненадёжных источниках;

· защита данных от разглашения и искажения при передаче по открытому каналу связи;

· защита от отказа от факта получения сообщения;

· обеспечение юридической значимости электронных документов.

К алгоритмам шифрования предъявляются определенные требования:

· высокий уровень защиты данных против дешифрования и возможной модификации;

· защищенность информации должна основываться только на знании ключа и не зависеть от того, известен алгоритм или нет (правило Керкхоффа);

· малое изменение исходного текста или ключа должно приводить к значительному изменению шифрованного текста (эффект «обвала»);

· область значений ключа должна исключать возможность дешифрования данных путем перебора значений ключа;

· экономичность реализации алгоритма при достаточном быстродействии;

· стоимость дешифрования данных без знания ключа должна превышать стоимость данных.

Криптографические алгоритмы шифрования с ключом делятся на:

1. Алгоритмы шифрования с секретным ключом (симметричные)

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


Поделиться с друзьями:

История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...

Состав сооружений: решетки и песколовки: Решетки – это первое устройство в схеме очистных сооружений. Они представляют...

Таксономические единицы (категории) растений: Каждая система классификации состоит из определённых соподчиненных друг другу...

Историки об Елизавете Петровне: Елизавета попала между двумя встречными культурными течениями, воспитывалась среди новых европейских веяний и преданий...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.149 с.