Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шубина / Лекция_9.ppt
Скачиваний:
8
Добавлен:
15.03.2015
Размер:
152.58 Кб
Скачать

Алгоритм 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) только показатель степени, посылая модуль .

Соседние файлы в папке Шубина