Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Иванов М.А. КМЗИ сети

.pdf
Скачиваний:
404
Добавлен:
28.03.2016
Размер:
3.19 Mб
Скачать

1)прикладные протоколы, решающие конкретную задачу, которая может возникнуть на практике;

2)примитивные протоколы, используемые в качестве своеобразных строительных блоков при создании прикладных протоколов.

Протокол чаще всего интерактивен, т.е. предусматривает многораундовый обмен сообщениями между участниками, и включает в себя:

распределенный алгоритм, т.е. описание характера и последовательности действий каждого из участников;

спецификацию форматов пересылаемых сообщений; спецификацию синхронизации действий участников; описание действий при возникновении сбоев [4].

6.2. Доказательства с нулевым разглашением

Существенное влияние на разработку многих криптографических протоколов оказали исследования двух математических моделей – интерактивной системы доказательств (Interactive Proof System) и доказательств с нулевым разглашением знаний

(Zero-Knowledge Proofs).

Интерактивная система доказательств суть протокол (P, V, S) взаимодействия двух субъектов: доказывающего (претендента) P и проверяющего (верификатора) V. Абонент P хочет доказать V, что утверждение S истинно. При этом считается, что абонент V самостоятельно проверить утверждение S не в состоянии, что абонент V не может быть противником, а абонент P может быть противником, пытающимся доказать истинность ложного утверждения S. Протокол, состоящий из некоторого числа раундов обмена сообщениями между P и V, должен удовлетворять двум условиям:

1)полнота – если S действительно истинно, то доказывающий убедит проверяющего признать это;

2)корректность – если S ложно, то доказывающий не сможет убедить проверяющего в обратном.

181

Если предположить, что V может быть противником, который хочет получить информацию об утверждении S, необходим протокол (P, V, S), называемый доказательством с нулевым разглашением, удовлетворяющий, помимо перечисленных, еще и следующему условию:

3) нулевое разглашение – в результате работы протокола абонент V не увеличит своих знаний об утверждении S.

Иными словами, в результате реализации протокола абонент P сможет доказать абоненту V, что он владеет некоторой секретной информацией, не разглашая ее сути.

Упрощенно процедуру доказательства с нулевым разглашением можно представить следующим образом. Проверяющий задает серию случайных вопросов, каждый из которых допускает ответ «да» или «нет». После первого вопроса проверяющий убеждается в том, что доказывающий заблуждается с вероятностью 1/2. После второго вопроса проверяющий убеждается в том, что доказывающий заблуждается с вероятностью 1/4 и т.д. (после каждого вопроса знаменатель удваивается). После 100 вопросов вероятность того, что доказывающий заблуждается или не располагает доказательством (не владеет секретной информацией), становится настолько близкой к нулю, что даже у самого «недоверчивого» проверяющего не должно остаться сомнений в справедливости доказываемого утверждения. После 300 вопросов знаменатель достигает величины, которая превосходит число атомов во Вселенной.

Роль доказательств с нулевым разглашением особенно велика при реализации протоколов аутентификации. Пусть, например, Р – алгоритм, реализованный в интеллектуальной карточке клиента (абонент А) банка; V – программа, выполняемая компьютером банка (абонент В). Перед выполнением любой операции банк должен убедиться в подлинности карточки и идентифицировать ее владельца. Если для этой цели использовать протокол (P, V, S), свойство полноты позволит карточке доказать свою аутентичность; свойство корректности защитит интересы банка от злоумышленника, который попытается воспользоваться

182

фальшивой карточкой; свойство нулевого разглашения защитит клиента от злоумышленника, который попытается пройти аутентификацию под именем абонента А, воспользовавшись информацией, перехваченной во время предыдущих раундов аутентификационного обмена. Аналогичных результатов можно добиться, используя протоколы доказательств с нулевым разглашением для создания не поддающихся подделке удостоверений личности, как для военных так и гражданских целей [4].

6.2.1. Пещера нулевого знания

На рис. 6.1 показана физическая реализация протокола доказательства с нулевым разглашением с помощью так называемой «пещеры нулевого знания» [32]. В пещере имеется дверь Д, от которой у участника протокола P (доказывающего) есть секретный ключ. P хочет доказать другому участнику протокола V (проверяющему) свою способность проходить через дверь (наличие секретного ключа), не демонстрируя сам факт прохождения через дверь. Показаны две итерации протокола.

Работу генератора ПСЧ в этой реализации имитирует процедура подбрасывания монеты, которую на определенных шагах протокола выполняют обе стороны.

6.2.2. Протокол ФиатаШамира

Примером протокола доказательства с нулевым разглашением может являться схема Фиата–Шамира, показанная на рис. 6.2. Доверенный третий участник протокола выбирает два больших простых числа p и q, затем вычисляет n = pq. Величина n откры-

то публикуется. Абонент A выбирает случайное число s Zn ,

вычисляет Θ s2 modn . А хранит s в качестве своего секретного ключа и объявляет ν своим открытым ключом.

183

P А V

В

С

 

D'

D''

Д

 

Исходная ситуация: доказывающий P и проверяющий V находятся в точке А

V

RA = 0

P

Д

Итерация 1, шаг 1: доказывающий P спускается в пещеру; дойдя до точки С, подбрасывает монету; исход RA = 0, поэтому Р поворачивает

налево и спускается в точку D';

V не видит, куда повернул Р

V

P

Д

Итерация 1, шаг 2:

V спускается в точку В;

V не видит, где находится Р

V RB = 0

P

Д

Итерация 1, шаг 3:

V подбрасывает монету; исход RB = 0, поэтому V просит Р выйти из пещеры слева, Р из точки D' возвращается в точку В, не пройдя через дверь Д

Рис. 6.1. Пещера нулевого знания (начало)

184

P V V

RA = 1

P

Д

Итерация 2, шаг 4:

P и V возвращаются в исходную ситуацию в точку А

Д

Итерация 3, шаг 1: доказывающий P спускается в пещеру; дойдя до точки С, подбрасывает монету; исход RA = 1, поэтому Р поворачивает

направо и спускается в точку D'';

V не видит, куда повернул Р

V

V

P

Д

Итерация 3, шаг 2: V спускается в точку В;

V не видит, где находится Р

RB = 1

P

 

Д

Итерация 3, шаг 3:

V подбрасывает монету; исход RB = 1, поэтому V просит Р выйти из пещеры справа, Р из точки D’’ возвращается в точку В, не пройдя через дверь Д

Итерация 3, шаг 4:

P и V возвращаются в исходную ситуацию - в точку А Результат:

С вероятностью 7/8 можно утверждать, что P владеет секретом прохождения через дверь Д

Рис. 6.1. Пещера нулевого знания (окончание)

185

s закрытый ключ А

ν, n открытый ключ А,

 

xA – случайное число

b случайный бит

 

 

A

 

B

 

1

yA = (xA)2 mod n

 

 

 

 

2

yA

 

 

 

 

b

3

 

4 yA' = xAsb mod n

 

 

 

 

5

yA'

 

 

 

 

(yA')2

Сравнение

6

 

 

mod n и yAν2 mod n

 

 

Доказательство принимается

 

 

 

или отвергается

 

 

Рис. 6.2. Протокол Фиата–Шамира

 

Протокол включает шесть шагов:

1) абонент A выбирает случайное число xA; А вычисляет yA xA2 mod n ;

2)А посылает yA абоненту В;

3)абонент В, проверяющий, посылает А в качестве запроса случайный бит b 0, 1`;

4) абонент А вычисляет ответ y '

x

A

sb ;

A

 

 

5)А посылает ответ В, чтобы доказать, что он знает свой секретный ключ s;

6)абонент В вычисляет yA' 2 и yAΘb . Если эти два числа сравнимы по модулю n, то либо абонент А знает число s, либо вычислил значение y каким-либо другим способом. Доказательство этого факта элементарно:

y ' 2

x

A

sb 2

x

A

2

s2 b

y Θ b .

A

 

 

 

 

 

A

Эти шесть шагов образуют один раунд. Проверка осуществляется несколько раз с выбираемыми случайно значениями b.

186

Доказывающая сторона должна успешно пройти проверку в каждом раунде, чтобы быть аутентифицированной. Если в какомто раунде проверка завершилась отрицательным результатом, процесс аутентификации прерывается.

Если А знает s, он пройдет проверку во всех раундах. Если А не является тем, за кого он себя выдает, т.е. не знает s, он может попытаться пройти раундовую проверку, правильно предсказав

величину b. При этом возможны две ситуации:

 

1)

А предполагает,

что

b будет равно 1.

А вычисляет

yA

xA2 / Θ и посылает yA абоненту В.

 

Если предположение А оказывается правильным, он посыла-

ет на шаге 3 yA'

xA в качестве ответа. Видно,

что А пройдет

проверку, так как

y ' 2

y Θ b .

 

 

 

A

A

yA' не пройдет проверку и В пре-

Если А ошибся, значение

рвет процесс аутентификации.

 

 

2)

А предполагает,

что

b будет равно 0.

А вычисляет

yA

xA 2 и посылает yA абоненту В.

 

Если предположение А оказывается правильным, он посыла-

ет на шаге 3 yA'

xA в качестве ответа. Видно,

что А пройдет

проверку, так как

y ' 2

y Θ b .

 

 

 

A

A

yA' не пройдет проверку и В пре-

Если А ошибся, значение

рвет процесс аутентификации.

 

 

Таким образом, абонент, не знающий числа s, успешно пройдет раундовую проверку с вероятностью 1/2. Если процесс повторяется 20 раз, вероятность успеха снижается до

1/ 2 20 | 9,5υ10 -7.

6.2.3. Протокол ФейгаФиатаШамира

Особенностью данного протокола (рис. 6.3) является использование вектора секретных ключей, вектора открытых ключей и вектора запросов. Секретные ключи выбираются случайно, но при этом они должны быть взаимно простые с n. Открытые клю-

187

чи выбираются таким образом,

чтобы Θ

i

s2 -1modn .

b

на ша-

ге 3 также выбираются случайно.

 

 

 

 

i

 

 

i

 

 

 

 

 

 

 

 

 

 

 

 

 

Протокол основывается на справедливости равенства

 

 

 

y

A

' 2Θb1 Θb2 ...vbm

 

x

2 sb1 2 sb2 2... sbm

2 Θb1

Θb2 ...Θbm

 

 

 

 

 

1 2

m

 

b2

 

A 1

 

 

2

 

 

 

m

1

 

2

m

 

 

 

 

y

A

s2

b1 Θb1

s2

Θb2 ... s2 bm Θbm

 

 

 

 

 

 

 

 

 

1

1

2

b2

 

2

 

 

m

 

 

m

 

 

 

 

 

 

 

 

 

y

A

s2Θ b1 s2Θ

2

... s2

Θ

m

bm

y

A

1 b1 1 b2 ... 1 bm

y

A

.

 

 

 

1

1

2

 

 

m

 

 

 

 

 

 

 

 

 

 

 

[s1, s2, …, sm] закрытые ключи А

1, ν2, …, νm], n – открытые ключи А,

 

 

xA – случайное число

 

 

 

 

[b1, b2, …, bm] – случайные биты

 

 

 

 

 

 

A

 

 

 

 

 

 

 

 

 

 

 

 

B

 

 

 

 

 

 

 

1 yA = xA2 mod n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

yA

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

[b1, b2, …, bm]

 

 

3

 

 

 

 

 

 

4

yA′ = (xA×s1b1×s2b2×...×smbm) mod n

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5

 

 

 

yA

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

b1

 

Сравнение

 

 

 

6

 

 

 

 

 

 

 

 

 

 

 

 

 

×ν1

 

b2

bm

) mod n и yA

 

 

 

 

 

 

 

 

 

 

 

((yA′)

 

×ν2

×...×νm

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Доказательство принимается

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

или отвергается

 

 

 

Рис. 6.3. Протокол Фейга–Фиата–Шамира

6.3. Протоколы подбрасывания монеты

Классическим примером задачи, решаемой двумя удаленными абонентами, является бросание жребия с помощью подбрасывания монеты. Это необходимо сделать так, чтобы абонент А, подбрасывающий монету, не мог изменить результат после получения догадки от абонента В, угадывающего этот результат. Протокол решения данной задачи называют протоколом подбрасывания монеты. Этот примитив (по сути, протокол генера-

188

ции случайного бита) используют в своем составе многие прикладные протоколы.

Примером такого протокола является схема БлюмаМикали, предполагающая наличие у двух его участников односторонней функции F : X ο Y, удовлетворяющая следующим требованиям:

X – конечное множество целых чисел, содержащее одинаковое количество четных и нечетных чисел;

любые числа x1, x2 X , такие, что F x1 F x2 , имеют одинаковую четность;

по заданному значению F(x) невозможно определить четность аргумента x.

Протокол подбрасывания монеты (схема БлюмаМикали)

1.Абонент А выбирает случайное число xA X (подбрасывает монету), вычисляет yA F xA и посылает yA абоненту В.

2.Абонент В, получив yA , пытается угадать четность xA и посылает свою догадку А.

3.Абонент А, получив догадку от В, сообщает последнему, угадал ли он, посылая ему выбранное число xA .

4.Абонент В, получив xA , проверяет, не обманывает ли А, вычисляя значение F xA и сравнивая его с полученным на втором шаге значением yA .

Суть протокола состоит в том, что абонент А связывает себя с числом xA , так как он сообщает абоненту В значение

yA F xA , однако абонент В не может самостоятельно вычислить xA , так как F x является односторонней функцией.

Следующий протокол подбрасывания монеты (рис. 6.4) основан на предположении о вычислительной неразрешимости задачи дискретного логарифмирования. Пусть p и q – простые числа, причем q делит p – 1. Найдем такое g Z p , что

gq 1mod p, g ζ 1.

189

 

xA – случайное число,

xВ

– случайное число,

 

 

 

a – случайный бит

b – случайный бит

 

 

 

A

 

 

B

 

 

1

yA = g xA mod p

 

 

 

 

 

 

2

yA

 

 

 

 

 

 

 

 

yB = yAbg xB mod p

3

 

 

 

yB

 

4

 

 

 

5

a

 

 

 

 

 

 

b, xB

 

6

 

7

Проверка равенства

 

 

 

 

yB = yAbg xB mod p

 

 

 

При положительном исходе

 

 

 

 

 

результат c = a

b

 

 

 

Рис. 6.4. Протокол подбрасывания монеты

Протокол подбрасывания монеты (схема Блюма)

1. Абонент А выбирает случайное число xA Zq , вычисляет yA gxA mod p .

2.Абонент А посылает yA абоненту В.

3.Абонент В выбирает случайный бит b и случайное число

xB Zq , вычисляет yB ybAg xB mod p .

4.Абонент В посылает yB абоненту А.

5.Абонент А выбирает случайный бит a и посылает его абоненту В.

6.Абонент В посылает абоненту А бит b и число xB .

7. Абонент А проверяет равенство yB ybAg xB mod p. При по-

ложительном исходе результатом выполнения протокола будет бит c a b.

190