Главная страница

Криптография 2е издание Протоколы, алгоритмы и исходные тексты на языке С


Скачать 3.25 Mb.
НазваниеКриптография 2е издание Протоколы, алгоритмы и исходные тексты на языке С
Дата29.04.2022
Размер3.25 Mb.
Формат файлаpdf
Имя файлаShnayer_Prikladnaya-kriptografiya.352928.pdf
ТипПротокол
#504484
страница52 из 78
1   ...   48   49   50   51   52   53   54   55   ...   78
(6) Микросхема обычным образом подписывает сообщение, используя выбранное на этапе (5) значение k.
(7) Алиса посылает цифровую подпись Бобу, или опубликовывает ее в сети, или еще что-нибудь делает.
(8) Мэллори раскрывает r и, так как он знает 14 простых чисел, расшифровывает подсознательное
сообщение.
Страшнее всего, что, даже если Алиса знает, что происходит, она ничего не сможет доказать . Пока 14 про- стых чисел хранятся в секрете, Мэллори в безопасности.
Уничтожение подсознательного канала в DSA
Подсознательный канал опирается на то, что Алиса может выбирать k для передачи подсознательной ин- формации. Чтобы сделать подсознательный канал невозможным, Алисе не должно быть позволено выбирать k.
Однако, выбор k должен быть запрещен и для всех других. Если кому-то другому будет позволено выбирать k,
то этот человек получит возможность подделать подпись Алисы . Единственным решением для Алисы является проведение генерации k вместе с другой стороной, Бобом, так, чтобы Алиса не могла контролировать ни один бит k, а Боб не мог определить ни один бит k. На другой стороне протокола у Боба должна быть возможность проверить, что Алиса использовала именно совместно созданное k.
Вот этот протокол [1470, 1472, 1473]
(1) Алиса выбирает k' и посылает Бобу u = g k'
mod p
(2) Боб выбирает k" и посылает его Алисе.
(3) Алиса вычисляет k = k'k" mod (p - 1). Она использует k, чтобы подписать свое сообщение M, используя
DSA, и посылает Бобу свою подпись: r и s.
(4) Боб проверяет, что ((u = g k'
mod p) mod q) = r
Если это так, то он знает, что для подписи M использовалось k. После этапа (4) Боб знает, что в r не было включено никакой подсознательной информации . Если он является доверенной стороной, он может проверить,
что в подписи Алисы нет подсознательной информации . Другим придется поверить его заявлению, Боб не см о- жет доказать этот факт третьей стороне, воспроизведя протокол .
Удивительно то, что Боб, если захочет, может использовать этот протокол для создания собственного по д- сознательного канала. Боб может включить подсознательную информацию в одну из подписей Алисы, выбрав k" с определенными характеристиками. Когда Симмонс открыл такую возможность , он назвал ее "Каналом ку- кушки". Подробности работы Канала кукушки, и мешающий этому трехпроходный протокол генерации k, рас- сматриваются в [1471, 1473].
Другие схемы
Подсознательный канал можно организовать для любой схемы подписи [1458, 1460, 1406]. Описание прото- кола встраивания подсознательного канала в схемы Fiat-Shamir и Feige-Fiat-Shamir вместе с возможными зло- употреблениями можно найти в [485].
23.4 Неотрицаемые цифровые подписи
Автором этого алгоритма неотрицаемой подписи (см. раздел 4.3) является Дэвид Чаум (David Chaum)
[343,327]. Сначала опубликовываются большое простое число p и примитивный элемент g, которые будут со- вместно использоваться группой подписывающих . У Алисы есть закрытый ключ x и открытый ключ g x
mod p.
Чтобы подписать сообщение, Алиса вычисляет z = m x
mod p. Это все, что ей нужно сделать. Проверка под- писи немного сложнее.
(1) Боб выбирает два случайных числа, a и b, меньшие p, и отправляет Алисе:
c = z a
(g x
)
b mod p
(2) Алиса вычисляет t=x
-1
mod (p-1), и отправляет Бобу:
d = c t
mod p
(3) Боб проверяет, что d ? m a
g b
(mod p)
Если это так, он считает подпись истинной.
Представим, что Алиса и Боб выполнили этот протокол, и Боб теперь считает, что Алиса подписала сообще- ние. Боб хочет убедить в этом Кэрол, поэтому он показывает ей запись протокола . Дэйв, однако, хочет убедить
Кэрол, что документ подписан кем-то другим . Он создает поддельную запись протокола . Сначала он генерирует сообщение на этапе (1). Затем на этапе (3) он генерирует d и ложную передачу от другого человека на этапе (2).

Наконец, он создает сообщение этапа (2). Для Кэрол записи Боба и Дэйва одинаковы. Ее невозможно убедить в правильности подписи, пока она не выполнит протокол самостоятельно .
Конечно, если бы она следила из-за плеча Боба за тем, как он выполняет протокол, она была бы убеждена .
Кэрол нужно увидеть выполнение этапов по порядку, так, как это делал Боб .
Используя эту схему подписи, можно столкнуться с проблемой, но я не знаю подробностей . Прежде, чем воспользоваться этой схемой, просмотрите литературу .
Другой протокол включает не только протокол подтверждения - Алиса может убедить Боба в правильности своей подписи - но и протокол отрицания. Алиса может с помощью интерактивного протокола с нулевым зн а- нием убедить Боба, что ее подпись неправильна, если это так [329].
Как и предыдущий протокол группа подписывающих использует общедоступное большое простое число p и примитивный элемент g. У Алисы есть закрытый ключ x и открытый ключ g x
mod p. Чтобы подписать сообще- ние, Алиса вычисляет z = m x
mod p. Чтобы проверить подпись:
(1) Боб выбирает два случайных числа, a и b, меньшие p, и отправляет Алисе:
c = m a
g b
mod p
(2) Алиса выбирает случайное число q, меньшее p, а затем вычисляет и отправляет Бобу:
s
1
= cg q
mod p, s
2
= (cg q
)
x mod p
(3) Боб посылает Алисе a и b, чтобы Алиса могла убедиться, что Боб не мошенничал на этапе (1).
(4) Алиса посылает Бобу q, чтобы он мо воспользоваться m x
и восстановить s
1
и s
2
. Если s
1
? cg q
mod p s
2
? (g x
)
b+q z
a
(mod p)
то подпись правильна.
Алиса может также отказаться от подписи z под сообщением m. Подробности приведены в [329]. Дополни- тельные протоколы для неотрицаемых подписей можно найти в [584, 344]. Лейн Харн (Lein Harn) и Шубао Янг
(Shoubao Yang) предложили схему групповых неотрицаемых подписей [700].
Преобразуемые неотрицаемые подписи
Алгоритм для преобразуемых неотрицаемых подписей, которые можно проверять, отменять и преобраз о- вывать в обычные неотрицаемые подписи, приведен в [213]. Он основан на алгоритме цифровых подписей El-
Gamal.
Как и в ElGamal, сначала выбираются два простых числа, p и q, так, чтобы q было делителем p-1. Теперь нужно создать число g, меньшее q. В диапазоне от 2 до p-1 выбирается случайное число h и вычисляется g=h(
p-1)/q mod p
Если g равно 1, выбирается другое случайное h. Если нет, используется полученное значение g.
Закрытыми ключами служат два различных случайных числа , x и z, меньшие q. Открытыми ключами явля- ются p, q, g, y и u, где y = g x
mod p u=g я
mod p
Для вычисления преобразуемой неотрицаемой подписи сообщения m (которое в действительности является хэш-значением сообщения), сначала диапазоне от 1 до q-1 выбирается случайное число t. Затем вычисляется
T = g r
mod p и
m' = Ttzm mod q.
Теперь вычисляется обычная подпись ElGamal для m'. Выбирается случайное число R, меньшее p-1 и взаимно простое с ним. Затем вычисляется r = g
R
mod p и, с помощью расширенного алгоритма Эвклида, в ы- числяется s, для которого m' ? rx + Rs (mod q)
Подписью служат подпись ElGamal (r, s) и T. Вот как Алиса подтверждает свою подпись Бобу:

(1) Боб генерирует два случайных числа, a и b, и вычисляет c = T
Tma g
b mod p и посылает результат Алисе.
(2) Алиса генерирует случайное число k и вычисляет h
1
= cg k
mod p и h
2
= h
1
z mod p, а затем посылает оба числа Бобу.
(3) Боб посылает Алисе a и b.
(4) Алиса проверяет, что c = T
Tma g
b mod p. Она посылает k Бобу.
(5) Боб проверяет, что h
1
= T
Tma g
b+k mod p, и что h
2
= y ra r
sa u
b+k mod p.
Алиса может преобразовать все свои неотрицаемые подписи в обычные, опубликовав z. Теперь любой мо- жет проверить ее подпись без ее помощи.
Схемы неотрицаемых подписей можно объединить со схемами разделения секрета, создав распределенные преобразуемые неотрицаемые подписи [1235]. Кто-нибудь может подписать сообщение, а затем распределить возможность подтверждения правильности подписи . Он может, например, потребовать, чтобы в протоколе убе- ждения Боба в правильности подписи участвовали трое из пяти обладателей возможность подтверждения пр а- вильности. В [700, 1369] предложены улучшения, позволяющие отказаться от необходимости доверенного лица
- распределителя.
23.5 Подписи, подтверждаемые доверенным лицом
Вот как Алиса может подписать сообщение, а Боб проверить его так , чтобы и Кэрол немного позже могла доказать Дэйву правильность подписи Алисы (см. раздел 4.4) [333].
Сначала опубликовываются большое простое число p и примитивный элемент g, которые будут совместно использоваться группой пользователей. Также опубликовывается n, произведение двух простых чисел. У Кэрол есть закрытый ключ z и открытый ключ h = g x
mod p.
В этом протоколе Алиса может подписать m так, чтобы Боб мог проверить правильность ее подписи, но не мог убедить в этом третью сторону.
(1) Алиса выбирает случайное x и вычисляет a = g x
mod p b = h x
mod p
Она вычисляет хэш-значение m, H(m), и хэш-значение объединения a и b, H(a,b), а затем j = (H(m) ? H(a,b))
1/3
mod n и посылает a, b и j Бобу.
(2) Боб выбирает два случайных числа, s и t, меньших p, и посылает Алисе c = g s
h t
mod p
(3) Алиса выбирает случайное q, меньшее p, и посылает Бобу d = g q
mod p e = (cd)
x mod p
(4) Боб посылает Алисе s и t.
(5) Алиса проверяет, что g
s h
t
? c (mod p)
затем она посылает Бобу q.
(6) Боб проверяет d ? g q
mod p e/a q
? a s
b t
(mod p)
(H(m) ? H(a,b)) = j
1/3
mod n
Если все тождества выполняются, то Боб считает подпись истинной .
Боб не может использовать запись этого доказательства для убеждения Дэйва в истинности подписи , но
Дэйв может выполнить протокол с доверенным лицом Алисы, Кэрол. Вот как Кэрол убеждает Дэйва в том, что a и b образуют правильную подпись.

(1) Дэйв выбирает случайные u и v, меньшие p, и посылает Кэрол k = g u
a v
mod p
(2) Кэрол выбирает случайное w, , меньшее p, и посылает Дэйву l = g w
mod p y = (kl)
z mod p
(3) Дэйв посылает Кэрол u и v.
(4) Кэрол проверяет, что g
K
=
v
? k (mod p)
Затем она посылает Дэйву w.
(5) Дэйв проверяет, что g
w
? l (mod p)
y/h w
? h
K
>
v
(mod p)
Если все тождества выполняются, то Дэйв считает подпись истинной.
В другом протоколе Кэрол может преобразовать протокол доверенного лица в обычную цифровую подпись .
Подробности в [333].
23.6 Вычисления с зашифрованными данными
Проблема дискретного логарифма
Существует большое простое число p и генератор g. Алиса хочет для конкретного x найти такое e, для кото- рого g
e
? x (mod p)
Это трудная проблема, и Алисе не хватает вычислительных мощностей для вычисления результата . У Боба есть такие возможности - он представляет правительство, или мощный вычислительный центр, или еще какую- нибудь влиятельную организацию. Вот как Алиса может получить помощь Боба, не раскрыв ему x [547, 4]:
(1) Алиса выбирает случайное число r, меньшее p.
(2) Алиса вычисляет x' = xg r
mod p
(3) Алиса просит Боба решить g
e'
? x' (mod p)
(4) Боб вычисляет e' и посылает его Алисе.
(5) Алиса восстанавливает e, вычисляя e = (e' - r) mod (p - 1)
Аналогичные протоколы для проблем квадратичных остатков и примитивных корней приведены в [3, 4].
(См. также раздел 4.8.)
23.7 Бросание "честной" монеты
Следующие протоколы позволяют Алисе и Бобу бросать честную монету в сети передачи данных (см. раздел
4.9) [194]. Это пример бросания монеты в колодец (см. раздел 4.10). Сначала только Боб узнает результат бро- ска и сообщает его Алисе. Затем Алиса может проверить, что Боб сообщил правильный результат броска .
Бросание "честной" монеты с помощью квадратных корней
Подпротокол бросания честной монеты:
(1) Алиса выбирает два больших простых числа, p и q, и посылает их произведение n Бобу.
(2) Боб выбирает случайное положительное целое число r, меньшее n/2. Боб вычисляет z = r
2
mod n
и посылает z Алисе.
(3) Алиса вычисляет четыре квадратных корня z (mod n). Она может сделать это, так как она знает разлож е- ние n на множители. Назовем их +x, -x, +y и -y. Обозначим как x' меньшее из следующих двух чисел:
x mod n
-x mod n
Аналогично, обозначим как y' меньшее из следующих двух чисел:
y mod n
-y mod n
Обратите внимание, что r равно либо x', либо y'.
(4) Алиса делает пытается угадать, какое из значений равно r - x' или y', и посылает свою догадку Бобу.
(5) Если догадка Алисы правильна, результатом броска монеты является "орел", а если неправильна -
"решка". Боб объявляет результат броска монеты.
Подпротокол проверки:
(6) Алиса посылает p и q Бобу.
(7) Боб вычисляет x' и y' и посылает их Алисе.
(8) Алиса вычисляет r.
У Алисы нет возможности узнать r, поэтому она действительно угадывает. Она на этапе (4) сообщает Бобу только один бит своей догадки, не давая Бобу получить и x', и y'. Если Боб получит оба этих числа, он сможет изменить r после этапа (4).
Бросание "честной" монеты с помощью возведения в степень по модулю F
В этом протоколе в качестве однонаправленной функции используется возведение в степень по модулю пр о- стого числа p [1306]:
Подпротокол бросания честной монеты:
(1) Алиса выбирает простое число p так, чтобы множители p-1 были известны, и среди них было по крайней мере одно большое простое число.
(2) Боб выбирает два примитивных элемента, h и t, в GF(p). Он посылает их Алисе.
(3) Алиса убеждается, что h и t являются примитивными элементами, и затем выбирает случайное число x,
взаимно простое с p-1. Затем она вычисляет одно из двух значений :
y = h x
mod p, или y = t x
mod p
Она посылает y Бобу.
(4) Боб пытается угадать, вычислила Алиса y как функцию h или как функцию t, и посылает свое предполо- жение Алисе.
(5) Если догадка Боба правильна, результатом бросания монеты является "орел", в противном случае -
"решка". Алиса объявляет результат броска монеты.
Подпротокол проверки:
(6) Алиса раскрывает Бобу значение x. Боб вычисляет h x
mod p и t x
mod p, убеждаясь, что Алиса играла чест- но и проверяя результат броска. Он также проверяет, что x и p-1 - взаимно простые числа.
Чтобы Алиса могла смошенничать, она должна знать два целых числа, x и x', для которых выполняется h
x
?t x'
mod p. Для того, чтобы узнать эти значения, ей нужно вычислить :
log t
h =xx
-1
mod p-1 и log t
h =xx'
-1
mod p-1.
Это трудные проблемы.
Алиса смогла бы сделать это, если бы она знала log t
h, но Боб выбирает h и t на этапе (2). У Алисы нет дру- гого способа кроме, как попытаться вычислить дискретный логарифм . Алиса может также попытаться смошен- ничать, выбрав x, которое не является взаимно простым с p-1, но Боб обнаружит это на этапе (6).
Боб может смошенничать, если h и t не являются примитивными элементами в поле in GF(p), но Алиса смо- жет легко проверить это после этапа (2), так как ей известно разложение p-1 на простые множители.

Удачным в этом протоколе является то, что если Алиса и Боб захотят бросить несколько монет, он7и смогут использовать одни и те же значения p, h и t. Алиса просто генерирует новое x, и протокол продолжается с этапа
(3).
Бросание "честной" монеты с помощью целых чисел Блюма
В протоколе бросания монеты можно использовать челые числа Блюма .
(1) Алиса генерирует целое число Блюма n, случайное x, взаимно простое с n, x
0
= x
2
mod n и x
1
= x
0 2
mod n.
Она посылает Бобу n и x
1
(2) Боб угадывает, четным или нечетным является x
0
(3) Алиса посылает x Бобу.
(4) Боб проверяет, что n является целым числом Блюма (Алиса нужно передать Бобу множители n и доказа- тельства того, что они являются простыми , или выполнить некоторый протокол с нулевым знанием, убе ж- дающий Боба, что n - это целое число Блюма), и что x
0
= x
2
mod n и x
1
= x
0 2
mod n. Если все проверки вы- полняются, и Боб угадал правильно, он выигрывает бросок .
Это важно, чтобы n было числом Блюма. Иначе Алиса сможет найти такое x'
0
, что x'
0 2
mod n = x
0 2
mod n=x
1
,
где x'
0 также является квадратичным остатком. Если бы x
0
был четным, а x'
0
- нечетным (или наоборот), Алиса могла бы мошенничать.
23.8 Однонаправленные сумматоры
Существует простая функция однонаправленного сумматоры [116] (см. раздел 4.12.):
A(x i
, y) = x i-1
y mod n
Числа n (являющееся произведением двух простых чисел ) и x
0
должны быть заранее согласованы. Тогда суммированием y
1
, y
2
и y
3
будет
((
mod ) mod ) mod x
n n
n y
y y
q
0 2
3
Это вычисление не зависит от порядка y
1
, y
2
и y
3 23.9 Раскрытие секретов "все или ничего"
Этот протокол позволяет нескольким сторонам (для работы протокола нужно не меньше двух участников )
покупать различные секреты у одного продавца (см. раздел 4.13) [1374, 1175]. Начнем с определения. Возьмем две строки битов, x и y. Фиксированным битовым индексом (fixed bit index, FBI) x и y называется последова- тельность номеров совпадающих битов этих строк.
Например:
x = 110101001011
y = 101010000110
FBI(x, y) = {1, 4, 5, 11}
(Мы читаем биты справа налево, считая нулевым крайний правый бит .)
Теперь вот как выглядит протокол. Алиса будет продавцом. Боб и Кэрол - покупателями. У Алисы есть k n- битовых секретов: S
1
, S
2
, . . . S
k
. Боб хочет купить секрет S
b
, Кэрол - секрет S
c
(1) Алиса генерирует пару "открытый ключ/закрытый ключ"и сообщает Бобу (но не Кэрол) открытый ключ.
Она генерирует другую пару "открытый ключ/закрытый ключ"и сообщает Кэрол (но не Бобу) открытый ключ.
(2) Боб генерирует k n-битовых случайных чисел, B
1
, B
2
, . . . B
k
, и сообщает их Кэрол. Кэрол генерирует k n- битовых случайных чисел, C
1
, C
2
, . . . C
k
, и сообщает их Бобу.
(3) Боб шифрует C
b
(напомним, он хочет купить секрет S
b
) открытым ключом, полученным от Алисы . Он вы- числяет FBI для C
b и только что зашифрованного результата. Он посылает этот FBI Кэрол.
1   ...   48   49   50   51   52   53   54   55   ...   78


написать администратору сайта