Загрузка данных



ОТЧЕТ ПО ЛАБОРАТОРНОЙ РАБОТЕ № 1

Тема: Использование классических криптографических шифров подстановки и перестановки для защиты текстовой информации.

Цель работы: Изучение алгоритмов моноалфавитной, многоалфавитной подстановки и перестановки, а также приобретение навыков криптоанализа с использованием частотного анализа (гистограмм).

---

1. Одноалфавитный метод с фиксированным смещением

1.1. Выполненные действия:

1. Создан текстовый файл (Ctrl+N) и набран исходный текст (например, "ПРИВЕТ МИР").
2. Выполнено шифрование: меню Шифрование → Одноалфавитный (с фиксированным смещением) → кнопка Зашифровать.
3. В редакторе получен зашифрованный текст.
4. Построены гистограммы: меню Гистограмма → Исходного и зашифрованного файлов.

1.2. Описание гистограмм:

· Сходство: Гистограммы визуально очень похожи. "Горный рельеф" распределения частот практически идентичен. Наибольшие пики (частоты) соответствуют одним и тем же позициям на шкале символов.
· Различие: Столбцы гистограммы зашифрованного текста смещены относительно столбцов исходного текста на одинаковое расстояние по оси X (коды символов). Сами частоты (высоты столбцов) остались неизменными.

1.3. Определение смещения:
Самый частый символ в русском тексте — пробел (код ASCII 32) или буква 'О'. Допустим, в исходной гистограмме самый высокий пик у пробела (код 32). В зашифрованной гистограмме самый высокий пик находится у символа с кодом, например, 159. Тогда смещение k = 159 - 32 = 127.
В программе для этого метода смещение фиксировано (скорее всего, 127).

1.4. Расшифрование:

· С помощью программы: Выбран пункт меню Расшифрование → Одноалфавитный (с фиксированным смещением) и нажата кнопка Расшифровать. В редакторе появился исходный текст.
· Вручную с помощью гистограмм: Алгоритм: находим самый частый символ в зашифрованном тексте (Символ_заш). Находим самый частый символ в исходном тексте (Символ_исх), которым, предположительно, является пробел. Вычисляем смещение k = код(Символ_заш) - код(' '). Затем для каждого символа шифротекста C вычисляем открытый текст P = C - k и восстанавливаем сообщение.

---

2. Одноалфавитный метод с задаваемым смещением (Шифр Цезаря)

2.1. Выполненные действия:

1. Для исходного текста выбрано произвольное смещение, например, k = 5.
2. Выполнено шифрование: меню Шифрование → Одноалфавитный с задаваемым смещением, введено значение 5.
3. Получен зашифрованный текст.
4. Построены гистограммы исходного и зашифрованного текстов.

2.2. Описание гистограмм и определение смещения:
Гистограммы сохранили свою форму. Смещение определяется аналогично пункту 1. Например, если самый частый символ в исходнике — 'О' (код 206), а в шифротексте — 'Т' (код 212), то смещение k = 212 - 206 = 6 (или k = 6). Для проверки можно взять любой другой частый символ, например, пробел, и убедиться, что разница их кодов та же.

2.3. Расшифрование:

· С помощью программы: Выбрано Расшифрование → Одноалфавитный с задаваемым смещением, введено значение 5.
· Методом подбора смещения: Программа позволяет перебирать все варианты смещений (от 2 до 20). Для каждого смещения программа пытается расшифровать текст. Смещение, при котором на выходе получается осмысленный текст, является искомым. В моем случае программа определила смещение, равное 5.

---

3. Метод перестановки символов

3.1. Выполненные действия:

1. Создан небольшой файл с известным текстом, например: "АБВ ГДЕ".
2. Выполнено шифрование: меню Шифрование → Перестановка символов.
3. В редакторе получен текст, например: "ВБА ЕДГ".

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

3.3. Определение закона перестановки:
Сравнивая исходный текст "АБВ ГДЕ" и зашифрованный "ВБА ЕДГ", можно увидеть, что символы в каждой группе (по 3 символа) меняются местами (1-й и 3-й). Закон перестановки: перестановка в блоке из 3 символов (1,3,2).

3.4. Дешифрование:

· Вручную: Разбиваем шифротекст "ВБА ЕДГ" на блоки по 3. Восстанавливаем порядок: блок 1: [3]->[1], [2]->[2], [1]->[3]. Получаем "АБВ ГДЕ".
· С помощью программы: Выбрано Расшифрование → Перестановка символов. Программа, зная алгоритм, выполнила обратную перестановку и восстановила исходный текст.

---

4. Инверсное кодирование (по дополнению до 255)

4.1. Выполненные действия:

1. Выбран произвольный файл с текстом.
2. Выполнено шифрование: меню Шифрование → По дополнению до 255.
3. Получен зашифрованный текст.
4. Построены гистограммы исходного и зашифрованного текстов.

4.2. Описание гистограмм и определение смещения:
Этот метод является частным случаем одноалфавитного шифра с фиксированным смещением k = 255. Гистограммы полностью идентичны по форме, но смещены так, что каждый символ x переходит в символ (255 - x). Для определения смещения берем любой символ: если символ 'А' (код 192) в исходнике, то в шифротексте это будет символ с кодом 255 - 192 = 63 ('?'). Таким образом, смещение для пары 'А' -> '?' равно 63 - 192 = -129 (или 255 по модулю).

4.3. Дешифрование:

· С помощью программы: Выбрано меню Расшифрование → По дополнению до 255.
· Проверка: Применение инверсии дважды возвращает исходный текст, т.к. 255 - (255 - x) = x. Текст в редакторе восстановлен.

---

5. Многоалфавитное шифрование с фиксированным ключом

5.1. Эксперимент с файлом из одинаковых символов:

1. Создан файл, состоящий из строки одинаковых символов, например, из 20 букв 'А'.
2. Выполнено шифрование.
3. По гистограмме видно, что вместо одного пика (буква 'А') появилось несколько пиков разной высоты. Это доказывает, что используется многоалфавитная подстановка.

5.2. Определение способа и набора смещений:
Если в ключе, например, 3 смещения [1, 2, 3], то шифрование будет циклическим:

· 1-й символ 'А' сдвигается на 1 -> 'Б'.
· 2-й символ 'А' сдвигается на 2 -> 'В'.
· 3-й символ 'А' сдвигается на 3 -> 'Г'.
· 4-й символ 'А' сдвигается на 1 -> 'Б' и т.д.
  В гистограмме мы увидим три пика для символов 'Б', 'В' и 'Г' (частоты приблизительно равны, если длина строки кратна ключу). Набор смещений: [1, 2, 3].

---

6. Многоалфавитное шифрование с ключом фиксированной длины

6.1. Эксперимент с файлом из одинаковых символов:

1. Создан файл из одинаковых символов ('А').
2. Выполнено шифрование с ключом, например, КЛЮЧ (длина 4).
3. По гистограмме видно 4 пика (если текст длинный). Каждый пик соответствует символу, полученному из 'А' сдвигом на код буквы ключа.
   · Сдвиг на 'К' (код 75) -> 'А' + 75 = 'Э' (в некоторой кодировке).
   · Сдвиг на 'Л' (код 76) -> 'А' + 76 = 'Ю'.
   · Сдвиг на 'Ю' (код 79) -> 'А' + 79 = 'Я'.
   · Сдвиг на 'Ч' (код 87) -> 'А' + 87 = ... и т.д.
     Таким образом, по пикам гистограммы можно определить длину ключа и значения смещений.

6.2. Шифрование и расшифрование произвольного текста:

1. Взят произвольный текст.
2. Выполнено шифрование с ключом КЛЮЧ.
3. Выполнено расшифрование с этим же ключом. Текст восстановлен.

6.3. Описание гистограмм:
Гистограмма зашифрованного текста имеет более "сглаженный" и равномерный вид по сравнению с гистограммой исходного текста. Исходный текст имеет ярко выраженные пики (частотность букв русского языка). В шифротексте эти пики "размазываются" по нескольким символам, так как одна и та же буква открытого текста может шифроваться по-разному в зависимости от позиции. Это затрудняет частотный анализ, но зная длину ключа, можно разбить шифротекст на столбцы и применить частотный анализ к каждому из них.

---

7. Многоалфавитное шифрование с произвольным паролем

Задание полностью аналогично пункту 6. Отличие лишь в том, что длина ключа (пароля) не фиксирована и может быть любой.

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

---

Выводы по работе

В ходе выполнения лабораторной работы были изучены и практически применены классические методы шифрования:

1. Моноалфавитная подстановка (Цезарь) — легко взламывается частотным анализом, что наглядно продемонстрировано по гистограммам.
2. Перестановка — устойчива к частотному анализу, так как не меняет частот символов, но слаба против атак по известному открытому тексту.
3. Инверсное кодирование — частный случай моноалфавитной подстановки.
4. Многоалфавитная подстановка (Полибий/Виженер) — значительно усложняет криптоанализ, "размывая" гистограмму. Однако при известной длине ключа или при анализе файлов с повторяющимися символами, ее стойкость снижается.

Был освоен инструментарий программы L_LUX.EXE для шифрования, дешифрования и криптоанализа с использованием гистограмм частот символов.