Scytale
Сложность атаки
Внешняя спецификация алгоритма расшифрования Scytale
Блок-схема алгоритма расшифрования Scytale
Агентурный шифр
Внешняя спецификация алгоритма расшифрования Агентурного шифра
Блок-схема алгоритма расшифрования Агентурного шифра
Vigenere
Внешняя спецификация алгоритма расшифрования Vigenere
Блок-схема алгоритма расшифрования Vigenere
Hill
Оценка сложности атаки
Внешняя спецификация алгоритма расшифрования Hill
Блок-схема алгоритма расшифрования Hill
ADFGVX
Внешняя спецификация алгоритма расшифрования ADFGVX
Блок-схема алгоритма расшифрования ADFGVX
Шифр, заданный вариантом
Блок-схема алгоритма зашифрования, заданного вариантом
Блок-схема алгоритма зашифрования, заданного вариантом
Заключение
1.32M
Категория: ИнформатикаИнформатика

3342КорниенкоАЕЛаб1

1.

Санкт-Петербургский государственный электротехнический
университет «ЛЭТИ» им. В.И. Ульянова (Ленина)
Лабораторная № 1
Изучение классических шифров
Студент: _______________ Корниенко А.Е. , группа 3342
Руководитель:___________ Племянников А.К., доцент каф. ИБ
Сант-Петербург 2026

2.

Цель. Повышение компетентности в области зашифрования и расшифрования
с помощью таких классических шрифтов, как "Scytale", "Агентурный",
"Vigenere", "Hill", "ADFGVX".
Для достижения поставленной цели предстояло решить следующие основные
задачи:
1) Изучить шифр "Scytale"
2) Изучить шифр "Агентурный"
3) Изучить шифр "Vigenere"
4) Изучить шифр "Hill"
5) Изучить шифр "ADFGVX“
6) Изучения шифр заданного вариантом

3. Scytale

Scytale - классический перестановочный шифр. При его
использовании изменяется порядок символов исходного
сообщения.
Ключом является количество строк в табличном представлении
алгоритма.
Количество столбцов будет вычисляться, как ⌈n / k⌉, где n - длина
открытого текста, k - ключ.

4. Сложность атаки

Сцитала имеет очень маленькое пространство ключей.
Предположим, злоумышленник знает длину сообщения — N символов. Ему достаточно
попробовать разные значения ширины строки:
2 буквы
3 буквы
4 буквы
5 букв
...
N букв
То есть в простейшем варианте количество вариантов порядка O(N).
Например, для сообщения длиной 30 символов можно проверить примерно несколько
десятков возможных ширин. Каждая проверка сама по себе очень дешёвая — нужно всего
лишь переставить символы.
Поэтому:
сложность грубой силы ≈ O(N²) по времени, если считать и перебор вариантов ключа, и
обработку всего сообщения для каждого варианта.

5.

Открытый текст:
123456 (6 символов)
Ключ: 7
Шифротекст: 123456_
1
2
3
4
5
6
-

6.

Открытый текст: 123456
(6 символов)
Ключ: 5
Шифротекст:
135__246__
1
2
3
4
5
6
-
-
-
-

7.

Открытый текст:
123456 (6 символов)
Ключ: 2
Шифротекст: 142536
1
2
3
4
5
6

8. Внешняя спецификация алгоритма расшифрования Scytale

Назначение: восстановление открытого текста из шифровки
Входные данные: C – шифротекст; k – ключ (диаметр жезла, число
символов на виток).
Выходные данные: S – расшифрованное сообщение
Ограничения: C – набор символов; k – целое положительное число.
Алгоритм расшифрования: Строится таблица размером k строк и ⌈n
/ k⌉ столбцов, где n – длина C. Шифротекст записывается по
строчкам, начиная с верхней строки. После этого текст читается
постолбцам, это и будет восстановленный открытый текст.

9. Блок-схема алгоритма расшифрования Scytale

10. Агентурный шифр

Агентурный шифр замены относится к классу классических шифров
моноалфавитной подстановки. При его применении каждый символ
исходного сообщения замещается другим символом согласно заранее
определённому ключу.
Ключ состоит из двух компонентов — пароля и сдвига. Пароль служит основой
для построения ключевого алфавита: вначале в него вписываются уникальные
символы пароля в порядке их появления, а затем — все остальные символы
исходного алфавита, не вошедшие в пароль. Сдвиг задаёт, на сколько позиций
полученный ключевой алфавит циклически смещается при формировании
итоговой таблицы замены.
Стойкость шифра к атаке методом полного перебора оценивается как O(n!),
где n — мощность алфавита.

11.

Открытый текст: антон
Ключ: лозунг; 3
Шифротекст: упхрп
абвгдежзиклмнопрстуфхцчшщъыьэюя
унгабвдежикмпрстфхцчшщъыьэюялоз

12.

Открытый текст: антон
Ключ: лозунг; 1
Шифротекст: октмк
абвгдежзиклмнопрстуфхцчшщъыьэюя
озунгабвдежикмпрстфхцчшщъыьэюял

13. Внешняя спецификация алгоритма расшифрования Агентурного шифра

Назначение: восстановление открытого текста из шифротекста, полученного методом моноалфавитной
подстановки.
Входные данные: C – шифротекст; p – пароль; s – сдвиг.
Выходные данные: S – расшифрованное сообщение.
Ограничения: C – последовательность символов алфавита замены; p – непустая строка символов
исходного алфавита; s – целое число.
Алгоритм расшифрования: Из пароля p формируется ключевой алфавит: сначала записываются
уникальные символы пароля в порядке их появления, затем — оставшиеся символы исходного
алфавита, не вошедшие в пароль. Полученный ключевой алфавит циклически сдвигается на s позиций,
образуя алфавит замены. Строится обратная таблица подстановки, в которой каждому символу алфавита
замены соответствует символ исходного алфавита, стоящий на той же позиции. Каждый символ
шифротекста C заменяется по этой таблице на соответствующий символ исходного алфавита. Результат
— расшифрованное сообщение S.

14. Блок-схема алгоритма расшифрования Агентурного шифра

15. Vigenere

Шифр Виженера относится к классу классических полиалфавитных
шифров подстановки. При его применении символы исходного
сообщения изменяются в соответствии с ключом.
Ключом служит ключевое слово, которое периодически повторяется на
протяжении всего сообщения. Для зашифрования каждый символ
открытого текста складывается с соответствующим ему символом ключа
по модулю мощности алфавита, и полученный символ записывается в
шифротекст. Если длина ключа меньше длины открытого текста, ключ
циклически повторяется до необходимой длины.
Стойкость шифра к атаке методом полного перебора оценивается как
O(n! / (n − m)!), где n — мощность алфавита, m — длина ключа.

16.

Открытый текст: anton
Ключ: key
Шифротекст: krryr
a
k
0
1
a
k
n
e
b
l
2
3
c
m
f
t
y
g
4
d
n
6
f
p
i
n
e
5
e
o
h
o
k
g
q
j
7
h
r
k
8
i
s
l
9
j
t
m
10
k
u
n
11
l
v
o
12
m
w
p
13
q
14
n
x
o
y
r
15
p
16
17
18
19
20
21
a
b
c
d
e
f
g
h
i
j
k
l
24
25
r
s
t
u
v
w
x
y
z
a
b
c
d
e
f
g
h
i
j
u
v
w
x
y
z
z
s
t
a
z
23
q
e
y
22
m
n
o
p
q
r
s
t
b
u
c
v
d
w
x

17.

Открытый текст: levels
Ключ: key
Шифротекст: vitopq
l
e
v
e
l
s
k
e
y
k
e
y
0
1
a
k
b
l
2
c
m
f
3
g
4
d
n
e
o
h
5
f
p
i
6
g
q
j
7
h
r
k
8
i
s
l
9
j
t
m
10
k
u
n
11
l
v
o
12
m
w
p
13
q
14
n
x
o
y
r
15
p
16
17
18
19
20
21
a
b
c
d
e
f
g
h
i
j
k
l
24
25
r
s
t
u
v
w
x
y
z
a
b
c
d
e
f
g
h
i
j
u
v
w
x
y
z
z
s
t
a
z
23
q
e
y
22
m
n
o
p
q
r
s
t
b
u
c
v
d
w
x

18. Внешняя спецификация алгоритма расшифрования Vigenere

Входные данные: C – шифротекст; k – ключевое слово.
Выходные данные: S – расшифрованное сообщение.
Ограничения: C – последовательность символов алфавита; k – непустая строка
символов алфавита; алфавит A – упорядоченный набор символов мощности n.
Алгоритм расшифрования: Ключевое слово k циклически повторяется до
длины, равной длине шифротекста C. Для каждого символа C[i] определяется
его индекс в алфавите A, из которого вычитается индекс соответствующего
символа ключа k[i] по модулю мощности алфавита n. Полученный индекс
указывает на символ открытого текста в алфавите A. Найденный символ
записывается в строку S. Результат — расшифрованное сообщение S.

19. Блок-схема алгоритма расшифрования Vigenere

20. Hill

Шифр Хилла относится к классу классических полиграфических шифров
подстановки. При его применении символы открытого текста
преобразуются в другие символы с помощью матричного умножения.
Ключом служит квадратная обратимая матрица размера k × k. Открытый
текст переводится в числовую последовательность в соответствии с
выбранным алфавитом и разбивается на блоки по k символов; если
длина текста не кратна k, в конец добавляется дополнительный символ
(обычно x). Каждый блок из k символов представляется в виде столбца
матрицы. Этот столбец умножается на ключевую матрицу, результат
берётся по модулю мощности алфавита — так получается блок
шифротекста.
Стойкость шифра к атаке методом полного перебора оценивается как
O(n^(k·k)), где n — мощность алфавита, k — размер блока.

21. Оценка сложности атаки

Что перебирает атакующий
Ключ — это квадратная матрица размера k × k. Каждый её элемент
— число от 0 до n − 1, где n — мощность алфавита.
Число элементов в матрице:
• k × k = k²
Число вариантов для каждого элемента:
•n
Общее число возможных матриц:
• n × n × ... × n (k² раз) = n^(k²)

22.

Открытый текст:
ABCDEFGH
Ключ:
3 15 12 5
7 5 3 11
13 14 6 15
4 3 7 1
Шифровка: CSTUMSDC
0
a
a
c
e
g
1
b
b
d
f
h
2
c
3
d
4
e
3
7
13
4
5
f
15
5
14
3
6
g
7
h
12
3
6
7
8
i
5
11
15 *
1
9
j
10
k
11
l
0
2
4
6
12
m
13
n
1
3
5
7
14
o
15
p
16
q
54
44
71
20
17
r
194
148
263 mod
80
18
s
19
t
20
u
26 =
21
v
22
w
23
x
2
18
19
20
24
25
y
z
12
18
3
2
c
s
t
u
m
s
d
c

23.

Открытый текст: ANTON
Ключ:
3 15 12 5
7 5 3 11
13 14 6 15
4 3 7 1
Шифровка: ZQMEVIMT
0
a
1
b
a
n
n
x
t
x
o
x
2
c
3
d
4
e
5
f
3
7
13
4
g
15
5
14
3
16
3
13
18
6
7
h
12
3
6
7
15
22
7
7
8
i
9
j
5
11
15 *
1
20
17
18
3
10
k
l
0
13
19
14
1
8*
4
23
11
12
m
13
n
13
23
23
23
25
16
12
4
14
o
p
493
276
506
186
21
8
12
19
15
16
q
17
r
18
s
775
528
974 mod
305
884
663
669
690
19
t
20
u
v
26
22
w
25
16
12
4
26 =
715
595 mod
621
907
21
23
x
21
8
12
19
24
y
z
z
q
m
e
0
13
19
14
25
13
23
23
23
v
i
m
t

24. Внешняя спецификация алгоритма расшифрования Hill

Назначение: восстановление открытого текста из шифротекста, полученного методом
полиграфической подстановки на основе матричного умножения.
Входные данные: C – шифротекст; K – ключевая матрица размера k × k; A – исходный
алфавит.
Выходные данные: S – расшифрованное сообщение.
Ограничения: C – последовательность символов алфавита A, длина кратна k; K –
квадратная обратимая матрица размера k × k, элементы которой — числа от 0 до n −
1, где n — мощность алфавита A; A – упорядоченный набор символов мощности n.
Алгоритм расшифрования: Шифротекст C переводится в числовую
последовательность в соответствии с алфавитом A и разбивается на блоки по k
символов. Каждый блок представляется в виде столбца матрицы. Вычисляется
обратная матрица K⁻¹ по модулю мощности алфавита n. Каждый столбец шифротекста
умножается на K⁻¹, результат берётся по модулю n. Полученные числовые столбцы
переводятся обратно в символы алфавита A и конкатенируются. Результат —
расшифрованное сообщение S.

25. Блок-схема алгоритма расшифрования Hill

26. ADFGVX

ADFGVX — классический фракционный перестановочный шифр, разработанный в
годы Первой мировой войны. Он сочетает в себе два последовательных
преобразования: подстановку и перестановку.
Ключ шифра состоит из двух независимых частей — пароля подстановки и пароля
перестановки.
Первый этап — подстановка. На основе пароля подстановки формируется таблица
ADFGVX: в её начало записываются уникальные символы пароля, после чего
дописываются оставшиеся символы алфавита. Каждому символу исходного
сообщения ставится в соответствие пара символов из набора {A, D, F, G, V, X} — буква
строки и буква столбца, на пересечении которых этот символ находится в таблице.
Второй этап — перестановка. Полученная после подстановки последовательность
записывается в таблицу, число столбцов которой равно длине пароля перестановки.
Сам пароль задаёт порядок перестановки столбцов: буквы пароля нумеруются по
алфавиту, и столбцы выстраиваются в соответствии с этими номерами. После
перестановки символы считываются по столбцам — так формируется итоговое
зашифрованное сообщение.
Стойкость к атаке методом полного перебора оценивается как O(n! · m!), где n —
мощность алфавита, m — длина пароля перестановки.

27.

Открытый текст: HALLO
Ключ:
подстановки: KRAUT
перестановки: BALK
Шифровка: XFXDFFFFAF
0
a
1
b
2
c
3
d
h
4
e
a
k
r
5
f
6
g
7
h
8
i
9
j
10
k
l
l
a
u
11
l
12
m
13
n
14
o
15
p
16
q
17
r
18
s
19
t
20
u
21
v
22
w
23
x
24
y
25
z
o
t
b
a
d
f
g
v
x
a
k
c
i
p
y
d
r
d
j
q
z
4
dx
af
f
a
e
l
s
5
ff
g
u
f
m
v
0
6
ff
v
t
g
n
w
1
7
fx
x
b
h
o
x
2
8
a
2
3
9
l
1
k
4
3
b
d
f
f
a
x
f
x
l
a
f
k
f
f
xfx
dff
ff
af
dx
h
a
x
f
x
b
d
f
f
k
f
f
l
a
f
b
d
f
f
a
x
f
x
l
a
f
k
f
f
af
a
ff
l
ff
l
fx
o

28. Внешняя спецификация алгоритма расшифрования ADFGVX

Входные данные: C – шифротекст; p_s – пароль подстановки; p_t – пароль
перестановки.
Выходные данные: S – расшифрованное сообщение.
Ограничения: C – последовательность символов из набора {A, D, F, G, V, X},
длина кратна длине пароля перестановки; p_s – непустая строка символов
алфавита; p_t – непустая строка символов алфавита.
Алгоритм расшифрования: Из пароля подстановки p_s формируется таблица
ADFGVX: сначала записываются уникальные символы пароля, затем —
оставшиеся символы алфавита. Из пароля перестановки p_t строится порядок
столбцов: буквы пароля нумеруются по алфавиту. Шифротекст C разбивается
на строки по числу столбцов, равному длине p_t, и записывается в таблицу по
столбцам. Столбцы переставляются в порядке, обратном порядку
перестановки. Затем символы считываются построчно. Полученная
последовательность разбивается на пары символов из набора {A, D, F, G, V, X}.
Каждая пара определяет строку и столбец в таблице подстановки, по которым
находится исходный символ. Результат — расшифрованное сообщение S.

29. Блок-схема алгоритма расшифрования ADFGVX

30. Шифр, заданный вариантом

Зашифровать строку байт P способом, основанным на операции
матричной перестановки (прототипом служит шифр двойной перестановки).
Алфавитом этого сообщения является множество B размера |B|. Ключом зашифрования является две перестановки целых чисел. Первая (K1)
задает перестановку n строк шифрующей матрицы, а вторая (K2) перестановку m
столбцов этой матрицы. Шифруемая строка записывается в строки матрицы
в последовательности слева направо и сверху вниз так, чтобы все строки
имели равную длину, за исключение быть может последней. Зашифрование
выполняется путем перестановки сначала строк, а потом и столбцов в соответствии с возрастанием элементов перестановки. Шифровка
получается путём извлечения и конкатенации байт из первой и последующих строк матрицы, полученной в результате перестановок.
ПРИМЕР:
P = {75,73,76,73,77,81,74, 78, 77,75,77}, |P|= 11;
B = {72, … ,79, 80 ,81}, |B|=10;
K1={2, 3, 1}, n=3;
K2={3, 1, 5, 4, 2}, m=5;
C={ 77,73,77,75,73,76,74,75,81,77,78}, |C|=11.
Сложность атаки методом грубой силы: O(n! × m!), где n — число строк матрицы,
m — число столбцов матрицы.

31.

32. Блок-схема алгоритма зашифрования, заданного вариантом

33. Блок-схема алгоритма зашифрования, заданного вариантом

34. Заключение

В работе получены следующие результаты:
1) Исследован шифр Scytale («Сцитала») и установлены его характеристики: относится к классу перестановочных шифров, в
качестве ключа выступает число строк таблицы, в которую укладывается сообщение. Трудоёмкость атаки полным
перебором: O(n²), где n — длина шифрованного текста.
2) Исследован Агентурный шифр и установлены его характеристики: представляет собой шифр моноалфавитной
подстановки, ключевыми данными служат пароль (на его основе строится ключевой алфавит) и величина сдвига.
Трудоёмкость атаки полным перебором: O(n!), где n — мощность алфавита.
3) Исследован шифр Vigenère («Виженера») и установлены его характеристики: является полиалфавитным шифром
подстановки, ключом служит ключевое слово, периодически повторяющееся при шифровании. Трудоёмкость атаки
полным перебором: O(n! / (n − m)!), где n — мощность алфавита, m — длина ключа.
4) Исследован шифр Hill («Хилла») и установлены его характеристики: относится к полиграфическим шифрам подстановки,
ключом является обратимая квадратная матрица порядка k × k. Трудоёмкость атаки полным перебором: O(n^(k·k)), где n
— мощность алфавита, k — размер блока.
5) Исследован шифр ADFGVX и установлены его характеристики: представляет собой фракционный перестановочный шифр,
ключами служат пароль подстановки и пароль перестановки. Трудоёмкость атаки полным перебором: O(n! · m!), где n —
мощность алфавита, m — размер пароля перестановки.
6) Изучен шифр матричной перестановки (прототип шифра двойной перестановки) и выявлены его следующие
характеристики: симметричный перестановочный шифр, в котором открытый текст укладывается в матрицу размера n × m, а
порядок строк и столбцов этой матрицы изменяется в соответствии с двумя числовыми перестановками-ключами. Разработан
и программно реализован алгоритм шифрования: на вход подаются открытый текст P, мощность алфавита |B|, ключи K1
(перестановка строк) и K2 (перестановка столбцов), размеры матрицы n и m; на выходе получается шифртекст C.
English     Русский Правила