Эксперт
Сергей
Сергей
Задать вопрос
Мы готовы помочь Вам.

Цель работы: Ознакомиться с методами криптографии.
Краткие теоретические сведения
Криптография — это исследование методов безопасной передачи информации, которая потенциально может быть перехвачена злоумышленниками. На ранних этапах развития криптография представляла собой обычную письменность; она работала по той простой причине, что немногие тогда, на заре цивилизации, умели читать. Позже в обиход вошли специальные алфавиты, известные только отправителю и получателю. В одном из самых ранних образцов этого вида криптографии использовались нестандартные иероглифы, высеченные в гробницах (Египет, 1900 г. до н. э.).
Задача шифрования — сделать так, чтобы отправитель мог послать сообщение получателю, а третья сторона, которую обычно зовут злоумышленником или перехватчиком, не могла данное сообщение понять. Предполагается, что злоумышленник в любом случае перехватит данные, поэтому помешать ему их прочитать может только шифрование.
Расшифрованное сообщение называют открытым текстом, а зашифрованное — криптограммой. Процесс превращения открытого текста в криптограмму именуется шифрованием, или кодированием. Восстановление открытого текста из криптограммы называется дешифрованием, или декодированием.
Формально шифр — пара алгоритмов для шифрования и дешифрования сообщений. Криптоанализ — это исследование злоумышленником методов взлома шифрования.
Перестановочные шифры. В перестановочном шифре буквы открытого текста меняются местами каким-то определенным образом, результатом чего является криптограмма. Чтобы прочитать сообщение, получатель возвращает буквы на их исходные позиции. Такие шифры частично полагаются на безопасность через неясность, если злоумышленник не знает, какой именно метод перестановки используется. Большинство из этих методик, помимо прочего, предоставляют ключ, который несет в себе определенную информацию о перестановке. Например, перестановочный шифр по строкам/столбцам, описанный в следующем подразделе, использует в качестве ключа количество столбцов. Однако такие ключи обычно допускают достаточно ограниченное число значений, поэтому их несложно подобрать и взломать тем самым шифрование, особенно если использовать компьютер. С такими шифрами довольно легко работать с помощью карандаша и бумаги — они могут играть роль занятных упражнений (если они кажутся вам слишком простыми, попробуйте проводить вычисления в голове).
Маршрутные шифры. В маршрутном шифре открытый текст записывается в массив (или упорядочивается каким-то другим способом) и затем считывается из него в порядке, который определяется конкретным маршрутом.
Шифры подстановки. В шифрах подстановки буквы открытого текста заменяются другими.
Схема одноразовых блокнотов — это некая разновидность шифра Виженера, в которой ключ имеет ту же длину, что и сообщение. Сдвиг присваивается каждой букве отдельно, поэтому для его поиска нельзя использовать частотный анализ криптограммы.
Блочные шифры. В блочном шифре сообщение разбивается на блоки, которые затем отдельно шифруются и объединяются в криптограмму. Во многих блочных шифрах кодирование выполняется путем многократной трансформации данных. Трансформация должна быть обратимой, чтобы позже криптограмму можно было расшифровать. Разбиение текста на одинаковые блоки позволяет предусмотреть изменения фрагментов определенной длины. Полезное свойство блочных шифров заключается в том, что они
позволяют криптографическому программному обеспечению работать с относительно небольшими фрагментами текста. Представьте, например, что вам нужно зашифровать очень длинное сообщение размером, скажем, в несколько гигабайтов. Если использовать шифр с перестановкой по столбцам, программе придется переходить в разные участки сообщения в памяти. Это может привести к сбрасыванию данных в файл подкачки, что существенно замедлит работу. Блочный шифр ведет себя иначе. Он может анализировать сообщение по частям, которые легко помещаются в памяти. Даже если программе придется использовать файл подкачки, каждый фрагмент сообщения будет загружаться в память всего один раз.
Шифр Фейстеля. В шифре Фейстеля, названном в честь криптографа Хорста Фейстеля, сообщение разбивается пополам на левую и правую части — L0 и R0. К правой части применяется функция, и полученный результат совмещается с левой частью с помощью операции XOR. Затем эти два фрагмента меняются местами и процесс повторяется определенное количество раундов.
Шифрование с открытым ключом и RSA. В шифровании с открытым ключом используется два отдельных ключа — открытый и закрытый. Открытый ключ обычно публикуется, поэтому его может узнать кто угодно (включая злоумышленника). Закрытый ключ известен только получателю. Отправитель использует открытый ключ для шифрования сообщения и передает результат получателю. Однако расшифровать его можно только с помощью закрытого ключа.
В других типах шифрования для кодирования и декодирования сообщения используется один и тот же ключ, поэтому их называют симметричными. Одним из самых известных алгоритмов шифрования с открытым ключом является RSA, названный в честь тех, кто впервые его описал: Рональда Ривеста, Ади Шамира и Леонарда Адлемана.
Цифровая подпись — это криптографический инструмент, чем-то напоминающий криптографическое хеширование. Если вы хотите доказать, что какой-то конкретный документ написан вами, его нужно подписать. Позже можно будет проверить подлинность вашей подписи. Если кто-то другой изменит документ, он не сможет подписать его от вашего имени.
Обычно система цифровых подписей состоит из трех частей:
_ алгоритм генерирования закрытых и открытых ключей;
_ алгоритм, который подписывает документ с помощью закрытого ключа;
_ алгоритм, проверяющий подлинность вашей подписи с помощью открытого ключа.
Цифровая подпись в некотором смысле является противоположной по отношению к системе шифрования с закрытым ключом. Сообщение может быть зашифровано с помощью открытого ключа любым числом отправителей, но расшифровать его сумеет только один из получателей, обладающий закрытым ключом. В системе цифровых подписей сообщение подписывается отправителем с помощью закрытого ключа, а открытый ключ, позволяющий проверить его подлинность, доступен любому количеству получателей.
Порядок выполнения работы
1. Ознакомиться с теоретическими сведениями.
2. Получить вариант задания у преподавателя.
3. Выполнить задание: написать программу на языке С++.
4. Продемонстрировать выполнение работы преподавателю.
5. Оформить отчет.
6. Защитить лабораторную работу.
Требования к оформлению отчета
Отчет по лабораторной работе должен содержать следующие разделы:
титульный лист;
цель работы;
задание на лабораторную работу;
ход работы;
ответы на контрольные вопросы (или ответить устно);
выводы по проделанной работе.
Варианты заданий
1. Напишите программу, которая шифрует и расшифровывает сообщения с помощью перестановочного шифра по строкам/столбцам.
2. Напишите программу, которая шифрует и расшифровывает сообщения с помощью перестановочного шифра по столбцам.
3. Напишите программу, которая подобна шифру перестановки столбцов, что меняет местами не только столбцы, но и строки.
4. Напишите программу, которая использует шифр Виженера для шифрования и расшифровывания сообщений. Расшифруйте с ее помощью криптограмму VDOKR RVVZK OTUII MNUUV RGFQK TOGNX VHOPG RPEVW VZYYO WKMOC ZMBR, применив ключ VIGENERE.
5. Напишите программу, которая использует псевдослучайный одноразовый блокнот. При запуске она должна генерировать блокнот с помощью генератора псевдослучайных чисел (не путать с генератором случайных чисел). Программа должна следить за тем, какие символы используются при шифровании и расшифровывании сообщений.
6. Напишите программу, что выводит частоту, с которой буквы встречаются в сообщении. Отсортируйте результат по количеству вхождений и выведите для каждой буквы сдвиг относительно E.
7. Напишите программу для обмена сообщениями с другим человеком с помощью большого одноразового блокнота.
8. Напишите программу, которая шифрует и расшифровывает сообщения с помощью блочного шифра.
9. Напишите программу, которая шифрует и расшифровывает сообщения с помощью маршрутного шифра.
10. Напишите программу, которая шифрует и расшифровывает сообщения с помощью перестановочного шифра по строкам/столбцам.
Контрольные вопросы
1. Что такое криптография?
2. Что такое блочный шифр?
3. Что такое подстановочные шифры, перестановочные шифры?
4. Что такое шифр Цезаря?
5. Что такое маршрутный шифр?
6. Что такое шифр Виженера?
7. Что такое одноразовый блокнот?
8. Что такое алгоритм RSA?
9. Области применения криптографии?

Была ли полезна данная статья?
Да
61.04%
Нет
38.96%
Проголосовало: 1101

или напишите нам прямо сейчас:

⚠️ Пожалуйста, пишите в MAX или заполните форму выше.
В России Telegram и WhatsApp блокируют - сообщения могут не дойти.
Написать в MAXНаписать в TelegramНаписать в WhatsApp