Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции по методам и средствам ЗИ.doc
Скачиваний:
73
Добавлен:
23.09.2019
Размер:
831.49 Кб
Скачать

Алгоритм обмена ключами Диффи-Хеллмана

Первая публикация данного алгоритма открытого распространения ключа появилась в статье Диффи и Хеллмана в 1976 году, в которой вводились основные понятия криптографии с открытым ключом и в общих чертах упоминался алгоритм обмена ключа Диффи-Хеллмана. Открытое распределение ключей" (ОРК) подразумевает независимое генерирование каждым из пары связывающихся пользователей своего случайного числа, преобразование его посредством некоторой процедуры, обмен преобразованными числами по каналу связи и вычисление общего секретного ключа на основе информации, полученной по каналу связи от партнера и своего случайного числа. Каждый такой ключ существует только в течение одного сеанса связи (или даже части сеанса).

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

Для достоверного подтверждения подлинности каждый из них должен иметь специальный признак (пароль), известный только ему и отличающий его от всех других. Должна быть обеспечена такая процедура предъявления пароля, чтобы его многократное использование не снижало надежности доказательства подлинности владельца.

Цель алгоритма состоит в том, чтобы два участника могли безопасно обменяться ключом, который в дальнейшем может использоваться в каком-либо алгоритме симметричного шифрования. Сам алгоритм Диффи-Хеллмана может применяться только для обмена ключами.

Алгоритм основан на трудности вычислений дискретных логарифмов. Дискретный логарифм определяется следующим образом. Вводится понятие примитивного корня простого числа Q как числа, чьи степени создают все целые от 1 до Q – 1. Это означает, что если А является примитивным корнем простого числа Q, тогда числа A mod Q, A2 mod Q, . . . , AQ – 1 mod Q

являются различными и состоят из целых от 1 до Q – 1 с некоторыми перестановками. В этом случае для любого целого B < Q и примитивного корня A простого числа Q можно найти единственную экспоненту Х, такую, что

Y = AХ mod Q, где 0 ≤ X ≤ (Q – 1)

Экспонента X называется дискретным логарифмом.

Протокол генерации ключей алгоритма Диффи-Хеллмана

Абоненты А и В:

1. знают числа A и P, которые являются открытыми константами протокола и известны всем участникам Р – простое число и А является примитивным корнем Р;

2. генерируют независимо друг от друга случайные числа – закрытые ключи: Ka, Kb, удовлетворяющих условию: 1 < K < P ;

3. вычисляют значения YA = A Ka mоd(P) и YB = A Kb mоd(P) и обмениваются ими по открытому каналу связи;

4. вычисляют общий секретный ключ , которым шифруют сообщения по симметричному алгоритму.

абонент А:

K = (YB)Ка mod (Р) = (AКb mod (Р))Ка mod (Р) = (AКb )Ка mod (Р)

абонент В:

K = (YА)Кb mod (Р) = (AКа mod (Р))Кb mod (Р) = (AКа )Кb mod (Р)

Таким образом, две стороны обменялись секретным ключом. Так как значения Ка и Кb являются секретными, противник может получить только следующие значения: Р, A, YА и YВ. Для вычисления ключа атакующий должен взломать дискретный логарифм, т.е. вычислить Ка и Кb , что является вычислительно трудной задачей.

Безопасность обмена ключа в алгоритме Диффи-Хеллмана вытекает из того факта, что, хотя относительно легко вычислить экспоненты по модулю простого числа, очень трудно вычислить дискретные логарифмы. Для больших простых чисел задача считается практически неразрешимой.

Следует заметить, что данный алгоритм уязвим для атак типа "man-in-the-middle". Если противник может осуществить активную атаку, т.е. имеет возможность не только перехватывать сообщения, но и заменять их другими, он может перехватить открытые ключи участников Yi и Yj , создать свою пару открытого и закрытого ключа н, Yн) и послать каждому из участников свой открытый ключ. После этого каждый участник вычислит ключ, который будет общим с противником, а не с другим участником. Если нет контроля целостности, то участники не смогут обнаружить подобную подмену.

Для исключения атак подобного типа необходимо, чтобы открытые ключи размещались в общедоступном справочнике, который должен быть заверен специальным доверительным центром. Если абонент А хочет обменяться зашифрованным сообщением с абонентом В, он берет из справочника открытый ключ абонента В и, используя свой секретный ключ, вычисляет общий секретный ключ