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

Криптографические протоколы - Lection

.pdf
Скачиваний:
37
Добавлен:
17.03.2015
Размер:
533.67 Кб
Скачать

2.4Вычислить С = kP Ep(a, b), C = (xc; yc).

2.5Вычислить r = xc (mod q).

2.6Проверить условие r 6= 0. В противном случае вернуться на шаг 3.

2.7Вычислить величину s = rd + ke (mod q).

2.8Проверить условие s 6= 0. В противном случае вернуться на шаг 3.

2.9Вычислить двоичные векторы длины 256 бит r˜ и s˜ соответствующие числам r и s.

Выход: вектор ξ = (˜r||s˜) подпись исходного сообщения M.

3.Алгоритм проверки подписи

Вход: M||ξ сообщение, дополненное подписью ξ.

3.1Вычислить по ξ числа r и s.

3.2Проверить условие r, s Zq\{0}. Если оно не выполняется, то подпись отвергается. Иначе перейти на шаг 3.

3.3Вычислить H = h(M), e = H (mod q).

3.4Если e = 0, то положить e = 1.

3.5Вычислить v = e−1 (mod q).

3.6Вычислить z1 = sv (mod q) и z2 = −rv (mod q).

3.7Вычислить точку C(xc; yc) = z1P + z2Q Ep(a, b).

3.8Вычислить R = xc (mod q).

3.9Проверить условие R = r. Если оно выполняется, то подпись принимается, в противном случае подпись отвергается.

4.Доказательство корректности алгоритма формирования

ипроверки подписи

Из шагов 3.5 – 3.8 алгоритма проверки подписи имеем

C = se−1P − re−1Q = se−1P − re−1dP = e−1 (s − rd) P = kP.

Откуда с учётом шага 2.4 алгоритма формирования подписи получим

R ≡ xc = r (mod q).

Таким образом, если сообщение и подпись не изменены в процессе их передачи по открытому каналу связи, то получатель сообщения будет уверен в его целостности.

31

Модели интерактивных протоколов доказательств с нулевым разглашением

Неформально протокол доказательства с нулевым разглашением решает следующую задачу.

Участник A (доказывающий) утверждает, что он обладает некоторой информацией M (знаниями), например, доказательством некоторой теоремы, и желает убедить в этом участника B (проверяющего). При этом должны выполняться условия:

участник B после выполнения протокола не сможет получить дополнительных сведений об информации M;

вероятность того, что A не знает M, но убедил B в обратном, должна практически равняться 0.

Протокол доказательства знания разложения натурального числа на два простых множителя

Участник A должен убедить B, что он знает простые сомножители числа n = p·q. Число n участнику B известно. Протокол выполняется t раундов. Число раундов определяет вероятность обмана p 6 1/2t, то есть p это вероятность того, что A не зная p и q, убедил участника B в обратном.

Очередной раунд протокола выполняется только в том случае, если предыдущий раунд закончился корректно. В противном случае протокол заканчивает свою работу и результат участник A не знает делителей p и q числа n.

Описание раундов вычислений и процедур

1.B выбирает x R Zn, вычисляет y = x2 (mod n) и посылает A число y .

2.A выбирает m R Zϕ(n), вычисляет z = ym (mod n) и посылает B число z .

3.B выбирает σ R {0, 1} и посылает σ участнику A.

4.Если σ = 0, то A посылает B показатель m, в противном случае A вычисляет

z = w и посылает B число w.

5. B вычисляет величину

z0 = ym = x2m (mod n), если σ = 0, w2, если σ = 1;

и проверяет истинность равенства z0 = z.

Если оно выполняется, то соответствующий раунд заканчивается корректно. В противном случае протокол заканчивает свою работу, а участник A признаётся не знающим сомножителей p и q.

32

Из описания раунда протокола следует, что, не зная p и q, участник A сможет обмануть B с вероятностью p = 1/2. Поэтому вероятность обмана B участником A после корректно выполненных t раундов, равна p = 1/2t.

С другой стороны участник B по данным, полученным от A (шаги 1 и 4) не может извлечь никакой информации о разложении числа n.

Замечание. При выполнении шага 2 вместо функции f(y) = ym, можно (на самом деле нужно) использовать какую-либо однонаправленную функцию f: Q → Q, где Q = {a2: a Zn}. Тогда при шаге 4 участник A в случае, если σ = 1, должен предоставить эту функцию B.

Протокол доказательства знания дискретного логарифма

Пусть G конечная группа, hai = H < G, |H| = n. Реализация групповой операции, элемент a и его порядок известны всем участникам протокола. Пусть b = ax, x Zn. Участник A должен доказать B, что он знает x = loga b. Как и в предыдущей задаче, протокол выполняется t раундов и вероятность обмана составляет p 6 1/2t. Дадим описание раунда протокола.

1.A выбирает y R Zn, вычисляет элемент c = ay группы G и посылает c участнику B.

2. B проверяет, что c H, для этого он вычисляет h = cn и проверяет равенство h = e, где e единичный элемент группы G. Затем B выбирает случайный бит

σ R {0, 1} и посылает σ участнику A.

3.A вычисляет число dσ = y·x−σ (mod n) и посылает его B.

4.B в зависимости от выбранного им значения σ вычисляет элемент

cσ =

bd1

= ay, если σ = 1;

 

ad0

= ay, если σ = 0,

и сравнивает cσ и c. Если cσ 6= c,

то раунд заканчивается некорректно, в про-

тивном случае участники переходят к следующему раунду.

Замечание. Доказывающий A сможет с вероятностью 1/2 обмануть участника B в одном раунде. Это он сможет сделать в случае, если σ = 0. (???)

Замечание. Показатели y1, . . . , yt, выбираемые в шаге 1 должны быть попарно различными. В противном случае B сможет вычислить x = loga b. Действительно, пусть, например, y1 = y2 и B знает порядок группы H. Тогда в первом раунде, выполняя шаг 2, он посылает σ = 0, а в раунде 2 посылает σ = 1. Тогда после выполнения шага 3 он в первом раунде будет знать число d0 = y, а во втором раунде число d1 = y·x−1. Отсюда он элементарно вычисляет x = d1 1·d0 (mod n).

33

Протокол доказательства правильности выбора модуля вычислений для системы RSA

В этом протоколе A должен доказать B, что число n (общий модуль вычислений для системы RSA) выбрано правильно, то есть удовлетворяет следующим требованиям:

n = p2a+1q2b+1, p ≡ q ≡ 3 (mod 4).

Лемма 1.

Если n = pq

число Блюма и

v

=

1,

 

 

 

чисел

 

 

 

 

p

 

 

то для любого

является квадратичным вычетом.

x, −x, vx, −vx

 

 

 

 

 

Доказательство.

 

 

 

 

 

 

 

 

вычетом. С

 

 

−1

 

 

 

 

 

Так как

 

−1

=

= −1,

то одно из чисел y, −y

 

p

q

другой стороны имеем:

x Zn, только одно из

является квадратичным

{x, −x, vx, −vx} = {vx, −vx, v−1(vx), −v−1(vx)}.

Поэтому для доказательства леммы достаточно установить тот факт, что если x квадратичный вычет, то vx и −vx являются квадратичными невычетами при любом v Zn. Действительно,

n

n

n

 

 

n n n

n

 

 

 

vx

=

v

 

x

=

 

1,

 

vx

=

−1

 

v

 

x

=

 

1.

 

 

 

 

 

 

 

 

 

 

 

 

Лемма 2.

Пусть p простое число и p > 3. Тогда число a Z является квадратичным вычетом по модулю pk при любом k > 2 тогда и только тогда, когда a квадратичный вычет по модулю p.

Доказательство.

Необходимость условия леммы следует из того, что если x20 ≡ a (mod pk), то x20 ≡ a

(mod p).

Доказательство достаточности конструктивное. Укажем алгоритм решения сравнения

x2 ≡ a (mod pk), k > 2

при условии, что известно решение x = x0 Zp сравнения x2 ≡ a (mod p). Представим a и искомое x в p -ичной системе счисления:

x

= λ0 + λ1p + · · · + λk−1pk−1, λi Zp,

a

= α0 + α1p + · · · + αk−1pk−1, αi Zp.

(1)

(2)

34

Тогда сравнение (1) можно переписать следующим образом:

λ20 + c10, λ1)p + c20, λ1, λ2)p2 + · · · + ck−10, . . . , λk−1)pk−1

≡ α0 + α1p + · · · + αk−1pk−1 (mod pk). (3)

Очевидно, что ci линейно зависит от λi.

В дальнейшем доказательство будем сопровождать численным примером, а именно рассмотрим сравнение

x2 ≡ 73 (mod 81).

Очевидно, что x = 1 Z3, является решением сравнения

x2 ≡ 73 (mod 3).

Выражения (2) для этого сравнения будут иметь вид:

x

=

λ0 + 3·λ1 + 9·λ2 + 27·λ3,

(2)

73

=

1 + 3·0 + 9·2 + 27·2.

 

Сравнение (3) для вычисления λi, i = 1, 3 перепишется следующим образом:

λ20 + (2λ0λ1)·3 + (2λ0λ2 + λ21)·9 + (2λ0λ3 + 2λ1λ2)·27 = 1 + 3·0 + 9·2 + 27·2 (mod 81)

Так как α0 ≡ a (mod p) и по условию сравнение x2 = a (mod p) имеет решение, то из (3) следует, что в качестве λ0 можно взять любое из двух решений сравнения

λ= α0 (mod p).

Врассматриваемом примере возьмём λ0 = 1.

Далее, из (3) следует, что если A1 = (α0 −λ20)/p, то компонента λ1 Zp однозначно определяется из сравнения

c10, λ1) = A1 + α1 (mod p).

Для нашего примера, это сравнение примет вид:

2·1·λ1 = 0 + 0 (mod 3).

Следовательно, λ1 = 3.

Далее, вычисляем A2 = (A1 + α1 − c10, λ1)) /p и находим λ2 из сравнения c20, λ1, λ2) = A2 + α2 (mod p).

Для нашего примера находим λ2 из сравнения

2·λ2 = 0 + 2 (mod p).

Таким образом, λ2 = 1.

Далее, если мы уже определили λ0, . . . , λi−1 и соответствующие константы A0 = 0, A1, . . . , Ai−1, то вычислим величину

Ai = Ai + ai−1 ci−10, . . . , λi−1) p

35

и однозначно определим компоненту λi из сравнения

 

Ai + ai = ci0, . . . , λi−1) (mod p).

(5)

Таким образом, описанная процедура позволяет однозначно (при данном λ0 ) найти решение сравнения (2).

Для рассматриваемого примера, k = 3,

A3 =

A2 + α2 − c20, λ1, λ2)

=

0 + 2 − 2

= 0, c30, λ1, λ2, λ3) = aλ3.

 

3

 

3

 

 

 

Последняя компонента λ3

определяется из сравнения

3 = 0 + 2 (mod 3).

Таким образом, λ3 = 1, а искомое решение

x = ±(1 + 0·3 + 1·9 + 1·27) = ±37.

Замечание. Описанный в Лемме 2 алгоритм допускает следующую модификацию, позволяющую находить компоненты λ0, λ1, . . . , λk−1 без выписывания выражений для коэффициентов ci0, . . . , λi−1).

Если мы уже определили λ0, . . . , λi, то число

bi = λ0 + λ1p + · · · + λipi

всегда удовлетворяет условию

b2i ≡ a (mod pi+1).

Поэтому существует ci такое, что b2i = a + cipi+1. С другой стороны, bi+1 = bi + +λi+1pi+1 и из условия b2i+1 ≡ a (mod pi+2) следует, что

b2i+1 = (bi + λi+1pi+1)2 = b2i + 2λ0λi+1pi+1 = a + (2λ0λi+1 + ci)pi+1 (mod pi+2).

Отсюда получаем сравнение для вычисления компоненты λi+1 : 2λ0λi+1 + ci ≡ 0 (mod p),

из этого сравнения однозначно находим λi+1 :

λi+1 = (−2λ0)−1ci.

Пример. Решим сравнение

x2 ≡ 58 (mod 81).

Очевидно, что k = 4 и λ0 = 1 является решением сравнения x2 ≡ 1 (mod 3).

36

Поэтому b0 = λ0 = 1, b20 = 58 − 19·3, c0 = −19.

Компонент λ1 находим из сравнения

2·1λ1 − 19 = 0 (mod 3).

Очевидно, что λ1 = 2.

Далее, b1 = λ0 + λ1p = 1 + 2·3 = 7, b21 = 49 = 58 − 1·32, c1 = −1.

Компоненту λ2 ( = 2 ) находим из сравнения

2·λ2 − 1 = 0 (mod 3).

Тогда

b2 = λ0 + λ1p + λ2p2 = 1 + 2·3 + 2·9 = 25.

Отсюда следует, что b22 = 58 + 21·33, c2 = 21. Сравнение для определения λ3 примет вид:

3 + 21 = 0 (mod 3).

Откуда определяем λ3 = 0.

Таким образом, решением исходного сравнения будет число

x= λ0 + 3λ1 + 32λ2 + 33λ3 = 1 + 2·3 + 2·9 + 0·27 = 25.

1.B выбирает w1, . . . , wk R Zn, wi 6= ±1 и посылает их A.

2.A выбирает случайные нечётные показатели степени c1, . . . , ck R Zϕ(n), вычис-

ляет xi = wici (mod n) и {x1, . . . , xk} посылает B.

3. B выбирает

случайным образом из множества {x1, . . . , xk} k−1 элементов

xα1 , . . . , xαk−1

и посылает их A.

4.A выбирает соответствующие показатели степени cα1 , . . . , cαk−1 и посылает их B.

5.B вычисляет величины

xαi = wcαi , i = 1, k − 1

и сравнивает их с соответствующими величинами, полученными им от A на шаге 2.

Если проверка прошла успешно, то число x {x1, . . . , xk} ∩ {xα1 , . . . , xαk−1 } имеет вид x = wc, где w выбрано участником B, а показатель степени c выбран

участником A.

Замечание. Вероятность обмана в одном раунде участником B участника A (см. шаг 3 ) равна 1/k.

37

Раунд доказательства правильности выбора числа

 

 

 

 

 

 

 

 

 

1. B выбирает случайный бит σ R {0, 1} и посылает его A.

{

 

 

 

 

}

 

2.

 

z0

 

 

σ

 

 

 

 

 

 

 

 

, что

 

A вычисляет такое z0 из уравнения z2 = h (mod n), где h

 

x,

 

x, vx,

 

vx

 

 

 

и

 

числа

 

)

 

 

 

 

 

 

 

 

 

 

 

 

 

n

 

= (−1)

и z0 посылает B. (Он может вычислить z0, если знает сомножители

 

p

 

 

q

 

n.

 

 

 

 

 

 

 

 

 

 

 

 

3. B вычисляет g = z02 и проверяет два условия:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

g {x, −x, vx, −vx},

 

 

 

 

 

 

 

 

(1)

 

 

 

 

 

 

 

 

z

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

= (−1)σ.

 

 

 

 

 

 

 

 

(2)

 

 

 

 

 

 

 

n

 

 

 

 

 

 

 

 

Если во всех t

раундах вычисления прошли корректно, то есть выполнены все усло-

вия, то число n выбрано правильно.

 

 

 

 

 

 

 

 

 

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

 

 

 

 

 

 

 

 

 

Установим, что число n действительно имеет вид

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

n = p2a+1q2b+1.

 

 

 

 

 

 

 

 

 

Возможны следующие случаи.

 

 

 

 

 

 

 

 

 

1. n = p1p2 . . . p2k+1.

 

 

 

 

 

 

 

 

 

Так как по условию n ≡ 1 (mod 4), то хотя бы один простой делитель

p

= pi

числа n

должен быть сравним с 1 по модулю 4. Но тогда, если случайно выбранные

таким образом,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

x и v таковы, что

x

= −1,

v

= 1, то

vx

=

−vx

=

−x

=

x

= −1. И,

p

p

p

p

p

p

 

среди чисел

{

x,

 

vx

}

нет вычета по модулю n = pm.

 

 

 

x, vx,

 

 

 

2. n = p1p2 . . . p2k, k > 2, pi 6= pj, i, j = 1, 4.

Из п.1 следует, что pi ≡ 3 (mod 4), i = 1, 2k. Выясним, при каких условиях существует z0 Zn такой, что z02 {x, −x, vx, −vx}. Допустим, что x и −x невычеты, но nx = 1. Так как

 

 

 

 

 

 

 

 

 

 

 

 

 

x

 

2k

 

x

,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

= i=1

 

 

 

 

 

 

(1)

 

 

 

 

 

 

 

 

 

 

 

 

 

n

pi

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Y

 

 

 

 

 

 

 

 

то чётное число

 

x

 

равно

 

1. Из условия pi

 

3 (mod 4) вытекает, что

−x

=

pi

 

 

 

 

x

 

 

 

x

 

x

 

 

 

 

 

 

 

vx

 

vx

pi

 

 

и, следовательно,

n

 

=

n

= 1.

Отсюда получаем, что

n

 

= n

= −1.

pi

Таким образом, нарушается условие Леммы 1. Следовательно, в этом случае x либо −x является квадратичным вычетом. Но тогда для данного случайно выбранного x и

любого i = 1, 2k

 

pi

 

либо

pi

pi

pi

 

 

v

=

 

x

,

 

 

v

=

−x

.

 

 

 

 

 

 

 

 

Действительно, если (−1)σx квадратичный вычет, то для любого i = 1, 2k

(−1)σx

pi

= 1.

38

v
n
= 1 при любом v Zn.

Теперь, если

 

v

= −1, то

 

 

 

 

pi

 

 

 

 

 

 

 

 

v

 

=

1)σ+1x

= 1.

 

 

 

 

(−

 

 

 

pi

pi

Очевидно, что вероятность такого события не превышает 1/2. Поэтому, вероятность выбора такого числа n после выполнения протокола не будет превосходить (1/2)t.

3. n = p2qr, p 6= q, p - r, r - r.

Из Леммы 2 следует, что

z02 {x, −x, vx, −vx} (mod p2qr)

тогда и только тогда, когда

z02 {x, −x, vx, −vx} (mod pqr).

Учитывая, что

v

=

 

v

= −1, нетрудно показать, что вероятность такого собы-

n

 

pq

выборе x и v не превосходит 1/2. Следовательно, после выполне-

тия при случайном

 

 

 

 

ния t раундов вероятность неправильного выбора числа n будет не больше, чем (1/2)t.

4. n = p2aq2b.

Этот вариант невозможен, так как в этом случае

5. n = p2aq, a > 1.

Этот случай невозможен, так как по условию n ≡ 1 (mod 4), p ≡ q ≡ 3 (mod 4). 6. Остаётся случай n = p2a+1q2b+1.

Тем самым доказательство корректности протокола завершено.

Протоколы распределения ключей

Будем рассматривать следующие основные типы криптографических протоколов распределения ключей:

протоколы передачи сеансовых секретных ключей;

протоколы совместной выработки общего ключа (открытое распределение ключей);

протоколы предварительного распределения секретных ключей.

Протоколы передачи секретных сеансовых ключей

Двухсторонние протоколы на основе симметричных криптосистем

Участники A и B информационного взаимодействия имеют общий секретный долговременный ключ KAB и общую симметрическую криптосистему. В процессе выполнения протокола участник A должен передать участнику B сеансовый секретный ключ K. Предполагается, что участники обладают генератором случайных чисел, порождающим случайные секретные ключи.

Протокол 1.

39

1. A вырабатывает

K R K ( K

пространство

ключей) и формирует набор

w = (K, t, idB),

где t метка

времени, idB

идентификатор участника B.

Затем он шифрует w на общем секретном ключе KAB : m = EKAB (w) и зашифрованное сообщение m посылает участнику B.

2.B расшифровывает m : DKAB (m) = w и извлекает из w сеансовый секретный ключ K.

Замечание. Метка времени необходима для того, чтобы злоумышленник не смог осуществить повторную передачу участнику B зашифрованного сообщения m.

В протоколе 1 вместо процедуры шифрования можно использовать общую ключевую хэш-функцию hK : {0, 1} → {0, 1}n. Модифицированный протокол будет следующим:

Протокол 10 .

1. A вырабатывает K R K, t и idB, вычисляет величину H = hKAB (t, idB) и m = H K. Набор (t, idB, m) пересылается участнику B.

2. B вычисляет H = hKAB (t, idB) и определяет K = H m.

Следующий протокол типа “запрос-ответ” позволяет провести одностороннюю аутентификацию пользователя A.

Протокол 2 .

1. B формирует запрос rB R X и посылает его A.

2. A вырабатывает K R K, формирует набор w = (K, rB, idB), шифрует его: m = EKAB (w) и посылает m участнику B.

3.B расшифровывает m, аутентифицирует A по параметру rB и извлекает из m сеансовый ключ K.

Этот протокол, как и протокол 1, допускает применение общей ключевой хэшфункции hK : {0, 1} → {0, 1}n вместо шифрования.

Протокол 20 .

1.B формирует запрос rB R X и посылает его A.

2.A вырабатывает K R K и вычисляет величины H = hKAB (rB, idB), m = H K, rA = EK (rB) и посылает участнику B набор (rA, m).

3.B вычисляет H = hKAB (rB, idB), определяет сеансовый ключ K = m H и затем расшифровывает rA, что позволяет ему аутентифицировать участника A.

40