- •ВВЕДЕНИЕ
- •1. ОСНОВНЫЕ ПОНЯТИЯ
- •2. ИСТОРИЧЕСКИЕ ШИФРЫ
- •3. МОДУЛЯРНАЯ АРИФМЕТИКА
- •4. АСИММЕТРИЧНЫЕ СИСТЕМЫ ШИФРОВАНИЯ. КРИПТОСИСТЕМА RSA
- •5. ПРОСТЫЕ ЧИСЛА. ГЕНЕРАЦИЯ ПРОСТЫХ ЧИСЕЛ
- •6. АТАКА ВИНЕРА НА RSA
- •7. РЮКЗАЧНЫЙ МЕТОД ШИФРОВАНИЯ
- •9. КРИПТОСИСТЕМА НА ОСНОВЕ ЭЛЛИПТИЧЕСКИХ КРИВЫХ
- •10. СИММЕТРИЧНЫЕ КРИПТОСИСТЕМЫ
- •11. СТАНДАРТ ШИФРОВАНИЯ ДАННЫХ DES
- •12. СТАНДАРТ КРИПТОСИСТЕМЫ РОССИИ ГОСТ 28147-89
- •13. ДЕЙСТВИЯ НАД ПОЛИНОМАМИ В ПОЛЕ
- •14. УСОВЕРШЕНСТВОВАННЫЙ СТАНДАРТ ШИФРОВАНИЯ AES
- •15. УСТАНОВЛЕНИЕ ПОДЛИННОСТИ ОБЪЕКТА
- •16. КРИПТОГРАФИЧЕСКИЕ ХЕШ-ФУНКЦИИ
- •СПИСОК ЛИТЕРАТУРЫ
λ = |
æ |
y2 |
- y1 |
ömod n = |
æ |
11- 6 |
ömod13 = ( 5´(-6)−1 ) |
= |
|
|
ç |
|
|||||
|
ç |
|
|
¸ |
4 -10 |
¸ |
mod13 |
|
|
è x2 |
- x1 ø |
è |
ø |
|
|||
= ( 5´7−1 ) mod13 = (5´2)mod13 =10.
x3 = ( λ2 - x2 - x1 ) modn = ( 9 - 8 - 4) mod13 = (-3)mod13 =10.
y3 = ( λ ( x1 - x3 ) - y1 ) mod n = (10´(10 - 8) - 6) mod13 =14mod13 =1.
В итоге получили открытый текст T0 (8,1).
10. СИММЕТРИЧНЫЕ КРИПТОСИСТЕМЫ
Почти все применяемые на практике шифры характеризуются как условно надежные, поскольку они могут быть в принципе раскрыты при наличии неограниченных вычислительных возможностей. Абсолютно надежные шифры нельзя разрушить даже при использовании неограниченных вычислительных возможностей. Существует единственный такой шифр, применяемый на практике, – одноразовая система шифрования, которая характеризуется одноразовым использованием ключа.
Пусть
T0 = ( x1, x2 K xn )
k = ( k1,k2 K kn ) − ключевая последовательность;
Tш = ( y1, y2 K yn ) − шифротекст,
тогда шифрование методом Цезаря можно описать соотношением yi = ( xi + k ) mod n ,
где n – число букв в алфавите, k = 3 – параметр сдвига. Процедура расшифрования
xi = ( yi − k ) mod n .
Для метода Вижинера
50
yi = ( xi + ri ) mod n ,
где ri – меняющаяся ключевая последовательность. Для реализации одноразовой системы шифрования используется одноразовый
блокнот, на каждой странице которого находятся различные ключи ri . После одноразового шифрования страница удаляется. Блокнот существует в двух экземплярах: один используется отправителем, другой – получателем. Теоретически доказано, что одноразовые системы являются нераскрываемыми шифросистемами, поскольку их шифротексты не содержат достаточной информации для восстановления открытого текста. К недостаткам этих криптосистем следует отнести наличие большого количества ключей.
Одноразовая система шифрования методом Вернама. Для реализации этой системы используется двоичное представление символов открытого текста. Случайная последовательность двоичных
ключей r1,r2 K rm заранее определена. Шифрование открытого теста
осуществляется |
путем |
сложения по |
модулю n = 2 |
символов xi , |
|
представленных |
в |
двоичной |
|
системе |
исчисления |
с последовательностью двоичных ключей ri |
|
||||
|
|
yi = xi Å ri ,i = |
|
, |
|
|
|
1,m |
|
||
где Å − операция сложения по модулю 2 задается следующей таблицей:
|
0 |
1 |
0 |
0 |
1 |
1 |
1 |
0 |
и определяется функцией |
X0R |
– «исключающее ИЛИ», т. к. |
(1+1) mod 2 = 2mod 2 = 0. |
|
|
51
Процесс расшифрования состоит в сложении по модулю 2
символов шифротекста yi с той же ключевой последовательностью xi = yi Å ri , (т.к. ri Å ri = 0).
Недостатком шифрования методом Вернама является необходимость доставки получателю шифротекста такой же
последовательности ключей ri . Эти недостатки преодолены при шифровании методом гаммирования.
Шифрование методом гаммирования. В основу всех современных симметричных криптосистем (DES, ГОСТ 2814-89) положен алгоритм гаммирования. Под гаммированием понимают
процесс наложения по определенному закону гаммы шифра ( Гш ) на
открытые данные( T0 ) .
Гамма шифра – это секретная псевдослучайная последовательность чисел (ПСПЧ), выработанная по определенному закону для шифрования открытых данных и их расшифрования. Она выполняет роль секретного ключ. Уравнение шифрования можно записать в виде
|
|
Тш(i) = T0(i) Å Гш(i) |
i = |
|
, |
|
|
|
|
1,m |
|
||||
|
|
|
, |
|
|
|
|
где |
T (i) |
− блок открытого текста, |
T (i) |
|
|
|
Г (i) |
0 |
ш − блок шифротекста, |
ш − блок |
|||||
гаммы шифра, m − количество блоков. Перед шифрованием открытые
данные разбивают на блоки одинаковой длины (обычно 64-бита), |
Г (i) |
ш |
− блоки той же длины. Процесс расшифрования записывается в том же виде:
(i) |
= |
(i) |
(i) |
= |
|
|
|
|
|
|
|||||
TТ |
Г Å |
ш , i |
1,m. |
||||
0 |
|
ш |
|
||||
Здесь Å – операция сложения по модулю 2.
52
Для получения гаммы шифра широко используют генераторы ПСПЧ. Наиболее часто применяется так называемый линейный конгруэнтный генератор
yi = ( ayi + b) mod n .
Модуль п берется как можно большим (n = 231 −1). Приращение b должно быть взаимно простым с п, коэффициент а должен быть
нечетным числом, y0 − исходное (нулевое) значение гаммы. Числа
a,b, y0 ,n представляют собой секретный ключ. Рассмотрим процедуру выработки гаммы шифра и шифрование методом гаммирования на простейшем примере. Пронумеруем буквы русского алфавита двоичными числами размерностью 5 бит (буква ё отсутствует).
0 |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
А |
Б |
В |
Г |
Д |
Е |
Ж |
З |
00000 |
00001 |
00010 |
00011 |
00100 |
00101 |
00110 |
00111 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
И |
Й |
К |
Л |
М |
Н |
О |
П |
01000 |
01001 |
01010 |
01011 |
01100 |
01101 |
01110 |
01111 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
Р |
С |
Т |
У |
Ф |
Х |
Ц |
Ч |
10000 |
10001 |
10010 |
10011 |
10100 |
10101 |
10110 |
10111 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
Ш |
Щ |
Ъ |
Ы |
Ь |
Э |
Ю |
Я |
11000 |
11001 |
11010 |
11011 |
11100 |
11101 |
11110 |
11111 |
Зашифруем сообщение: ГДЕЖИЛДЕД. В качестве генератора ПСПЧ возьмем
53
|
|
|
y = (3×y − |
+1) |
mod11 |
, y = 0. |
|
|
|
|
i |
i 1 |
|
0 |
|
Секретный ключ: |
a = 3,b = 1,n = 1, y0 = 0. |
||||||
|
|
|
|
|
|||
i = 1 y1 = (3×0 + 1)mod11 = 1 = 00001; |
|
||||||
i = 2 |
y2 |
= (3×1+1)mod11 = 4 = 00100 ; |
|
||||
i = 3 y3 |
= (3×4 +1)mod11 = 2 = 00010 ; |
|
|||||
i = 4 |
y4 = (3×2 +1)mod11 = 7 = 00111; |
|
|||||
i = 5 |
y5 |
= (3×7 +1)mod11 = 0 = 00000 ; |
|
||||
i = 6 |
y6 |
= (3×0 +1)mod11 = 1 = 00001. |
|
||||
Далее гамма шифра повторяется с периодом, равным 5. Зашифруем сообщение по формуле
Тш(i) = T0(i) |
Å Гш(i) i = |
|
|
|
1,9, |
||||
взяв в качестве гаммы шифра |
Г (i) = y . |
|||
ш |
i |
|||
T0(i) : i = 1 00011(Г) i = 2 00100( Д) i = 3 00101(Е) yi : Å 00001 Å 00100 Å 00010
Тш(i) 00010(В) 00000(А) 00111(З)
i = 4 00110(Ж) i = 5 01000(И) i = 6 01011(Л )
Å 00111 Å 00000 Å 00001
00001(Б) 01000(И) 01010(К)
i = 7 00100( Д) i = 8 00101(Е) i = 9 00100( Д)
Å 00100 Å 00010 Å 00111
00000(А) 00111(З) 00011(Г)
Шифротекст: ВАЗБИКАЗГ.
54
Процедуру расшифрования осуществим по формуле:
(i) |
= |
(i) |
(i) |
TТ |
Г Å |
ш , |
|
0 |
|
ш |
взяв в качестве гаммы шифра ту же последовательность псевдослучайных чисел yi .
Тш(i) i = 1 00010(В) i = 2 00000(А) i = 3 00111(З) yi : Å 00001 Å 00100 Å 00010
T (i) : |
00011(Г) 00100( Д) 00101(Е) |
||||||
0 |
|
|
|
|
|
|
|
i = 4 |
00001(Б) i = 5 01000(И) i = 6 01010(К) |
||||||
Å 00111 Å 00000 Å 00001 |
|
|
|||||
|
|
|
|
|
|
|
|
00110(Ж) 01000(И) 01011(Л ) |
|||||||
i = 7 |
00000(А) i = 8 00111(З) i = 9 00011(Г) |
||||||
Å 00100 Å 00010 Å 00111
00100( Д) 00101(Е) 00100( Д)
Открытый текст: ГДЕЖИЛДЕД.
Требования, предъявляемые к гамме шифра:
1. Период гаммы должен превышать длину открытого текста (в нашем примере это требование не было выполнено).
2.Гамма должна быть случайной (практически непредсказуемой). При использовании генераторов ПСПЧ это требование не выполняется.
3.Генерирование гаммы не должно вызывать большие технические сложности. При использовании генераторов ПСПЧ это
55
требование выполняется. Так, в нашем примере достаточно принимающей стороне передать секретный ключ , чтобы получатель шифротекста смог генерировать ту же гамму шифра.
4. При шифровании методом гаммирования важным является то обстоятельство, что гамма-последовательность накладывается на весь блок открытого текста. Если же гамма наложится на пустое сообщение, то часть ее последовательности будет восстановлена.
Алгоритм шифрования RC-4. RC-4 – это поточный шифр, разработанный в 1987 г. Роном Ривестом (RC – Рона Шифр) для компании RSA Data Security и являющийся собственностью этой компании. Подробное описание алгоритма представлялось компанией только после подписания протокола о нераглашении. Однако в 1994 г. кто-то анонимно опубликовал исходный код в Интернете. Обладатели легальных копий RC-4 подтвердили истинность этого кода. С тех пор этот алгоритм служит учебным пособием по криптографии и им можно воспользоваться, однако компания может возбудить дело против каждого, кто применит нелицензированный RC-4 в коммерческом деле, так как имя алгоритма – торговая марка компании. Поэтому при написании на основе этого алгоритма
собственнго кода его следует назвать как-то иначе.
Алгоритм RC-4 является генератором истинно случайной последовательности чисел, которую используют в качестве гаммы
шифра Гш (i) .
56
В этом алгоритме используется S-блок размерностью элементы которого представляют собой перестановку чисел от 0 до 255, а сама перестановка зависит еще и от секретного ключа Key, имеющего длину L. В начале алгоритма происходит заполнение
S-блока:
I этап. Линейное заполнение массива S [ i] :
для i от 0 до 255
S [ i] = i.
Key(0, L −1)
II этап. Заполнение секретным ключом вспомогательного массива k размерностью 256 бит:
для i от 0 до 255
k [ i] = Key[ i mod L] .
III этап. Перестановка элементов S-блока: j = 0.
Для i от 0 до 255
j = ( j + S [ i] + k[ i] ) mod256 ;
C = S [ j] ; S [ j] = S [ i] ; S [ i] = C.
Массив |
S [ i] |
заполнен и может быть использован для |
шифрования методом гаммирования.
IV этап. Выработка гаммы шифра GS:
57
i = 0;
j= 0;
i = (i +1)mod256 ;
j= ( j + S [ i])mod256 ;
C = S [ j] ;
S [ j] = S [ i] ;
S [ i] = C;
t = ( S [ i] + S [ j] ) mod256 ;
GS [ i] = S(t);
Г (i)
гамма шифра ш .
В процессе выработки гаммы шифра происходит дальнейшее
перемешивание элементов S-блока.
RC-4 – очень сильный алгоритм шифрования, поскольку каждый
новый его шаг увеличивает криптостойкость. При этом операция
i = (i +1)mod256
обеспечивает однократное использование каждого элемента массива S. Операция
j = ( j + S [ i] + k[ i] ) mod256
обеспечивает нелинейную зависимость выходных данных от массива
S [ i] . Замена местами элементов S [ i] |
и S [ j] |
изменяет массив S в |
||
процессе итераций. |
|
|
|
|
t = ( S [ i] + S [ j] ) mod256 − |
благодаря |
этому |
этапу |
генерируемая |
последовательность гаммы |
шифра |
мало говорит о |
внутреннем |
|
58
состоянии массива S. Проведенные исследования говорят о том, что алгоритм устойчив к дифференциальному и линейному криптоанализу. Этот алгоритм может находиться примерно в возможных состояниях. Статистический анализ гаммы шифра на выборке объемом показал, что случайная величина S распределена по равномерному закону. Проверка осуществлялась по критерию Пирсона. Это говорит о том, что любое значение S-блока имеет одинаковую вероятность попасть в гамму шифра. Алгоритм RC-4 настолько прост, что его можно реализовать по памяти.
Рассмотрим работу алгоритма RC-4 на простом примере. Найдем последовательность гаммы шифра для блока S[0,7] и ключа Key[i]=[2,3,5,7] L=4.
I этап. Линейное заполнение массива S:
S = [0,1,2,3,4,5,6,7]
II этап. Заполнение вспомогательного массива k: k = [2,3,5,7,2,3,5,7]
III этап. Перестановка элементов S-блока:
i = 0, |
j = (0 + 0 + 2)mod8 = 2 S = [2,1,0,3,4,5,6,7]; |
|
i = 1, |
j = (2 +1+ 3)mod8 = 6 S = [2,6,0,3,4,5,1,7]; |
|
i = 2, |
j = (6 + 0 + 5)mod8 = 3 S = [2,6,3,0,4,5,1,7]; |
|
i = 3, |
j = (3 + 0 + 7)mod8 = 2 |
S = [2,6,0,3,4,5,1,7]; |
i = 4, |
j = (2 + 4 + 2)mod8 = 0 |
S = [4,6,0,3,2,5,1,7]; |
i = 5, |
j = (0 + 5 + 3)mod8 = 0 |
S = [5,6,0,3,2,4,1,7]; |
i = 6, |
j = (0 +1+ 6)mod8 = 7 S = [5,6,0,3,2,4,7,1]; |
|
i = 7, |
j = (7 + 1+ 7)mod8 = 7 |
S = [5,6,0,3,2,4,7,1]. |
IV этап. Выработка гаммы шифра GS:
59
