1.3.2.1 Протокол Диффи – Хеллмана
Первая публикация данного алгоритма появилась в семидесятых годах
ХХ века в статье Уитфилда Диффи и Мартина Хеллмана, в которой вводились
основные понятия криптографии с открытым ключом. Алгоритм Диффи -
Хеллмана не применяется для шифрования данных или формирования
электронной подписи. Его предназначение – в распределении ключей. Он
позволяет двум или более пользователям обменяться без посредников ключом,
который может быть использован для симметричного шифрования. Это была
первая криптосистема, которая позволяла защищать информацию без
необходимости использования секретных ключей, передаваемых по
защищенным каналам. Схема открытого распределения ключей, предложенная
Диффи и Хеллманом, произвела настоящую революцию в шифровании, так как
20
решала основную проблему классической криптографии – проблему
распределения ключей.
Алгоритм основан на трудности вычисления дискретных логарифмов. В
этом алгоритме, как и во многих других алгоритмах с открытым ключом,
вычисления выполняются по модулю некоторого большого простого числа Р.
Сначала специальным образом подбирается некоторое натуральное число А,
меньшее Р. Если нужно зашифровать значение X, то вычисляется
Y = A
x
mod P.
(1.1)
При этом, имея Х, вычислить Y легко. Обратная задача вычисления X из
Y является достаточно сложной. Экспонента X и называется дискретным
логарифмом Y. Таким образом, зная о сложности вычисления дискретного
логарифма, число Y можно открыто передавать даже по незащищенному
каналу связи, так как при большом модуле P исходное значение Х подобрать
будет практически невозможно. Алгоритм Диффи – Хеллмана для
формирования ключа основан на этом математическом факторе.
Пусть два пользователя, пользователь 1 и пользователь 2, желают
сформировать общий ключ для алгоритма симметричного шифрования.
Вначале они должны выбрать большое простое число Р и некоторое
специальное число А, которое 1 < A < P-1, такое, что все числа из интервала [1,
2, ..., Р-1] могут быть представлены как различные степени А mod Р. Всем
абонентам системы эти числа должны быть известны и могут выбираться
открыто. Это будут общие параметры[4].
Затем пользователь 1 выбирает число Х
1
, такое, что X
1
формировать с помощью генератора случайных чисел. Это будет закрытый
ключ первого пользователя, и он должен храниться в секрете. На основе
закрытого ключа пользователь 1 вычисляет число:
(1.2)
которое он отправляет второму пользователю. Второй абонент поступает
аналогично, генерируя X
2
и вычисляя
21
(1.3)
Этот результат отправляется первому пользователю.
После этого у пользователей есть следующая информация:
Таблица 1 – Параметры ключей шифрования
Общие параметры Открытый ключ
Закрытый ключ
1й пользователь
P, A
Y
1
X
1
2й пользователь
Y
2
X
2
Из чисел Y
1
и Y
2
, а также из личных закрытых ключей каждый
пользователь может сгенерировать общий секретный ключ Z для сеанса
симметричного шифрования. Первый пользователь:
(1.4)
Никто, кроме первого пользователя, не может этого сделать, так как
число Х
1
секретно. Второй пользователь может получить такое же число Z,
используя свои закрытый ключ и открытый ключ пользователя 1:
(1.5)
Если весь протокол формирования общего секретного ключа выполнен
верно, значения Z у одного и второго абонента должны получиться
одинаковыми. Причем, что самое важное, злоумышленник, не зная секретных
чисел Х
1
и Х
2
, не сможет вычислить Z. Не зная Х
1
и Х
2
, он может попытаться
вычислить Z, используя только передаваемые открыто значения Р, А, Y
1
и Y
2
.
Безопасность формирования общего ключа в алгоритме Диффи -
Хеллмана исходит из того факта, что, хотя относительно легко высчитать
экспоненты по модулю простого числа, очень трудно вычислить дискретные
логарифмы. Задача считается неразрешимой для больших простых чисел
размером сотни и тысячи бит, так как требует колоссальных затрат
вычислительных ресурсов.
Первый и второй пользователи могут использовать число Z в качестве
секретного ключа как для шифрования, так и для расшифрования данных.
22
Таким же образом любая пара абонентов может вычислить секретный ключ,
известный только им.
Достарыңызбен бөлісу: |