Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Все о крипто / КРИПТОГРАФИЯ. Первое знакомство / Раздел 3. Криптографические протоколы.doc
Скачиваний:
12
Добавлен:
04.11.2020
Размер:
207.36 Кб
Скачать

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

Тогда, отвечая на запросы А57 с помощью функции F1, перехватчик вырабатывает совершенно неверные ответы:

F1(A5) = BFFC

F1(A6) = 840E

F1(A7) = 917C

Центр легко определяет, что обратился чужой.

Приведенный пример реализован с использованием теории, изложенной в Приложении 3, и специальной программы нахождения булевой функции F по набору значений Ai и Bi.