
- •Раздел 3. Криптографические протоколы.
- •3.1. Системы с открытым распределением ключей для абонентских сетей.
- •Банки и вкладчики.
- •Цифровая подпись
- •3.4. Электронные платежи
- •3.5. Аутентификация сообщений
- •3.6. Бросание жребия по телефону
- •3.7. Обеспечение доступа к ресурсам
- •3.8. Разделение секрета
3.6. Бросание жребия по телефону
Обычно в серьезных криптографических работах при описании новых идей приводится шутливая фабула. Так описание данной идеи начинается следующим образом. Предположим, Алиса и Боб недавно развелись и хотят с помощью жребия решить, кому достанется, например, их общая машина. Вопрос о принадлежности машины они хотят решить по телефону путем бросания жребия, при этом, естественно, они стремятся к тому, чтобы игра была честной.
Протокол обмена сообщениями при этом может выглядеть следующим образом.
Все целые числа делятся на два класса: четные и нечетные. Пусть нечетным числам соответствует решка, а четным орел. Так, числам 1,3,5,7,9 соответствует решка, а числам 2,4,6,8,10 соответствует орел. Алиса и Боб договариваются об использовании некоторой односторонней функции, например, модульном возведении в некоторую степень: xk ≡ a mod P. Фактически они должны согласовать значения k и P. Затем Алиса выбирает некоторое целое число x, возводит его в степень k по модулю P и полученное a передает Бобу. Боб не знает, соответствует ли a четному или нечетному числу и наугад принимает решение, например, говорит, что Алиса взяла четное число y. Тогда Алиса передает Бобу число x, которое она использовала для вычисления а. Боб сравнивает x и y по модулю 2 и если остатки совпадают, то выиграл Боб и он забирает машину, а если не совпадают, то выиграла Алиса.
В этом эксперименте важно так подобрать параметры, чтобы из четных и нечетных значений x с примерно равной вероятностью получались четные и нечетные а.
Пример. Пусть взята функция: x3 ≡ a mod 53. Будем выбирать разные x и вычислять а. Результаты занесем в Таблицу.
Таблица. Эксперименты с бросанием жребия.
x |
5 |
8 |
7 |
10 |
11 |
14 |
13 |
16 |
21 |
22 |
25 |
26 |
a |
19 |
35 |
25 |
46 |
6 |
41 |
30 |
15 |
39 |
48 |
43 |
33 |
|
0 |
1 |
0 |
0 |
1 |
1 |
1 |
1 |
0 |
0 |
0 |
1 |
Из таблицы следует, что из 6 нечетных чисел четыре раза получены нечетные и 2 раза четные. Из 6 четных чисел 4 раза получены нечетные числа и 2 раза четные. Конечно, такой эксперимент не обеспечивает полную случайность, но при выборе больших значений P и k результаты могут оказаться более приемлемыми.
3.7. Обеспечение доступа к ресурсам
Для обеспечения доступа к различным ресурсам вычислительной сети (памяти, принтерам, программным средствам и т.п.) часто используется система паролей, примерно так же, как и при охране военных объектов. Запрос с которым обращается пользователь к системе может включать фамилию пользователя и его пароль. По совпадению этих данных система открывает доступ к конкретным ресурсам. Однако для некоторого увеличения секретности в базе данных могут храниться не сами пароли, а только их “слепки”. Слепки получают из паролей с помощью односторонних функций. Т.е. по слепкам пароль восстановить невозможно. В этом случае нарушитель, даже получив каким-то образом доступ к базе данных, не сможет получить список паролей. Однако пароль можно подслушать, подсмотреть или перехватить каким-то другим способом и в дальнейшем его можно использовать для получения доступа к ресурсам системы. Поэтому возможен следующий сценарий, устраняющий этот недостаток. Пользователь выбирает два ключа – шифрования e и расшифрования d. При обращении клиента на центральный пункт ему посылается случайный запрос x, зашифрованный открытым ключом e, клиент расшифровывает своим секретным ключом d и посылает x на центральный пункт, по которому судят, что обращается “свой”.
Пример.
Пусть клиент выбирает большое простое число P и находит два числа, такие, что ed ≡1 mod P-1. Например, P = 103, e = 19, d = 43, x = 28. Проверим, 19*43 1 mod 102. Центр посылает запрос 2819 26 mod 103. Клиент расшифровывает полученное сообщение: 2643 28 mod 103 и посылает число 28 в центр. Центр понимает, что обратился “свой”.
Аналогичную
процедуру можно обеспечить, используя
булевы преобразования. Так, если на
центре и у клиента имеется одна и та же
булева функция F,
то взяв случайную двоичную последовательность
А1
центр может зашифровать ее в виде В1
= F(A1),
а отправить клиенту А1.
Клиент преобразует В1
= F(A1)
и возвратит на центр В1.
Центр сравнит вычисленное значение В1
и полученное от клиента. Если значения
совпадут, то можно считать, что обратился
свой. Чтобы обмануть центр перехватчик
по А1
и В1 может
попытаться найти F1.
Однако вряд ли попытка окажется успешной,
так как нахождение F
неоднозначно. F1
вычисленное клиентом не совпадет с F,
поэтому, если перехватчик на запрос
центра А2
возвратит ему F1(A2)
= B2,
то значение В2
не совпадет со значением В, вычисленным
центром F
(A2)
≠ F1
(A2).
Сложность алгоритма подбора имеет
оценку О(
).
Пример.
Пусть центр выбрал набор запросов А1 – А7 и ответ B, который должен дать клиент:
A1: 1010001100101110 – A32E
A2: 0101110010110100 – 5CB4
A3: 1101111000000101 – DE05
A4: 1011001100011101 – B31D
-----------------------------------------
A5: 1001000111110101 – 91F5
A6: 1100011000010011 – C613
A7: 1111000100100111 – F127
B: 1011101000111100 (BA3C)
Центр находит булеву функцию F, которая по любому значению Аi (i = 1,2,3,4,5,6,7) выработает В, т.е В = F (Ai).
F = !2*1*0*-1*!-4+3*!0*!-2+1*0*!-1*!-3*!-4+3*!0*-1*!-5+!4*3*2*!0+1*!0*!-1*!-2*-4+!4*!3*!1*0*!-2*!-4+!2*!1*!-1*!-2*!-4+!4*!2*1*!0*!-1+2*!1*0*-2+3*1*!0*-1+!4*2*!-1*!-3+1*0*!-1*-2+1*0*-3*-4+!3*2*0*!-1+!0*!-1*!-2*!-3+2*-1*-3+1*!0*-1*-2*!-3+!1*0*-3*!-4+4*!2*0*!-1+4*0*-3.
Здесь обозначено:
!а – инверсия (а),
+ - дизъюнкция (),
* - конъюнкция ().
Перехватчик, наблюдая некоторое время за конкретным клиентом, пытается найти эту булеву функцию, но получив только первые 4 (А1 – А4) запроса по ним и ответу В находит булеву функцию:
F1 =!4*!-1*!-2*!-3+1*0*!-1+3*2*!0*-1+3*!0*!-2+2*0*-2+3*1*-1+2*-1*-3+
1*!0*-2*!-3+0*-3*!-4+4*0*-2+2*!0*!-1*!-3+4*0*-3
Тогда, отвечая на запросы А5-А7 с помощью функции F1, перехватчик вырабатывает совершенно неверные ответы:
F1(A5) = BFFC
F1(A6) = 840E
F1(A7) = 917C
Центр легко определяет, что обратился чужой.
Приведенный пример реализован с использованием теории, изложенной в Приложении 3, и специальной программы нахождения булевой функции F по набору значений Ai и Bi.