Московский государственный университет имени М.В.Ломоносова
Опубликован: 19.11.2003 | Доступ: свободный | Студентов: 12382 / 4864 | Оценка: 4.36 / 4.13 | Длительность: 13:09:00
ISBN: 978-5-9556-0102-1
Лекция 7:

Криптография с открытым ключом

< Лекция 6 || Лекция 7: 123 || Лекция 8 >

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

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

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

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

A mod Q, A2 mod Q, . . . , AQ - 1 mod Q

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

Y = AХ mod Q, где 0 <= X <= (Q - 1)

Экспонента X называется дискретным логарифмом, или индексом Y, по основанию A mod Q. Это обозначается как

indA, Q (Y).

Теперь опишем алгоритм обмена ключей Диффи-Хеллмана.

Общеизвестные элементы
Q простое число
A A < Q и A является примитивным корнем Q

Создание пары ключей пользователем I
Выбор случайного числа Хi ( закрытый ключ ) Xi < Q
Вычисление числа Yi ( открытый ключ ) Yi = AXi mod Q

Создание открытого ключа пользователем J
Выбор случайного числа Хj ( закрытый ключ ) Xj < Q
Вычисление случайного числа Yj ( открытый ключ ) Yj = AXj mod Q

Создание общего секретного ключа пользователем I
K = (Yj)Xi mod Q

Создание общего секретного ключа пользователем J
K = (Yi)Xj mod Q

Предполагается, что существуют два известных всем числа: простое число Q и целое A, которое является примитивным корнем Q. Теперь предположим, что пользователи I и J хотят обменяться ключом для алгоритма симметричного шифрования. Пользователь I выбирает случайное число Хi < Q и вычисляет Yi = AXi mod Q. Аналогично пользователь J независимо выбирает случайное целое число Хj < Q и вычисляет Yj = AXj mod Q. Каждая сторона держит значение Х в секрете и делает значение Y доступным для другой стороны. Теперь пользователь I вычисляет ключ как К = (Yj)Xi mod Q, и пользователь J вычисляет ключ как K = (Yi)Xj mod Q. В результате оба получат одно и то же значение:

K = (Yj)Xi mod Q 
  = (AXj mod Q)Xi mod Q
  = (AXj )Xi mod Q 
  по правилам модульной арифметики
  = AXj Xi mod Q
  = (AXi )Xj mod Q
  = (AXi mod Q)Xj mod Q
  = (Yi)Xj mod Q

Таким образом, две стороны обменялись секретным ключом. Так как Хi и Хj являются закрытыми, противник может получить только следующие значения: Q, A, Yi и Yj. Для вычисления ключа атакующий должен взломать дискретный логарифм, т.е. вычислить

Xj = inda, q (Yj)

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

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

< Лекция 6 || Лекция 7: 123 || Лекция 8 >
Илья Сидоркин
Илья Сидоркин

Добрый день! Подскажите пожалуйста как и когда получить диплом, после сдичи и оплаты?????

Наталья Шульга
Наталья Шульга

Курс "информационная безопасность" .

Можно ли на него записаться на ПЕРЕПОДГОТОВКУ по данному курсу? Выдается ли диплом в бумажном варианте и высылается ли он по почте?