- •ВВЕДЕНИЕ
- •1. ОСНОВНЫЕ ПОНЯТИЯ
- •2. ИСТОРИЧЕСКИЕ ШИФРЫ
- •3. МОДУЛЯРНАЯ АРИФМЕТИКА
- •4. АСИММЕТРИЧНЫЕ СИСТЕМЫ ШИФРОВАНИЯ. КРИПТОСИСТЕМА RSA
- •5. ПРОСТЫЕ ЧИСЛА. ГЕНЕРАЦИЯ ПРОСТЫХ ЧИСЕЛ
- •6. АТАКА ВИНЕРА НА RSA
- •7. РЮКЗАЧНЫЙ МЕТОД ШИФРОВАНИЯ
- •9. КРИПТОСИСТЕМА НА ОСНОВЕ ЭЛЛИПТИЧЕСКИХ КРИВЫХ
- •10. СИММЕТРИЧНЫЕ КРИПТОСИСТЕМЫ
- •11. СТАНДАРТ ШИФРОВАНИЯ ДАННЫХ DES
- •12. СТАНДАРТ КРИПТОСИСТЕМЫ РОССИИ ГОСТ 28147-89
- •13. ДЕЙСТВИЯ НАД ПОЛИНОМАМИ В ПОЛЕ
- •14. УСОВЕРШЕНСТВОВАННЫЙ СТАНДАРТ ШИФРОВАНИЯ AES
- •15. УСТАНОВЛЕНИЕ ПОДЛИННОСТИ ОБЪЕКТА
- •16. КРИПТОГРАФИЧЕСКИЕ ХЕШ-ФУНКЦИИ
- •СПИСОК ЛИТЕРАТУРЫ
i = 1, |
|
j = (0 + 6)mod8 = 6 S = [5,7,0,3,2,4,6,1]; |
t = ( |
7 + 6) mod8 = 5 GS [1] = 4; |
|
i = 2, |
j = (6 + 0)mod8 = 6 S = [5,7,6,3,2,4,0,1]; |
|
t = ( |
6 + 0) mod8 = 6 GS [ 2] = 0 ; |
|
i = 3, |
j = (6 + 3)mod8 = 1 S = [5,3,6,7,2,4,0,1]; |
|
t= ( 7 + 3) mod8 = 2 GS [ 3] = 6
итак далее.
11.СТАНДАРТ ШИФРОВАНИЯ ДАННЫХ DES
Внастоящее время DES является наиболее распространенным блочным алгоритмом, используемым в системах защиты коммерческой информации. Этот алгоритм использует комбинацию методов подстановки и перестановки. Исходный текст для шифрования разбивается на блоки размером 64 бита. Рассмотрим работу этой криптосистемы для случая, когда размерность блоков равна 16 бит и используется 4-битовое представление 16 первых букв русского алфавита: А – 0000, Б – 0001, В – 0010, Г – 0011, Д – 0100, Е
– 0101, Ж – 0110 и т. д.
Зашифруем сообщение: ЖДЁМ (Е вместо Ё).
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
|
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
0 |
1 |
1 |
0 |
0 |
1 |
0 |
0 |
|
0 |
1 |
0 |
1 |
1 |
0 |
1 |
1 |
|
|
Ж |
|
|
|
Д |
|
|
|
Ё |
|
|
|
|
М |
|
|
16-битовый блок записывается построчно в виде матрицы: |
|
||||||||||||||
|
|
|
|
|
|
|
é0 |
1 |
1 |
0ù |
|
|
|
|
|
|
|
|
|
|
|
|
|
ê0 |
1 |
0 |
0ú |
|
|
|
|
|
|
|
|
|
|
|
|
T = ê |
1 |
0 |
ú |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
ê0 |
1ú |
|
|
|
|
|
|
||
|
|
|
|
|
|
|
ê |
0 |
1 |
ú |
|
|
|
|
|
|
|
|
|
|
|
|
|
ë1 |
1û . |
|
|
|
|
|
|||
60
Матрица Т преобразуется с помощью матрицы начальной перестановки IP: T0 = IP(T) :
14 |
9 |
5 |
4 |
ù |
é |
|
|
|
|
ê16 |
10 |
8 |
2ú |
|
IP = ê |
11 |
6 |
|
ú |
ê13 |
1ú |
|||
ê |
12 |
7 |
|
ú |
ë15 |
3û , |
|||
так что 14-й бит входного блока станет 1-м битом, 9-й бит – 2-м битом
ит. д.
Врезультате получили Т0 , которая разделяется на две
последовательности: L0 – левая (старшие биты), R0 – правая (младшие биты), каждая из которых содержит по 8 бит.
|
é0 |
0 |
0 |
0ù |
|
ê1 |
1 |
0 |
1ú |
T = ê |
|
|
ú |
|
0 |
ê1 |
0 |
1 |
0ú |
|
ê |
1 |
0 |
ú |
|
ë1 |
1û . |
||
Затем осуществляется итерационный процесс шифрования, состоящий из 16 раундов (в нашем примере реализуется один раунд). Итерационный процесс описывается следующей формулой:
Тi = Li Ri ;
L = R − |
i = |
|
|
|
|
||
1,16 |
; |
|
|
||||
i |
i 1 |
|
|
|
|
|
|
R = L − |
Å f (R − |
,k |
) i = |
|
|
||
1,16. |
|||||||
i i 1 |
|
i 1 |
i |
|
|
|
|
Функция f называется функцией шифрования, Å − операция сложения по mod 2, ki − секретные ключи.
Функция шифрования f применяется к правому блоку Ri−1
исостоит из следующих этапов.
1.Функция расширения Е, которая расширяет 8-битовый блок до 12-битового с помощью матрицы Е:
61
é8 |
1 |
2ù |
ê2 |
3 |
4ú |
Е = ê |
5 |
ú. |
ê4 |
6ú |
|
ê |
7 |
ú |
ë6 |
1û |
1-м битом расширенного блока станет 8-й бит R0 , 2-м битом – 1-й, 3-м битом – 2-й и т.д.
В результате 8-битовый блок R0
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
0 |
0 |
0 |
1 |
1 |
0 |
0 |
1 |
расширяется до 12-битового блока:
R0 :
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
1 |
0 |
0 |
0 |
0 |
1 |
1 |
1 |
0 |
0 |
0 |
0 |
2. Сложение |
полученного результата по |
mod 2 с |
текущим |
|||||||
E(R ) : |
|
|
|
|
|
|
|
|
|
|
0 |
ki |
|
|
|
|
k = 010101010101. |
|
|||
значением ключа |
|
|
|
|
|
|||||
|
. В нашем примере 1 |
|
|
|
||||||
|
|
|
|
|
E(R0 ) : 100001110000 |
|
|
|
||
|
|
|
|
|
|
|
|
|||
|
|
|
|
E(R |
k1 : |
010101010101 |
|
|
|
|
|
|
|
|
0 ) Å k1 : |
110100100101 |
|
|
|
|
|
|
|
|
Å |
|
|
|
|
|
|
|
|
|
|
|
|
||||||
3. Преобразование полученного 12-битового блока в 8-битовый. |
||||||||||
Значение E(R0 ) Å k1 разбивается на 4 трехбитовых блока: |
|
|||||||||
B1 = (110), B2 = (100), |
B3 = (100), B4 |
= (101). |
|
|||||||
Каждый из этих блоков используется для нахождения номера |
||||||||||
элемента в функциях-матрицах S1, |
S2 , S3 , S4 , заданных таблично. |
|||||||||
н |
|
|
|
|
|
|
|
|
|
|
0 |
|
|
|
|
|
Si |
||||
|
|
|
|
|
|
|
||||
|
1 |
2 |
|
3 |
||||||
о |
|
|
|
|
|
|
|
|
|
|
62
м
0 |
3 |
1 |
2 |
0 |
S1 |
1 |
2 |
3 |
0 |
1 |
|
0 |
1 |
3 |
0 |
2 |
S2 |
1 |
3 |
2 |
1 |
0 |
|
0 |
2 |
0 |
3 |
1 |
S3 |
1 |
1 |
0 |
2 |
3 |
|
0 |
0 |
2 |
1 |
3 |
S4 |
1 |
0 |
1 |
3 |
2 |
|
Выбор элемента в матрице Si осуществляется следующим образом: на вход поступает 3-битовый блок Bi = (b1 b2 b3 ), тогда однобитовое число b1 указывает номер строки, а двухбитовое число
b2b3 |
– номер столбца. Например, |
B = (1\10) |
|
− строка 1 и столбец |
||||||||||||||
|
|
1 |
|
|
|
|
||||||||||||
(10)2 = 210 |
(столбец 2). На пересечении строки и столбца находится |
|||||||||||||||||
элемент матрицы |
S |
: |
S12 = (0)10 |
= (00)2 |
. В итоге |
S |
= (00) |
. Аналогично |
||||||||||
|
1 |
|
|
|
|
|
1 |
|
||||||||||
|
B = (1\ 00) |
S |
2 |
: |
S10 |
= (3)10 |
= (11)2 |
|
S |
2 |
= (11) |
; |
|
|
|
|
||
|
2 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
B3 = (1\ 00) |
S3 : S10 |
= (1)10 |
= (01)2 |
|
S3 = (01) ; |
|
|
|
|
||||||||
|
B = (1\ 01) |
S |
4 |
: |
S11 |
= (1)10 |
= (01)2 |
|
S |
4 |
= (01) |
. |
|
|
|
|
||
|
4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||
|
В итоге имеем 8-битовый блок S: |
|
|
|
|
|
|
|
|
|||||||||
|
1 |
2 |
|
|
|
3 |
4 |
|
|
|
5 |
|
6 |
|
7 |
8 |
||
|
0 |
0 |
|
|
|
1 |
1 |
|
|
|
0 |
|
1 |
|
0 |
1 |
||
SК полученному блоку S применяется перестановка: функция Р,
4
7
1
6
8
3 5 2
применив которую находим окончательно функцию шифрования
63
|
|
1 |
0 |
ù |
|
|
é |
|
|
f (R , k |
|
ê0 |
1ú |
|
0 |
) = ê |
|
ú = (10011100). |
|
0 |
ê1 |
1ú |
||
|
|
ê |
|
ú |
|
|
ë0 |
0û |
|
Согласно алгоритму итерационного процесса вычисляем:
–левый блок L1 = R0 = (00011001) ;
–правый блок R1 = L0 Å f (R0 , k1 ) = (00111011) Å (10011100) =
=(10100111).
Объединяем блоки: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
é0 |
0 |
|
1 |
|
0ù |
|
|
|
|
|
|
|
|
|
||||
|
|
|
|
|
ê0 |
1 |
|
1 |
|
0ú |
|
|
|
L R = ê |
|
|
|
|
ú. |
|
|||
|
|
1 |
1 |
|
ê1 |
0 |
|
0 |
|
1ú |
|
|
|
|
|
|
ê |
|
|
|
|
ú |
|
|
|
|
|
|
ë0 |
1 |
|
1 |
|
1û |
|
|
|
|
|
|
|
|
|
||||
По окончании шифрования осуществляем восстановление |
|||||||||||
позиций битов с помощью матрицы обратной перестановки IP−1 : |
|||||||||||
|
|
|
|
12 |
8 |
|
16 |
4 |
ù |
||
|
|
|
|
é |
|
|
|
|
|
|
|
|
|
− |
|
ê |
3 |
11 |
|
15 |
7 |
ú |
|
|
|
IP 1 |
= ê |
2 |
6 |
|
10 |
|
ú |
||
|
|
|
|
ê |
|
14ú |
|||||
|
|
|
|
ê |
9 |
1 |
|
13 |
5 |
ú |
|
|
|
|
|
ë |
|
û . |
|||||
|
|
é1 |
0 |
1 |
0ù |
|
|
|
|||
− |
|
ê1 |
0 |
1 |
1 |
ú |
|
|
|
||
IP 1(L |
, R ) = ê |
|
|
|
|
|
ú = (1010101101011000). |
||||
1 |
1 |
ê0 |
1 |
0 |
1 |
ú |
|
|
|
||
|
|
ê |
|
0 |
0 |
|
ú |
|
|
|
|
|
|
ë1 |
0û |
|
|
|
|||||
Полученный блок является шифротекстом: МЕБЖ.
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
1 |
0 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
1 |
0 |
1 |
1 |
0 |
0 |
0 |
|
|
Л |
|
|
|
М |
|
|
|
Е |
|
|
|
И |
|
64
Процесс расшифрования данных является инверсным (обратимым) по отношению к процессу шифрования. Это означает, что зашифрованные данные − ЛМЕИ сначала представляются
в соответствии с матрицей, обратной к IP−1 :, т. е. IP
|
|
|
|
14 |
9 |
5 |
4 |
ù |
|
|
|
|
|
|
é |
|
|
|
|
|
|
||
|
|
|
ê16 |
10 |
8 |
2ú |
|
|
|
||
|
|
|
ê |
11 |
6 |
1 |
ú. |
|
|
||
|
|
|
ê13 |
ú |
|
|
|
||||
|
|
|
ê |
|
|
|
ú |
|
|
|
|
|
|
|
ë15 12 7 3û |
|
|
|
|||||
Осуществим обратную к IP−1 |
перестановку: |
||||||||||
é0 |
0 |
1 |
0ù |
|
|
|
|
|
|
|
|
ê0 |
1 |
1 |
0ú |
|
|
|
|
|
|
10100111). |
|
ê |
|
|
|
ú = (00011001 |
|
|
|||||
ê1 |
0 |
0 |
1 |
ú |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|||||
ê |
1 |
1 |
1 |
ú |
|
|
|
|
|
|
|
ë0 |
û |
|
|
|
|
|
|
|
|||
При шифровании |
|
было |
L |
= R0 |
, |
R1 |
|||||
|
1 |
|
|
|
при расшифровании |
||||||
R0 = L1 = (00011001) . |
|
|
|
|
|
|
|
|
|
|
|
Восстановим L0 : L0 |
= R1 Å f (R0 , k1) . |
|
|
|
|
||||||
Функция шифрования |
f (R0 , k1) находится по тому же алгоритму, |
||||||||||
что и при шифровании, т. е. |
|
|
|
|
|
|
|
|
|||
f (R0 , k1) = (10011100),
тогда
L0 = R1 Å f (R0 , k1) = (10100111) Å (10011100) = (00111011).
В итоге имеем 16-битовый блок T0 = L0 R0
|
é0 |
0 |
0 |
0ù |
|
ê1 |
1 |
0 |
1ú |
T = ê |
|
|
ú |
|
0 |
ê1 |
0 |
1 |
0ú |
|
ê |
1 |
0 |
ú |
|
ë1 |
1û , |
||
65
