Атака по ошибкам вычислений на эллиптические кривые, использующие алгоритм Монтгомери

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску

Атака по ошибкам вычислений на эллиптические кривые, использующие алгоритм Монтгомери — один из способов атаки по сторонним каналам[1], направленный на конкретный алгоритм скалярного умножения (алгоритм Монтгомери), использующийся в криптосистемах построенных на эллиптических кривых[2].

Краткие сведения об эллиптических кривых[править | править код]

Эллиптические кривые являются надёжным инструментом, при помощи которого можно построить криптосистему с открытым ключом [2].

Определение[править | править код]

Предполагается, что существует конечное поле нечётной характеристики , обозначаемое [3]. Тогда в поле может быть задана ЭК в форме Вейерштрасса[4]:

Для удобства вычислений данный вид может быть преобразован переходом к проективным координатам Якоби[5]. В таком случае эллиптическая кривая будет иметь вид:

Сложение двух точек эллиптической кривой[править | править код]

Сложение двух точек и на эллиптической кривой легче всего понять при помощи геометрической иллюстрации.

ECClines.svg

В простейшем случае (1), когда сложение производится путём проведения прямой через суммируемые точки [6]. Данная прямая пересечёт эллиптическую кривую в третьей точке . Тогда симметричную эй точку и называют суммой двух точек и на эллиптической кривой.

Существуют и другие ситуации" (2-4), определение сложения в которых требует особого рассмотрения:

Случай (2) отражает ситуацию, в которой прямая, проходящая через суммируемые точки оказалась касательной к эллиптической кривой. Здесь полагают, что в точке Q прямая не касается эллиптической кривой, а пересекает её в двух очень близких [7] точках так, что обе можно считать равными . Тогда можно сказать, что , другими словами

Особенность (3) в том, что получившаяся прямая параллельна оси ординат, вследствие чего третьей точки, которая бы принадлежала и прямой и эллиптической кривой не существует. Но, поскольку получается, что

Последний случай (4) — комбинация (2) и (3). Получаем, что [8].


Скалярное умножение[править | править код]

Далее определим операцию умножения точек эллиптической кривой на число[9][10]. Пускай выбрана точка на эллиптической кривой и целое число длиной бит. Затем путём -кратного сложения точки самой с собой получается точка , лежащая на той же эллиптической кривой, в силу свойств поля, в котором производится операция многократного сложения.

Пример простейшего алгоритма скалярного умножения:

Input: k, P
Output: kP

1: Q = P
2: for i = n-2 down to 0:
3:     Q = 2Q
4:     if k[i] == 1:
5:         Q = Q + P
6: return Q

Предложенная атака[править | править код]

В 2008 году в статье Пьера-Алана Форке [11] была обнаружена уязвимость алгоритма Монтгомери.

Авторы отметили, что недостаток алгоритма Монтгомери заключается в том, что вычисление значения точки на кривой производится лишь на последней итерации цикла, а во время промежуточных шагов принадлежность полученной точки эллиптической кривой не подтверждается [11]. Отсюда возникает возможность для атаки по ошибке вычислений[12].

В статье[11] предлагается использовать вспомогательную кривую . Вводимая кривой является изоморфной основной кривой в поле , но не в . Таким образом [11]:

,

если является квадратичным остатком, то будет являться абсциссой точки на .

В противном случае существует две возможности:

  1. Рассмотреть новую группу точек на таких что
  2. Использовать абсциссу точки на кривой , получая то же самое значение

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

В своем оригинальном варианте алгоритм Монтгомери не проводил проверку принадлежности результата исходной эллиптической кривой, вследствие чего злоумышленнику необходимо было вносить ошибку лишь в самом начале вычислений. Авторы статьи про атаку предложили простое решение данной проблемы, а именно проверку того, что результат принадлежит исходной кривой[11]. Таким образом алгоритм выглядит следующим образом:

Input: k, P
Output: kP

1: compute kP
2: if kP is on the curve, i.e. <math>x^3 + ax + b</math> is a square:
3:     return kP
4: else:
5:     return Error

.

Эта мера оказалась недостаточной, поскольку далее авторы приводят способ преодоления данной проверки.[13]. Идея основана на изменении результата вычислений прямо перед проведением проверки. Абсцисса результата вычислений может быть изменена злоумышленником при помощи побитового сложения , обозначаемая , с вероятностью принадлежащая кривой. Само значение злоумышленнику неизвестно, но может быть определено из соображений, что вносимая ошибка изменяет только первые регистров из . За можно подобрать , что довольно долго для больших значений .

Но существует гораздо быстрый способом, который и предлагают использовать авторы[13]. Злоумышленнику достаточно двух шагов атаки по ошибкам вычислений[12]. Внеся в один и тот же результат различные ошибки можно понять какие именно регистры были изменены, таким образом получив возможность обойти проверку, а далее решить задачу дискретного логарифмирования [14] для нахождения секретного ключа .

А прямо перед окончанием вычислений вносится ещё одна ошибка, для перемещения точки обратно на основную кривую[13].

Учитывая особенности алгоритма Монтгомери такой перенос будет незаметным с точки зрения вычислений. Дополнительно будет пройдена одна из самых часто встречающихся проверок: принадлежность итоговой точки исходной кривой[15].

Способы отражения атаки[править | править код]

Простейшей идеей является проверка промежуточных значений [13]. Но поскольку все операции производятся в проективных координатах, непосредственное нахождение значения в точке на каждой итерации цикла будет вычислительно сложной задачей, что значительно снизит эффективность алгоритма, полученную за счёт отказа от -координаты. Поэтому необходимы другие способы отражения атаки [10].

Защита Эбейд-Ламберта[править | править код]

Для избавления от дорогостоящих вычислений, предлагается[16] оценивать значение точки в проективных координатах, а именно . После этого с помощью всего одной операции инверсии получится нужное для проверки . Для начала, формулу для вычисления значения приводится к следующему виду[17], путём подстановки проективных координат точек и :

, где  — координаты точки

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

Дополнительно можно вычислить, и произвести подстановку в уравнение кривой, получив проверочное соотношение:

Алгоритм LOEDAR[править | править код]

Более эффективным способом отражения описанной выше атаки является алгоритм LOEDAR[18]. Авторы заявляют, что простейшей идеей являлась бы проверка того, что на каждом шаге выполнено равенство . Однако проведение такой проверки в исходных координатах затруднительно, поскольку требует непосредственного вычисления -координат всех трёх точек. В проективных координатах необходимо знать , что также требует дополнительных вычислений

Предлагается использовать[18] «верификационную точку» . Особенность заключается в том, что все вычисления и проверки будут по-прежнему осуществляться в проективных координатах , поскольку на любом шаге алгоритма выполняется соотношение . Таким образом алгоритм будет выглядеть следующим образом:

Input: k, P
Output: kP
Commentary: Q[2] := Q_v

1: Q[0] = P, Q[1] = 2P, Q[2] = 0
2: for i = k-2 down to 0:
3:     Q[1 - k[i]] = Q[0] + Q[1]
4:     Q[k[i]] = 2Q[k[i]]
5:     Q[2] = Q[2] + Q[k[i]]
6:     # verification part
7:     (Q[2] + Q[1] == 2Q[0]) ? continue : break     
8: return Q[0]

Примечания[править | править код]

  1. Kocher, P. Timing Attacks on Implementations of Diffie-Hellman, RSA, DSS, and Other Systems (англ.) // Advances in Cryptology — CRYPTO ’96 : journal. — 1996. — Vol. 1109. — P. 104—113. — doi:10.1007/3-540-68697-5_9.
  2. 1 2 Miller, V. Use of elliptic curves in cryptography (англ.) // Conference on the theory and application of cryptographic techniques. — 1985. — Vol. 218. — P. 417—426. — doi:10.1007/3-540-39799-X_31.
  3. James, A. The elementary theory of finite fields (англ.). — 1968. — doi:10.2307/1970573.
  4. Blake, I.; Seroussi, G.; Smart, N. Elliptic curves in cryptography (англ.). — 1999. — Vol. 265.
  5. Cohen, H.; Miyaji, A. Efficient Elliptic Curve Exponentiation Using Mixed Coordinates (англ.) // Advances in Cryptology — ASIACRYPT’98 : journal. — 1998. — Vol. 1514. — P. 51—65. — doi:10.1007/3-540-49649-1_6.
  6. Шарыгин, И. Ф.; Ерганжиева, Л. Н. Наглядная геометрия. — 1992. — Т. 5.
  7. Ильин, В. А. Математический анализ. — 1979.
  8. Tate, J. The arithmetic of elliptic curves (англ.) // Inventiones mathematicae : journal. — 1974. — Vol. 23. — P. 179—206. — doi:10.1007/BF01389745.
  9. Ansari, B.; Hasan, M. High-Performance Architecture of Elliptic Curve Scalar Multiplication (англ.) // IEEE Transactions on Computers[англ.] : journal. — 2008. — Vol. 57. — P. 1443—1453. — doi:10.1109/TC.2008.133.
  10. 1 2 Guillermin, N. A High Speed Coprocessor for Elliptic Curve Scalar Multiplications over 𝔽𝑝 (англ.) // International Workshop on Cryptographic Hardware and Embedded Systems. : journal. — 2010. — P. 48—64. — doi:10.1007/978-3-642-15031-9_4.
  11. 1 2 3 4 5 Fouque, P.; Lercier, R.; Réal, D.; Valette, F. Fault attack on elliptic curve Montgomery ladder implementation (англ.) // 2008 5th Workshop on Fault Diagnosis and Tolerance in Cryptography : journal. — 2008. — P. 92—98. — doi:10.1109/FDTC.2008.15.
  12. 1 2 Giraud, C.; Thiebeauld, H. A Survey on Fault Attacks (англ.) // Smart Card Research and Advanced Applications VI. IFIP International Federation for Information Processing. — 2004. — P. 159—176. — doi:10.1007/1-4020-8147-2_11.
  13. 1 2 3 4 Fouque, P.; Lercier, R.; Réal, D.; Valette, F. Fault attack on elliptic curve Montgomery ladder implementation (англ.) // 2008 5th Workshop on Fault Diagnosis and Tolerance in Cryptography : journal. — 2008. — P. 92—98. — doi:10.1109/FDTC.2008.15.
  14. Miller S. D., Venkatesan R. Spectral analysis of Pollard rho collisions (англ.) // International Algorithmic Number Theory Symposium : journal. — 2006. — P. 573—581.
  15. Montgomery, P. Speeding the Pollard and elliptic curve methods of factorization (англ.) : journal. — 1987. — doi:10.1090/s0025-5718-1987-0866113-7.
  16. Ebeid, N.; Lambert, R. Securing the Elliptic Curve Montgomery Ladder against Fault Attacks (англ.) // 2009 Workshop on Fault Diagnosis and Tolerance in Cryptography (FDTC) : journal. — 2009. — P. 46—50. — doi:10.1109/FDTC.2009.35.
  17. Brier, É.; Joy, M. Weierstraß Elliptic Curves and Side-Channel Attacks (англ.) // International Workshop on Public Key Cryptography. — 2002. — P. 335—345. — doi:10.1007/3-540-45664-3_24.
  18. 1 2 Ma, K.; Wu, K. LOEDAR: A low cost error detection and recovery scheme for ECC (англ.) // 2011 Design, Automation & Test in Europe : journal. — 2011. — P. 1—6. — doi:10.1109/DATE.2011.5763164.