Interested Article - Протокол Диффи — Хеллмана на эллиптических кривых

Протокол Ди́ффи-Хе́ллмана на эллиптических кривых ( англ. Elliptic curve Diffie–Hellman , ECDH ) — криптографический протокол , позволяющий двум сторонам, имеющим пары открытый/закрытый ключ на эллиптических кривых , получить общий секретный ключ , используя незащищённый от прослушивания канал связи . Этот секретный ключ может быть использован как для шифрования дальнейшего обмена, так и для формирования нового ключа , который затем может использоваться для последующего обмена информацией с помощью алгоритмов симметричного шифрования . Это вариация протокола Диффи-Хеллмана с использованием эллиптической криптографии .

Описание алгоритма

Пусть существуют два абонента: Алиса и Боб . Предположим, Алиса хочет создать общий секретный ключ с Бобом, но единственный доступный между ними канал может быть подслушан третьей стороной. Изначально должен быть согласован набор параметров ( ( p , a , b , G , n , h ) {\displaystyle (p,a,b,G,n,h)} для общего случая и ( m , f ( x ) , a , b , G , n , h ) {\displaystyle (m,f(x),a,b,G,n,h)} для поля характеристики 2 {\displaystyle 2} ). Так же у каждой стороны должна иметься пара ключей, состоящая из закрытого ключа d {\displaystyle d} ( случайно выбранное целое число из интервала [ 1 , n 1 ] {\displaystyle [1,n-1]} ) и открытого ключа Q {\displaystyle Q} (где Q = d G {\displaystyle Q=d\cdot G} — это результат проделывания d {\displaystyle d} раз операции суммирования элемента G {\displaystyle G} ). Пусть тогда пара ключей Алисы будет ( d A , Q A ) {\displaystyle (d_{A},Q_{A})} , а пара Боба ( d B , Q B ) {\displaystyle (d_{B},Q_{B})} . Перед исполнением протокола стороны должны обменяться открытыми ключами.

Алиса вычисляет ( x k , y k ) = d A Q B {\displaystyle (x_{k},y_{k})=d_{A}\cdot Q_{B}} . Боб вычисляет ( x k , y k ) = d B Q A {\displaystyle (x_{k},y_{k})=d_{B}\cdot Q_{A}} . x k {\displaystyle x_{k}} (x-координата получившейся точки). Большинство стандартных протоколов, базирующихся на ECDH, используют функции формирования ключа для получения симметричного ключа из значения x k {\displaystyle x_{k}} .

Вычисленные участниками значения равны, так как d A Q B = d A d B G = d B d A G = d B Q A {\displaystyle d_{A}\cdot Q_{B}=d_{A}\cdot d_{B}\cdot G=d_{B}\cdot d_{A}\cdot G=d_{B}\cdot Q_{A}} . Из всей информации, связанной со своим закрытым ключом, Алиса сообщает только свой открытый ключ. Таким образом никто, кроме Алисы, не может определить её закрытый ключ, кроме участника, способного решить задачу дискретного логарифмирования на эллиптической кривой . Закрытый ключ Боба аналогично защищён. Никто, кроме Алисы или Боба, не может вычислить их общий секрет, кроме участника, способного разрешить проблему Диффи — Хеллмана .

Открытые ключи бывают либо статичными (и подтверждённые сертификатом) либо эфемерные (сокращённо ECDHE). Эфемерные ключи используются временно и не обязательно аутентифицируют отправителя, таким образом, если требуется аутентификация, подтверждение подлинности должно быть получено иным способом . Аутентификация необходима для исключения возможности атаки посредника . Если Алиса либо Боб используют статичный ключ, опасность атаки посредника исключается, но не может быть обеспечена ни прямая секретность , ни устойчивость к подмене при компрометации ключа, как и некоторые другие свойства устойчивости к атакам. Пользователи статических закрытых ключей вынуждены проверять чужой открытый ключ и использовать функцию формирования ключа на общий секрет, чтобы предотвратить утечку информации о статично закрытом ключе . Для шифрования с другими свойствами часто используется протокол MQV .

При использовании общего секрета в качестве ключа зачастую желательно хешировать секрет, чтобы избавиться от уязвимостей, возникших после применения протокола .

Пример

Эллиптическая кривая E над полем G F ( 2 163 ) {\displaystyle GF(2^{163})} имеет порядок 2 P 49 {\displaystyle 2\cdot P49} , где P49 простое число , состоящее из 49 цифр в десятичной записи.

E : Y 2 + X Y = X 3 + X 2 + 1 {\displaystyle E:\quad Y^{2}+XY=X^{3}+X^{2}+1}

Выберем неприводимый многочлен

1 + X + X 2 + X 8 + X 163 {\displaystyle 1+X+X^{2}+X^{8}+X^{163}}

И возьмём точку эллиптической кривой

P = ( d 42149 e 09429 d f 4563 e c 1816488 c 92 d e 89 f 93 a 9 b 2 , c c d 18 d 6 c c 3042 c 4 c 17 a 213506345 c 80965 a c 19476 ) 0 {\displaystyle P=(d42149e09429df4563ec1816488c92de89f93a9b2,~ccd18d6cc3042c4c17a213506345c80965ac19476)\neq 0} .

Проверим, что её порядок не равен 2

2 P = ( c c d 18 d 6 c c 3042 c 4 c 17 a 213506345 c 809 b 5 a c 1 d 476 , 835 a 2 f 56 b 88 d 6 a 249 b 4 b d 2 a 7550 a 4375 e 531 d 8 a 37 ) {\displaystyle 2P=(ccd18d6cc3042c4c17a213506345c809b5ac1d476,~835a2f56b88d6a249b4bd2a7550a4375e531d8a37)} .

Значит, её порядок равен порядку группы 2 P 49 {\displaystyle 2\cdot P49} , а именно числу P 49 {\displaystyle P49} , и её можно использовать для построения ключа. Пусть k A = 12 {\displaystyle k_{A}=12} , k b = 123 {\displaystyle k_{b}=123} . Тогда открытые ключи участников протокола вычисляются как

k A P = 12 P = ( b d 9776 b b e 87 a 8 b 1024 b e 2 e 415952 f 527 e e e 928 b 43 , c 67 a 28 e d 7 b 137 e 756 c 37654 f 186 a 71 b f 64 e 5 a c 546 ) {\displaystyle k_{A}\cdot P=12\cdot P=(bd9776bbe87a8b1024be2e415952f527eee928b43,~c67a28ed7b137e756c37654f186a71bf64e5ac546)} .
k B P = 123 P = ( a 5684 e 246044 f c 126 e 9832 d 17513387 e 474290547 , 568 b 4137 f 09 f 5 f 79 a 8 a 6 b 0 f e 44 c d f 41 d 8 e 68 a e 2 c 6 ) {\displaystyle k_{B}\cdot P=123\cdot P=(a5684e246044fc126e9832d17513387e474290547,~568b4137f09f5f79a8a6b0fe44cdf41d8e68ae2c6)} .

А общий секрет будет равен:

k B k A P = k A k B P = 12 123 P = ( b b 7856 c e c e 13 c 71919534878 b c b 6 f 3 a 887 d 613 c 92 , f 661 f f d f e 1 b a 8 c b 1 b 2 a d 17 b 6550 c 65 a a 6 d 4 f 07 f 41 ) {\displaystyle k_{B}\cdot k_{A}\cdot P=k_{A}\cdot k_{B}\cdot P=12\cdot 123\cdot P=(bb7856cece13c71919534878bcb6f3a887d613c92,~f661ffdfe1ba8cb1b2ad17b6550c65aa6d4f07f41)} .

В качестве ключа симметричной системы используется значение (или его часть) x = b b 7856 c e c e 13 c 71919534878 b c b 6 f 3 a 887 d 613 c 92 {\displaystyle x=bb7856cece13c71919534878bcb6f3a887d613c92} .

Программное обеспечение

  • — набор эллиптических параметров и ссылок, реализованный на языке Си .

См. также

Примечания

  1. , p. 119.
  2. , p. 11.
  3. ↑ , p. 8.
  4. , p. 63.
  5. , p. 40.
  6. , p. 20.
  7. ↑ , p. 30.
  8. , p. 85.

Литература

  • Elaine Barker, Lily Chen, Allen Roginsky, Miles Smid. (англ.) // . — National Institute of Standards and Technology, 2013. — ISBN 1495447502 .
  • : [ англ. ] . — . — Certicom Corp, 2009. — P. 15—28, 56—58.
  • National Institute of Standards and Technology (NIST). : [ англ. ] . — . — 2009.
  • Laurie Law. An Efficient Protocol for Authenticated Key Agreement : [ англ. ] / Laurie Law, , Minghua Qu … [ et al. ] . — Designs, Codes and Cryptography. — Kluwer Academic Publishers, 2003. — Vol. 28, no. 2. — P. 119–134. — ISSN . — doi : .
  • Болотов А. А. , Гашков С. Б. , Фролов А. Б. Глава 2. Протоколы на эллиптических кривых // Элементарное введение в эллиптическую криптографию. Протоколы криптографии на эллиптических кривых. — М. : КомКнига, 2006. — С. 83—86. — ISBN 5-484-00444-6 , ББК 32.81, УДК 512.8.

Same as Протокол Диффи — Хеллмана на эллиптических кривых