Анимация
JavaScript
|
Главная Библионтека ется в алгоритм подписи. В принципе, такую манипуляцию можно проделать с любой схемой идентификации Глава 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 |