- •Схемы идентификации
- •Используется следующий протокол идентификации.
- •Вероятность обмана В один раз, равна 50 процентам. Вероятность обмана t раз, равна
- •Выполняется следующий протокол:
- •В протокол можно встроить идентификационные данные. Пусть I - это двоичная строка, представляющая
- •Фейге, Фиат и Шамир добавили, что для неидеальных хэш- функций можно посоветовать рандомизировать
- •Такая модификация облегчает проверку подписей, не влияя на время генерации подписей и их
- •(1)А выбирает случайное целое rА, находящееся в диапазоне от 1 до n-1, вычисляет
- •Этот протокол может быть расширен на любое количество людей Для этого подписывающие сообщение
- •Протокол проверки подлинности
- •Алгоритм Schnorr также можно использовать и в качестве протокола цифровой подписи сообщения M.
- •Diffie-Hellman, первый в истории алгоритм с открытым ключом, был изобретен 1976 году. Его
- •Поэтому, k - это секретный ключ, который А и Б вычисляют независимо .
- •Обмен ключом без обмена ключом
- •Протокол "точка-точка"
- •(4)Б расшифровывает сообщение и проверяет подпись А. COMSET (COMmunications SETup, установление связи) это
- •Базовый протокол EKE А и Б (два пользователя, клиент и сервер, или кто
- •(5)А расшифровывает сообщение, получая R A и R B. Если строка RA, полученная
- •И, если K' и K выбираются случайным образом, то эта проблема будет непреодолимой.
- •Реализация EKE на базе алгоритма ElGamal проста, можно даже упростить основной протокол.
- •(3)А расшифровывает первую половину сообщения Б, получая
- •Белловин и Мерритт предлагают использовать этот протокол для безопасной телефонной связи: Предположим, что
- •В общей перспективе EKE работает как усилитель секретности. То есть, его можно использовать
- •Защищенные переговоры о ключе Эта схема также защищает переговоры о ключе от плохого
- •Чтобы обмануть Б на этапе (2), Е придется вычислить общий пароль и затем
- •Затем А шифрует копию K каждым из ключей выбранных получателей сообщения. Наконец, А
- •Еще один, третий, путь, использующий пороговую схему Как и в других способах каждый
- •Если, например, используется пять ключей, то сообщение, зашифрованное ключами K 3 и K
- •Новые схемы , основанные на схемах идентификации с нулевым знанием, преодолевают эти недостатки
Алгоритм 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')
Если это так, то он считает подпись верной.
Стандартный метод преобразования схемы идентификации в схему подписи : В заменяется однонаправленной хэш-функцией. Перед подписанием сообщение не хэшируется, вместо этого хэширование встраивается в алгоритм подписи. В принципе, такую манипуляцию можно проделать с любой схемой идентификации.
Diffie-Hellman, первый в истории алгоритм с открытым ключом, был изобретен 1976 году. Его безопасность опирается на трудность вычисления дискретных логарифмов в конечном поле.
Математика несложна. Сначала А и Б вместе выбирают большие простые числа 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 также должно быть простым. Самое глав- ное, n должно быть большим: безопасность системы основана на сложности разложения на множители чисел того же размера, что и n. Можно выбирать любое g, которое является примитивом mod n; нет причин, по которым нельзя было бы выбрать наименьшее возможное g - обычно одноразрядное число. (К тому же, на самом деле, g не должно даже быть примитивом, оно только должно генерировать достаточно большую подгруппу мультипликативной группы mod n.)
Протокол обмена ключами 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 = X' z |
mod n |
Секретный ключ k равен g xyz mod n, и никто из подслушивающих каналы связи не сможет вычислить это значение. Протокол можно легко расширить для четверых и более участников, просто добавляются участники и этапы вычислений.
Обмен ключом без обмена ключом
Если у вас сообщество пользователей, каждый может опубликовать открытый ключ , X = g x mod n, в общей базе данных.
Если А захочет установить связь с Б, понадобится только получить открытый ключ Б и генерировать их общий секретный ключ.
А может зашифровать сообщение этим ключом и послать его Б. Б извлечет открытый ключ А и вычислит общий секретный ключ . Каждая пара пользователей может использовать уникальный
секретный ключ , не требуется никаких предварительных обменов данными между пользователями. Открытые ключи должны пройти сертификацию, чтобы предотвратить мошеннические вскрытия, и должны регулярно меняться, но в любом случае это очень умная идея.
Протокол "точка-точка"
Обмен ключами Diffie-Hellman чувствителен к вскрытию "человек в середине". Одним из способов предотвратить это, является необ- ходимость для А и Б подписывать сообщения, которые они посылают друг другу . Этот протокол предполагает, что у А есть сертифицированный открытый ключ Б, а у Б есть сертифициро- ванный открытый ключ А. Эти сертификаты подписаны неко- торым заслуживающим доверия органом власти, непосредст- венно не участвующим в протоколе .
Вот как А и Б генерируют секретный ключ k.
(1)А генерирует случайное число x и посылает его Б.
(2)Б генерирует случайное число y. Используя протокол Diffie- Hellman, он вычисляет общий ключ k на базе x и y. Он подписывает x и y и шифрует подпись ключом k. Затем он посылает получившееся вместе с y А. y,E k(SB(x,y))
(3)А также вычисляет k и расшифровывает оставшуюся часть сообщения Б и проверяет его подпись. Затем А посылает Б подписанное сообщение, состоящее из x и y, зашифрованных
общим ключом k. E (S (x,y))
(4)Б расшифровывает сообщение и проверяет подпись А. COMSET (COMmunications SETup, установление связи) это
протокол одновременной идентификации и обмена ключом, разработанный для проекта RIPE. С помощью криптографии с открытыми ключами он позволяет А и Б идентифицировать друг друга, при этом обмениваясь секретным ключом. Математической основой COMSET служит схема Rabin.
Протокол обмена зашифрованными ключами (Encrypted Key Exchange, EKE) был разработан Стивом Белловином (Steve Bellovin) и Майклом Мерриттом (Michael Merritt) Он обеспечивает безопасность и проверку подлинности в компьютерных сетях, по новому используя и симметричную криптографию, и криптографию с открытыми ключами: общий секретный ключ используется для шифрования генерированного случайным образом открытого ключа.
Базовый протокол 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. А генерирует
случайную строку RA, шифрует ее с помощью K и посылает Б E
K(R A)
(4) Б расшифровывает сообщение, получая R A. Б генерирует другую случайную строку, R B, шифрует обе строки ключом K и посылает А результат.
(5)А расшифровывает сообщение, получая R A и R B. Если строка RA, полученная от Б, - это та самая строка, которую она послала Б на этапе (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) только показатель степени, посылая модуль .