MQV

MQV (Менезес-Кью-Ванстоун) — это аутентификационный протокол, базирующийся на алгоритме Диффи-Хеллмана. MQV предоставляет защиту против активных атак путём сочетания статического и временного ключей. Протокол может быть модифицирован для работы в произвольной конечной коммутативной группе, и, в частности, в группах эллиптических кривых, где известен как ECMQV.

MQV изначально был предложен Альфредом Менезесом, Мингхуа Кью и Скоттом Ванстоуном в 1995. Был модифицирован в 1998. Существуют одно-, двух- и трёхходовые разновидности алгоритма.

MQV включен в проект по стандартизации криптосистем с открытым ключом — IEEE P1363.

Патенты на некоторые разновидности MQV принадлежат компании Certicom [1].

MQV имеет некоторые слабости, которые были исправлены алгоритмом HMQV в 2005 [2]; см. [3], [4], [5].

Оба алгоритма MQV и HMQV имеют уязвимости, которые были исправлены протоколом FHMQV (см. [6])

Описание

Алиса имеет статическую ключевую пару ( W a , w a {\displaystyle W_{a},w_{a}} ), где W a {\displaystyle W_{a}} её открытый ключ и w a {\displaystyle w_{a}} её секретный ключ. Боб имеет статическую ключевую пару ( W b , w b {\displaystyle W_{b},w_{b}} ), где W b {\displaystyle W_{b}} его открытый ключ и w b {\displaystyle w_{b}} его секретный ключ. Определим R ¯ {\displaystyle {\bar {R}}} . Пусть R = ( x , y ) {\displaystyle R=(x,y)} будет точкой на эллиптической кривой. Тогда R ¯ = ( x mod 2 L ) + 2 L {\displaystyle {\bar {R}}=(x\,{\bmod {\,}}2^{L})+2^{L}} , где L = log 2 n + 1 2 {\displaystyle L=\left\lceil {\frac {\lfloor \log _{2}n\rfloor +1}{2}}\right\rceil } и n {\displaystyle n} есть порядок используемого генератора точки P {\displaystyle P} . Таким образом, R ¯ {\displaystyle {\bar {R}}} есть первые L {\displaystyle L} битов координаты x {\displaystyle x} для R {\displaystyle R} . Кроме того введем кофактор h {\displaystyle h} , определённый как h = | G | n {\displaystyle h={\frac {|G|}{n}}} , где | G | {\displaystyle {|G|}} есть порядок группы G {\displaystyle {G}} , причем следует учесть, что по техническим причинам должно выполняться требование: g c d ( n , h ) = 1 {\displaystyle gcd(n,h)=1} [1].

Шаг Операция
1 Алиса создает ключевую пару ( R a , r a {\displaystyle R_{a},r_{a}} ) генерируя случайно r a {\displaystyle r_{a}} и вычисляя R a {\displaystyle R_{a}} = r a P {\displaystyle r_{a}P} , где P {\displaystyle P}  — точка на эллиптической кривой. После этого она посылает временный открытый ключ R a {\displaystyle R_{a}} Бобу.
2 Боб создает ключевую пару ( R b , r b {\displaystyle R_{b},r_{b}} ) генерируя случайно r b {\displaystyle r_{b}} и вычисляя R b {\displaystyle R_{b}} = r b P {\displaystyle r_{b}P} . После создания пары он посылает свой временный открытый ключ R b {\displaystyle R_{b}} Алисе.
3 Алиса проверяет, что временный открытый ключ R b {\displaystyle R_{b}} принадлежит группе G {\displaystyle G} , а также то что R b {\displaystyle R_{b}} не является нулевым элементом. После этого вычисляет групповой элемент K a b {\displaystyle Kab} , как K a b = h s a S b {\displaystyle Kab=hs_{a}S_{b}} , где s a = ( r a + R a ¯ w a ) m o d n {\displaystyle s_{a}=(r_{a}+{\bar {R_{a}}}w_{a})modn} и S b = R b + R b ¯ W b {\displaystyle S_{b}=R_{b}+{\bar {R_{b}}}W_{b}} . Если K a b = O {\displaystyle Kab=O} , Алиса отклоняет данные, полученные от Боба. В противном случае, она принимает вычисленный результат, как общий секретный ключ.
4 Боб проверяет, что временный открытый ключ R a {\displaystyle R_{a}} принадлежит группе G {\displaystyle G} , а также что R a {\displaystyle R_{a}} не является нулевым элементом. Вычисляет групповой элемент K b a {\displaystyle Kba} , как K b a = h s b S a {\displaystyle Kba=hs_{b}S_{a}} , где s b = ( r b + R b ¯ w b ) m o d n {\displaystyle s_{b}=(r_{b}+{\bar {R_{b}}}w_{b})modn} и S a = R a + R a ¯ W a {\displaystyle S_{a}=R_{a}+{\bar {R_{a}}}W_{a}} . Если K b a = O {\displaystyle Kba=O} , Боб отклоняет данные, полученные от Алисы. В противном случае, он принимает вычисленный результат, как общий секретный ключ.

Базовый протокол является привлекательным решением из-за нескольких причин:

  1. Предоставляет неявную идентификацию ключа и последующую защиту для каждого из партнеров.
  2. Является эффективным не только в плане вычислений, но и в плане пропускной способности, так как использует только операции, заданные над полем и простое отображение. Вычисления каждого участника (в грубой оценке) состоят лишь из 2,5 умножений — одно для генерации временной ключевой пары, другое для скалярного умножения на s a {\displaystyle s_{a}} или s b {\displaystyle s_{b}} .

Оставшаяся часть вычислений приходится на умножение на R a ¯ {\displaystyle {\bar {R_{a}}}} или R b ¯ {\displaystyle {\bar {R_{b}}}} . Стоит также учесть стоимость умножения на кофактор. Однако эта сложность (умножение на кофактор) зависит от размера группы. Для криптосистем, основанных на эллиптических кривых, данная сложность незначительна, так как кофактор обычно мал[2].

Корректность

Вычисления Боба: K b a = h s b ( R a + R a ¯ W a ) = h s b ( r a P + R a ¯ w a P ) = h s b ( r a + R a ¯ w a ) P = h s b s a P {\displaystyle Kba=h\cdot s_{b}(R_{a}+{\bar {R_{a}}}W_{a})=h\cdot s_{b}(r_{a}P+{\bar {R_{a}}}w_{a}P)=h\cdot s_{b}(r_{a}+{\bar {R_{a}}}w_{a})P=h\cdot s_{b}s_{a}P} .

Вычисления Алисы: K a b = h s a ( R b + R b ¯ W b ) = h s a ( r b P + R b ¯ w b P ) = h s a ( r b + R b ¯ w b ) P = h s b s a P {\displaystyle Kab=h\cdot s_{a}(R_{b}+{\bar {R_{b}}}W_{b})=h\cdot s_{a}(r_{b}P+{\bar {R_{b}}}w_{b}P)=h\cdot s_{a}(r_{b}+{\bar {R_{b}}}w_{b})P=h\cdot s_{b}s_{a}P} .

Таким образом, ключи K a b = K b a {\displaystyle Kab=Kba} действительно эквивалентны ключу K = h s b s a P {\displaystyle K=h\cdot s_{b}s_{a}P} [3].

Возможные атаки

Самый простой вариант, которым может воспользоваться злоумышленник (криптоаналитик) — получить сертификат(идентификатор), ассоциирующий его имя с открытым ключом, находящимся у Алисы. Если он заменит идентификатор Алисы своим собственным идентификатором в данном протоколе, существует значительная вероятность, что Боб примет данный идентификатор, не заметив подмены, в действительности думая, что общается с Алисой. Приведём атаку, основанную на подмене источника. Данная атака указывает на необходимость наличия требований к владению ключом: запрашивающая сторона должна знать секретный ключ для того, чтобы получить идентификатор, соответствующий открытому ключу. В принципе, центр идентификации мог бы устроить проверку на дубликат открытых ключей, однако этот шаг является непрактичным решением, так как влечёт за собой участие большого количества центров идентификации. Таким образом, злоумышленник должен получить идентификатор для нового открытого ключа W e {\displaystyle W_{e}} , такого, чтобы существовало соответствие секретному ключу w e {\displaystyle w_{e}} , и такого, чтобы Боб вычислил бы такой же общий секретный ключ при взаимодействии со злоумышленником, какой вычислился бы при взаимодействии Боба и Алисы. Следующая реализация удовлетворяет всем вышеописанным целям. Обозначим злоумышленника как Еву[3].

Шаг Операция
1 Ева перехватывает временный открытый ключ Алисы R a {\displaystyle R_{a}} на пути ключа к Бобу.
2 Ева выбирает целое U {\displaystyle U} принадлежащее промежутку [ 1 , {\displaystyle [1,} n 1 ] {\displaystyle n-1]} и вычисляет временный открытый ключ R e {\displaystyle R_{e}} , как R e = R a u P + R a ¯ W a {\displaystyle R_{e}=R_{a}-uP+{\bar {R_{a}}}W_{a}} (заметим, что Ева не знает соответствующий секретный ключ r e {\displaystyle r_{e}} ). Если R e = 0 {\displaystyle R_{e}=0} , Ева повторяет этот шаг с другим целым U {\displaystyle U} .
3 Ева вычисляет статическую пару ( W e , w e ) {\displaystyle (W_{e},w_{e})} , как W e = w e P {\displaystyle W_{e}=w_{e}P} ,

w e = R e ¯ 1 u m o d n {\displaystyle w_{e}={\bar {R_{e}}}^{-1}u\cdot modn} .

4 Ева получает идентификатор для её статического открытого ключа W e {\displaystyle W_{e}} . Таким образом, она знает соответствующий секретный ключ w e {\displaystyle w_{e}} . Следовательно, она удовлетворяет требованиям владения ключа.
5 Ева инициирует запуск протокола с Бобом, посылая свой временный открытый ключ R e {\displaystyle R_{e}} .
6 Ева получает Временный открытый ключ Боба R b {\displaystyle R_{b}} и передает его Алисе.

В результате данной атаки, Алиса проверит идентификатор Боба и вычислит общий секретный ключ K a b {\displaystyle Kab} , в то время как Боб получит и проверит идентификатор Евы и вычислит общий секретный ключ K b e {\displaystyle Kbe} , как K b e = h s b S e {\displaystyle Kbe=hs_{b}S_{e}} , где s b {\displaystyle s_{b}} определён ранее и S e = R e + R e ¯ W e {\displaystyle S_{e}=R_{e}+{\bar {R_{e}}}W_{e}} .

Ключ Боба будет таким же, каким бы он был, если бы Боб взаимодействовал с Алисой.

h s b S e = h s b ( R e + R e ¯ W e ) = h s b ( R a + R a ¯ W a {\displaystyle hs_{b}S_{e}=hs_{b}(R_{e}+{\bar {R_{e}}}W_{e})=hs_{b}(R_{a}+{\bar {R_{a}}}W_{a}} u P + R e ¯ w e P ) = h s b ( R a + R a ¯ W a {\displaystyle -uP+{\bar {R_{e}}}w_{e}P)=hs_{b}(R_{a}+{\bar {R_{a}}}W_{a}} u P + R e ¯ ( R e ¯ 1 u m o d n ) P ) = h s b ( R a + R a ¯ W a ) = h s b S a = K b a {\displaystyle -uP+{\bar {R_{e}}}({\bar {R_{e}}}^{-1}umodn)P)=hs_{b}(R_{a}+{\bar {R_{a}}}W_{a})=hs_{b}S_{a}=Kba} .

Ева должна получить идентификатор для её статического открытого ключа во время запуска протокола со стороны Алисы. Таким образом, Алиса может заметить задержку между временем отправки её временного открытого ключа и временем получения идентификатора Боба.

Меры противодействия атакам

Прежде всего, первым шагом необходимо включить в протокол операцию, которая будет зарезервирована для проверки наличия ключа. Данный совет относится ко всем протоколам аутентификации. Таким образом, для прохождения верификации Боба, Еве нужно будет пройти дополнительную проверку. Другой вариант противодействия, который может быть введен в протокол — создание обмена между участниками односторонними хэшами от их временных открытых ключей перед обменом временными ключами. Механизм обмена в данном случае действительно важен. Каждая сторона должна быть уверенна, что другой член действительно получил «посылку» перед тем, как отправлять ему временный открытый ключ. Подтверждение данного факта может быть получено соответствующей последовательностью. К примеру, Алиса посылает её подтверждение, Боб получает его и посылает его подтверждение. Алиса получает подтверждение Боба и посылает свой ключ. Когда же Боб получает ключ Алисы, он посылает его собственный ключ. Без такой последовательности, к примеру, если Боб и Алиса будут делать пересылку одновременно, данный протокол будет уязвимым для некоторых видов атак[4].

Приведём иные меры противодействия.

  1. Детектор задержек — альтернативный вариант, не использующий криптографию. Реализация так называемого «проверщика» задержек. Сторона (Боб или Алиса) прекратит работу протокола, если время ответа другой стороны будет превышать заданное в реализации протокола допустимое значение. Таким образом, когда Ева запрашивает идентификатор, этот шаг может потребовать дополнительного времени (однако существуют возможности обойти эту сложность). Причём, дополнительное время будет сравнимо с временем прочих операций, задействованных в протоколе. Однако данная контрмера не поможет в случае атаки в несколько шагов.
  2. «Идентификатор давности». Получатель может запросить подтверждение давности идентификатора. Недавно полученный идентификатор может быть воспринят, как доказательство атаки. После чего канал связи со злоумышленником будет закрыт.
  3. Идентификация участников через сообщения. Главный принцип дизайна протоколов — сообщения должны нести достаточно информации, чтобы избежать неправильной интерпретации. Соответственно, сообщения, защищенные с общим секретным ключом, должны идентифицировать участников, вовлеченных в передачу. Такая идентификация препятствовала бы возможности возникновения неправильной интерпретации.

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

См. также

Примечания

  1. Kaliski, 2001, p. 277.
  2. Kaliski, 2001, p. 278.
  3. 1 2 Kaliski, 2001, p. 280.
  4. Kaliski, 2001, p. 281.

Литература

  • Burt Kaliski. An unknown key-share attack on the MQV key agreement protocol. ACM Trans. Inf. Syst. Secur. 4(3) //  (англ.). — 2001.
  • Laurie Law, Alfred Menezes, Minghua Qu, Jerry Solinas, Scott A. Vanstone, An Efficient Protocol for Authenticated Key Agreement. Des. Codes Cryptography 28(2): pp. 119—134 (2003)
  • Peter J. Leadbitter, Nigel P. Smart: Analysis of the Insecurity of ECMQV with Partially Known Nonces. ISC 2003: pp. 240—251
  • A. Menezes, M. Qu, and S. Vanstone, Some new key agreement protocols providing implicit authentication, Preproceedings of Workshops on Selected Areas in Cryptography (1995).
  • D. Hankerson, A. Menezes, and S.A. Vanstone, Guide to Elliptic Curve Cryptography, Springer-Verlag, 2004.

Ссылки

  • A Secure and Efficient Authenticated Diffie-Hellman Protocol by Sarr, Elbaz-Vincent, and Bajard
  • HMQV: A High-Performance Secure Diffie-Hellman Protocol by Hugo Krawczyk
  • Another look at HMQV
  • An Efficient Protocol for Authenticated Key Agreement
  • MQV and HMQV in IEEE P1363 (power point)
Перейти к шаблону «Криптосистемы с открытым ключом»
Алгоритмы
Факторизация целых чисел
Дискретное логарифмирование
Криптография на решётках
Другие
Теория
Стандарты
Темы