Криптография с открытым ключом
Дипломная работа - Компьютеры, программирование
Другие дипломы по предмету Компьютеры, программирование
b>В = Inda, p (YB), иначе YВ = a XВ mod p.
Только после этого он может определить общий секретный ключ K. Вычисление XВ из последнего соотношения (дискретного логарифма) является, вообще говоря, очень непростой задачей.
Взаимный обмен сообщениями с использованием метода обмена ключами Диффи-Хеллмана при определенных условиях (использовании централизованного каталога хранения параметров) обеспечивает как конфиденциальность, так и определенную степень аутентификацию.
Пример ДХ 1: Произвести обмен ключами между двумя пользователями А и В и сгенерировать общий сеансовый секретный ключ по схеме Диффи-Хеллмана.
Примечание. Описание примера дается для процесса информационного обмена между двумя абонентами. Однако интерфейс задания 2 данной лабораторной работы приводится общий (смотри далее). Это сделано для удобства выполнения лабораторной работы автономно одним студентом на одном рабочем месте.
1. Определение общих открытых элементов (в начале данный пункт задания выполняется пользователем А (условно) и полученные результаты в открытом виде передаются (условно) пользователю В). Для экономии времени одновременно пользователь В аналогичную работу выполняет с другими значениями p и a.
Это простое число p и его первообразный корень a.
Простое число выбирается из приведенной в приложении таблицы (таблица 1). Рекомендуется в качестве p выбрать двухразрядное число, равное или меньшее по значению 97. Для рассматриваемого примера, ради обеспечения простоты, мы выберем p=19.
Первообразный корень для выбранного p может быть определен двояко.
В первом случае (именно рекомендуется пойти по этому пути) первообразный корень выбирается из множества первообразных корней, полученных в результате выполнения расчетов по ПРОГРАММЕ 4 - Вычисление степеней целого числа am по модулю p и целых чисел, принадлежащих показателю f(p), - первообразных корней по модулю p. При этом значение p берется из предыдущей программы, где определялись первообразные корни.
Во втором случае первообразный корень для выбранного p подбирается из условия, что целыми числами с первообразными корнями могут быть только числа 2, 4, na и 2na (где n - любое нечетное простое число). Естественно, выбранный в данном случае первообразный корень a < p.
В заключение отметим, что для лабораторной работы рекомендуется выбрать простое число из таблицы, вычислить множество соответствующих первообразных корней путем выполнения расчетов по предложенному алгоритму и одновременно проверить выше приведенное условие выбора чисел, которые могут выступать в качестве первообразных корней для выбранного p.
Для нашего примера p=19 и a=10 (см. таблица 2.1., примера СТЕП 1).
2. Выбор секретных ключей пользователей А и В (соответственно XA и XB).
В соответствии с выбранным значением p определяются секретные ключи по условиям XA < p и XB < p. Выбираем XA=5 и XB=7.
3. Вычисление в соответствии с найденным a и выбранному p открытых ключей YA и YB (соответственно пользователями А и В) для пользователей А и В на основе XA и XB (при этом используется ниже указанная программа)
YA = aXA mod p = 105 mod 19.
YB = aXB mod p = 107 mod 19.
В действительности целые числа, используемые в приведенных соотношениях очень большие и выполнить данные расчеты не так легко. Поэтому необходимо эти расчеты производить в соответствии с ПРОГАММОЙ 3 - Быстрое возведение в степень для ab mod n при больших значениях b (см. лабораторную работу 1 - Алогритм быстрого возведения в степень для ab mod n при больших значениях b, примеры БВОЗ 1 и БВОЗ 2, и задание 3, не путать p с n; в алгоритме n выбранное простое число).
В нашем примере YA = aXA mod p = 105 mod 19 = 3, то есть . YA = 3.
YB = aXB mod p = 107 mod 19 = 15, то есть, YB = 15.
4. Выполнение процесса обмена открытыми ключами (условно).
Пользователь А получает в свое распоряжение открытый ключ пользователя В - YB.
Пользователь B получает в свое распоряжение открытый ключ пользователя A - YA.
5. Вычисление каждой стороной значения своего сеансового ключа (эти ключи K будут одинаковыми и используются пользователями как общий сеансовый ключ) на базе полученных открытых ключей противоположных сторон.
Пользователь A вычисляет свой сеансовый секретный ключ K ?
K = (YB)XA mod p.
Пользователь B вычисляет свой сеансовый секретный ключ K ?
K = (YA)XB mod p.
При этом обе стороны используют ПРОГАММУ 3 - Быстрое возведение в степень для ab mod n при больших значениях b.
Для нашего примера
Пользователь A: K = (YB)XA mod p = 155mod19 = 2; K= 2.
Пользователь B: K = (YA)XB mod p = 37mod19 = 2; K= 2.
6. Посылка (условно) опре?/p>