Добавил:
t.me Инфо для ГУАП студентов от меня: https://kafaka.notion.site/99e6d9b70ca74f7baef3daea17839e5a Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ЛР2 / Шифр_Виженера

.docx
Скачиваний:
3
Добавлен:
18.06.2024
Размер:
277.22 Кб
Скачать

Шифр Виженера

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

Система шифрования Виженера впервые была опубликована в 1586 г. и является одной из старейших и наиболее известных многоалфавитных систем. Свое название она получила по имени французского дипломата XVI века Блеза Виженера, который развивал и совершенствовал криптографические методы.

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

Шифрование начинается с построения так называемого квадрата Виженера, показанного выше в таблице размером 30х30 для русского алфавита. Верхняя строка квадрата представляет собой 30 букв алфавита открытого сообщения. Далее находятся 29 алфавитов шифрования, каждый из которых циклически сдвинут на одну букву относительно предыдущего алфавита. В таблице Виженера каждая строка начинается с ключевой буквы. Поэтому каждая строка представляет собой вариант алфавита шифра Цезаря, но со сдвигом на 1 позицию относительно предыдущего алфавита. Каждую букву открытого сообщения можно зашифровать с помощью любого из этих алфавитов. Если же отправитель для шифрования сообщения будет использовать только один из имеющихся алфавитов шифрования, то шифр Виженера фактически превратится в один из вариантов шифра Цезаря, который совершенно не является криптостойким.

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

Допустим, что надо зашифровать слово КРАСОТА. В качестве секретного ключа выберем, например, последовательность букв ИВУ. В таблице Виженера с каждой из этих трёх букв начинаются три алфавита шифрования.

Запишем секретный ключ ИВУ последовательно под исходным сообщением:

КРАСОТА

ИВУИВУИ

Находим «пересечение по столбцу» символа сообщения К в алфавите открытого сообщения (верхняя строка в таблице Виженера) и строки алфавита шифрования в таблице Виженера, начинающегося с буквы И. Поэтому результат замены символа К открытого сообщения – это буква Т, для буквы Р открытого сообщения заменой является также буква Т (из алфавита шифрования, начинающегося с буквы В) и так далее, пока постепенно не будет «пройдено» всё открытое сообщение. В итоге получаем шифрограмму ТТУЩРЕИ. Хорошо видно, что при шифровании по методу Виженера уже «заработал» принцип рассеяния, поскольку, например, две совершенно разные буквы открытого сообщения в шифрограмме представлены («замаскированы») одной и той же буквой Т, а буква А открытого сообщения в шифрограмме представлена двумя различными буквами – буквами У и И. В качестве секретного ключа может быть использовано любое сочетание букв или даже целое предложение.

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

ci = (mi + ki) mod N. (1)

где ci i-й символ зашифрованного сообщения, mii-й символ открытого сообщения, kii-й символ секретного ключа, N – мощность алфавита открытого сообщения (общее количество символов в алфавите открытого сообщения), индекс i изменяется от 0 до N - 1. Предварительно все символы алфавита открытого сообщения должны быть пронумерованы (в диапазоне от 0 до N – 1).

Расшифрование сообщения производится по следующей формуле:

mi = (ci - ki) mod N. (2)

Следует учитывать, что при вычитании по формуле (2) может получиться отрицательное число-результат. Для получения правильного результата к разности ci - ki в этом случае надо прибавить модуль N:

mi = (ci - ki + N) mod N. (2а)

Пусть секретный ключ содержит L символов (длина ключа), каждый из которых может принимать значения от 0 до (N - 1). Тогда общее ключевое пространство для ключа длиной L равно NL, так как на каждой из L позиций символов ключа может быть любое из N чисел (независимо от чисел, находящихся на других позициях символов ключа).

Приведем значения NL при N = 30 в зависимости от значений L:

L

1

2

3

4

5

6

7

30L

30

900

27000

810000

24300000

0,729 •109

0,2187•1011

L

8

9

10

30L

0,6561•1012

0,19683 •1014

0,59049•1015

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

30-буквенный алфавит открытого сообщения и его нумерация по порядку:

Пусть выбрано секретное ключевое слово АМБРОЗИЯ, а надо зашифровать открытое сообщение ПРИЛЕТАЮ СЕДЬМОГО. Выпишем сообщение, под ним запишем ключевое слово АМБРОЗИЯ, по мере необходимости периодически его повторяя, поскольку секретный ключ короче длины сообщения (получается так называемая ключевая гамма). В третью строку запишем буквы шифртекста, рассчитанные по формуле (1) при N = 30.

В результате получим:

Сообщение

П

14

Р

15

И

9

Л

10

Е

5

Т

17

А

0

Ю

28

С

16

Е

5

Д

4

Ь

26

М

11

О

13

Г

3

О

13

Ключ

А

0

М

11

Б

1

Р

15

О

13

З

7

И

8

Я

29

А

0

М

11

Б

1

Р

15

О

13

З

7

И

8

Я

29

Шифртекст

П

14

Ь

26

Л

19

Ы

25

У

18

Щ

24

И

8

Э

27

С

16

С

16

Е

5

М

11

Щ

24

Х

20

М

11

Н

12

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

Соседние файлы в папке ЛР2