Статья опубликована в рамках: XXI Международной научно-практической конференции «Научное сообщество студентов: МЕЖДИСЦИПЛИНАРНЫЕ ИССЛЕДОВАНИЯ» (Россия, г. Новосибирск, 18 мая 2017 г.)
Наука: Математика
Скачать книгу(-и): Сборник статей конференции
отправлен участнику
АЛГОРИТМ ШИФРОВАНИЯ SKIPJACK
В современном мире жизнь человека становится всё более динамичной. Люди не хотят тратить много своего времени на поход в библиотеку, поиск редкого товара в магазинах, стояние в очереди на оплату коммунальных услуг, оформление различных документов и льгот и т.д. Соответственно, многие услуги автоматизируются и переносятся на электронные устройства и комплексы. Естественно, остро встает вопрос о защите пересылаемых данных и их безопасности.
Но подобные проблемы волнуют человечество уже не одно тысячелетие. Криптография - наука, обеспечивающая секретность сообщения, существующая уже около 4 тысяч лет. Существует множество различных алгоритмов шифрования, шифровальных машин и специально созданных устройств.
В нашей работе рассматривается алгоритм симметричного блочного шифрования SKIPJACK. Он был разработан Агентством Национальной безопасности США в 1980 году. Долгое время алгоритм был засекречен и только в 1998 году он был опубликован в открытом доступе. В результате исследований было выявлено, что риск взлома шифра с помощью более быстрых способов незначителен. Алгоритм не имеет слабых ключей и свойства комплементарности.
Алгоритм шифрования SKIPJACK
Данный алгоритм шифрования - блочный. В его работе используется 10-байтный ключ шифрования и входной блок символов размером 8 байт. В процессе шифрования данные разбиваются на 4 слова(по 2 байта каждое). Слова обозначаются w1, w2, w3, w4(w1 - старшие 2 байта входного блока). Далее выполняются 32 раунда преобразования слов одной из функций - A или B[1].
Приведем пошаговое описание алгоритма функции A и обобщенные правила преобразований в функциях A и B.
Рисунок 1. Функция A
Пошаговое описание алгоритма функции A:
1. Выполнить операцию G над w1.
2. Применить операцию XOR к результату предыдущего шага и значению w4.
3. Присвоить w1 результат применения операции XOR к результату шага 2 и текущему значению счетчика.
4. Присвоить w4 текущее значение w3.
5. Присвоить w3 текущее значение w2.
6. Присвоить w2 результат, полученный на шаге 1.
7. Увеличить значение счётчика на 1.
Рисунок 2. Функция B.
Обобщенные правила преобразований функции A:
w1k+1=Gk(w1k)+w4k+счетчикk
w2k+1= Gk(w1k)
w3k+1= w2k
w4k+1=w3k
Обобщенные правила преобразований функции B:
w1k+1= w4k
w2k+1= Gk(w1k)
w3k+1= w1k+w2k+счетчикk
w4k+1=w3k
Здесь и далее k - номер раунда алгоритма.
Операция G представляет собой четырехраундовую сеть Фейстеля[1]:
Рисунок 3. Функция G.
Здесь cv4k+n= K(4*k+n (mod 10)). K - ключ шифрования.
F - замещение входящего байта согласно F-таблице. В ней номер строки - старшие 4 бита входного байта(индексация начинается с нуля), номер столбца - младшие 4 бита.
Таблица 1.
F-таблица
A3 |
D7 |
09 |
83 |
F8 |
48 |
F6 |
F4 |
B3 |
21 |
15 |
78 |
99 |
B1 |
AF |
F9 |
E7 |
2D |
4D |
8A |
CE |
4C |
CA |
2E |
52 |
95 |
D9 |
1E |
4E |
38 |
44 |
28 |
0A |
DF |
02 |
A0 |
17 |
F1 |
60 |
68 |
12 |
B7 |
7A |
C3 |
E9 |
FA |
3D |
53 |
96 |
84 |
6B |
BA |
F2 |
63 |
9A |
19 |
7C |
AE |
E5 |
F5 |
F7 |
16 |
6A |
A2 |
39 |
B6 |
7B |
0F |
C1 |
93 |
81 |
1B |
EE |
B4 |
1A |
EA |
D0 |
91 |
2F |
B8 |
55 |
B9 |
DA |
85 |
3F |
41 |
BF |
E0 |
5A |
58 |
80 |
5F |
66 |
0B |
D8 |
90 |
35 |
D5 |
C0 |
A7 |
33 |
06 |
65 |
69 |
45 |
00 |
94 |
56 |
6D |
98 |
9B |
76 |
97 |
FC |
B2 |
C2 |
B0 |
FE |
DB |
20 |
E1 |
EB |
D6 |
E4 |
DD |
47 |
4A |
1D |
42 |
ED |
9E |
6E |
49 |
3C |
CD |
43 |
27 |
D2 |
07 |
D4 |
DE |
C7 |
67 |
18 |
89 |
CB |
30 |
1F |
8D |
C6 |
8F |
AA |
C8 |
74 |
DC |
C9 |
5D |
5C |
31 |
A4 |
70 |
88 |
61 |
2C |
9F |
0D |
2B |
87 |
50 |
82 |
54 |
64 |
26 |
7D |
03 |
40 |
34 |
4B |
1C |
73 |
D1 |
C4 |
FD |
3B |
CC |
FB |
7F |
AB |
E6 |
3E |
5B |
A5 |
AD |
04 |
23 |
9C |
14 |
51 |
22 |
F0 |
29 |
79 |
71 |
7E |
FF |
8C |
0E |
E2 |
0C |
EF |
BC |
72 |
75 |
6F |
37 |
A1 |
EC |
D3 |
8E |
62 |
8B |
86 |
10 |
E8 |
08 |
77 |
11 |
BE |
92 |
4F |
24 |
C5 |
32 |
36 |
9D |
CF |
F3 |
A6 |
BB |
AC |
5E |
6C |
A9 |
13 |
57 |
25 |
B5 |
E3 |
BD |
A8 |
3A |
01 |
05 |
59 |
2A |
46 |
На вход подаются , 1<=i<=4, счетчик устанавливается в 1, k=0. Для шифрования сообщения 8 раз выполняется операция A, затем - 8 раз B, 8 раз - A и 8 раз B. После каждого выполнения функции A или B счётчик увеличивается на 1. На выходе имеем , 1<=i<=4, k =32.
Дешифрование
Дешифрование осуществляется применением в обратном порядке функций, обратных к A и B, значение счётчика на первом шаге устанавливается в 32.
Обобщенные правила преобразований функции A-1:
w1k-1=[Gk-1]-1(w2k)
w2k-1= w3k
w3k-1= w4k
w4k-1=w1k+w2k+счетчикk-1
Обобщенные правила преобразований функции B-1:
w1k-1= [Gk-1]-1(w2k)
w2k-1= [Gk-1]-1(w2k) +w3k+счетчикk-1
w3k-1= w4k
w4k-1=w1k
Рисунок 4. Функция G-1.
На вход подаются , 1<=i<=4, счетчик устанавливается в 32, k=0. Сначала 8 раз выполняется операция B-1, затем - 8 раз A-1, 8 раз - B-1 и 8 раз A-1. После каждого выполнения функции A-1 или B-1 счётчик уменьшается на 1. На выходе имеем , 1<=i<=4, k =0.
Программная реализация
В ходе работы алгоритм был реализован в виде программного продукта, позволяющего шифровать и дешифровать исходный текст по введенному ключу.
Рисунок 5. Пример работы программы.
Список литературы:
1. Bruce Schneier "Applied Cryptography" John Wiley & Sons, 784 p., 1996
отправлен участнику
Комментарии (1)
Оставить комментарий