Скалярное умножение точки
Скалярное умножение точки — это операция в эллиптической криптографии, заключающаяся в многократном сложении одной и той же точки эллиптической кривой с самой собой. Результатом операции является другая точка на той же кривой. Скалярное умножение является ключевым вычислительным примитивом, лежащим в основе таких криптографических схем, как алгоритм Диффи — Хеллмана на эллиптических кривых (ECDH) и алгоритм цифровой подписи на эллиптических кривых (ECDSA). Операция определяется как \( k \cdot P = P + P + \dots + P \) (k раз), где \( k \) — целое число (скаляр), а \( P \) — точка на кривой.
Математическое определение
Пусть \( E \) — эллиптическая кривая, заданная над конечным полем \( \mathbb{F}_q \), и \( P \in E(\mathbb{F}_q) \) — точка на этой кривой. Скалярное умножение точки \( P \) на целое число \( k \) (скаляр) определяется следующим образом:
- Если \( k = 0 \), то \( 0 \cdot P = \mathcal{O} \), где \( \mathcal{O} \) — точка на бесконечности (нейтральный элемент группы).
- Если \( k > 0 \), то \( k \cdot P = \underbrace{P + P + \dots + P}_{k \text{ раз}} \).
- Если \( k < 0 \), то \( k \cdot P = (-k) \cdot (-P) \), где \( -P \) — точка, обратная к \( P \) относительно сложения.
Операция сложения точек на эллиптической кривой является групповой операцией, поэтому скалярное умножение является аналогом возведения в степень в мультипликативной группе конечного поля. В криптографии скаляр \( k \) обычно является секретным ключом, а точка \( P \) — базовой точкой (генератором) циклической подгруппы.
Алгоритмы вычисления
Прямое вычисление скалярного умножения путём последовательного сложения \( k \) раз является неэффективным при больших \( k \) (например, порядка \( 2^{256} \)). Для практического применения используются алгоритмы, основанные на двоичном представлении скаляра.
Метод «двойного и сложения» (Double-and-Add)
Этот алгоритм является аналогом бинарного возведения в степень. Он обрабатывает биты скаляра \( k \) от старшего к младшему (или наоборот) и использует две операции: удвоение точки (2·P) и сложение точек (P + Q).
Пример для \( k = 13 \) (двоичное представление: 1101):
- Начальное значение: \( Q = \mathcal{O} \).
- Бит 1 (старший): \( Q = 2 \cdot Q = \mathcal{O} \), затем \( Q = Q + P = P \).
- Бит 1: \( Q = 2 \cdot Q = 2P \), затем \( Q = Q + P = 3P \).
- Бит 0: \( Q = 2 \cdot Q = 6P \).
- Бит 1: \( Q = 2 \cdot Q = 12P \), затем \( Q = Q + P = 13P \).
Алгоритм выполняет \( \log_2(k) \) удвоений и в среднем \( \frac{1}{2} \log_2(k) \) сложений. Для 256-битного скаляра требуется около 256 удвоений и 128 сложений, что значительно быстрее, чем \( 2^{256} \) операций.
Метод Монтгомери (Montgomery Ladder)
Этот метод, предложенный Питером Монтгомери в 1987 году, устойчив к атакам по побочным каналам (SPA — Simple Power Analysis). В отличие от метода «двойного и сложения», который выполняет разные операции в зависимости от бита (сложение или только удвоение), лестница Монтгомери выполняет одинаковое количество операций для каждого бита: одно удвоение и одно сложение. Это делает время выполнения и потребляемую мощность независимыми от значения скаляра.
Алгоритм использует две переменные \( R_0 \) и \( R_1 \), которые всегда удовлетворяют соотношению \( R_1 = R_0 + P \). На каждом шаге в зависимости от бита \( k_i \) выполняется:
- Если \( k_i = 0 \): \( R_0 = 2 \cdot R_0 \), \( R_1 = R_0 + R_1 \).
- Если \( k_i = 1 \): \( R_1 = 2 \cdot R_1 \), \( R_0 = R_0 + R_1 \).
После обработки всех битов \( R_0 = k \cdot P \).
Алгоритм с окном (Window Method)
Для ускорения вычислений используется предварительное вычисление таблицы небольших кратных точек. Например, для окна шириной \( w \) бит предварительно вычисляются \( 2^w \) значений: \( 0, P, 2P, \dots, (2^w - 1)P \). Затем скаляр разбивается на блоки по \( w \) бит, и для каждого блока выполняется умножение на соответствующее значение из таблицы. Этот метод сокращает количество сложений, но увеличивает требования к памяти.
Применение в криптографии
Алгоритм Диффи — Хеллмана на эллиптических кривых (ECDH)
ECDH используется для установления общего секретного ключа между двумя сторонами по незащищённому каналу. Протокол основан на вычислительной сложности задачи дискретного логарифмирования на эллиптической кривой (ECDLP).
- Стороны договариваются о параметрах кривой и базовой точке \( G \).
- Алиса генерирует секретный скаляр \( a \) и вычисляет открытый ключ \( A = a \cdot G \).
- Боб генерирует секретный скаляр \( b \) и вычисляет открытый ключ \( B = b \cdot G \).
- Алиса вычисляет общий секрет \( S = a \cdot B = a \cdot (b \cdot G) = (ab) \cdot G \).
- Боб вычисляет общий секрет \( S = b \cdot A = b \cdot (a \cdot G) = (ab) \cdot G \).
Без знания \( a \) или \( b \) злоумышленник не может вычислить \( S \), так как для этого требуется решить ECDLP.
Алгоритм цифровой подписи на эллиптических кривых (ECDSA)
ECDSA используется для аутентификации и обеспечения целостности данных. Подпись создаётся с использованием секретного ключа, а проверяется с помощью открытого.
- Генерация ключей: Выбирается секретный скаляр \( d \), открытый ключ \( Q = d \cdot G \).
- Создание подписи: Для сообщения \( m \) выбирается случайное число \( k \). Вычисляется точка \( (x_1, y_1) = k \cdot G \). Значение \( r = x_1 \mod n \) (где \( n \) — порядок подгруппы). Вычисляется \( s = k^{-1} \cdot (H(m) + d \cdot r) \mod n \). Подпись — пара \( (r, s) \).
- Проверка подписи: Вычисляется \( w = s^{-1} \mod n \), \( u_1 = H(m) \cdot w \mod n \), \( u_2 = r \cdot w \mod n \). Вычисляется точка \( (x_1, y_1) = u_1 \cdot G + u_2 \cdot Q \). Подпись считается верной, если \( x_1 \equiv r \pmod{n} \).
Другие применения
- Схемы шифрования на эллиптических кривых (ECIES): Гибридная схема шифрования, использующая ECDH для генерации ключа и симметричное шифрование для данных.
- Слепые подписи (Blind Signatures): Используются в системах электронного голосования и анонимных платежах.
- Подписи с нулевым разглашением (Zero-Knowledge Proofs): Например, в протоколах доказательства знания дискретного логарифма.
Криптостойкость и безопасность
Безопасность скалярного умножения основана на сложности задачи дискретного логарифмирования на эллиптической кривой (ECDLP). Для кривой с порядком примерно \( 2^{256} \) лучшие известные атаки (например, метод Полларда — Ро) требуют около \( 2^{128} \) операций, что считается вычислительно неосуществимым.
Однако практическая безопасность зависит от корректной реализации:
- Атаки по побочным каналам (Side-Channel Attacks): Измерение времени выполнения, потребляемой мощности или электромагнитного излучения может раскрыть биты скаляра. Для защиты используются методы, такие как лестница Монтгомери, постоянное время выполнения и маскирование.
- Атаки с внедрением ошибок (Fault Attacks): Внесение временных сбоев в вычисления может привести к получению неверного результата, который может раскрыть секретный ключ.
- Кривые с низкой криптостойкостью: Использование кривых с небольшим порядком или с аномальными свойствами (например, supersingular curves) может сделать ECDLP тривиальной. Поэтому в стандартах (ГОСТ Р 34.10-2012, NIST P-256, Curve25519) используются строго определённые кривые.
Особенности в российских стандартах
В Российской Федерации криптографические алгоритмы на эллиптических кривых регламентируются стандартом ГОСТ Р 34.10-2012 «Информационная технология. Криптографическая защита информации. Процессы формирования и проверки электронной цифровой подписи». Стандарт определяет использование эллиптических кривых над полем характеристики \( p \) (простые поля) и двоичные поля. В стандарте заданы конкретные параметры кривых (например, кривая с параметрами, определёнными в приложении А), и скалярное умножение является основной операцией при вычислении открытого ключа и проверке подписи.
Источники
- ГОСТ Р 34.10-2012 «Информационная технология. Криптографическая защита информации. Процессы формирования и проверки электронной цифровой подписи».
- Hankerson, D., Menezes, A., Vanstone, S. (2004). Guide to Elliptic Curve Cryptography. Springer.
- Montgomery, P. L. (1987). «Speeding the Pollard and Elliptic Curve Methods of Factorization». Mathematics of Computation, 48(177), 243–264.
- Koblitz, N. (1987). «Elliptic curve cryptosystems». Mathematics of Computation, 48(177), 203–209.
- Miller, V. S. (1985). «Use of Elliptic Curves in Cryptography». Advances in Cryptology — CRYPTO '85.
BFOmetr — база данных и аналитика по компаниям России.
На главную BFOmetr →