Криптографические протоколы - Lection
.pdf2.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 = d−1 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 + c1(λ0, λ1)p + c2(λ0, λ1, λ2)p2 + · · · + ck−1(λ0, . . . , λ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 однозначно определяется из сравнения
c1(λ0, λ1) = A1 + α1 (mod p).
Для нашего примера, это сравнение примет вид:
2·1·λ1 = 0 + 0 (mod 3).
Следовательно, λ1 = 3.
Далее, вычисляем A2 = (A1 + α1 − c1(λ0, λ1)) /p и находим λ2 из сравнения c2(λ0, λ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−1(λ0, . . . , λi−1) p
35
и однозначно определим компоненту λi из сравнения |
|
Ai + ai = ci(λ0, . . . , λi−1) (mod p). |
(5) |
Таким образом, описанная процедура позволяет однозначно (при данном λ0 ) найти решение сравнения (2).
Для рассматриваемого примера, k = 3,
A3 = |
A2 + α2 − c2(λ0, λ1, λ2) |
= |
0 + 2 − 2 |
= 0, c3(λ0, λ1, λ2, λ3) = aλ3. |
|
|
3 |
||||
|
3 |
|
|
|
|
Последняя компонента λ3 |
определяется из сравнения |
2λ3 = 0 + 2 (mod 3).
Таким образом, λ3 = 1, а искомое решение
x = ±(1 + 0·3 + 1·9 + 1·27) = ±37.
Замечание. Описанный в Лемме 2 алгоритм допускает следующую модификацию, позволяющую находить компоненты λ0, λ1, . . . , λk−1 без выписывания выражений для коэффициентов ci(λ0, . . . , λ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 примет вид:
2λ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 |
= −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