Как работает ECDSA в биткоине?
-
1
Что такое ECDSA?
ECDSA (аббревиатура от Elliptic Curves Digital Signature Algorithm , алгоритм построения цифровой подписи с использованием эллиптических кривых) – это схема криптографии на основе эллиптических кривых (Elliptic Curve Cryptography или ECC).
Алгоритм ECDSA использует эллиптическую кривую и конечное поле для создания подписи данных таким образом, что третьи стороны могут верифицировать аутентичность подписи, а подписавшая сторона сохраняет эксклюзивную возможность создавать подпись. В случае биткоина подписываемые данные – это транзакция передачи права собственности.
-
2
Кто и когда разработал концепцию ECC?
Концепцию криптографии на основе эллиптических кривых независимо друг от друга предложили математики Нил Коблиц и Виктор С. Миллер в 1985 году. Хотя их модель стала прорывом в криптографии, ECC не использовалась широко до начала 2000-х, когда ее внедрили интернет-провайдеры.
-
3
Как ECC применяется в криптовалютах?
Криптография, лежащая в основе схем цифровых подписей криптовалют, позволяет осуществлять верификацию транзакций между двумя сторонами в децентрализованной сети.
Преимущества ECC перед RSA
- Размер ключа для ECC меньше, но уровень безопасности такой же, как у RSA.
- ECC эффективнее, чем RSA, и поэтому используется в криптовалютах.
4
Разработчик ECDSA
Канадский математик и криптограф Скотт Ванстоун представил концепцию ECDSA в 1992 году.
5
Задача ECDSA
Технология биткоина переосмысливает концепцию права собственности. Биткоины не хранятся ни центрально, ни локально. Владеть биткоином означает иметь возможность передавать контроль над ним другому пользователю, используя пару ключей ECDSA – открытый и закрытый.
Биткоины существуют в качестве записей в блокчейне, копии которого распределяются сетью компьютеров.
Традиционно владеть чем-либо – значит хранить этот объект лично или передать на ответственное хранение доверенной структуре.
Однако в случае биткоина все обстоит иначе.
Доступ к ключам ECDSA дает возможность передавать контроль над биткоином.
Благодаря этому биткоины могут существовать без централизованного хранения и контроля.
- ECDSA: алгоритм подписи и верификации на основе арифметических операций с использованием закрытого и открытого ключей соответственно.
- Эллиптическая кривая: алгебраическое уравнение y2 = x3 + ax + b, имеющее полезные свойства, такие как определение операций сложения и удвоения точек на кривой.
Что такое ECDSA в биткоине?
Аналогичным образом, при удвоении точки проводится прямая, касательная к эллиптической кривой в точке P, которая должна пересекать ее еще в одной точке R.
Точка R, симметричная R‘ относительно оси x, и будет считаться точкой удвоения P. Пример:
Что такое ECDSA в биткоине?
Вместе две эти операции используются для операции произведения на скаляр, R = a P, определяемой как добавление точки P к себе a раз. Например:
- R = 7P
- R = P + (P + (P + (P + (P + (P + P)))))
Процесс произведения на скаляр обычно упрощается посредством комбинации операций сложения и удвоения точек.
Например:
- R = 7P
- R = P + 6P
- R = P + 2 (3P)
- R = P + 2 (P + 2P)
Здесь 7P разделяется на два шага по удвоению точки и два шага по добавлению точки.
7
Что такое конечные поля?
Конечное поле в контексте ECDSA
можно рассматривать как заданный диапазон положительных чисел, в который должен попадать каждый расчет. Любое число за пределами этого диапазона оборачивается таким образом, чтобы оно попадало в диапазон. Если результат операции выходит за пределы этого диапазона, то по окончании диапазона происходит возвращение к его началу, и расчет продолжается.
Самое простое – рассматривать этот процесс как расчет операции «остаток от целочисленного деления», или оператор modulus (mod). Например, 9/7 дает 1 с остатком в 2:9 mod 7 = 2. Здесь конечное поле – от 0 до 6, и все операции по модулю 7, над каким бы числом они не осуществлялись, дают результат, попадающий в этот диапазон.
Как происходит объединение кривых с конечными полями?
ECDSA использует эллиптические кривые в контексте конечного поля, которое значительно изменяет их внешний вид, но не фундаментальные формулы или особые свойства. То же самое уравнение, представленное на графике выше, в конечном поле по модулю 67 выглядит так:
- Теперь это набор точек, в котором все значения x и y являются целыми числами между 0 и 66. При этом кривая по-прежнему сохраняет свою горизонтальную симметрию.
Изменение в сложении и удвоении точек: Линии на графике оборачиваются вокруг поля сохраняя наклон. Сложение точек (2, 22) и (6, 25) выглядит так:
- Оборачивающаяся прямая, проходящая через эти две точки, в итоге упирается в третью точку (47, 39), а симметричная ей относительно оси x будет (47, 28). Эта точка – результат операции.
Как ECDSA работает в биткоине?
- Протокол биткоин выбирает набор параметров для эллиптической кривой и репрезентацию его конечного поля, которая фиксирована для всех пользователей протокола.
- Параметры включают само уравнение, простое значение модуля поля и базовую точку на кривой.
- Порядок базовой точки, которая не выбирается независимо, но является функцией других параметров, можно представить графически как число прибавлений точки к себе до тех пор, пока ее наклон не становится бесконечной (вертикальной) линией.
- Базовая точка выбирается так, что порядок – это большое простое число.
- Для базовой точки простого модуля и порядка биткоин использует очень большие числа. Надежность алгоритма зависит от того, что эти величины огромны – это делает непрактичным использование брутфоса или инженерного анализа.
- В случае биткоина:
- Уравнение эллиптической кривой: y2 = x3 + 7
Простой модуль: 2^256 – 2^32 – 2^9 – 2^8 – 2^7 – 2^6 – 2^4 – 1 = FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE FFFFFC2F
Базовая точка: 04 79BE667E F9DCBBAC 55A06295 CE870B07 029BFCDB 2DCE28D9 59F2815B 16F81798 483ADA77 26A3C465 5DA4FBFC 0E1108A8 FD17B448 A6855419 9C47D08F FB10D4B8
Порядок: FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFE BAAEDCE6 AF48A03B BFD25E8C D0364141
Данная реализация известна как secp256k1 и является частью семейства решений эллиптической кривой в области конечных полей, предложенных к использованию в криптографии.
-
Каковы недостатки ECDSA?
В ECDSA как текущем методе подписи в биткоине отсутствует нативная поддержка мультиподписей , поэтому их реализуют с помощью стандартизированного смарт-контракта Pay-to-Script-Hash (P2SH), предполагающего включение в блокчейн лишь хешей скриптов.
Это казалось бы случайное число определяет право собственности на монеты. В момент траты держатель раскрывает скрипт и ключ для расшифровки хеша одновременно. Затем каждый пользователь может использовать изначальный хеш для проверки истинности скрипта и исполнения условий траты. Однако при этом пользователи должны раскрывать все условия траты, включая и те, которые не были выполнены. Например, монеты могут быть потрачены тогда и только тогда, когда Боб и Алиса подпишут транзакцию, или Алиса подпишет ее самолично по истечению недели, или это сделает Боб, предоставив при этом секретное число.
Проблема: недостаток приватности для P2SH-транзакций. Для них требуется начинаться с цифры 3, что дает возможность блокчейн-аналитикам распознать все P2SH-транзакции и определить адреса, участвующие в мультиподписи.
Проблема: большой массив данных для обработки, так как P2SH требует знания открытых ключей всех участников мультиподписи.
Эти проблемы решают схема подписей Шнорра и технология Taproot.