Анимация
JavaScript


Главная  Библионтека 

0 1 [ 2 ] 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25

ется в алгоритм подписи. В принципе, такую манипуляцию можно проделать с любой схемой идентификации



Глава 22 Алгоритмы обмена ключами 22.1 DIFFIE-HELLMAN

Diffie-Hellman, первый в истории алгоритм с открытым ключом, был изобретен 1976 году [496]. Его безопасность опирается на трудность вычисления дискретных логарифмов в конечном поле (в сравнении с легк остью возведения в степень в том же самом поле . Diffie-Hellman может быть использован для распределения ключей - Алиса и Боб могут воспользоваться этим алгоритмом для генерации секретного ключа - но его нельзя использовать для шифрования и дешифрирования сообщений .

Математика несложна. Сначала Алиса и Боб вместе выбирают большие простые числа n и g так, чтобы g было примитивом mod n. Эти два целых числа хранить в секрете необязательно, Алиса и Боб могут договориться об из использовании по несекретному каналу. Эти числа даже могут совместно использоваться группой пользователей. Без разницы. Затем выполняется следующий протокол:

(1) Алиса выбирает случайное большое целое число x и посылает Бобу X = gx mod n

(2) Боб выбирает случайное большое целое число y и посылает Алисе

Y = gy mod n

(3) Алиса вычисляет k = Yx mod n

(4) Боб вычисляет k = mod n

И k, и k равны gxy 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 = gx mod n

(2) Боб выбирает случайное большое целое число y и посылает Кэрол

Y = gy mod n

(3) Кэрол выбирает случайное большое целое число z и посылает Алисе Z = gz mod n

(4) Алиса посылает Бобу Z=Zx mod n

(5) Боб посылает Кэрол * XX" mod n

(6) Кэрол посылает Алисе =Yzmod n

(7) Алиса вычисляет k = mod n



(8) Боб вычисляет k = Zy mod n

(9) Кэрол вычисляет k = mod n

Секретный ключ k равен gxyz 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(2k) [1442, 1038]. В ряде реализаций используется именно этот подход [884, 1631, 1632], так как вычисления выполняются намного быстрее. Но и криптоаналитические вычисления выполняются намного быстрее , поэтому важно тщательно выбирать поле, достаточно большое, чтобы обеспечить нужную безопасность.

Hughes

Этот вариант алгоритма Diffie-Hellman позволяет Алисе генерировать ключ и послать его Бобу [745].

(1) Алиса выбирает случайное большое целое число x и генерирует k = gx mod n

(2) Боб выбирает случайное большое целое число y и посылает Алисе Y = gy mod n

(3) Алиса посылает Бобу X = Yx mod n

(4) Боб вычисляет z = y-1

k = mod n

Если все выполнено правильно, k = k.

Преимуществом этого протокола над Diffie-Hellman состоит в том, что k можно вычислить заранее, до взаимодействия, и Алиса может шифровать сообщения с помощью k задолго до установления соединения с Бобом. Она может послать сообщение сразу множеству людей, а передать ключ позднее каждому по отдельности .

Обмен ключом без обмена ключом

Если у вас сообщество пользователей, каждый может опубликовать открытый ключ , X = g mod n, в общей базе данных. Если Алиса захочет установить связь с Бобом, ей понадобится только получить открытый ключ Боба и генерировать их общий секретный ключ. Она может зашифровать сообщение этим ключом и послать его Бобу. Боб извлечет открытый ключ Алисы и вычислит общий секретный ключ .

Каждая пара пользователей может использовать уникальный секретный ключ , не требуется никаких предварительных обменов данными между пользователями . Открытые ключи должны пройти сертификацию, чтобы предотвратить мошеннические вскрытия, и должны регулярно меняться, но в любом случае это очень умная идея

Патенты

Алгоритм обмена ключами Diffie-Hellman запатентован в Соединенных Штатах [718] и Канаде [719]. Группа, называющаяся Public Key Partners (PKP, Партнеры по открытым ключам), получила вместе с другими патентами в области криптографии с открытыми ключами получила лицензию на этот патент (см. раздел 25.5). Срок действия патента США истекает 29 апреля 1997 года .



0 1 [ 2 ] 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25