- •Криптографические алгоритмы на основе замены и перестановки
- •1. Цель
- •2. Общие положения
- •Cсшоидмвщомвсвпноеиадаязмомирзноавоилевсоемзздсжоговийино.
- •Всвязиссоздавшимсяположениемотодвигаемсрокивозвращениядомойрамзай записьзаписьзаписьзаписьзаписьзаписьзаписьзаписьзаписьзаписьзапис
- •Йссзшдшсюпхьйшчфгыцоыцчбфиффаохдсрфьммбшажпвюпумзщфхщылоьцымзмциы
- •3. Ключевые вопросы
- •4. Задание для самоконтроля
- •5. Пояснения к заданиям по самоконтролю
- •6. Список литературы
Cсшоидмвщомвсвпноеиадаязмомирзноавоилевсоемзздсжоговийино.
Ключевое слово известно, конечно, и адресату, который поэтому без труда расшифрует это сообщение. Но для тех, кто этим ключом не владеет, восстановление исходного текста весьма проблематично (хотя в принципе и возможно). Частотный анализ здесь по вполне понятным причинам не решает задачи. В лучшем случае, поскольку частоты букв примерно такие, как в таблице 2.2, он позволяет предположить, что было применено перестановочное кодирование.
Таблица 2.4 |
||||||
|
0 |
1 |
2 |
3 |
4 |
5 |
0 |
|
з |
и |
ы |
р |
с |
1 |
а |
т |
у |
й |
ь |
э |
2 |
|
б |
в |
ф |
к |
л |
3 |
м |
ю |
я |
г |
х |
ц |
4 |
ч |
н |
о |
|
д |
е |
5 |
ж |
ш |
щ |
п |
|
|
Имеется ряд шифров, в которых совмещены приемы подстановочного и перестановочного кодирования. Шифр можно еще более усложнить, если дополнительно к этому каждую букву заменять не одним, а двумя или несколькими символами (буквами или числами). Рассмотрим пример. Расположим буквы русского алфавита в квадратной таблице 66 произвольным образом, например, так, как в таблице 2.4. Каждую букву шифруем парой цифр: первая цифра это номер строки, в которой стоит данная буква, вторая номер столбца. Например, букве «б» соответствует обозначение 21, а слову «шифр» обозначение 51022304.
Еще большие трудности для криптоанализа представляет шифр, связываемой с именем Тритемиуса. Этот шифр является развитием рассматриваемого в дополнении 2 кода Цезаря и состоит в следующем. Буквы алфавита нумеруются по порядку числами 0, 1,..., 30 (см. табл. 2.2). При шифровании ключевое слово (или номера его букв) подписывается под сообщением с повторениями, как показано ниже:
Всвязиссоздавшимсяположениемотодвигаемсрокивозвращениядомойрамзай записьзаписьзаписьзаписьзаписьзаписьзаписьзаписьзаписьзаписьзапис
Каждая буква сообщения «сдвигается» вдоль алфавита по следующему правилу: буква с номером m, под которой стоит буква ключевого слова с номером k, заменяется на букву с номером l = m +k (если m + k < 31) или букву с номером l = m + k31 (если m + k 31). Например, первая буква «в» сдвигается на 7 букв и заменяется буквой «й», следующая буква «с» остается без изменения и т. д. Таким образом, номер l кодирующей буквы вычисляется по формуле
l =m + k (mod 31). (2.5)
В цифровых обозначениях исходное сообщение и повторяемое ключевое слово запишутся в следующем виде (табл.2.5):
-
Таблица 2.5
Сообщение
2
17
2
30
7
8
17
17
14
7
4
0
2
Ключ
7
0
15
8
17
27
7
0
15
8
17
27
7
Сообщение
24
8
12
17
30
15
14
11
14
6
5
13
8
Ключ
0
15
8
17
27
7
0
15
8
17
27
7
0
Сообщение
5
12
14
18
14
4
2
8
3
0
5
12
17
Ключ
15
8
17
27
7
0
15
8
17
27
7
0
15
Сообщение
16
14
10
8
2
14
7
2
16
0
25
5
13
Ключ
8
17
27
7
0
15
8
17
27
7
0
15
8
Сообщение
8
30
4
14
12
14
9
16
0
12
7
0
9
Ключ
17
27
7
0
15
8
17
27
7
0
15
8
17
После суммирования верхней и нижней строки по модулю 31 получаем последовательность чисел:
9. 17. 17. 7. 24. 4. 24. 17. 29. 15. 21. 27. 9. 24. 23. 20. 3. 26. 22. 14. 26, 22. 23. 1. 20. 8. 20. 20. 0. 14, 21. 4. 17. 16. 20. 27. 12. 12. 1. 24. 0. 6. 15. 2. 29. 15. 19. 12. 7. 25. 20. 21. 25. 26. 11. 14. 27. 22. 26. 12. 7. 12. 22. 8. 26.
Наконец, заменив числа на буквы, приходим к закодированному тексту:
