Алгоритм Монтгомери (эллиптические кривые)
Алгоритм Монтгомери(англ. Montgomery ladder) — это алгоритм, позволяющий проводить операцию скалярного умножения для произвольной точки, принадлежащей эллиптической кривой за конечное время[1].
Недостатки предыдущих алгоритмов
Простейший алгоритм скалярного умножения точки , лежащей на эллиптической кривой, на скаляр выглядит следующим образом[2][3]:
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Описанный выше алгоритм скалярного умножения не рекомендуется использовать при построении криптосистем на эллиптических кривых, поскольку он подвержен атаке по энергопотреблению[4]. Шаги 3: и 5: позволяют злоумышленнику, перехватывающему значения на очередной итерации цикла, побитово восстановить значение секретного ключа [5].
Аналогичным проблемам подвержены более сложные алгоритмы скалярного умножения, использующие -координату, поскольку к ним описан алгоритм атаки по ошибкам вычисления, а именно атака смены знака[6].
Описание алгоритма
В 1987 году американский математик Питер Монтгомери предложил алгоритм[1], в котором не требуется использование -координаты для вычисления скалярного произведения точки на эллиптической кривой, что позволило значительно ускорить создание открытого ключа, а также полностью защититься от атак по энергопотреблению:
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]Предлагается в самом начале помимо точки рассчитывать также точку . Основная идея заключается в том, что во время очередной итерации цикла разница между точками и остаётся неизменно равной . Это позволяет при помощи проективных координат[7] быстро вычислять значение в точках и , с помощью которых обновляются значения и . В самом же конце используя вычисляется значение открытого ключа .
В дальнейшем оказалось, что главная особенность алгоритма оказалась слабым местом, дающим возможность для атаки и расшифровки секретного ключа[8].
Особенность реализации
Подсчёт и на очередном шаге алгоритма заслуживает отдельного внимания. Поскольку Монтгомери отказывается от использования -координаты[9] необходимо иметь точный порядок действий для вычисления проективных координат на очередной итерации.
В статье [10] приводится полное подробное описание вычисления проективных координат, получающихся удвоением и суммированием соответствующих значений. Всего требуется 18 операций умножения, 13 сложения и 4 возведения в квадрат для случая , и, соответственно, 23 умножения, 11 сложения и 4 возведения в квадрат иначе.
Области применения
Алгоритм Монтгомери применяется как в протоколе Диффи-Хэлмана, так и в алгоритмах электронной подписи, в случае, когда оба строятся на эллиптической кривой (ECDH и ECDSA соответственно). В обоих случаях — это вычисление открытых ключей агентов, собирающихся обмениваться информацией по незащищённому каналу[11].
Основным преимуществом криптосистемы, использующей эллиптические кривые, является относительно небольшая длина закрытого ключа (минимум 163 бита). Для примера в алгоритме RSA минимальная длина секретного ключа составляет 1024 бит[12]. Данная возможность появляется благодаря особенности вычисления открытого ключа, задача дискретного логарифмирования для которого решается намного сложнее, чем для алгоритмов, построенных на целых числах[13].
RFID метки
На практике алгоритм Монтгомери применяется в RFID метках[14]. Данные устройства применяются повсеместно для автоматической идентификации объектов, но при этом оснащены сильно ограниченным количеством памяти[15]. Также процесс считывания должен происходить быстро, например в момент оплаты или проверки автомобиля во время проезда через пропускной пункт[16]. Здесь и помогает алгоритм Монтгомери, поскольку он эффективнее других алгоритмов с точки зрения аппаратной части (время, ресурсы), а также даёт защиту от большинства атак по сторонним каналам на эллиптические кривые
Сенсорные сети
Другим интересным применением данного алгоритма являются беспроводные сенсорные сети[17]. Как и в случае RFID меток, устройства сети оснащены компактными энергетически эффективными процессорами, в которых спроектированы специальные Modular Arithmetic Logic Units(MALU) для проведения вычислений на кривой, в том числе скалярного умножения. Это помогает производить безопасные и экономные вычисления[18].