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

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


Скачать 3.25 Mb.
НазваниеКриптография 2е издание Протоколы, алгоритмы и исходные тексты на языке С
Дата29.04.2022
Размер3.25 Mb.
Формат файлаpdf
Имя файлаShnayer_Prikladnaya-kriptografiya.352928.pdf
ТипПротокол
#504484
страница49 из 78
1   ...   45   46   47   48   49   50   51   52   ...   78
(9) Кэрол вычисляет T = D
v
J
d mod n. Затем она вычисляет d' = H(M,T'). Если d ? d', то множественная под- пись действительна.
Этот протокол может быть расширен на любое количество людей . Для этого подписывающие сообщение люди должны перемножить свои значения T
i на этапе (3), и свои значения D
i на этапе (7). Чтобы проверить множественную подпись, нужно на этапе (8) перемножить значения J
i подписывающих (8). Либо все подписи правильны, либо существует по крайней мере одна неправильная подпись .

21.3 SCHNORR
Безопасность схемы проверки подлинности и подписи Клауса Шнорра [1396,1397] опирается на трудность вычисления дискретных логарифмов. Для генерации пары ключей сначала выбираются два простых числа , p и q так, чтобы q было сомножителем p-1. Затем выбирается a, не равное 1, такое что a q
? 1 (mod p). Все эти числа могут быть свободно опубликованы и использоваться группой пользователей .
Для генерации конкретной пары ключей выбирается случайное число, меньшее q. Оно служит закрытым ключом, s. Затем вычисляется открытый ключ v = a
-s mod p.
Протокол проверки подлинности
(1) Пегги выбирает случайное число r, меньшее q, и вычисляет x = a r
mod p. Эти вычисления являются пред- варительными и могут быть выполнены задолго до появления Виктора .
(2) Пегги посылает x Виктору.
(3) Виктор посылает Пегги случайное число e, из диапазона от 0 до 2
t-1
. (Что такое t, я объясню чуть позже.)
(4) Пегги вычисляет y = (r + se) mod q и посылает y to Виктору.
(5) Виктор проверяет, что x = a y
v e
mod p.
Безопасность алгоритма зависит от параметра t. Сложность вскрытия алгоритма примерно равна 2
t
. Шнорр советует использовать p около 512 битов, q - около 140 битов и t - 72.
Протокол цифровой подписи
Алгоритм Schnorr также можно использовать и в качестве протокола цифровой подписи сообщения M. Пара ключей используется та же самая, но добавляется однонаправленная хэш-функция H(M).
(1) Алиса выбирает случайное число r, меньшее q, и вычисляет x = a r
mod p. Это стадия предварительных вычислений.
(2) Алиса объединяет M и x и хэширует результат:
e = H(M,x)
(3) Алиса вычисляет y = (r + se) mod q. Подписью являются значения e и y, она посылает их Бобу.
(4) Боб вычисляет x' = a y
v e
mod p. Затем он проверяет, что хэш-значение для объединения M и x' равно e.
e = H(M,x')
Если это так, то он считает подпись верной.
В своей работе Шнорр приводит следующие новые свойства своего алгоритма :
Большая часть вычислений, нужных для генерации подписи и независящих от подписываемого сообщения, может быть выполнена на стадии предварительных вычислений . Следовательно, эти вычисления могут быть выполнены во время пр о- стоя и не влияют на скорость подписания . Вскрытие, направленное против стадии предварительных вычислений, рассматр и- вается в [475], я не думаю, что оно имеет практическую ценность .
При одинаковом уровне безопасности длина подписей для Schnorr короче, чем для RSA. Например, при 140-битовом q длина подписей равна всего лишь 212 битам , меньше половины длины подписей RSA. Подписи Schnorr также намного коро- че подписей EIGamal.
Конечно, из практических соображений количество битов, используемых в этой схеме, может быть умен ь- шено: например, для схемы идентификации, в которой мошенник должен выполнить диалоговое вскрытие всего лишь за несколько секунд (сравните со схемой подписи, когда мошенник может годами вести расчеты, чтобы выполнить подлог).
Модификация, выполненная Эрни Брикеллом (Ernie Brickell) и Кевином МакКерли (Kevin McCurley), повы- сила безопасность этого алгоритма [265].
Патенты
Schnorr запатентован в Соединенных Штатах [1398] и многих других странах. В 1993 году PKP приобрело обще мировые права на этот патент(см. раздел 25.5). Срок действия патента США истекает 19 февраля 2008
года.
21.4 Преобразование схем идентификации в схемы подписи
Вот стандартный метод преобразования схемы идентификации в схему подписи : Виктор заменяется однона- правленной хэш-функцией. Перед подписанием сообщение не хэшируется, вместо этого хэширование встраив а-
ется в алгоритм подписи. В принципе, такую манипуляцию можно проделать с любой схемой идентификации .

Глава 22 Алгоритмы обмена ключами
22.1 DIFFIE-HELLMAN
Diffie-Hellman, первый в истории алгоритм с открытым ключом, был изобретен 1976 году [496]. Его безо- пасность опирается на трудность вычисления дискретных логарифмов в конечном поле (в сравнении с легк о- стью возведения в степень в том же самом поле . Diffie-Hellman может быть использован для распределения ключей - Алиса и Боб могут воспользоваться этим алгоритмом для генерации секретного ключа - но его нельзя использовать для шифрования и дешифрирования сообщений .
Математика несложна. Сначала Алиса и Боб вместе выбирают большие простые числа n и g так, чтобы g было примитивом mod n. Эти два целых числа хранить в секрете необязательно, Алиса и Боб могут договорить- ся об из использовании по несекретному каналу . Эти числа даже могут совместно использоваться группой пол ь- зователей. Без разницы. Затем выполняется следующий протокол:
(1) Алиса выбирает случайное большое целое число x и посылает Бобу
X = g x
mod n
(2) Боб выбирает случайное большое целое число y и посылает Алисе
Y = g y
mod n
(3) Алиса вычисляет k = Y
x mod n
(4) Боб вычисляет k' = X
y mod n
И k, и k' равны g xy mod n. Никто из подслушивающих этот канал не сможет вычислить это значение, им и з- вестно только n, g, X и Y. Пока они не смогут вычислить дискретный логарифм и раскрыть x или y, они не смо- гут решить проблему. Поэтому, k - это секретный ключ, который Алиса и Боб вычисляют независимо .
Выбор g и n может заметно влиять на безопасность системы . Число (n-1)/2 также должно быть простым
[1253]. И, самое главное, n должно быть большим: безопасность системы основана на сложности разложения на множители чисел того же размера, что и n. Можно выбирать любое g, которое является примитивом mod n; нет причин, по которым нельзя было бы выбрать наименьшее возможное g - обычно одноразрядное число. (К тому же, на самом деле, g не должно даже быть примитивом, оно только должно генерировать достаточно большую подгруппу мультипликативной группы mod n.)
Diffie-Hellman с тремя и более участниками *
Протокол обмена ключами Diffie-Hellman легко можно расширить на случай с тремя и более участниками . В
приводимом примере Алиса, Боб и Кэрол вместе генерируют секретный ключ.
(1) Алиса выбирает случайное большое целое число x и вычисляет
X = g x
mod n
(2) Боб выбирает случайное большое целое число y и посылает Кэрол
Y = g y
mod n
(3) Кэрол выбирает случайное большое целое число z и посылает Алисе
Z = g z
mod n
(4) Алиса посылает Бобу
Z'=Z
x mod n
(5) Боб посылает Кэрол *
X'=X
y mod n
(6) Кэрол посылает Алисе
Y'=Y
z mod n
(7) Алиса вычисляет k = Y'
x mod n

(8) Боб вычисляет k = Z'
y mod n
(9) Кэрол вычисляет k = :'
z mod n
Секретный ключ k равен g xyz mod n, и никто из подслушивающих каналы связи не сможет вычислить это значение. Протокол можно легко расширить для четверых и более участников, просто добавляются участники и этапы вычислений.
Расширенный Diffie-Hellman
Diffie-Hellman также работает в коммутативных кольцах [1253]. З. Шмули (Z. Shmuley) и Кевин МакКерли
(Kevin McCurley) изучили вариант алгоритма, в котором модуль является составным числом [1441, 1038]. В.С.
Миллер (V. S. Miller) и Нил Коблиц (Neal Koblitz) расширили этот алгоритм, используя эллиптические кривые
[1095, 867]. Тахер ЭльДжамаль (Taher ElGamal) использовал основополагающую идею для разработки алг о- ритма шифрования и цифровой подписи (см. раздел 19.6).
Этот алгоритм также работает в поле Галуа GF(2
k
) [1442, 1038]. В ряде реализаций используется именно этот подход [884, 1631, 1632], так как вычисления выполняются намного быстрее . Но и криптоаналитические вычисления выполняются намного быстрее , поэтому важно тщательно выбирать поле, достаточно большое,
чтобы обеспечить нужную безопасность.
Hughes
Этот вариант алгоритма Diffie-Hellman позволяет Алисе генерировать ключ и послать его Бобу [745].
(1) Алиса выбирает случайное большое целое число x и генерирует k = g x
mod n
(2) Боб выбирает случайное большое целое число y и посылает Алисе
Y = g y
mod n
(3) Алиса посылает Бобу
X = Y
x mod n
(4) Боб вычисляет z = y
-1
k' = X
z mod n
Если все выполнено правильно, k = k'.
Преимуществом этого протокола над Diffie-Hellman состоит в том, что k можно вычислить заранее, до взаи- модействия, и Алиса может шифровать сообщения с помощью k задолго до установления соединения с Бобом.
Она может послать сообщение сразу множеству людей, а передать ключ позднее каждому по отдельности .
Обмен ключом без обмена ключом
Если у вас сообщество пользователей, каждый может опубликовать открытый ключ , X = g x
mod n, в общей базе данных. Если Алиса захочет установить связь с Бобом, ей понадобится только получить открытый ключ
Боба и генерировать их общий секретный ключ . Она может зашифровать сообщение этим ключом и послать его
Бобу. Боб извлечет открытый ключ Алисы и вычислит общий секретный ключ .
Каждая пара пользователей может использовать уникальный секретный ключ , не требуется никаких предва- рительных обменов данными между пользователями . Открытые ключи должны пройти сертификацию, чтобы предотвратить мошеннические вскрытия, и должны регулярно меняться, но в любом случае это очень умная идея
Патенты
Алгоритм обмена ключами Diffie-Hellman запатентован в Соединенных Штатах [718] и Канаде [719]. Груп- па, называющаяся Public Key Partners (PKP, Партнеры по открытым ключам), получила вместе с другими па- тентами в области криптографии с открытыми ключами получила лицензию на этот патент (см. раздел 25.5).
Срок действия патента США истекает 29 апреля 1997 года .

22.2 Протокол "точка-точка"
Обмен ключами Diffie-Hellman чувствителен к вскрытию "человек в середине" . Одним из способов предот- вратить это, является необходимость для Алисы и Боба подписывать сообщения, которые они посылают друг другу [500].
Этот протокол предполагает, что у Алисы есть сертифицированный открытый ключ Боба, а у Боба есть се р- тифицированный открытый ключ Алисы . Эти сертификаты подписаны некоторым заслуживающим доверия органом власти, непосредственно не участвующим в протоколе . Вот как Алиса и Боб генерируют секретный ключ k.
(1) Алиса генерирует случайное число x и посылает его Бобу.
(2) Боб генерирует случайное число y. Используя протокол Diffie-Hellman, он вычисляет общий ключ k на ба- зе x и y. Он подписывает x и y и шифрует подпись ключом k. Затем он посылает получившееся вместе с y
Алисе.
y,E
k
(S
B
(x,y))
(3) Алиса также вычисляет k. Она расшифровывает оставшуюся часть сообщения Боба и проверяет его под- пись. Затем она посылает Бобу подписанное сообщение, состоящее из x и y, зашифрованных общим клю- чом k.
E
k
(S
A
(x,y))
(4) Боб расшифровывает сообщение и проверяет подпись Алисы.
22.3 Трехпроходный протокол Шамира
Этот изобретенный Ади Шамиром но никогда не опубликованный протокол позволяет Алисе и Бобу безо- пасно обмениваться информацией, не используя предварительного обмена ни секретными, ни открытыми кл ю- чами [1008]. Он предполагает использование коммутативного симметричного шифра , для которого:
E
A
(E
B
(P)) = E
B
(E
A
(P))
Секретный ключ Алисы - A, а Боба - B. Алиса хочет послать сообщение M Бобу. Вто этот протокол.
(1) Алиса шифрует M своим ключом и посылает его Бобу
C
1
= E
A
(M)
(2) Боб шифрует C
1
своим ключом и посылает Алисе
C
2
= E
B
(E
A
(M))
(3) Алиса расшифровывает C
2
своим ключом и посылает Бобу
C
3
= D
A
(E
B
(E
A
(M))) = D
A
(E
A
(E
B
(M))) = E
B
(M)
(4) Боб расшифровывает C
3
своим ключом, получая M.
Коммутативны и обладают совершенной безопасностью одноразовые блокноты, но с этим протоколом они работать не будут. При использовании одноразового блокнота три шифротекста будут выглядеть следующим образом be:
C
1
= M ? A
C
2
= M ? A ? B
C
3
= M ? B
Ева, записав эти три сообщения, которыми обмениваются Алиса и Боб, просто выполнит XOR всех этих шифротекстов и восстановит сообщение:
C
1
? C
2
? C
3
=(M ? A) ? (M ? A ? B) ? (M ? B) = M
Очевидно, что такой способ работать не будет .
Шамир (и независимо Джим Омура (Jim Omura)) описал похожий на RSA алгоритм шифрования, который будет работать с этим протоколом. Пусть p будет большим большим простым числом, причем множитель p-1
является большим простым. Выберем ключ шифрования e, взаимно простой с p-1. Вычислим d, для которого выполняется de = 1 (mod p - 1). Для шифрования сообщения вычисляем
C = M
e mod p

Для дешифрирования сообщения вычисляем
M = C
d mod p
По видимому, у Евы нет способа получить M, не решив проблему дискретного логарифма, но это никогда не было доказано.
Как и Diffie-Hellman, этот протокол позволяет Алисе начать секретный обмен информацией с Бобом, не зная ни одного из его ключей. При использовании алгоритма с открытым ключом Алиса должна знать открытый ключ Боба. Применяя трехпроходный алгоритм Шамира, она просто посылает Бобу шифротекст сообщения . То же действие с помощью алгоритма с открытым ключом выглядит следующим образом :
(1) Алиса запрашивает у Боба (или у KDC) его открытый ключ.
(2) Боб (или KDC) посылает Алисе свой открытый ключ.
(3) Алиса шифрует M открытым ключом Боба и посылает его Бобу.
Трехпроходный алгоритм Шамира не может устоять перед вскрытием "человек в середине" .
22.4 COMSET
COMSET (COMmunications SETup, установление связи) это протокол одновременной идентификации и о б- мена ключом, разработанный для проекта RIPE [1305] (см. раздел 25.7). С помощью криптографии с открыты- ми ключами он позволяет Алисе и Бобу идентифицировать друг друга, при этом обмениваясь секретным кл ю- чом.
Математической основой COMSET служит схема Rabin [1283] (см. раздел 19.5). Сама схема впервые была предложена в [224]. См. подробности в [1305].
22.5 Обмен зашифрованными ключами
Протокол обмена зашифрованными ключами (Encrypted Key Exchange, EKE) был разработан Стивом Бел- ловином (Steve Bellovin) и Майклом Мерриттом (Michael Merritt) [109]. Он обеспечивает безопасность и про- верку подлинности в компьютерных сетях , по новому используя и симметричную криптографию, и криптогр а- фию с открытыми ключами: общий секретный ключ используется для шифрования генерированного случа й- ным образом открытого ключа.
Базовый протокол EKE
Алиса и Боб (два пользователя, клиент и сервер, или кто угодно) имеют общий пароль P. Используя сле- дующий протокол, они могут проверить подлинность друг друга и генерировать общий сеансовый ключ K.
(1) Алиса Случайным образом генерирует пару "открытый ключ/закрытый ключ" . Она шифрует открытый ключ K' с помощью симметричного алгоритма, используя P в качестве ключа: E
P
(K'). Она посылает Бобу
A, E
P
(K')
(2) Боб знает P. Он расшифровывает сообщение, получая K'. Затем он генерирует случайный сеансовый ключ
K шифрует его открытым ключом, который он получил от Алисы, а затем используя P качестве ключа. Он посылает Алисе
E
P
(E
K'
(K)
(3) Алиса расшифровывает сообщение, получая K. Она генерирует случайную строку R
A
, шифрует ее с помо- щью K и посылает Бобу
E
K
(R
A
)
(4) Боб расшифровывает сообщение, получая R
A
. Он генерирует другую случайную строку, R
B
, шифрует обе строки ключом K и посылает Алисе результат.
E
K
(R
A
,R
B
)
(5) Алиса расшифровывает сообщение, получая R
A
и R
B
. Если строка R
A
, полученная от Боба, - это та самая строка, которую она послала Бобу на этапе (3), она, используя K, шифрует R
B
и посылает ее Бобу.
E
K
(R
B
)
(6) Боб расшифровывает сообщение, получая R
B
. Если строка R
B
, полученная от Алисы, - это та самая строка,
которую он послал ей на этапе (4), завершен. Теперь обе стороны могут обмениваться информацией, и с- пользуя K в качестве сеансового ключа.

На этапе (3) и Алиса, и Боб знают K' и K. K - это сеансовый ключ, он может быть использован для шифров а- ния всех других сообщений, которыми обмениваются Алиса и Боб. Ева, сидя между Алисой и Бобом, знает только E
P
(K'), E
P
(E
K'
(K) и несколько сообщений, зашифрованных K. В других протоколах Ева могла бы попро- бовать угадать P (люди все время любят выбирать плохие пароли , и если Ева достаточно умна, она может этот пароль) и затем проверить свои предположения. В рассматриваемом протоколе Ева не может проверять свои предположения, не вскрыв при этом и алгоритм с открытым ключом . И, если K' и K выбираются случайным образом, то эта проблема будет непреодолимой.
Ответная часть протокола, этапы (3) - (6), обеспечивает подтверждение. Этапы (3) - (5) доказывают Алисе,
что Боб знает K, этапы (4) - (6) доказывают Бобу, что Алиса знает K. Обмен метками времени, используемый в протоколе Kerberos, решает ту же задачу.
EKE может быть реализован с множеством алгоритмов с открытыми ключами : RSA, ElGamal, Diffie-
Hellman. Проблемы с безопасностью возникают при реализации EKE с алгоритмом рюкзака (даже без учета проблем безопасности, присущих самим алгоритмам рюкзака ): нормальное распределение шифротекста соо б- щений сводит на нет преимущества EKE.
Реализация EKE с помощью RSA
Алгоритм RSA кажется идеальным для такого использования, но есть ряд тонких проблем . Авторы рекомен- дуют шифровать на этапе (1) только показатель степени, посылая модуль . Объяснение этого совета и другие тонкости, связанные с использованием RSA, можно найти [109].
Реализация EKE с помощью ElGamal
Реализация EKE на базе алгоритма ElGamal проста, можно даже упростить основной протокол . Используя обозначения из раздела 19.6, g и p служат частями открытого ключа, общими для всех пользователей . Закры- тым ключом является случайное число r. Открытым - g r
1   ...   45   46   47   48   49   50   51   52   ...   78


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