Безопасность

Подписи и эллиптические кривые: что такое ECDSA на примере Биткоина

Подписи и эллиптические кривые: что такое ECDSA на примере Биткоина

Цифровые подписи — важный элемент работы с криптовалютами. Именно они позволяют отправлять транзакции, подтверждать владение монетами и обеспечивать безопасность данных. Одним из ключевых криптографических механизмов, лежащих в основе цифровых подписей в блокчейнах, является алгоритм ECDSA — цифровая подпись на основе эллиптических кривых.

Что такое ECDSA

ECDSA (Elliptic Curve Digital Signature Algorithm) — это алгоритм цифровой подписи, основанный на криптографии эллиптических кривых. Он позволяет пользователю доказать право распоряжения средствами, не раскрывая при этом приватный (закрытый) ключ.

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

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

Ассиметричное шифрование

В чем состоит разница симметричного и ассиметричного метода шифрования? Если коротко, в отличие от симметричного, где для защиты информации используется один и тот же ключ (с помощью которого шифруют и дешифруют данные), при ассиметричном методе используют два ключа (публичный и приватный). Они связаны между собой математически. Именно второй метод и получил распространение в криптовалютах.

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

Почему используются эллиптические кривые

В классических криптографических системах (например, RSA) для обеспечения надежности цифровых подписей требуются большие размеры ключей — до нескольких тысяч бит. Это повышает нагрузку на сеть и увеличивает объем данных. Алгоритмы на эллиптических кривых обеспечивают сопоставимую криптографическую прочность при существенно меньших ключах. К примеру, 256-битный ключ в ECDSA обеспечивает уровень безопасности, аналогичный 3072-битному ключу RSA.

В частности, такое соответствие подтверждается стандартами Национального института стандартов и технологий NIST США (National Institute of Standards and Technology).

Эллиптические кривые представляют собой уравнения вида:

y² = x³ + ax + b

Где a = 0 и b = 7 в Биткоине.

Если не вдаваться в тонкие математические подробности — в рамках криптографии используются определенные параметры кривой. В Биткоине применяется конкретная эллиптическая кривая под названием secp256k1, определенная стандартом SECG (Standards for Efficient Cryptography Group). Ее особенностью является простая структура, способствующая высокой скорости операций и минимизации потенциальных уязвимостей. Также к преимуществам часто относят широкое распространение.

Интересно, что сам создатель Биткоина, вероятно, неспроста выбрал именно secp256k1. По воспоминаниям переписывавшегося с Сатоши Накамото разработчика Лазло Ханеша (Laszlo Hanyecz), тот сказал собеседнику в личной переписке, что, выбирая эллиптическую кривую, посоветовался с несколькими экспертами. Последние заверили Накамото, что он сделал «хороший выбор».

Интересно, что кривая secp256k1 не входит в список рекомендованных по стандартам NIST, связанных с АНБ (Агентством Национальной Безопасности) США. Иначе говоря, стандарт, вероятно, не был скомпрометирован в части безопасности.

Как работает подпись ECDSA

Процесс цифровой подписи транзакции с помощью ECDSA включает несколько шагов.

Во-первых, это создание пары ключей. Пользователь генерирует приватный ключ — случайное число в диапазоне от 1 до n–1, где n — порядок базовой точки G на кривой. Публичный ключ вычисляется как результат умножения G на приватный ключ:

Q = d × G

Где d — приватный ключ, G — базовая точка, Q — публичный ключ.

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

Наконец, это проверка подписи. Любой участник сети может проверить подлинность, используя публичный ключ и параметры подписи. Это обеспечивает защиту от фальсификаций: изменить транзакцию, не обладая приватным ключом, невозможно.

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

Хотя secp256k1 чаще всего ассоциируется с криптовалютами, благодаря своим свойствам кривая используется и в других областях, обращающихся к криптографии. Например, она используется в защищенных протоколах связи, в том числе в Transport Layer Security (TLS).

ECDSA в Биткоине

В протоколе Биткоина алгоритм ECDSA используется для подтверждения транзакций. Когда человек инициирует перевод, он подписывает данные транзакции своим приватным ключом. Узлы сети (ноды), получившие транзакцию, с помощью публичного ключа отправителя проверяют подпись. Если подпись корректна, транзакция считается действительной и может быть включена в блок.

В системе UTXO (Unspent Transaction Output или неизрасходованных выходов), на которой базируется Биткоин, каждая транзакция указывает: какие ранее полученные и неистраченные выходы (outputs) используются в качестве входов (inputs). Чтобы потратить определенный выход, пользователь должен предоставить подпись, доказывающую, что он владеет соответствующим приватным ключом.

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

Безопасность и ограничения

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

Кроме того, ECDSA не обеспечивает нативной мультиподписи. Каждая подпись имеет фиксированный размер, а при использовании мультиподписи объем данных увеличивается. Существуют и альтернативные схемы, такие как схемы Шнорра, которые решают некоторые подобные проблемы.

Впрочем, сам Сатоши Накамото изначально решил использовать именно ECDSA, которую, в отличие от схемы Шнорра, до февраля 2008 года уже можно было использовать без патентов. Уже позднее имплементация схемы Шнорра в Биткоин произошла с обновлением Taproot в 2021 году. До этого было предложение BIP-340 (Предложение по улучшению Биткоина).

ECDSA в других криптопроектах

Помимо Биткоина, ECDSA используется во многих других криптовалютах, в том числе в Litecoin, Bitcoin Cash и прочих.

Однако часть блокчейнов применяет альтернативные криптографические схемы. Например, анонимная криптовалюта Monero использует другую кривую для генерации пары ключей — edwards25519. Она связана со схемой подписей Ed25519.

К той же кривой, связанной со схемой подписи Ed25519, обращается и криптовалюта Cardano.

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

Вывод

ECDSA — это фундаментальная криптографическая технология, обеспечивающая безопасность цифровых подписей в блокчейнах, включая Биткоин. Она позволяет пользователю подтверждать владение средствами без раскрытия приватного ключа и обеспечивает невозможность подделки транзакций. За счет использования эллиптических кривых достигается высокая степень стойкости при компактных размерах ключей и подписей. Несмотря на некоторые ограничения, ECDSA остается одной из самых распространенных криптографических основ в мире цифровых валют.

Источник: cryptonews.net

Похожие статьи

Кнопка «Наверх»