
- •Методические указания по решению задач Шифр замены
- •Полибианский квадрат
- •Шифрование биграммами
- •Шифр Цезаря
- •Многоалфавитные шифры замены. Шифр Виженера
- •Шифр One – Time – Pad (otp)
- •Шифрование с автоключом. Алгоритм «Crypto»
- •Простейший шифр перестановки
- •Магические квадраты
- •Задание к самостоятельной работе
Шифр One – Time – Pad (otp)
Шифр ОТР – это единственный шифр, который является абсолютно надежным, т.е.его взлом невозможен. Одним из примеров является шифр, изобретенный в 1917 году Г.Вернамом и названный его именем.
Метод шифрования здесь очень прост: в качестве открытого текста берется поток битов, а в качестве секретного ключа – случайный набор двоичных чисел такой же длины, как и открытый текст. Криптограмма получается тупеем сложения элементов открытого текста и элементов ключа без учета переноса, т.е. по правилу 1 + 1 = 0, а не 1 + 1 = 10. Если последовательность, являющаяся ключом, действительно случайна, то криптоаналитик не имеет никакой возможности взломать данный шифр.
Основная проблема этого способа шифрования состоит в том, что ключ не имеет постоянной длины, зависит только от длины открытого текста и не может быть использован повторно. Это означает, что каждый сеанс шифрования уникален и не дает никакой информации о любом другом сеансе шифрования, поэтому невозможно применить данные, полученные при взломе одной из криптограмм, для анализа других. Однако для шифрования с помощью алгоритма ОТР получателю сообщения необходимо иметь доступ к тому же ключу, который был использован отправителем.
Пример 9.
Пусть открытый текст преобразован в двоичную последовательность 010101010101010101010101010, а в качестве ключа была случайным образом сгенерирована последовательность 1010101010101010101010101.
Тогда, используя правило сложения двоичных чисел, получим криптограмму 1111111111111111111111111.
Шифрование с автоключом. Алгоритм «Crypto»
Шифр, в котором сам открытый текс или получающаяся криптограмма используется в качестве «ключа», называется шифром с автоключом. Шифрование в этом случае начинается с ключа, называемого первичным, и продолжается с помощью открытого текста или криптограммы, смещенной ни длину первичного ключа.
Пример 10.
Шифрование с автоключом при использовании открытого текста:
Открытый текст |
ШИФРОВАНИЕ_ЗАМЕНОЙ |
Автоключ |
КЛЮЧШИФРОВАНИЕ_ЗАМ |
Криптограмма |
ВФТЗЖЛХЮЧИАХЙТЕХПЦ |
Ш – 23 по порядку, К – 11 по порядку, то 23 + 11 = 34, что соответствует по порядку букве В, если начинаем считать с буквы Ш и т.д.
Пример 11.
Шифрование с автоключом при использовании криптограммы:
Открытый текст |
ШИФРОВАНИЕ_ЗАМЕНОЙ |
Автоключ |
КЛЮЧВФТЗСЧУХЪЭУЭЫЙ |
Криптограмма |
ВФТЗСЧУЧЪЭУЭЫЙЩКЙУ |
Алгоритм «Crypto» использует шифрование с автоключом. Рассмотрим его более подробно.
При шифровании формируется случайный ключ длиной от 20 до 256 символов (длина ключа также определяется случайно), с помощью которого выполняется шифрование исходного текста. Секретный ключ стоится на основе упорядоченных выборок с возвращением m элементов из n возможных, причем m>n.
Алгоритм при повторном шифровании открытого текста использует только блоки полученной криптограммы, что также затрудняет криптоанализ. Кроме того, алгоритм позволяет изменить вероятность появления символов в тексте сообщения, что повышает устойчивость алгоритма к атаке, основанной на вероятностном шифровании.
Ключом при шифровании является случайная последовательность символов алфавита. При попытке угадывания ключа для дешифрования ошибка всего в одном символе ключа ведет к неправильной расшифровке всей криптограммы.
Для шифрования текста используется следующая таблица символов:
1 |
1 |
21 |
) |
41 |
В |
61 |
Ц |
81 |
и |
101 |
ъ |
121 |
Q |
141 |
k |
2 |
2 |
22 |
- |
42 |
Г |
62 |
Ч |
82 |
к |
102 |
ь |
122 |
R |
142 |
l |
3 |
3 |
23 |
_ |
43 |
Д |
63 |
Ш |
83 |
л |
103 |
ы |
123 |
S |
143 |
m |
4 |
4 |
24 |
+ |
44 |
Е |
64 |
Щ |
84 |
м |
104 |
й |
124 |
T |
144 |
n |
5 |
5 |
25 |
= |
45 |
Ё |
65 |
Э |
85 |
н |
105 |
A |
125 |
U |
145 |
o |
6 |
6 |
26 |
\ |
46 |
Ж |
66 |
Ю |
86 |
о |
106 |
B |
126 |
V |
146 |
p |
7 |
7 |
27 |
/ |
47 |
З |
67 |
Я |
87 |
п |
107 |
C |
127 |
W |
147 |
q |
8 |
8 |
28 |
| |
48 |
И |
68 |
Ъ |
88 |
р |
108 |
D |
128 |
X |
148 |
r |
9 |
9 |
29 |
, |
49 |
К |
69 |
Ь |
89 |
с |
109 |
E |
129 |
Y |
149 |
s |
10 |
0 |
30 |
. |
50 |
Л |
70 |
Й |
90 |
т |
110 |
F |
130 |
Z |
150 |
t |
11 |
|
31 |
~ |
51 |
М |
71 |
Ы |
91 |
у |
111 |
G |
131 |
a |
151 |
u |
12 |
! |
32 |
@ |
52 |
Н |
72 |
а |
92 |
ф |
112 |
H |
132 |
b |
152 |
v |
13 |
« |
33 |
# |
53 |
О |
73 |
б |
93 |
х |
113 |
I |
133 |
c |
153 |
w |
14 |
№ |
34 |
$ |
54 |
П |
74 |
в |
94 |
ц |
114 |
J |
134 |
d |
154 |
x |
15 |
; |
35 |
^ |
55 |
Р |
75 |
г |
95 |
ч |
115 |
K |
135 |
e |
155 |
y |
16 |
% |
36 |
& |
56 |
С |
76 |
д |
96 |
ш |
116 |
L |
136 |
f |
156 |
z |
17 |
: |
37 |
. |
57 |
Т |
77 |
е |
97 |
щ |
117 |
M |
137 |
g |
157 |
[ |
18 |
? |
38 |
< |
58 |
У |
78 |
ё |
98 |
э |
118 |
N |
138 |
h |
158 |
] |
19 |
* |
39 |
А |
59 |
Ф |
79 |
ж |
99 |
ю |
119 |
O |
139 |
i |
159 |
{ |
20 |
( |
40 |
Б |
60 |
Х |
80 |
з |
100 |
я |
120 |
P |
140 |
j |
160 |
} |
Каждый символ в данном алфавите имеет свой порядковый номер. При работе с текстом сообщения под номером символа сообщения мы будем понимать номер данного символа в данном алфавите.
Шифрование производится по следующей схеме:
Определяется символы, которые используются в тексте сообщения менее чем n раз.
К исходному тексту дописываются эти символы: символ исходного текста – дописанный символ, символ исходного текста – дописанный символ, и т.д.
Полученный текст разбивается на блоки длиной, равной выбранной длине ключа.
Каждый блок шифруется с помощью секретного ключа: каждый символ текста сообщения сдвигается «по кругу» на n символов, где n определяется как номер очередного символа секретного ключа.
На следующем шаге формируется новый секретный ключ по следующему правилу: пусть А – элемент ключа, тогда Аi = А1 + …+ Аi. С помощью полученного ключа проводится второй раунд шифрования.
Третий раунд шифрования проводится с помощью третьего ключа, сформированного следующим образом: Аi = Ai + Ai+1 + … + An.
Над каждой парой полученных блоков выполняется следующая операция: текст правого блока шифруется по этому же алгоритму, используя в качестве секретного ключа текст левого блока.
Текст зашифрованного сообщения последовательно составляется из всех блоков.
При дешифровке полученного текста используется следующий алгоритм:
Текст зашифрованного сообщения делится на блоки, по длине равные длине используемого секретного ключа.
Над каждой парой блоков выполняется следующая операция: каждый левый блок расшифровывается с помощью текста правого блока в качестве секретного ключа. Дешифровка производится по следующему правилу: сдвиг по кругу против часовой стрелки на n, где n – номер символа ключа.
Полученный текст расшифровывается по тому же правилу с помощью трех секретных ключей.
Из полученного текста выписываются только нечетные символы.
Полученная последовательность представляет собой исходный открытый текст.