Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


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



Первая публикация данного алгоритма открытого распространения ключа появилась в статье Диффи и Хеллмана в 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, которым шифруют сообщения по симметричному алгоритму.

абонент А:

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, что является вычислительно трудной задачей

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

Электронная подпись на базе алгоритма RSA

Система электронной подписи RSA получается при " смене мест" ключей e и d, т.е. шифрование сообщения для получения подписи производится с помощью ключа KR = {d, n}.
Цифровой подписью сообщения является число s: S = M d mоd (n), которое передается вместе с сообщением.

Проверка подлинности подписанного сообщения [M, S]: M =Se mod (n)

Равенство чисел принятого сообщения и расшифрованной подписи доказывает, что сообщение M было подписано обладателем секретного ключа d, соответствующего ключу проверки подписи e, т.е. авторизует сообщение.

Протокол работы пары абонентов сети общей связи с алгоритмом RSA выглядит так.

1. Абоненты A (отправитель) и B (получатель) генерируют независимо друг от друга пары простых чисел: pa, qa и pb, qb

2. Вычисляют произведение больших простых чисел: Na = pa * qa и Nb = pb * qb

3. Вычисляют ключи: Ea и Da и Eb и Db

4. Числа Na, Nb и Ea, Eb помещаются в общедоступный справочник и получают статус открытых ключей; числа Da, Db сохраняются в качестве секретных ключей;

5. Обмен зашифрованными сообщениями:

А посылает В C a = Ma Eb mоd(Nb), зашифрованное открытым ключом пользователя B.

В посылает А Cb = Mв Ea mоd(Na), зашифрованное открытым ключом пользователя A.

6. Расшифрование: пользователь А → Mв = Cb Da mоd(Na)

пользователь В → Ma = Ca Db mоd(Nb)

Формирование цифровой подписи:

1. Абоненты подписывают и шифруют сообщения:

А → Sa = Ma Da m оd(Na)C a = Ma Eb mоd(Nb);

В → Sb = Mb Db mоd(Nb)Cb = Mb Ea mоd(Na).

2. ПередаютА → В: Sa, C a В → А: Sb, Cb.

3.РасшифровываютА: Mb = Сb Da mоd(Na), В: Ma = Сa Db mоd(Nb)

4. Проверяют подлинность подписи

В: Ma = Sa Ea mоd(Na), А: Mb = Sb Eb mоd(Nb)

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

Алгоритм RSA

Алгоритм RSA стоит у истоков асимметричной криптографии. Он был предложен тремя исседователями-математиками Рональдом Ривестом (R.Rivest), Ади Шамиром (A.Shamir) и Леонардом Адльманом (L.Adleman) в 1977-78 годах. С тех пор алгоритм Rivest-Shamir-Adleman (RSA) широко применяется практически во всех приложениях, использующих криптографию соткрытым ключом.

Алгоритм RSA представляет собой блочный алгоритм шифрования, где зашифрованные и незашифрованные данные являются целыми между 0 и n -1 для некоторого n.

Первым этапом любого асимметричного алгоритма является создание пары ключей: открытого и закрытого и распространение открытого ключа. Для алгоритма RSA этап создания ключей состоит из следующих операций:

1. Выбираются два простых числа p и q

2. Вычисляется их произведение n=(p*q)

3. Выбирается произвольное число e (e< n), такое, что НОД(e, (p-1)(q-1))=1, то есть e должно быть взаимно простым с числом (p-1)(q-1).

4. Методом Евклида решается в целых числах уравнение e*d+(p-1)(q-1)*y=1.

Здесь неизвестными являются переменные d и y – метод Евклида как раз и находит множество пар ( d, y ), каждая из которых является решением уравнения в целых числах.

5. Два числа { e, n } – являются открытым ключом KU.

6. Число d хранится в секрете – это и есть закрытый ключ – KR = {d, n}, который позволит расшифровывать сообщения, зашифрованные с помощью пары чисел ( e, n ).

Как же производится собственно шифрование с помощью этих чисел:

1. Отправитель разбивает свое сообщение на блоки, равные k=[log2(n)] бит, где квадратные скобки обозначают взятие целой части от дробного числа.

2. Подобный блок может быть интерпретирован как число из диапазона ( 0; 2k-1 ). Для каждого такого числа mi вычисляется выражение ci=(mi)emod n. Блоки ci и есть зашифрованное сообщение.

Их можно спокойно передавать по открытому каналу, поскольку операция возведения в степень по модулю простого числа, является необратимой математической задачей. Обратная ей задача носит название " логарифмирование в конечном поле" и является на несколько порядков более сложной задачей. То есть даже если злоумышленник знает числа e и n, то по ci прочесть исходные сообщения mi он не может никак, кроме как полным перебором mi.

На приемной стороне процесс расшифрованияпроизводится с помощью хранимого в секрете числа d. Достаточно давно была доказана теорема Эйлера, частный случай которой утверждает, что если число n представимо в виде двух простых чисел p и q, то для любого x имеет место равенство

(x(p-1)(q-1))mod n = 1.

Для дешифрования RSA-сообщений используется эта формула. Возведем обе ее части в степень (-y): (x(-y) (p-1) (q-1)) mod n = 1(-y) = 1. Теперь умножим обе ее части на x :

(x(-y) (p-1) (q-1) +1)mod n = 1*x = x

(ci)dmod n =((mi)e*dmod n = mi.

Алгоритм RSA основан на использовании односторонней функции с лазейкой. Зная публично известные n и e, мы можем найти С = Me (mod n) по заданному M, но не наоборот (если злоумышленник перехватит C, то восстановить M вычислительно трудная задача). При этом, если мы знаем как n раскладывается на множители, то выполнить обратную операцию легко. Разложение числа n на множители и есть та самая лазейка. Наличие лазейки позволяет применять RSA как для шифрования, так и в схеме цифровой подписи.


Поделиться:



Популярное:

Последнее изменение этой страницы: 2016-03-25; Просмотров: 1122; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.022 с.)
Главная | Случайная страница | Обратная связь