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 ), где W_a её открытый ключ и w_a её секретный ключ. Боб имеет статическую ключевую пару (W_b,w_b), где W_b его открытый ключ и w_b его секретный ключ. Определим \bar{R}. Пусть R = (x,y) будет точкой на эллиптической кривой. Тогда \bar{R} = (x\, \bmod\, 2^L) + 2^L, где L = \left \lceil \frac{\lfloor \log_{2} n \rfloor + 1}{2} \right \rceil и n есть порядок используемого генератора точки P. Таким образом, \bar{R} есть первые L битов координаты x для R. Кроме того введем кофактор h, определенный как h = \frac{|G|}{n}, где {|G|} есть порядок группы {G}, причем следует учесть, что по техническим причинам должно выполняться требование: gcd(n,h) = 1.[1]

Шаг Операция
1 Алиса создает ключевую пару ( R_a,r_a ) генерируя случайно  r_a и вычисляя  R_a =r_aP, где P — точка на эллиптической кривой. После этого она посылает временный открытый ключ  R_a Бобу.
2 Боб создает ключевую пару ( R_b,r_b ) генерируя случайно  r_b и вычисляя  R_b =r_bP. После создания пары он посылает свой временный открытый ключ  R_b Алисе.
3 Алиса проверяет, что временный открытый ключ  R_b принадлежит группе  G   , а также то что  R_b не является нулевым элементом. После этого вычисляет групповой элемент  Kab , как  Kab=hs_aS_b , где s_a=(r_a+\bar{R_a}w_a)mod n и S_b=R_b+\bar{R_b}W_b. Если Kab = O, Алиса отклоняет данные полученные от Боба. В противном случае, она принимает вычисленный результат, как общий секретный ключ.
4 Боб проверяет, что временный открытый ключ  R_a принадлежит группе  G   , а также что  R_a не является нулевым элементом. Вычисляет групповой элемент  Kba , как  Kba=hs_bS_a , где s_b=(r_b+\bar{R_b}w_b)mod n и S_a=R_a+\bar{R_a}W_a. Если Kba = O, Боб отклоняет данные полученные от Алисы. В противном случае, он принимает вычисленный результат, как общий секретный ключ.


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

  1. Предоставляет неявную идентификацию ключа и последующую защиту для каждого из партнеров.
  2. Является эффективным не только в плане вычислений, но и в плане пропускной способности, так как использует только операции заданные над полем и простое отображение. Вычисления каждого участника (в грубой оценке) состоят лишь из 2.5 умножений — одно для генерации временной ключевой пары, другое для скалярного умножения на s_a или s_b.

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

Корректность[править | править исходный текст]

Вычисления Боба:Kba = h \cdot s_b (R_a + \bar{R_a}W_a) = h \cdot s_b (r_aP + \bar{R_a}w_aP) = h \cdot s_b (r_a + \bar{R_a}w_a)P = h \cdot s_b s_a P .

Вычисления Алисы:Kab = h \cdot s_a (R_b + \bar{R_b}W_b) = h \cdot s_a (r_bP + \bar{R_b}w_bP) = h \cdot s_a (r_b + \bar{R_b}w_b)P = h \cdot s_b s_a P .

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

Возможные атаки[править | править исходный текст]

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

Шаг Операция
1 Ева перехватывает временный открытый ключ Алисы R_a, на пути ключа к Бобу.
2 Ева выбирает целое U принадлежащее промежутку [1, n-1] и вычисляет временный открытый ключ R_e, как R_e=R_a -uP + \bar{R_a}W_a. (Заметим, что Ева не знает соответствующий секретный ключ r_e). Если R_e = 0, Ева повторяет этот шаг с другим целым U.
3 Ева вычисляет статическую пару (W_e, w_e), как W_e = w_eP,

w_e = \bar{R_e}^{-1}u \cdot modn.

4 Ева получает идентификатор для её статического открытого ключа W_e. Таким образом, она знает соответствующий секретный ключ w_e. Следственно, она удовлетворяет требованиям владения ключа.
5 Ева инициирует запуск протокола с Бобом, посылая свой временный открытый ключ R_e.
6 Ева получает Временный открытый ключ Боба R_b и передает его Алисе.

В результате данной атаки, Алиса проверит идентификатор Боба и вычислит общий секретный ключ Kab, в то время как Боб получит и проверит идентификатор Евы и вычислит общий секретный ключ Kbe, как Kbe = hs_bS_e, где s_b определен ранее и S_e = R_e + \bar{R_e}W_e.

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

hs_bS_e=hs_b(R_e+\bar{R_e}W_e)=hs_b(R_a+\bar{R_a}W_a-uP+\bar{R_e}w_eP)=hs_b(R_a+\bar{R_a}W_a-uP+\bar{R_e}(\bar{R_e}^{-1}umodn)P)=hs_b(R_a+\bar{R_a}W_a)=hs_bS_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): pp119—134 (2003)
  • Peter J. Leadbitter, Nigel P. Smart: Analysis of the Insecurity of ECMQV with Partially Known Nonces. ISC 2003: pp240—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.

Дополнительные ссылки[править | править исходный текст]