- •ВВЕДЕНИЕ
- •1. ОСНОВНЫЕ ПОНЯТИЯ
- •2. ИСТОРИЧЕСКИЕ ШИФРЫ
- •3. МОДУЛЯРНАЯ АРИФМЕТИКА
- •4. АСИММЕТРИЧНЫЕ СИСТЕМЫ ШИФРОВАНИЯ. КРИПТОСИСТЕМА RSA
- •5. ПРОСТЫЕ ЧИСЛА. ГЕНЕРАЦИЯ ПРОСТЫХ ЧИСЕЛ
- •6. АТАКА ВИНЕРА НА RSA
- •7. РЮКЗАЧНЫЙ МЕТОД ШИФРОВАНИЯ
- •9. КРИПТОСИСТЕМА НА ОСНОВЕ ЭЛЛИПТИЧЕСКИХ КРИВЫХ
- •10. СИММЕТРИЧНЫЕ КРИПТОСИСТЕМЫ
- •11. СТАНДАРТ ШИФРОВАНИЯ ДАННЫХ DES
- •12. СТАНДАРТ КРИПТОСИСТЕМЫ РОССИИ ГОСТ 28147-89
- •13. ДЕЙСТВИЯ НАД ПОЛИНОМАМИ В ПОЛЕ
- •14. УСОВЕРШЕНСТВОВАННЫЙ СТАНДАРТ ШИФРОВАНИЯ AES
- •15. УСТАНОВЛЕНИЕ ПОДЛИННОСТИ ОБЪЕКТА
- •16. КРИПТОГРАФИЧЕСКИЕ ХЕШ-ФУНКЦИИ
- •СПИСОК ЛИТЕРАТУРЫ
|
|
é0 |
0 |
1 |
0 |
0 |
1 |
0 |
1ù |
|
|
ê1 |
0 |
0 |
1 |
0 |
0 |
1 |
0ú |
|
|
ê0 |
1 |
0 |
0 |
1 |
0 |
0 |
1ú |
X |
−1 |
ê1 0 1 0 0 1 0 0ú |
|||||||
|
= ê0 1 0 1 0 0 1 0ú. |
||||||||
|
|
ê |
0 |
1 |
0 |
1 |
0 |
0 |
ú |
|
|
ê0 |
1ú |
||||||
|
|
ê1 |
0 |
0 |
1 |
0 |
1 |
0 |
0ú |
|
|
ë0 |
1 |
0 |
0 |
1 |
0 |
1 |
0û |
15. УСТАНОВЛЕНИЕ ПОДЛИННОСТИ ОБЪЕКТА
Аутентификация – это методика, позволяющая одной стороне доказать свою подлинность для другой стороны. Объект, подлинность которого должна быть доказана, называется претендентом (Петров), вторая сторона называется верификатором (Воробьев). Самый простой и самый старый метод аутентификации объекта – это установление подлинности на основе пароля. Другой метод осуществляется с помощью запроса-ответа. Запрос – это некоторое
случайное число RB , которое передает верификатор претенденту.
Претендент применяет к RB некоторую секретную функцию для преобразования запроса и передает полученный результат (ответ) верификатору. Ответ показывает, знает ли претендент секрет или нет.
Симметричное шифрование. Имеется несколько методик установления подлинности объекта на основе запроса-ответа с использованием симметричного шифрования.
Первая методика: использование секретного ключа.
1-й шаг. Петров посылает сообщение для Воробьева о том, что хочет установить с ним связь. Это сообщение содержит опознавательный код Петрова (слово или рисунок). По этому сообщению Воробьев будет знать, что Петров хочет установить с ним связь.
2-й шаг. Воробьев посылает Петрову сообщение-запрос RB – случайно выбранное число.
81
3-й шаг. Петров шифрует RB , используя секретный ключ kПB , и передает результат Воробьеву. Воробьев рассматривает сообщение.
Если при расшифровании получен тот же самый RB , то подлинность
претендента доказана (ему известен секретный ключ kПB ) и связь устанавливается. Для предотвращения атаки третьей стороной в
следующий раз Воробьев использует другое значение RB . Рассмотрим эту методику на простейшем примере. Пусть
секретный ключ, известный претенденту и верификатору, записан
четырехбитовым словом kПB = 13 = 1101.
1-й шаг. Петров посылает Воробьеву опознавательное слово «Петров».
2-й шаг. Воробьев выбирает случайное число RB = 5 = 0101 и посылает его Петрову.
3-й шаг. Используя секретный ключ kПB , Петров шифрует RB
R Å k = 0101Å1101 = 1000
BПВ
и отсылает результат Воробьеву. Воробьев расшифровывает полученное сообщение
1000 Å1101 = 0101 = 5 = RB . Подлинность Петрова установлена.
Вторая методика: запрос с меткой времени.
Вэтом подходе аутентификация Петрова может быть
осуществлена за |
один шаг, |
если в качестве RB Петров возьмет |
||
текущее значение времени. |
Например, |
t = 12 часов |
51 минута. |
|
Секретный |
ключ |
известен |
обеим |
сторонам: |
kПB = 13.13 = 001101.001101.
Петров шифрует сообщение:
tÅ kПВ = 001100.110011Å 001101.001101 = 000001.111110
иотсылает Воробьеву.
Воробьев расшифровывает сообщение:
000001.111110 Å 001101.001101 = 001100.110011 =12.51
82
и смотрит на часы. Если разница во времени незначительна, то подлинность Петрова доказана.
Третья методика: двунаправленное установление подлинности. Первая и вторая методики созданы для однонаправленного
установления подлинности Петрова перед Воробьевым. Для установления подлинности Воробьева перед Петровым необходимо иметь алгоритм двунаправленного установления подлинности. Этот алгоритм реализован в следующем примере. Пусть секретный ключ
kПB =13 =1101.
1-й шаг. Петров посылает сообщение «Петров» Воробьеву о том, что хочет установить с ним связь.
2-й шаг. Воробьев посылает Петрову сообщение-запрос
RB = 7 = 0111.
3-й шаг. Петров выбирает случайное число RП = 11 =1011,
шифрует |
RП |
и RB с |
помощью общего |
секретного |
ключа kПB |
и отсылает Воробьеву: |
|
|
|
||
|
|
RП Å kПВ =1011Å1101 = 0110; |
|
||
|
|
RВ Å kПВ = 0111Å1101 = 1010 . |
|
||
4-й |
шаг. |
Воробьев |
расшифровывает |
полученное |
сообщение |
0110; 1010 и находит числа RП , RB :
RП = 0110 Å1101 = 1011 = 11, RВ = 1010 Å1101 = 0111 = 7.
Так как числа RB = 7 совпадают, подлинность Петрова установлена. Для аутентификации второй стороны Воробьев заново
шифрует числа RП , RB , переставляя их местами, чтобы предотвратить атаку противником ответа на третье сообщение:
RВ Å kПВ = 1010, RП Å kПВ = 0110
и отсылает Петрову. Петров расшифровывает RП и удостоверяется в подлинности Воробьева.
Асимметричное шифрование. В алгоритмах установления подлинности объектов могут быть использованы асимметричные
83
ключи. Для однонаправленной аутентификации Петрова при наличии открытого ключа kО Петров должен доказать, что он имеет
соответствующий секретный ключ kС . Пусть kO = 7, а kС = 3 и n = 33 (криптосистема RSA).
1-й |
шаг. |
Петров |
посылает |
сообщение |
Воробьеву |
|||
о необходимости установления с ним связи. |
|
|
||||||
2-й шаг. Воробьев шифрует случайное число RB = 2 по формуле |
||||||||
|
|
Rko |
mod n |
= 27 |
= 29 |
|
|
|
|
|
B |
|
mod |
|
|
|
|
с использованием открытого |
|
ключа |
kО , который |
доступен, |
||||
и отправляет сообщение Петрову. |
|
|
|
|
||||
3-й |
шаг. |
Петров расшифровывает |
полученное |
сообщение |
||||
с помощью kС |
|
|
|
|
|
|
|
|
|
|
293mod33 |
= 2 = R |
|
|
|||
|
|
|
|
|
|
B |
|
|
и отправляет RB |
Воробьеву, который сравнивает со своим числом. |
|||||||
При совпадении чисел подлинность Петрова установлена. |
|
|||||||
Замечание: для реализации двунаправленной системы проверки подлинности используется два открытых ключа kОП , kОB и два секретных ключа kCП , kCB .
16. КРИПТОГРАФИЧЕСКИЕ ХЕШ-ФУНКЦИИ
Рассмотренные ранее криптографические системы обеспечивали секретность, но не целостность сообщения М. На практике часто приходится решать вторую задачу: сохранения целостности сообщения. Для этого оно обрабатывается специальным алгоритмом, называемым h – хеш-функцией. Эта функция создает сжатое
изображение сообщения y = h(M ) (дайджест), при этом само сообщение и его дайджест могут быть разделены, и, что наиболее
важно, дайджест h(M ) должен быть защищен от изменения. Чтобы
84
проверить целостность полученного сообщения, по тому же алгоритму создается новый дайджест, и если он совпадает с предыдущим, то полученное сообщение не было изменено.
К криптографическим хеш-функциям предъявляется ряд требований.
1. Устойчивость к прообразу. Пусть дано сообщение М и
хеш-функция h, с помощью которой вычислен дайджест y = h(M ). При этом у – это образ, а М – прообраз для у. Хеш-функция h будет устойчивой к прообразу, если практически невозможно найти второе
сообщение M1 , такое, что h(M1 ) = y . При этом считается, что М неизвестно.
2. Устойчивость ко второму прообразу. Второй критерий гарантирует, что сообщение М не может быть легко подделанным,
т. е. зная М и его дайджест h(M ), невозможно создать другое
сообщение M1 : h(M1 ) = h(M ). Здесь M1 − второй прообраз.
3. Устойчивость к коллизиям. Третий критерий гарантирует, что
невозможно найти два сообщения M ¹ M1 : h(M ) = h(M1).
Поскольку основная идея хеширования состоит в том, что дайджест должен быть короче, чем сообщение, то возможны ситуации, когда одному дайджесту y будет соответствовать несколько сообщений. Если предположить, что алгоритм хеш-функции общедоступен и известен размер дайджеста n, то возможны атаки
простым перебором сообщений, которые могут найти такое M1 , что
h(M1 ) = y . Однако если размер дайджеста n достаточно велик, то потребуется нереально большое время для этого перебора, чтобы
найти M1 . Еще более нереальным становится тот факт, что |
M1 − |
||
осмысленный текст. |
|
|
|
Проиллюстрируем |
вышесказанное на примере. |
Пусть |
|
хеш-функция |
использует |
алгоритм гаммирования с |
ПСПЧ |
xi+1 = xi + 1mod33, |
x0 = 0. |
|
|
85
Создадим дайджест сообщения М: ДЕД, используя 6-битовое представление букв и цифр:
Д – 4 – 000100, Е – 5 – 000101, Д – 4 – 000100;
x = 1 |
– 000001, |
x |
= 2 |
– 000010, |
x3 = 3 |
– 000011. |
1 |
2 |
|
|
|||
Складывая все по модулю 2, получаем дайджест |
||||||
|
|
h(M ) = 000101. |
|
|
||
Подберем |
другое сообщение M1 с тем же дайджестом |
|||||
h(M1) = 000101. |
Можно, например, взять две буквы Б, В, а третью |
|||||
букву подобрать так, чтобы h(M ′) = h(M ). Этой третьей буквой будет Ж. Но текст БВЖ не является осмысленным.
Далее при проектировании хеш-функций должен соблюдаться принцип: небольшое изменение в аргументе функции М должно
сильно влиять на ее значение h(M ). Это обеспечивает дополнительную стойкость, в результате которой уже нельзя будет чек
на 300.00 R переделать на 30 000 R. |
|
|
|
В качестве |
хеш-функций |
можно |
использовать шифры |
с симметричными |
ключами, такие |
как |
DES, AES, ГОСТ. Так, |
например, криптографическая функция Whirlpool в своей основе имеет блочный шифр AES , рассмотренный ранее.
Дайджест, полученный из сообщения М, проходит процедуру цифровой подписи. В качестве алгоритма можно использовать RSA, Эль-Гамаля.
86
