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

Материал из Википедии — свободной энциклопедии
Перейти к навигации Перейти к поиску
[непроверенная версия][непроверенная версия]
Содержимое удалено Содержимое добавлено
DOI problem resolved
Добавлены ссылки
Строка 14: Строка 14:
}}
}}
</ref>
</ref>
, направленный на конкретный алгоритм скалярного умножения (алгоритм Монтгомери), использующийся в криптосистемах построенных на эллиптических кривых.
, направленный на конкретный [[Алгоритм|алгоритм]] скалярного умножения ([[Алгоритм|алгоритм]] [[Монтгомери, Питер|Монтгомери]])
<ref>
{{cite journal
| last = Montgomery
| first = P.
| title = Speeding the Pollard and elliptic curve methods of factorization
| year = 1987
| doi = 10.1090/s0025-5718-1987-0866113-7
}}
</ref>
, использующийся в [[Криптосистема|криптосистемах]] построенных на [[Эллиптическая кривая|эллиптических кривых]]
<ref>
{{cite journal
| last = Miller
| first = V.
| title = Use of elliptic curves in cryptography
| journal = Conference on the theory and application of cryptographic techniques
| year = 1985
| volume = 218
| pages = 417-426
| doi = 10.1007/3-540-39799-X_31
}}
</ref>.


== Краткие сведения об эллиптических кривых ==
== Краткие сведения об эллиптических кривых ==
Эллиптические кривые (ЭК) являются надежным инструментом, при помощи которого можно построить [[Криптосистема с открытым ключом|криптосистему с открытым ключом]]
[[Эллиптическая кривая|Эллиптические кривые]] являются надежным инструментом, при помощи которого можно построить [[Криптосистема с открытым ключом|криптосистему с открытым ключом]]
<ref>
<ref>
{{cite journal
{{cite journal
Строка 34: Строка 56:


=== Определение ===
=== Определение ===
Предполагается, что существует конечное поле нечетной характеристики <math>p > 3</math>, обозначаемое <math>F_p</math>. Тогда в поле <math>F_p \cup \{O\}</math> может быть задана [[Эллиптическая криптография#Эллиптические кривые над полями нечётной характеристики|ЭК в форме Вейерштрасса]]
Предполагается, что существует [[Конечное поле|конечное поле]] нечетной характеристики <math>p > 3</math>, обозначаемое <math>F_p</math>
<ref>
{{cite book
| last = James
| first = A.
| title = The elementary theory of finite fields
| year = 1968
| doi = 10.2307/1970573
}}
</ref>
. Тогда в [[Конечное поле|поле]] <math>F_p \cup \{O\}</math> может быть задана [[Эллиптическая криптография#Эллиптические кривые над полями нечётной характеристики|ЭК в форме Вейерштрасса]]
<ref>
<ref>
{{cite book
{{cite book
Строка 51: Строка 83:
:<math>E(F_p)=\{(x, y):\; y^2 = x^3 + Ax + B;\; 4A^3 + 27B^2 \neq 0,\; \forall A, B \in F_p\} \cup \{O\}</math>
:<math>E(F_p)=\{(x, y):\; y^2 = x^3 + Ax + B;\; 4A^3 + 27B^2 \neq 0,\; \forall A, B \in F_p\} \cup \{O\}</math>


Для удобства вычислений данный вид может быть преобразован переходом к [[Эллиптическая криптография#Проективные_координаты|проективным координатам Якоби]]. В таком случае ЭК будет иметь вид:
Для удобства вычислений данный вид может быть [[Преобразование (математика)|преобразован]] переходом к [[Эллиптическая криптография#Проективные_координаты|проективным координатам Якоби]]
<ref>
{{cite journal
| last = Cohen
| first = H.
| last2 = Miyaji
| first2 = A.
| title = Efficient Elliptic Curve Exponentiation Using Mixed Coordinates
| journal = Advances in Cryptology — ASIACRYPT’98
| year = 1998
| volume = 1514
| pages = 51-65
| doi = 10.1007/3-540-49649-1_6
}}
</ref>
. В таком случае [[Эллиптическая кривая|эллиптическая кривая]] будет иметь вид:


:<math>E(F_p)=\{(X : Y : Z):\; ZY^2 = X^3 + AZ^2X + Z^3B;\; 4A^3 + 27B^2 \neq 0,\; \forall A, B \in F_p,\; Z \neq 0\} \cup \{O\}</math>
:<math>E(F_p)=\{(X : Y : Z):\; ZY^2 = X^3 + AZ^2X + Z^3B;\; 4A^3 + 27B^2 \neq 0,\; \forall A, B \in F_p,\; Z \neq 0\} \cup \{O\}</math>
Строка 57: Строка 104:


=== Сложение двух точек эллиптической кривой ===
=== Сложение двух точек эллиптической кривой ===
Сложение двух точек <math>P</math> и <math>Q</math> на ЭК легче всего понять при помощи геометрической иллюстрации.
Сложение двух точек <math>P</math> и <math>Q</math> на [[Эллиптическая кривая|эллиптической кривой]] легче всего понять при помощи [[Геометрия|геометрической]] иллюстрации.


{|align="center"
{|align="center"
Строка 64: Строка 111:




В простейшем случае (1), когда <math>P \ne Q</math> сложение производится путем проведения прямой через суммируемые точки. Данная прямая пересечет ЭК в третьей точке <math>R</math>. Тогда симметричную эй точку <math>-R</math> и называют суммой двух точек <math>P</math> и <math>Q</math> на ЭК.
В простейшем случае (1), когда <math>P \ne Q</math> сложение производится путем проведения [[Прямая|прямой]] через суммируемые точки.
<ref>
{{cite book
| last = Шарыгин
| first = И. Ф.
| last2 = Ерганжиева
| first2 = Л. Н.
| title = Наглядная геометрия
| year = 1992
| volume = 5
}}
</ref>
Данная прямая пересечет [[Эллиптическая кривая|эллиптическую кривую]] в третьей точке <math>R</math>. Тогда [[Симметрия|симметричную]] эй точку <math>-R</math> и называют суммой двух точек <math>P</math> и <math>Q</math> на [[Эллиптическая кривая|эллиптической кривой]].

Существуют и другие [https://en.wikipedia.org/wiki/Elliptic_curve_point_multiplication#Point_operations|"специальные ситуации"] (2–4), определение сложения в которых требует особого рассмотрения:

Случай (2) отражает ситуацию, в которой прямая, проходящая через суммируемые точки оказалась [[Касательная|касательной]] к [[Эллиптическая кривая|эллиптической кривой]]. Здесь полагают, что в точке Q прямая не касается [[Эллиптическая кривая|эллиптической кривой]], а [[Секущая|пересекает]] ее в двух очень [[Предел (математика)|близких]]
<ref>
{{cite book
| last = Ильин
| first = В. А.
| title = Математический анализ
| year = 1979
}}
</ref>
точках так, что обе можно считать равными <math>Q</math>. Тогда можно сказать, что <math>Q + Q = -P</math>, другими словами <math>P + Q = -Q</math>

Особенность (3) в том, что получившаяся прямая [[Параллельные прямые|параллельна]] оси [[Ордината|ординат]], вследствие чего третьей точки, которая бы принадлежала и прямой и [[Эллиптическая кривая|эллиптической кривой]] не существует. Но, поскольку <math>Q = -P</math> получается, что <math>P + Q = O</math>


Последний случай (4) –– [[Комбинация (комбинаторика)|комбинация]] (2) и (3). Получаем, что <math>P + P = O</math>
Существуют и другие [https://en.wikipedia.org/wiki/Elliptic_curve_point_multiplication#Point_operations|"специальные ситуации"] (2–4), определение сложения в которых требует особого рассмотрения
<ref>
<ref>
{{cite journal
{{cite journal
Строка 82: Строка 156:


=== Скалярное умножение ===
=== Скалярное умножение ===
Далее определим операцию умножения точек ЭК на число
Далее определим операцию умножения точек [[Эллиптическая кривая|эллиптической кривой]] на число
<ref>
<ref>
{{cite journal
{{cite journal
Строка 107: Строка 181:
| doi = 10.1007/978-3-642-15031-9_4
| doi = 10.1007/978-3-642-15031-9_4
}}
}}
</ref>. Пускай выбрана точка <math>P</math> на ЭК и целое число <math>k</math> длиной <math>n</math> бит. Затем путем <math>k</math>-кратного сложения точки <math>P</math> самой с собой получается точка <math>kP</math>, лежащая на той же ЭК, в силу свойств поля, в котором производится операция многократного сложения.
</ref>. Пускай выбрана точка <math>P</math> на [[Эллиптическая кривая|эллиптической кривой]] и целое число <math>k</math> длиной <math>n</math> [[Бит|бит]]. Затем путем <math>k</math>-кратного сложения точки <math>P</math> самой с собой получается точка <math>kP</math>, лежащая на той же [[Эллиптическая кривая|эллиптической кривой]], в силу [[Свойства|свойств]] поля, в котором производится операция многократного сложения.


Пример простейшего алгоритма скалярного умножения:
Пример простейшего [[Алгоритм|алгоритма]] скалярного умножения:
<syntaxhighlight>
<syntaxhighlight>
Input: k, P
Input: k, P
Строка 127: Строка 201:
=== Недостатки предыдущих алгоритмов ===
=== Недостатки предыдущих алгоритмов ===


Описанный выше алгоритм скалярного умножения не рекомендуется использовать при просторении криптосистем на ЭК, поскольку он подвержен [[Атака по энергопотреблению|атаке по энергопотреблению]]
Описанный выше [[Алгоритм|алгоритм]] скалярного умножения не рекомендуется использовать при просторении [[Криптосистема|криптосистем]] на [[Эллиптическая кривая|эллиптических кривых]], поскольку он подвержен [[Атака по энергопотреблению|атаке по энергопотреблению]]
<ref>
<ref>
{{cite journal
{{cite journal
Строка 144: Строка 218:
}}
}}
</ref>
</ref>
. Шаги <code>3:</code> и <code>5:</code> позволяют злоумышленнику, перехватывающему значения <math>Q</math> на очередной итерации цикла, побитово восстановить значение секретного ключа <math>k</math>.
. Шаги <code>3:</code> и <code>5:</code> позволяют злоумышленнику, перехватывающему значения <math>Q</math> на очередной итерации цикла, побитово восстановить значение [[Ключ (криптография)|секретного ключа]] <math>k</math>.


Аналогичным проблемам подвержены более сложные алгоритмы скалярного умножения, использующие <math>y</math>-координату. Существует множество вариантов атак по ошибкам вычисления. Например можно применять атаку смены знака
Аналогичным проблемам подвержены более сложные [[Алгоритм|алгоритмы]] скалярного умножения, использующие <math>y</math>-[[Система координат|координату]]. Существует множество вариантов [[Атака по сторонним каналам|атак по ошибкам вычисления]]. Например можно применять [[Атака по сторонним каналам|атаку смены знака]]
<ref>
<ref>
{{cite journal
{{cite journal
Строка 167: Строка 241:


=== Описание алгоритма Монтгомери===
=== Описание алгоритма Монтгомери===
Монтгомери предложил алгоритм
[[Монтгомери, Питер|Монтгомери]] предложил [[Алгоритм|алгоритм]]
<ref>
<ref>
{{cite journal
{{cite journal
Строка 177: Строка 251:
}}
}}
</ref>
</ref>
, в котором не требуется использование <math>y</math>-координаты, что позволило значительно ускорить создание открытого ключа, а также полностью защититься от атак по энергопотреблению:
, в котором не требуется использование <math>y</math>-координаты, что позволило значительно ускорить создание [[Криптосистема с открытым ключом|открытого ключа]], а также полностью [[Информационная безопасность|защититься]] от атак по энергопотреблению:
<syntaxhighlight>
<syntaxhighlight>
Input: k, P
Input: k, P
Строка 189: Строка 263:
</syntaxhighlight>
</syntaxhighlight>


Предлагается в самом начале помимо точки <math>Q_0 = P</math> рассчитывалать также точку <math>Q_1 = 2P</math>. Основная идея заключается в том, что во время очередной итерации цикла разница между точками <math>Q_0</math> и <math>Q_1</math> остается неизменно равной <math>P</math>. Это позволяет при помощи проективынх координат быстро вычислять значение в точках <math>(X_{Q_0 + Q_1} : \;.\; : Z_{Q_0 + Q_1})</math> и <math>(X_{2Q_0} : \;.\; : Z_{2Q_0})</math>, с помощью которых подновляются значения <math>Q_0</math> и <math>Q_1</math>. В самом же конце используя <math>(X_{kP} : \;.\; : Z_{kP})</math> вычисляется значение открытого ключа <math>kP</math>.
Предлагается в самом начале помимо точки <math>Q_0 = P</math> рассчитывать также точку <math>Q_1 = 2P</math>. Основная идея заключается в том, что во время очередной [[Итерация|итерации]] [[Цикл (программирование)|цикла]] разница между точками <math>Q_0</math> и <math>Q_1</math> остается неизменно равной <math>P</math>. Это позволяет при помощи [[Эллиптическая криптография#Проективные_координаты|проективных координат]]
<ref>
{{cite journal
| last = Cohen
| first = H.
| last2 = Miyaji
| first2 = A.
| title = Efficient Elliptic Curve Exponentiation Using Mixed Coordinates
| journal = Advances in Cryptology — ASIACRYPT’98
| year = 1998
| volume = 1514
| pages = 51-65
| doi = 10.1007/3-540-49649-1_6
}}
</ref>
быстро вычислять значение в точках <math>(X_{Q_0 + Q_1} : \;.\; : Z_{Q_0 + Q_1})</math> и <math>(X_{2Q_0} : \;.\; : Z_{2Q_0})</math>, с помощью которых обновляются значения <math>Q_0</math> и <math>Q_1</math>. В самом же конце используя <math>(X_{kP} : \;.\; : Z_{kP})</math> вычисляется значение открытого ключа <math>kP</math>.


В дальнейшем будет показано, что главная особенность алгоритма оказалась слабым местом, дающим возможность для атаки и расшифровки секретного ключа.
В дальнейшем будет показано, что главная особенность [[Алгоритм|алгоритма]] оказалась слабым местом, дающим возможность для атаки и расшифровки секретного ключа.
<ref>
{{cite journal
| last = Naor
| first = M.
| last2 = Shamir
| first2 = A.
| title = Visual Cryptography
| journal = Advances in Cryptology — EUROCRYPT'94
| year = 1994
| pages = 1-12
| doi = 10.1007/BFb0053419
}}
</ref>




=== Особенность реализации ===
=== Особенность реализации ===
Подсчет <math>Q_0</math> и <math>Q_1</math> на очередном шаге алгоритма заслуживает отдельного внимания. Поскольку Монтгомери отказывается от использования <math>y</math>-координаты необходимо иметь точный порядок действий для вычисления проективных координат на очередной итерации.
Подсчет <math>Q_0</math> и <math>Q_1</math> на очередном шаге [[Алгоритм|алгоритма]] заслуживает отдельного внимания. Поскольку [[Монтгомери, Питер|Монтгомери]] отказывается от использования <math>y</math>-координаты необходимо иметь точный порядок действий для вычисления [[Эллиптическая криптография#Проективные_координаты|проективных координат]] на очередной итерации.


В статье
В статье
Строка 214: Строка 316:
}}
}}
</ref>
</ref>
приводится полное подробное описание вычисления проективных координат, получающихся удвоением и суммированием соответствующих значений. Всего требуется 18 операций сложения, 13 суммирования и 4 возведения в квадрат для случая <math>A \ne -3</math>, и, соответственно, 23 сложения, 11 суммирования и 4 возведения в квадрат иначе.
приводится полное подробное описание вычисления [[Эллиптическая криптография#Проективные_координаты|проективных координат]], получающихся удвоением и суммированием соответствующих значений. Всего требуется 18 операций [[Умножение|умножения]], 13 [[Сумма (математика)|сложения]] и 4 [[Возведение в степень|возведения]] в квадрат для случая <math>A \ne -3</math>, и, соответственно, 23 [[Умножение|умножения]], 11 [[Сумма (математика)|сложения]] и 4 [[Возведение в степень|возведения]] в квадрат иначе.




=== Области применения ===
=== Области применения ===
Алгоритм Монтгомери применяется как в протоколе Диффи-Хэлмана
[[Алгоритм|Алгоритм]] [[Монтгомери, Питер|Монтгомери]] применяется как в протоколе [[Протокол Диффи — Хеллмана|Диффи-Хэлмана]]
<ref>
<ref>
{{cite journal
{{cite journal
Строка 232: Строка 334:
}}
}}
</ref>
</ref>
, так и в алгоритмах электронной подписи, в случае, когда оба строятся на эллиптических кривых (ECDH и ECDSA соответственно). В обоих случаях –– это вычисление открытых ключей агентов, собирающихся обмениваться информацией по незащищенному каналу.
, так и в [[Алгоритм|алгоритмах]] [[Электронная подпись|электронной подписи]], в случае, когда оба строятся на [[Эллиптическая кривая|эллиптической кривой]] ([[Протокол Диффи — Хеллмана на эллиптических кривых|ECDH]] и [[ECDSA|ECDSA]] соответственно). В обоих случаях –– это вычисление открытых ключей [[Алиса и Боб|агентов]], собирающихся обмениваться информацией по незащищенному [[Канал связи|каналу]].


Основным преимуществом криптосистемы
Основным преимуществом криптосистемы, использующей ЭК, является относительно небольшая длина закрытого ключа (минимум 163 бита). Для [[Ключ (криптография)#Длина ключа|примера]] в алгоритме RSA минимальная длина секретного ключа составляет 1024 бит. Данная возможность появляется благодаря особенности вычисления открытого ключа, задача дискретного логарифмирования для которого решается намного сложнее, чем для алгоритмов, построенных на целых числах.
<ref>
{{cite journal
| last = Naor
| first = M.
| last2 = Shamir
| first2 = A.
| title = Visual Cryptography
| journal = Advances in Cryptology — EUROCRYPT'94
| year = 1994
| pages = 1-12
| doi = 10.1007/BFb0053419
}}
</ref>
, использующей [[Эллиптическая кривая|эллиптические кривые]], является относительно небольшая длина закрытого [[Ключ (криптография)|ключа]] (минимум 163 бита). Для [[Ключ (криптография)#Длина ключа|примера]] в [[Алгоритм|алгоритме]] [[RSA|RSA]] минимальная длина секретного [[Ключ (криптография)|ключа]] составляет 1024 бит. Данная возможность появляется благодаря особенности вычисления открытого [[Ключ (криптография)|ключа]], задача [[Дискретное логарифмирование|дискретного логарифмирования]] для которого решается намного [[Вычислительная сложность|сложнее]], чем для [[Алгоритм|алгоритмов]], построенных на [[Целое число|целых числах]].




==== RFID метки ====
==== RFID метки ====
На практике алгоритм Монтгомери применяется в [[RFID|RFID метках]]. Данные устройства применяются повсеместно для автоматической идентификации объектов. Они оснащены сильно ограниченным количеством памяти, при этом оно должно быть защищенным от злоумышленников. Также процесс считывания должен происходить быстро, например в момент оплаты или проверки автомобиля во время проезда через пропускной пункт. Здесь и помогает алгоритм Монтгомери, поскольку он эффективнее других алгоритмов с точки зрения аппаратной части (время, ресурсы), а также дает защиту от большинства атак по сторонним каналам на ЭК.
На практике [[Алгоритм|алгоритм]] [[Монтгомери, Питер|Монтгомери]] применяется в [[RFID|RFID метках]]. Данные устройства применяются повсеместно для автоматической [[Идентификация|идентификации]] [[Объект|объектов]]. Они оснащены сильно ограниченным количеством [[Компьютерная память|памяти]], при этом оно должно быть защищенным от [[Злоумышленник|злоумышленников]]. Также процесс считывания должен происходить быстро, например в момент оплаты или проверки автомобиля во время проезда через пропускной пункт. Здесь и помогает [[Алгоритм|алгоритм]] [[Монтгомери, Питер|Монтгомери]], поскольку он [[Эффективность алгоритма|эффективнее]] других [[Алгоритм|алгоритмов]] с точки зрения аппаратной части (время, ресурсы), а также дает защиту от большинства атак по сторонним каналам на [[Эллиптическая кривая|эллиптические кривые]].
<ref>
<ref>
{{cite journal
{{cite journal
Строка 257: Строка 373:


==== Сенсорные сети ====
==== Сенсорные сети ====
Другим интересным применением данного алгоритма являются [[Беспроводная сенсорная сеть|беспроводные сенсорные сети]]. Как и в случае RFID меток. Устройства сети оснащены компактными энергетически эффективными процессорами, в которых спроектированы специальные Modular Arithmetic Logic Units(MALU) для проведения вычислений на ЭК, в том числе скалярного умножения.
Другим интересным применением данного [[Алгоритм|алгоритма]] являются [[Беспроводная сенсорная сеть|беспроводные сенсорные сети]]. Как и в случае RFID меток. Устройства сети оснащены компактными энергетически эффективными [[Процессор|процессорами]], в которых спроектированы специальные Modular Arithmetic Logic Units(MALU) для проведения вычислений на [[Эллиптическая кривая|кривой]], в том числе скалярного умножения.
<ref>
<ref>
{{cite journal
{{cite journal
Строка 279: Строка 395:


== Предложенная атака ==
== Предложенная атака ==
Как было показано, вычисление значения точки на ЭК производится лишь на последней итерации цикла. Во время промежуточных шагов проверка принадлежности полученной точки эллиптической кривой не производится. Отсюда возникает возможность для атаки по ошибке вычислений.
Как было показано, вычисление значения точки на [[Эллиптическая кривая|кривой]] производится лишь на последней итерации [[Цикл (программирование)|цикла]]. Во время промежуточных шагов проверка принадлежности полученной точки [[Эллиптическая кривая|эллиптической кривой]] не производится. Отсюда возникает возможность для атаки по ошибке вычислений
<ref>
{{cite journal
| last = Giraud
| first = C.
| last2 = Thiebeauld
| first2 = H.
| title = A Survey on Fault Attacks
| journal = Smart Card Research and Advanced Applications VI. IFIP International Federation for Information Processing
| year = 2004
| pages = 159-176
| doi = 10.1007/1-4020-8147-2_11
}}
</ref>
.


В статье
В статье
Строка 299: Строка 429:
}}
}}
</ref>
</ref>
предлагается использовать вспомогательную ЭК <math>E'</math>. Вводимая кривая является изоморфной основной ЭК <math>E</math> в поле <math>F_{p^2}</math>, но не в <math>F_{p}</math>. Таким образом:
предлагается использовать вспомогательную [[Эллиптическая кривая|кривую]] <math>E'</math>. Вводимая [[Эллиптическая кривая|кривой]] является [[Изоморфизм|изоморфной]] основной [[Эллиптическая кривая|кривой]] <math>E</math> в поле <math>F_{p^2}</math>, но не в <math>F_{p}</math>. Таким образом:


:<math>\forall x \in F_p: g(x) \equiv x^3 + ax + b \neq 0</math>,
:<math>\forall x \in F_p: g(x) \equiv x^3 + ax + b \neq 0</math>,
если <math>g(x)</math> является квадратичным остатком, то <math>x</math> будет являться абсциссой точки на <math>E</math>.
если <math>g(x)</math> является квадратичным [[Остаток|остатком]], то <math>x</math> будет являться [[Абсцисса|абсциссой]] точки на <math>E</math>.


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


# Рассмотреть новую группу точек на <math>E</math> таких что <math>y \in F_{p^2}</math>
# Рассмотреть новую группу точек на <math>E</math> таких что <math>y \in F_{p^2}</math>
# Использовать абсциссу точки на кривой <math>E'</math>, получая то же самое значение <math>y</math>
# Использовать [[Абсцисса|абсциссу]] точки на [[Эллиптическая кривая|кривой]] <math>E'</math>, получая то же самое значение <math>y</math>


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


Учитывая особенности [[Алгоритм|алгоритма]] [[Монтгомери, Питер|Монтгомери]]
Учитывая особенности алгоритма Монтгомери такой перенос будет незаметным с точки зрения вычислений. Дополнительно будет пройдена одна из самых часто встречающихся проверок: принадлежность итоговой точки исходной ЭК.
<ref>
{{cite journal
| last = Montgomery
| first = P.
| title = Speeding the Pollard and elliptic curve methods of factorization
| year = 1987
| doi = 10.1090/s0025-5718-1987-0866113-7
}}
</ref>
такой перенос будет незаметным с точки зрения вычислений. Дополнительно будет пройдена одна из самых часто встречающихся проверок: принадлежность итоговой точки исходной [[Эллиптическая кривая|кривой]].






== Способы отражения атаки ==
== Способы отражения атаки ==
Простейшей идеей является проверка промежуточных значений <math>Q_0</math>. Но поскольку все операции производятся в проективных координатах, непосредственное нахождение значения в точке на каждой итерации цикла будет вычислительно сложной задачей, что значительно снизит эффективность алгоритма, полученную за счет отказа от <math>y</math>-координаты. Поэтому необходимы другие способы отражения атаки.
Простейшей идеей является проверка промежуточных значений <math>Q_0</math>. Но поскольку все операции производятся в [[Эллиптическая криптография#Проективные_координаты|проективных координатах]], непосредственное нахождение значения в точке на каждой [[Итерация (программирование)|итерации]] [[Цикл (программирование)|цикла]] будет [[Вычислительная сложность|вычислительно сложной]] задачей, что значительно снизит [[Эффективность алгоритма|эффективность алгоритма]], полученную за счет отказа от <math>y</math>-координаты. Поэтому необходимы другие способы отражения атаки.


=== Защита Эбейд-Ламберта ===
=== Защита Эбейд-Ламберта ===
Строка 333: Строка 473:
}}
}}
</ref>
</ref>
оценивать значение точки <math>Q_0 = (x_0, y_0) = (X_0 : Y_0 : Z_0)</math> в проективных координатах, а именно <math>Y_0</math>. После этого с помощью всего одной операции инверсии получится нужное для проверки <math>y_0</math>. Для начала, формулу для вычисления значения <math>y_0</math> приводится к следующему виду
оценивать значение точки <math>Q_0 = (x_0, y_0) = (X_0 : Y_0 : Z_0)</math> в [[Эллиптическая криптография#Проективные_координаты|проективных координатах]], а именно <math>Y_0</math>. После этого с помощью всего одной операции инверсии получится нужное для проверки <math>y_0</math>. Для начала, [[Формула|формулу]] для вычисления значения <math>y_0</math> приводится к следующему виду
<ref>
<ref>
{{cite journal
{{cite journal
Строка 347: Строка 487:
}}
}}
</ref>
</ref>
, путем подстановки проективных координат точек <math>Q_0 = (X_0 : \;.\; : Z_0)</math> и <math>Q_1 = (X_1 : \;.\; : Z_1)</math>:
, путем подстановки [[Эллиптическая криптография#Проективные_координаты|проективных координат]] точек <math>Q_0 = (X_0 : \;.\; : Z_0)</math> и <math>Q_1 = (X_1 : \;.\; : Z_1)</math>:


:<math>y_0 = \dfrac{2B + (A + x\dfrac{X_0}{Z_0})(x + \dfrac{X_0}{Z_0}) - \dfrac{X_1}{Z_1}(x - \dfrac{X_0}{Z_0})^2}{2y}</math>, где <math>(x, y)</math> -- координаты точки <math>(Q_1 - Q_0)</math>
:<math>y_0 = \dfrac{2B + (A + x\dfrac{X_0}{Z_0})(x + \dfrac{X_0}{Z_0}) - \dfrac{X_1}{Z_1}(x - \dfrac{X_0}{Z_0})^2}{2y}</math>, где <math>(x, y)</math> -- координаты точки <math>(Q_1 - Q_0)</math>
:<math>y_0 = \dfrac{2BZ_1Z_0^2 + Z_1(AZ_0 + xX_0)(xZ_0 + X_0) - X_1(xZ_0 - X_0)^2}{2yZ_1Z_0^2} = \dfrac{Y_0'}{Z_0'}</math>
:<math>y_0 = \dfrac{2BZ_1Z_0^2 + Z_1(AZ_0 + xX_0)(xZ_0 + X_0) - X_1(xZ_0 - X_0)^2}{2yZ_1Z_0^2} = \dfrac{Y_0'}{Z_0'}</math>


Далее с помощью одной операции инверсии получается искомое проверочное значение для <math>y_0</math>.
Далее с помощью одной операции [[Инверсия|инверсии]] получается искомое проверочное значение для <math>y_0</math>.


Дополнительно можно вычислить, <math>X_0' = 2yX_0Z_1Z_0</math> и произвести подстановку в уравнение ЭК, получив проверочное соотношение:
Дополнительно можно вычислить, <math>X_0' = 2yX_0Z_1Z_0</math> и произвести подстановку в уравнение [[Эллиптическая кривая|кривой]], получив проверочное соотношение:


:<math>Z'(Y'^2 - BZ'^2) = X'(X'^2 + AZ')</math>
:<math>Z'(Y'^2 - BZ'^2) = X'(X'^2 + AZ')</math>


=== Алгоритм LOEDAR ===
=== Алгоритм LOEDAR ===
Более эффективным способом отражения описанной выше атаки является алгоритм LOEDAR
Более [Эффективность алгоритма|эффективным]] способом отражения описанной выше атаки является [[Алгоритм|алгоритм]] LOEDAR
<ref>
<ref>
{{cite journal
{{cite journal
Строка 374: Строка 514:
</ref>
</ref>
.
.
Авторы заявляют, что простейшей идеей являлась бы проверка того, что на каждом шаге выполнено равенство <math>Q_0 + P \equiv Q_1</math>. Однако проведение такой проверки в исходных координатах затруднительно, поскольку требует непосредственного вычисления <math>y</math>-координат всех трех точек. В проективных же координатах необходимо знать <math>Q_1 - P = (X_{Q_1 - P} : \;.\; : Z_{Q_1 - P})</math>, что также требует дополнительных вычислений
Авторы заявляют, что простейшей идеей являлась бы проверка того, что на каждом [[Шаг|шаге]] выполнено равенство <math>Q_0 + P \equiv Q_1</math>. Однако проведение такой проверки в исходных [[Система координат|координатах]] затруднительно, поскольку требует непосредственного вычисления <math>y</math>-координат всех трех точек. В [[Эллиптическая криптография#Проективные_координаты|проективных координатах]] необходимо знать <math>Q_1 - P = (X_{Q_1 - P} : \;.\; : Z_{Q_1 - P})</math>, что также требует дополнительных вычислений


Предлагается использовать "верификационную точку" <math>Q_v</math>. Особенность заключается в том, что все вычисления и проверки будут по-прежнему осуществляться в проективных координатах <math>(X : \;.\; : Z)</math>, поскольку на любом шаге алгоритма выполняется соотношение <math>Q_1 + Q_v = 2Q_0</math>. Таким образом алгоритм будет выглядеть следующим образом:
Предлагается использовать "[[Верификация|верификационную]] точку" <math>Q_v</math>. Особенность заключается в том, что все вычисления и проверки будут по-прежнему осуществляться в [[Эллиптическая криптография#Проективные_координаты|проективных координатах]] <math>(X : \;.\; : Z)</math>, поскольку на любом [[Шаг|шаге алгоритма]] выполняется соотношение <math>Q_1 + Q_v = 2Q_0</math>. Таким образом [[Алгоритм|алгоритм]] будет выглядеть следующим образом:
<syntaxhighlight>
<syntaxhighlight>
Input: k, P
Input: k, P

Версия от 15:51, 22 ноября 2019

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

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

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


Определение

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

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


Сложение двух точек эллиптической кривой

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

ECClines.svg


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

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

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

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

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


Скалярное умножение

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

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

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


Алгоритм Монтгомери

Недостатки предыдущих алгоритмов

Описанный выше алгоритм скалярного умножения не рекомендуется использовать при просторении криптосистем на эллиптических кривых, поскольку он подвержен атаке по энергопотреблению [13] . Шаги 3: и 5: позволяют злоумышленнику, перехватывающему значения на очередной итерации цикла, побитово восстановить значение секретного ключа .

Аналогичным проблемам подвержены более сложные алгоритмы скалярного умножения, использующие -координату. Существует множество вариантов атак по ошибкам вычисления. Например можно применять атаку смены знака [14] .


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

Монтгомери предложил алгоритм [15] , в котором не требуется использование -координаты, что позволило значительно ускорить создание открытого ключа, а также полностью защититься от атак по энергопотреблению:

Input: k, P
Output: kP

1: Q[0] = P, Q[1] = 2P
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: return Q[0]

Предлагается в самом начале помимо точки рассчитывать также точку . Основная идея заключается в том, что во время очередной итерации цикла разница между точками и остается неизменно равной . Это позволяет при помощи проективных координат [16] быстро вычислять значение в точках и , с помощью которых обновляются значения и . В самом же конце используя вычисляется значение открытого ключа .

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


Особенность реализации

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

В статье [18] приводится полное подробное описание вычисления проективных координат, получающихся удвоением и суммированием соответствующих значений. Всего требуется 18 операций умножения, 13 сложения и 4 возведения в квадрат для случая , и, соответственно, 23 умножения, 11 сложения и 4 возведения в квадрат иначе.


Области применения

Алгоритм Монтгомери применяется как в протоколе Диффи-Хэлмана [19] , так и в алгоритмах электронной подписи, в случае, когда оба строятся на эллиптической кривой (ECDH и ECDSA соответственно). В обоих случаях –– это вычисление открытых ключей агентов, собирающихся обмениваться информацией по незащищенному каналу.

Основным преимуществом криптосистемы [20] , использующей эллиптические кривые, является относительно небольшая длина закрытого ключа (минимум 163 бита). Для примера в алгоритме RSA минимальная длина секретного ключа составляет 1024 бит. Данная возможность появляется благодаря особенности вычисления открытого ключа, задача дискретного логарифмирования для которого решается намного сложнее, чем для алгоритмов, построенных на целых числах.


RFID метки

На практике алгоритм Монтгомери применяется в RFID метках. Данные устройства применяются повсеместно для автоматической идентификации объектов. Они оснащены сильно ограниченным количеством памяти, при этом оно должно быть защищенным от злоумышленников. Также процесс считывания должен происходить быстро, например в момент оплаты или проверки автомобиля во время проезда через пропускной пункт. Здесь и помогает алгоритм Монтгомери, поскольку он эффективнее других алгоритмов с точки зрения аппаратной части (время, ресурсы), а также дает защиту от большинства атак по сторонним каналам на эллиптические кривые. [21]


Сенсорные сети

Другим интересным применением данного алгоритма являются беспроводные сенсорные сети. Как и в случае RFID меток. Устройства сети оснащены компактными энергетически эффективными процессорами, в которых спроектированы специальные Modular Arithmetic Logic Units(MALU) для проведения вычислений на кривой, в том числе скалярного умножения. [22] Это помогает производить безопасные и экономные вычисления.


Предложенная атака

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

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

,

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

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

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

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

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


Способы отражения атаки

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

Защита Эбейд-Ламберта

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

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

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

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

Алгоритм LOEDAR

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

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

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. (1996). "Timing Attacks on Implementations of Diffie-Hellman, RSA, DSS, and Other Systems". Advances in Cryptology — CRYPTO ’96. 1109: 104–113. doi:10.1007/3-540-68697-5_9.
  2. Montgomery, P. (1987). "Speeding the Pollard and elliptic curve methods of factorization". doi:10.1090/s0025-5718-1987-0866113-7. {{cite journal}}: Cite journal требует |journal= (справка)
  3. Miller, V. (1985). "Use of elliptic curves in cryptography". Conference on the theory and application of cryptographic techniques. 218: 417–426. doi:10.1007/3-540-39799-X_31.
  4. Miller, V. (1985). "Use of elliptic curves in cryptography". Conference on the theory and application of cryptographic techniques. 218: 417–426. doi:10.1007/3-540-39799-X_31.
  5. James, A. The elementary theory of finite fields. — 1968. — doi:10.2307/1970573.
  6. Blake, I. Elliptic curves in cryptography / I. Blake, G. Seroussi, N. Smart. — 1999. — Vol. 265.
  7. Cohen, H.; Miyaji, A. (1998). "Efficient Elliptic Curve Exponentiation Using Mixed Coordinates". Advances in Cryptology — ASIACRYPT’98. 1514: 51–65. doi:10.1007/3-540-49649-1_6.
  8. Шарыгин, И. Ф. Наглядная геометрия / И. Ф. Шарыгин, Л. Н. Ерганжиева. — 1992. — Vol. 5.
  9. Ильин, В. А. Математический анализ. — 1979.
  10. Tate, J. (1974). "The arithmetic of elliptic curves". Inventiones mathematicae. 23: 179—206. doi:10.1007/BF01389745.
  11. Ansari, B.; Hasan, M. (2008). "High-Performance Architecture of Elliptic Curve Scalar Multiplication". IEEE Transactions on Computers. 57: 1443–1453. doi:10.1109/TC.2008.133.
  12. Guillermin, N. (2010). "A High Speed Coprocessor for Elliptic Curve Scalar Multiplications over 𝔽𝑝". International Workshop on Cryptographic Hardware and Embedded Systems.: 48–64. doi:10.1007/978-3-642-15031-9_4.
  13. Kocher, P.; Jaffe, J.; Jun, B. (1999). "Differential Power Analysis". Advances in Cryptology — CRYPTO’ 99. 1666: 388—397. doi:10.1007/3-540-48405-1_25.
  14. Blömer, J.; Otto, M.; Seifert, J. (2006). "Sign change fault attacks on elliptic curve cryptosystems". International Workshop on Fault Diagnosis and Tolerance in Cryptography. 4236: 36–52. doi:10.1007/11889700_4.
  15. Montgomery, P. (1987). "Speeding the Pollard and elliptic curve methods of factorization". doi:10.1090/s0025-5718-1987-0866113-7. {{cite journal}}: Cite journal требует |journal= (справка)
  16. Cohen, H.; Miyaji, A. (1998). "Efficient Elliptic Curve Exponentiation Using Mixed Coordinates". Advances in Cryptology — ASIACRYPT’98. 1514: 51–65. doi:10.1007/3-540-49649-1_6.
  17. Naor, M.; Shamir, A. (1994). "Visual Cryptography". Advances in Cryptology — EUROCRYPT'94: 1–12. doi:10.1007/BFb0053419.
  18. Izu, T.; Möller, B.; Takagi, T. (2002). "Improved Elliptic Curve Multiplication Methods Resistant against Side Channel Attacks". Progress in Cryptology — INDOCRYPT 2002. 2551: 296–313. doi:10.1007/3-540-36231-2_24.
  19. Steiner, M.; Tsudik, G.; Waidner, M. (1996). "Diffie-Hellman Key Distribution Extended to Group Communication": 31–37. {{cite journal}}: Cite journal требует |journal= (справка)
  20. Naor, M.; Shamir, A. (1994). "Visual Cryptography". Advances in Cryptology — EUROCRYPT'94: 1–12. doi:10.1007/BFb0053419.
  21. Batina, L.; Guajardo, J.; Kerins, T. (2007). "Public-key cryptography for RFID-tags". Fifth Annual IEEE International Conference on Pervasive Computing and Communications Workshops (PerComW'07): 217–222. doi:10.1109/PERCOMW.2007.98.
  22. Batina, L.; Mentens, N.; Sakiyama, K. (2006). "Low-Cost Elliptic Curve Cryptography for Wireless Sensor Networks". Security and Privacy in Ad-Hoc and Sensor Networks. ESAS 2006. 4357: 6–17. doi:10.1007/11964254_3.
  23. Giraud, C.; Thiebeauld, H. (2004). "A Survey on Fault Attacks". Smart Card Research and Advanced Applications VI. IFIP International Federation for Information Processing: 159–176. doi:10.1007/1-4020-8147-2_11.
  24. Fouque, P.; Lercier, R.; Réal, D.; Valette, F. (2008). "Fault attack on elliptic curve Montgomery ladder implementation". 2008 5th Workshop on Fault Diagnosis and Tolerance in Cryptography: 92–98. doi:10.1109/FDTC.2008.15.
  25. Montgomery, P. (1987). "Speeding the Pollard and elliptic curve methods of factorization". doi:10.1090/s0025-5718-1987-0866113-7. {{cite journal}}: Cite journal требует |journal= (справка)
  26. Ebeid, N.; Lambert, R. (2009). "Securing the Elliptic Curve Montgomery Ladder against Fault Attacks". 2009 Workshop on Fault Diagnosis and Tolerance in Cryptography (FDTC): 46–50. doi:10.1109/FDTC.2009.35.
  27. Brier, É.; Joy, M. (2002). "Weierstraß Elliptic Curves and Side-Channel Attacks". International Workshop on Public Key Cryptography: 335–345. doi:10.1007/3-540-45664-3_24.
  28. Ma, K.; Wu, K. (2011). "LOEDAR: A low cost error detection and recovery scheme for ECC". 2011 Design, Automation & Test in Europe: 1–6. doi:10.1109/DATE.2011.5763164.