» » Алгоритм Диффи Хеллмана назначение

Алгоритм Диффи Хеллмана назначение

Обзор алгоритма обмена ключами Diffie-Hellman

Размещена 13.11.2013. Последняя правка: 18.11.2013.


NVision Group, НГТУ

Инженер-стажер

Аннотация:

До алгоритма Диффи‑Хеллмана было сложно совместно использовать зашифрованные данные из‑за проблем хранения ключей и передачи информации. Подробнее об этом будет еще сказано. В большинстве случаев передача информации по каналам связи небезопасна, потому что сообщение может пройти десятки систем, прежде чем оно достигнет потенциального адресата, и нет никаких гарантий, что по пути никто не сможет взломать секретный ключ. Уитфилд Диффи и Мартин Хеллман предложили зашифровывать секретный ключ DES по алгоритму Диффи‑Хеллмана на передающей стороне и пересылать его вместе с сообщением, зашифрованным с использованием DES. Тогда на другом конце его сможет расшифровать только получатель сообщения.

по алгоритму Диффи‑Хеллмана происходит по следующей схеме.обмен ключамиНа практике
1. Два участника обмена договариваются о двух числах. Один выбирает большое простое число, а другой – целое число, меньшее числа первого участника. Переговоры они могут вести открыто, и это никак не отразится на безопасности.
2. Каждый из двух участников, независимо друг от друга, генерирует другое число, которое они будут хранить в тайне. Эти числа выполняют роль секретного ключа. Далее в вычислениях используются секретный ключ и два предыдущих целых числа. Результат вычислений посылается участнику обмена, и он играет роль открытого ключа.
3. Участники обмена обмениваются открытыми ключами. Далее они, используя собственный секретный ключ и открытый ключ партнера, конфиденциально вычисляют ключ сессии. Каждый партер вычисляет один и тот же ключ сессии.
4. Ключ сессии может использоваться как секретный ключ для другого алгоритма шифрования, например DES. Никакое третье лицо, контролирующее обмен, не сможет вычислить ключ сессии, не зная один из секретных ключей.

2.2. Положить ci+n
=s.

3. Результат:

Во внешнем цикле этого алгоритма вычисляются частичные произведения ,
а во внутреннем — произведения , где j = 0, 1, ..., п-
1. Текущий разряд произведения равен t (mod В), а очередной перенос: . При этом на шаге 2.1.2 выполняется неравенство:

Сложность умножения в «столбик» О(n2
).

Функция умножения реализована как умножение с вычислением модуля.

Код функции mult_mod (умножение по модулю) c=a*b (mod mod):

void mult_mod(unsigned char a[33],unsigned char b[33],unsigned char c[33]){

int i,j,k,s,t;

unsigned char d[65]={0};

for (k=0;k<=31;k++) c[k]=0; //очищение переменной

for(i=0;i<=31;i++){

s=0;

for(j=0;j<=31;j++){

t=d[i+j]+a[i]*b[j]+s;

d[i+j]=t;

s=t>>8;

}

d[i+32]=s;

}

modul(d,mod,c); //вычисление модуля mod - глобальная переменная

}

Отдельно реализована функция возведения в квадрат.

Алгоритм 3
. Возведение в квадрат, [Молдовян Н.А. и др., 2004].

Вход
. Целое положительное число .

Выход
. Значение

1. Для i = 0, 1,...,п-
1 положить сi
= 0.

2. Для i = 0, 1,...,п-
1 выполнить следующие действия.

2.1. Положить , , .

2.2. Для j = 0, 1,...,п-
1 вычислить t = ci+j
+ai
aj
+s , ci+j
=t (mod B) , .

2.3. Положить ci+n
=s.

Результат: с .

На шаге 2.2 алгоритма выполняется неравенство:

Это означает что t может занимать более двух разрядов в системе исчисления B.

Сложность алгоритма возведение в квадрат О().

Код функции step2 (возведение в квадрат) b=a^2 (mod mod):

void step2(unsigned char a[33],unsigned char b[33]){

unsigned char c[65]={0};

int t,s,i,j;

for(i=0;i<=32;i++){

t=c[2*i]+a[i]*a[i];

c[2*i]=t%256;

s=t>>8;

for(j=i+1;j<=32;j++){

t=c[i+j]+2*a[i]*a[j]+s;

c[i+j]=t%256;

s=t>>8;

}

c[i+33]=s;

}

modul(c,mod,b);//вычисление модуля

}

Для деления в общем случае используется алгоритм Д. Кнута . Будем делить «в столбик» число на число . Найдем такое частное и остаток,
что.

При делении на каждом шаге находим частное от деления некоторого (n+1)-разрядного числа на b,
где О < R/b<В
. Неравенство R/b <В
эквивалентно неравенству R/B<b,
откуда b
:

Полагая R = R
- Qb,
получаем 0 < R < b.

Для определения числа Q
будем использовать аппроксимацию

[1]

При получаем

,
то есть определение наименьшего из двух чисел в выражении

(1) сводится к проверке равенства .

Над полем  вместе с дополнительной точкой , называемой точкой в бесконечности.

Количество точек на кривой  также определяется теоремой Хассе [2]:

,

где . Более того,  четно.

Операция сложения на  в этом случае задается следующими правилами:

;

                                                             (5)

,

где

,


Ïðîáëåìà àóòåíòèôèêàöèè äàííûõ è áëî÷íûå øèôðû. Äàííàÿ ñòàòüÿ ÿâëÿåòñÿ ïðîäîëæåíèåì ñåðèè ñòàòåé àâòîðà î ðåàëèçàöèÿõ è èñïîëüçîâàíèè Ðîññèéñêîãî ...
 äàííîì ðàçäåëå èçëîæåíû èäåè àâòîðîâ [7], ïîçâîëèâøèå ïåðåéòè îò ïîäïèñè îòäåëüíûõ áèòîâ â èñõîäíîé ñõåìû Äèôôè-Õåëëìàíà ê ïîäïèñè áèòîâûõ ãðóïï. Öåíòðàëüíûì â ýòîì ïîäõîäå ...
1] Ïðîòîêîëîâ â êðèïòîãðàôèè íàçûâàåòñÿ íàáîð ïðàâèë è àëãîðèòìîâ áîëåå âûñîêîãî ïîðÿäêà, ðåãëàìåíòèðóþùèõ èñïîëüçîâàíèå àëãîðèòìîâ íèçøåãî ïîðÿäêà. Åãî îñíîâíîå íàçíà÷åíèå ... ...


Ñîâðåìåííàÿ êðèïòîãðàôèÿ Ââåäåíèå Ïðîáëåìà çàùèòû èíôîðìàöèè ïóòåì åå ïðåîáðàçîâàíèÿ, èñêëþ÷àþùåãî åå ïðî÷òåíèå ïîñòîðîííèì ëèöîì âîëíîâàëà ...
Âî âòîðîé ãëàâå ðàáîòû ñ ïðîòîêîëàìè ðàñïðåäåëåíèÿ êðèïòîãðàôè÷åñêèõêëþ÷åé, ïîíÿòèåì ýëåêòðîííîé ïîäïèñè è ïðîòîêîëàìè ýëåêòðîííîé ïîäïèñè..
 íàñòîÿùåå âðåìÿ íå èçâåñòíî ïîëèíîìèàëüíûõ àëãîðèòìîâ äèñêðåòíîãî ëîãàðèôìèðîâàíèÿ â ïðîèçâîëüíîé ãðóïïå GF(q)*. Èçëîæåííûé íèæå àëãîðèòì ïðèìåíèì ê ïðîèçâîëüíîé ãðóïïå GF(q)* è ... ...

На второй фазе для установки SA используется Быстрый режим (Quick Mode).

Кроме того, существует Режим новой группы (New Group Mode), который не является режимом первой или второй фазы. Он используется для установки новой Oakley Group для обмена ключами Diffie-Hellman.

]править[ Основной режим

(Main mode) реализует стандартный механизм установления «канала» ISAKMP SA. Он включает в себя три процедуры двунаправленного обмена. Сначала стороны договариваются о базовых алгоритмах и используемых методах хеширования. Затем осуществляется обмен открытыми ключами в рамках алгоритма Диффи — Хеллмана и случайными числами (nonce), которые подписываются принимающими сторонами и отправляются обратно для идентификации. Наконец, в ходе третьего обмена по пришедшим обратно подписанным значениям nonce проверяется подлинность сторон.

]править[ Агрессивный режим
]править[ Быстрый режим


Y1 = 73 mod 11 = 2,


Y2= 79 mod 11 = 8.


Затем пользователи обмениваются открытыми ключами Y1 и Y2. После этого каждый из пользователей может вычислить общий секретный ключ:

)Xj mod Q = (A

mod Q)

mod Q = (Y

2. Боб зашифровывает принятое сообщение C1 и отправляет Алисе обратно 3PSP-03.jpg

3. Алиса расшифровывает сообщение C2 своим ключом и отправляет результат Бобу 3PSP-04.jpg

4. Боб расшифровывает C3 и получает исходное сообщение M.

В качестве сообщение M может выступать секретный ключ шифрования или какой-либо иной секретный параметр для дальнейшей выработки общего симметричного ключа.

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

3PSP-05.jpg

Злоумышленник, выполнив побитовое сложение всех сообщений по модулю 2, может получить исходное сообщение:

3PSP-06.jpg

Защищенные переговоры о ключе

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

Тип содержимого для Certificate Request Payload есть 7.

10.5.11 Содержимое HASH

Hash Payload содержит данные, создаваемые хэш-функцией (определенной во время
обмена при установлении SA), для некоторой части сообщения и/или состояния ISAKMP.
Данное содержимое может использоваться для проверки целостности данных в ISAKMP-сообщении
или для аутентификации сущностей, ведущих переговоры. Формат Hash Payload в
соответствии с рисунком 10.11.

Рисунок 10.11 - Формат HASH Payload

Поля Hash Payload определяются следующим образом:

а) Next Payload (1 октет) - идентификатор типа следующего содержимого в сообщении;
если текущее содержимое является последним, то данное поле должно быть 0;

б) Payload Length (2 октета) - длина в октетах текущего содержимого, включая
общий заголовок;

в) Hash Data (переменной длины) - данные, которые являются результатом применения
хэш-функции к ISAKMP-сообщению и/или состоянию;

10.5.12 Содержимое Signature

Signature Payload содержит данные, созданные функцией цифровой подписи (выбранной
при обмене во время установления SA) для определенной части сообщения и/или
ISAKMP-состояния. Данное содержимое используется для проверки целостности данных
в ISAKMP-сообщении, и может быть использовано для сервисов невозможности отказа.
Формат Signature Payload в соответствии с рисунком 10.12.

Рисунок 10.12 - Формат Signature Payload

Поля Signature Payload определяются следующим образом:

а) Next Payload (1 октет) - идентификатор типа следующего содержимого в сообщении;
если текущее содержимое является последним, то данное поле должно быть 0;

б) Payload Length (2 октета) - длина в октетах текущего содержимого, включая
общий заголовок;

в) Signature Data (переменной длины) - данные, которые являются результатом
применения функции цифровой подписи для ISAKMP сообщения;

Тип содержимого для Signature Payload есть 9.

10.5.13 Содержимое Nonce

Nonce Payload содержит случайные данные, используемые для гарантии своевременности
обмена и отсутствия replay-атак. Формат Nonce Payload в соответствии с рисунком
10.13. Если nonces используются в конкретном обмене ключа, то применение Nonce
рayload определяется обменом ключа. Nonces могут передаваться как часть данных
обмена ключа или как отдельное содержимое. Это, однако, определяется обменом
ключа, а не ISAKMP.

Рисунок 10.13 - Формат Nonce Payload

Поля Nonce Payload определяются следующим образом:

а) Next Payload (1 октет) - идентификатор типа следующего содержимого в сообщении;
если текущее содержимое является последним, то данное поле должно быть 0;

б) Payload Length (2 октета) - длина в октетах текущего содержимого, включая
общий заголовок;

в) Nonce Data (переменной длины) - содержит случайные данные, созданные передающей
сущностью;

Тип содержимого для Nonce Payload есть 10.

10.5.14 Содержимое Notification

Notification Payload может содержать как определяемые ISAKMP, так и определяемые
DOI данные и использоваться при передаче информационных данных, таких как ошибочные
условия. Можно послать несколько Notification Payload в одном сообщении ISAKMP.
Формат Notification Payload в соответствии с рисунком 10.14.

Рисунок 10.14 - Формат Notification Data

Notification, которые возникают на Фазе 1 переговоров, идентифицируются парой
cookie Инициатора и Получателя в заголовке ISAKMP. Идентификатором протокола
в данном случае является ISAKMP, и значение SPI есть 0, потому что пара cookie
в заголовке ISAKMP идентифицирует ISAKMP SA. Если notification имеет место перед
завершением обмена ключевой информацией, то она не будет защищена.

Notification, которые возникают во время Фазы 2 переговоров, определяются парой
cookie Инициатора и Получателя в заголовке ISAKMP, и Message ID и SPI связаны
с текущими переговорами.

Поля Notification Data определяются следующим образом:

а) Next Payload (1 октет) - идентификатор типа следующего содержимого в сообщении;
если текущее содержимое является последним, то данное поле должно быть 0;

б) Payload Length (2 октета) - длина в октетах текущего содержимого, включая
общий заголовок;

в) Domain of Interpretation (4 октета) - идентификация DOI, с помощью которой
данное уведомление имело место;

д) Protocol-Id (1 октет) - определяет идентификатор протокола для текущего
уведомления; примерами являются ISAKMP, ESP, AH;

е) SPI Size (1 октет) - длина SPI в октетах как определено в Protocol-Id; в
случае ISAKMP пара cookie Инициатора и Получателя из заголовка ISAKMP есть ISAKMP
SPI, следовательно, SPI Size не имеет отношения к делу и, следовательно, может
быть от 0 до 16; если SPI Size - не 0, содержимое поля SPI должно игнорироваться;

ж) Notify Message Type (2 октета) - определяет тип сообщения уведомления; дополнительный
текст размещается в поле Notification Data;

и) SPI (переменной длины) - Security Parameter Index. SPI получающей сущности;
длина этого поля определяется полем SPI Size;

к) Notification Data (переменной длины) - информация или данные об ошибке,
передаваемые в дополнение к Notify Message Type;

Тип содержимого для Notification Payload есть 11.

10.5.15 Содержимое Delete

Delete Payload содержит идентификатор SA которую отправитель удаляет из своей
БД SA и которая, следовательно, более не доступна. Формат Delete Payload в соответствии
с рисунком 10.15. Возможна посылка нескольких SPIs в Delete Payload, однако
каждый SPI должен быть предназначен для того же самого протокола.


Рисунок 10.15 - Формат Delete Payload

Удаление, которое относится к ISAKMP SA, содержит Protocol-Id для ISAKMP, и
SPIs есть cookies отправителя и получателя из заголовка ISAKMP. Удаление, которое
имеет дело с Protocol SA, такими как ESP или АН, будет содержать Protocol-Id
протокола (т.е. ESP, AH), и SPI есть SPI(s) посылающей сущности.

Поля Delete Payload определены следующим образом:

а) Next Payload (1 октет) - идентификатор типа следующего содержимого в сообщении;
если текущее содержимое является последним, то данное поле должно быть 0;

б) Payload Length (2 октета) - длина в октетах текущего содержимого, включая
общий заголовок;

в) Domain of Interpretation (4 октета) - идентификация DOI, с помощью которой
данное уведомление было сделано;

д) Protocol-Id (1 октет) - ISAKMP может устанавливать безопасные ассоциации
для различных протоколов, включая ISAKMP и IPSec;

е) SPI Size (1 октет) - длина SPI в октетах определяется Protocol-Id; в случае
ISAKMP ISAKMP SPI является пара cookie Инициатора и Получателя; в этом случае
SPI Size есть 16 октетов для каждого удаляемого SPI;

ж) # of SPIs (2 октета) - количество SPIs, содержащихся в Delete payload; размер
каждого SPI определяется полем SPI Size;

и) Securiry Parameter Index(es) (переменной длины) - идентификаторы, определяющие
удаляемые безопасные ассоциации;

Тип содержимого для Delete Payload есть 12.

10.5.16 Содержимое Vendor ID

Vendor ID Payload содержит константу, определяющую разработчика. Данная константа
используется разработчиком для собственной идентификации и удаленной сущностью
для распознавания разработчика. Данный механизм позволяет разработчику экспериментировать
с новыми возможностями, сохраняя обратную совместимость.Формат Vendor ID Payload
в соответствии с рисунком 10.16.

Рисунок 10.16 - Формат Vendor ID Payload

Поля Vendor ID Payload определяются следующим образом:

а) Next Payload (1 октет) - идентификатор типа следующего содержимого в сообщении;
если текущее содержимое является последним, то данное поле должно быть 0;

б) Payload Length (2 октета) - длина в октетах текущего содержимого, включая
общий заголовок;

в) Vendor ID (переменной длины) - хэш строки разработчика плюс версия;

Тип содержимого Vendor ID есть 13.

Содержание

"Методы и средства защиты информации". ПетрГУ, 2006.

Наверх