15
Ъ |
218 |
11011010 |
ы |
251 |
11111011 |
|
|
|
|
|
|
Ы |
219 |
11011011 |
ь |
252 |
11111100 |
|
|
|
|
|
|
Ь |
220 |
11011100 |
э |
253 |
11111101 |
|
|
|
|
|
|
Э |
221 |
11011101 |
ю |
254 |
11111110 |
|
|
|
|
|
|
Ю |
222 |
11011110 |
я |
255 |
11111111 |
|
|
|
|
|
|
Я |
223 |
11011111 |
пробел |
32 |
00010000 |
|
|
|
|
|
|
а |
224 |
11100000 |
|
|
|
|
|
|
|
|
|
Приложение В. Блок подстановки в алгоритме шифрования ГОСТ
28147-89
|
8 |
|
7 |
|
6 |
|
5 |
|
4 |
|
3 |
|
2 |
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
1 |
|
13 |
|
4 |
|
6 |
|
7 |
|
5 |
|
14 |
|
4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
15 |
|
11 |
|
11 |
|
12 |
|
13 |
|
8 |
|
11 |
|
10 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
13 |
|
4 |
|
10 |
|
7 |
|
10 |
|
1 |
|
4 |
|
9 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
0 |
|
1 |
|
0 |
|
1 |
|
1 |
|
13 |
|
12 |
|
2 |
|
3 |
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
5 |
|
3 |
|
7 |
|
5 |
|
0 |
|
10 |
|
6 |
|
13 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
|
15 |
|
2 |
|
15 |
|
8 |
|
3 |
|
13 |
|
8 |
|
5 |
|
|
|
|
|
|
|
|
||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
6 |
10 |
|
5 |
|
1 |
|
13 |
|
9 |
|
4 |
|
15 |
|
0 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
7 |
4 |
|
9 |
|
13 |
|
8 |
|
15 |
|
2 |
|
10 |
|
14 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
8 |
9 |
|
0 |
|
3 |
|
4 |
|
14 |
|
14 |
|
2 |
|
6 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
2 |
|
10 |
|
6 |
|
10 |
|
4 |
|
15 |
|
3 |
|
11 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
10 |
3 |
|
14 |
|
8 |
|
9 |
|
6 |
|
12 |
|
8 |
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
11 |
14 |
|
7 |
|
5 |
|
14 |
|
12 |
|
7 |
|
1 |
|
12 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
12 |
6 |
|
6 |
|
9 |
|
0 |
|
11 |
|
6 |
|
0 |
|
7 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
13 |
11 |
|
8 |
|
12 |
|
3 |
|
2 |
|
0 |
|
7 |
|
15 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
14 |
8 |
|
2 |
|
15 |
|
11 |
|
5 |
|
9 |
|
5 |
|
5 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
12 |
|
12 |
|
14 |
|
2 |
|
3 |
|
11 |
|
9 |
|
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
16
Пример. Пусть 32-битная последовательность имеет вид
100 |
101 |
110 |
010 |
111 |
010 |
000 |
100 |
1 |
1 |
0 |
1 |
0 |
0 |
0 |
1 |
|
|
|
|
|
|
|
|
Разобьем входную последовательность на 8 блоков по 4 бита. Шестой блок
1100 пропускаем через 6-ой узел подстановки по следующему правилу:
преобразуем двоичное число 1100 к десятичному виду – 12. Заполнение 12-
ой строки для 6-ого узла подстановки равно 9, что в двоичном виде есть
1001. Таким образом, 4-битный блок 1100 заменяется на 1001. Остальные блоки заменяются аналогично.
|
8 |
7 |
|
6 |
|
5 |
|
4 |
|
3 |
|
2 |
|
1 |
|
номер узла |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
100 |
101 |
|
110 |
|
010 |
|
111 |
|
010 |
|
000 |
|
100 |
|
вход |
|||
|
1 |
1 |
|
0 |
|
1 |
|
0 |
|
0 |
|
0 |
|
1 |
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
9 |
11 |
|
12 |
|
5 |
|
14 |
|
4 |
|
0 |
|
9 |
|
адрес |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2 |
7 |
|
9 |
|
15 |
|
5 |
|
10 |
|
14 |
|
11 |
|
заполнение |
|||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
001 |
011 |
|
100 |
|
111 |
|
010 |
|
101 |
|
111 |
|
101 |
|
результат |
|||
|
0 |
1 |
|
1 |
|
1 |
|
1 |
|
0 |
|
0 |
|
1 |
|
|
|
||
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Выходная последовательность имеет вид |
|
|
|
|
|
|
|||||||||||||
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||||
|
|
|
001 |
|
011 |
100 |
111 |
010 |
101 |
111 |
101 |
|
|||||||
|
|
|
0 |
|
|
1 |
|
1 |
|
1 |
|
1 |
|
0 |
|
0 |
|
1 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
17
Приложение Г. Алгоритм шифрования RSA
Алгоритм шифрования RSA относится к криптографическим системам с открытым ключом. Криптосистемы с открытым ключом (асимметричные криптосистемы) были разработаны во второй половине семидесятых годов. В
асимметричных криптосистемах процедуры прямого и обратного криптопреобразования выполняются на различных ключах и не имеют между собой очевидных и легко прослеживаемых связей, позволяющих по одному ключу определить другой. В такой схеме знание только ключа зашифрования не позволяет расшифровать сообщение, поэтому он не является секретным элементом шифра и обычно публикуется участником обмена для того, чтобы любой желающий мог послать ему шифрованное сообщение.
Принцип функционирования асимметричной криптосистемы заключается в следующем:
пользователь А генерирует два ключа - открытый (незасекречен-ный) и
секретный - и передает открытый ключ по незащищенному каналу пользователю Б;
пользователь Б шифрует сообщение, используя открытый ключ шифрования пользователя А;
пользователь Б посылает зашифрованное сообщение пользователю А по незащищенному каналу;
пользователь А получает зашифрованное сообщение и дешифрует его,
используя свой секретный ключ.
Пары {открытый ключ; секретный ключ} вычисляются с помощью специальных алгоритмов, причем ни один ключ не может быть выведен из другого.
Криптографическая система RSA (Rivest-Shamir-Adleman)
Авторами алгоритма RSA, предложенного в 1977 г., являются Р.Риверст
(Rivest), А.Шамир (Shamir) и А.Адлеман (Adleman). Надежность алгоритма
18
основывается на трудности факторизации (разложения на множители)
больших чисел и трудности вычисления дискретных алгоритмов
(нахождения x при известных a, b и n из уравнения ax = b (mod n) ).
Алгоритм RSA состоит из трех частей: генерации ключей, шифрования и расшифрования.
1. Генерация ключей.
Выберем два больших различных простых числа p и q (Натуральное число называется простым, если оно делится только на себя и на 1.) и найдем их произведение
n = pq .
Вычислим функцию Эйлера (n) по формуле
(n) = (p-1)(q-1).
Закрытый ключ d выбираем из условий d < (n) и
d взаимно просто с (n),
т.е. d и (n) не имеют общих делителей.
Открытый ключ e выбираем из условий e < (n) и
de = 1(mod (n)) .
Последнее условие означает, что разность de - 1 должна делить-ся на
(n) без остатка. Для определения числа e нужно подобрать такое число k,
что
de - 1 = (n)*k .
В алгоритме RSA
( e, n ) – открытый ключ,
( d, n ) – секретный ключ.
2. Шифрование.
Исходное сообщение разбивается на блоки Mi одинаковой длины.
Каждый блок представляется в виде большого десятичного числа, меньшего
19
n, и шифруется отдельно. Шифрование блока M (M - десятичное число)
осуществляется по следующей формуле
Me = C (mod n) ,
где C – шифрблок, соответствующий блоку открытого сообщения M.
Шифрблоки соединяются в шифрограмму.
3. Расшифрование.
При расшифровании шифрограмма разбивается на блоки известной длины и каждый шифрблок расшифровывается отдельно по следующей формуле
Cd = M (mod n) .