Купить крипто
Рынки
Спот
ФьючерсыBTC
Сбережения
Центр событий
Хаб наград
Еще
Фестиваль с 0 комиссией
Криптография на эллиптических кривых (ECC): Что такое криптография на эллиптических кривых?Криптография на эллиптических кривых, или ECC, — это разновидность криптографии с открытым ключом, основанная на математических операциях с точками эллипКриптография на эллиптических кривых (ECC): Что такое криптография на эллиптических кривых?Криптография на эллиптических кривых, или ECC, — это разновидность криптографии с открытым ключом, основанная на математических операциях с точками эллип

Криптография на эллиптических кривых (ECC)

2026/10/14 17:13
#Intermediate
Humanity
H$0.05544-2.32%
PX
PX$0.0128+1.58%
Quack AI
Q$0.050637+22.14%
Gravity
G$0.004015-0.12%
Core DAO
CORE$0.01866-1.47%

Что такое криптография на эллиптических кривых?

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

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

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

Открытый ключ — это математически связанное с приватным ключом значение, с помощью которого другие участники могут проверять подписи, не узнавая приватный ключ.

Безопасность ECC во многом зависит от сложности решения задачи дискретного логарифмирования на эллиптической кривой.

Если известны приватный ключ и выбранная базовая точка, вычислить соответствующий открытый ключ несложно.

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

В проекте NIST по криптографии на эллиптических кривых ECC описывается как важный метод создания цифровых подписей и установления криптографических ключей.

ECC — это не один алгоритм, кривая, блокчейн или криптовалюта.

Это обширное семейство криптографических методов, включающее ECDSA, EdDSA, ECDH, подписи Schnorr, подписи BLS и другие конструкции.

Зачем криптовалютам нужна ECC

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

Это возможно благодаря цифровым подписям ECC.

Кошелек подписывает данные транзакции приватным ключом.

Участники сети с помощью соответствующего открытого ключа проверяют подлинность подписи.

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

ECC привлекательна тем, что обеспечивает высокий уровень защиты от классических атак при относительно компактных открытых ключах и подписях.

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

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

Что такое эллиптическая кривая?

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

Распространенная краткая форма Вейерштрасса записывается так:

y² = x³ + ax + b
.

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

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

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

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

В защищенных системах следует использовать тщательно изученные параметры, а не выбирать произвольное уравнение кривой.

В окончательной редакции рекомендации NIST SP 800-186 указаны одобренные параметры эллиптических кривых для соответствующих криптографических систем.

Что такое конечное поле?

Конечное поле — это ограниченное множество значений с определенными правилами сложения, вычитания, умножения и деления.

Многие криптовалютные кривые работают над простым полем, в котором вычисления выполняются по модулю большого простого числа.

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

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

Математические свойства поля и кривой позволяют точкам образовать структурированную алгебраическую группу.

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

Сложение точек

Сложение точек — это операция, которая объединяет две допустимые точки кривой и возвращает другую допустимую точку.

Точные формулы зависят от вида эллиптической кривой.

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

Многократное сложение лежит в основе умножения точки на скаляр.

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

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

Умножение точки на скаляр

Умножение на скаляр — это многократное сложение точки эллиптической кривой с самой собой заданное число раз.

В криптовалютных системах открытый ключ обычно вычисляется по формуле

Q = d × G
.

Здесь

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

Вычислить

Q
по
d
и
G
несложно.

Восстановить

d
по
Q
и
G
трудно — именно на этой задаче основана система.

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

Задача дискретного логарифмирования на эллиптической кривой

Задача дискретного логарифмирования на эллиптической кривой, или ECDLP, состоит в поиске секретного скаляра, если известны базовая точка и полученная открытая точка.

Для правильно выбранных больших кривых в настоящее время не известен эффективный классический алгоритм решения ECDLP.

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

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

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

Приватные ключи ECC

Приватный ключ ECC обычно представляет собой случайно выбранное целое число в допустимом диапазоне, определяемом порядком группы кривой.

Значение не должно быть нулевым или выходить за допустимый диапазон.

Приватный ключ длиной 256 бит не означает, что любая последовательность из 256 бит автоматически допустима для любой кривой.

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

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

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

Открытые ключи ECC

Открытый ключ ECC — это точка на выбранной эллиптической кривой.

Он вычисляется на основе приватного ключа с помощью умножения на скаляр.

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

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

Перед использованием открытый ключ необходимо проверить: некорректные точки могут приводить к атакам с использованием неверной кривой или подгруппы.

Проверка может включать проверку формата кодирования, принадлежности точки ожидаемой кривой, отклонение нейтральной точки и применение правил для подгруппы.

Открытые ключи и адреса криптовалют

Адрес криптовалюты не всегда совпадает с открытым ключом.

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

Получается более короткий или удобный для пользователей идентификатор, к которому можно добавить контрольные суммы, идентификаторы сети или условия скрипта.

В некоторых системах полный открытый ключ становится виден только после расходования средств с адреса.

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

Нельзя предполагать, что из адреса можно восстановить приватный ключ.

При корректном проектировании адреса практически невозможно обратить процесс генерации.

ECC и цифровые подписи

Самое распространенное применение ECC в криптовалютах — цифровые подписи.

Подписывающая сторона обрабатывает данные транзакции с помощью приватного ключа и создает подпись.

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

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

Она также позволяет обнаружить изменения подписанных данных после подписания.

Подпись не шифрует транзакцию и не скрывает ее содержимое.

В окончательной редакции стандарта цифровых подписей NIST FIPS 186-5 среди одобренных методов подписания указаны ECDSA и EdDSA.

ECC — не то же самое, что шифрование

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

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

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

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

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

Что такое ECDSA?

ECDSA расшифровывается как Elliptic Curve Digital Signature Algorithm — алгоритм цифровой подписи на эллиптических кривых.

Он адаптирует алгоритм цифровой подписи к группам эллиптических кривых.

ECDSA создает подпись, содержащую два основных значения, обычно обозначаемых как

r
и
s
.

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

Безопасность ECDSA зависит от защиты приватного ключа и создания уникального надежного одноразового числа для каждой подписи.

Этот алгоритм широко используется для авторизации транзакций криптовалют.

В определении ECDSA от NIST он описан как аналог алгоритма цифровой подписи, использующий эллиптические кривые.

Почему одноразовое число ECDSA имеет критическое значение

Для каждой подписи ECDSA требуется секретное значение, которое используется только один раз и обычно обозначается как

k
.

Нельзя повторно использовать это значение с тем же приватным ключом для разных сообщений.

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

Предвзятое или частично предсказуемое одноразовое число также может раскрыть достаточно информации для восстановления ключа по нескольким подписям.

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

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

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

Что такое secp256k1?

secp256k1 — это эллиптическая кривая длиной 256 бит, используемая в Bitcoin, аккаунтах уровня исполнения Ethereum и нескольких других криптовалютных системах.

Ее уравнение над простым полем имеет вид

y² = x³ + 7
.

Для кривой используются коэффициенты

a = 0
и
b = 7
, стандартизированная базовая точка и порядок группы.

Название относится к параметрам кривой, опубликованным в семействе стандартов Standards for Efficient Cryptography.

Поддерживаемый проект libsecp256k1 предоставляет специализированные реализации подписей и связанных операций с этой кривой.

secp256k1 нельзя взаимозаменять с любой другой кривой длиной 256 бит.

Ключ или подпись, созданные для secp256k1, нельзя автоматически проверить с помощью другой кривой, например P-256 или Ed25519.

Bitcoin и ECC

Исторически в Bitcoin для подтверждения права на расходование средств используется ECDSA на кривой secp256k1.

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

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

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

Кроме того, в Bitcoin используются подписи Schnorr на secp256k1 для правил расходования, связанных с Taproot.

В спецификации BIP-340 для этого применения определены формат подписи Schnorr фиксированной длины 64 байта и формат открытого ключа длиной 32 байта.

Подписи Schnorr

Подпись Schnorr — это еще один вид цифровой подписи, который можно использовать в группе эллиптической кривой.

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

При использовании тщательно разработанного протокола несколько подписывающих сторон могут создать один общий открытый ключ и одну обычную на вид подпись.

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

Для безопасного объединения требуется определенный протокол, который защищает от атак с подставным ключом, атак на одноразовые числа и недобросовестных действий участников.

Простое сложение открытых ключей или значений подписей без использования проверенной схемы небезопасно.

Ethereum и ECC

В аккаунтах уровня исполнения Ethereum для подписания обычных транзакций используется ECDSA на secp256k1.

Адрес внешне управляемого аккаунта вычисляется на основе его открытого ключа.

Подпись позволяет сети восстановить или проверить открытый ключ отправителя и подтвердить авторизацию транзакции.

В актуальной документации Ethereum о ключах Proof of Stake объясняется, что ключи аккаунтов уровня исполнения остаются ключами на основе эллиптических кривых, а валидаторы используют отдельную систему ключей.

Для работы валидаторов Ethereum применяются подписи BLS на кривой BLS12-381.

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

Восстанавливаемые подписи ECDSA

В некоторые криптовалютные системы в подпись ECDSA добавляется информация для восстановления открытого ключа.

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

В подписях Ethereum эта информация традиционно представлена значениями, обозначаемыми как

r
,
s
и параметр восстановления или четности.

В стандарте компактных подписей ERC-2098 описан компактный формат подписей secp256k1, эффективно использующий информацию о четности.

Восстановление открытого ключа — это свойство формата подписи, которое не раскрывает приватный ключ.

Что такое EdDSA?

EdDSA расшифровывается как Edwards-Curve Digital Signature Algorithm — алгоритм цифровой подписи на кривых Эдвардса.

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

EdDSA предназначен для эффективной реализации, детерминированного подписания и защиты от ряда распространенных ошибок реализации.

Ed25519 — широко используемый вариант EdDSA, основанный на математике, связанной с Curve25519.

В спецификации RFC 8032 определены Ed25519 и другие варианты подписей на кривых Эдвардса.

Ключи и подписи Ed25519 несовместимы с ключами и подписями secp256k1 ECDSA.

Solana и Ed25519

Для аккаунтов, которые должны подписывать транзакции Solana, используются подписи Ed25519.

Каждый подписывающий транзакцию Solana создает подпись Ed25519 длиной 64 байта на сериализованное сообщение транзакции.

В актуальной документации Solana о транзакциях объясняется структура подписей и требования к подписывающим сторонам.

Solana также предоставляет предварительно скомпилированные программы для проверки подписей Ed25519, secp256k1 и secp256r1 в инструкциях, предназначенных для конкретных приложений.

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

Что такое ECDH?

ECDH расшифровывается как Elliptic Curve Diffie-Hellman — протокол Диффи — Хеллмана на эллиптических кривых.

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

Два участника комбинируют собственный приватный ключ с открытым ключом другого участника и вычисляют одинаковый общий секрет.

Если наблюдатель видит открытые ключи, то, при условии сложности ECDLP, он не должен иметь возможности вычислить этот секрет.

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

Сам по себе ECDH не удостоверяет личности участников, поэтому его использование без аутентификации может привести к атаке посредника.

X25519

X25519 — широко используемая функция Диффи — Хеллмана на эллиптических кривых, основанная на форме Монтгомери кривой Curve25519.

Она предназначена для эффективного установления общего секрета и простой реализации.

В спецификации RFC 7748 определены X25519 и X448.

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

Хотя X25519 и Ed25519 используют связанные базовые поля, значения их ключей различаются по назначению, поэтому преобразовывать их без необходимости не следует.

Подписи BLS и кривые, удобные для спаривания

Подписи BLS — это подписи на эллиптических кривых, использующие билинейные спаривания.

При соблюдении определенных правил они позволяют эффективно объединять подписи и открытые ключи.

В Ethereum Proof of Stake для предложений и аттестаций валидаторов используются подписи BLS на кривой BLS12-381.

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

В стандарте иерархии детерминированных аккаунтов BLS12-381 описано использование ключей BLS в инфраструктуре валидаторов Ethereum.

BLS12-381 отличается от secp256k1 и Ed25519 структурой кривой, алгоритмами подписей, получением ключей и требованиями к безопасности.

Разные эллиптические кривые несовместимы между собой

Эллиптические кривые могут различаться уравнениями, полями, базовыми точками, порядками групп, кофакторами, форматами кодирования и предположениями о безопасности.

secp256k1, P-256, Ed25519 и BLS12-381 — разные криптографические системы.

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

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

Одного общего обозначения, например ECC, недостаточно для обеспечения совместимости двух приложений.

Длина ключа ECC и уровень безопасности

Надежной простой эллиптической кривой с длиной 256 бит обычно соответствует примерно 128-битный уровень защиты от универсальных атак на дискретный логарифм.

Это не означает, что вероятность угадать ключ для злоумышленника составляет один шанс из 128.

Так описывается приблизительный объем работы, сопоставимый примерно с

2¹²⁸
операций в рамках соответствующих моделей атак.

Фактический уровень безопасности зависит от структуры кривой, алгоритма, реализации, генерации случайных чисел и возможностей злоумышленника.

Нельзя напрямую сравнивать ключ ECC длиной 256 бит с симметричным ключом шифрования той же длины, поскольку модели атак различаются.

Сжатые открытые ключи

Точка на эллиптической кривой над простым полем обычно содержит координаты

x
и
y
.

Для многих кривых уравнение кривой дает два возможных значения

y
для допустимой координаты
x
.

Поэтому в сжатом открытом ключе можно хранить координату

x
и один бит или префикс, указывающий нужное значение
y
.

Это уменьшает размер открытого ключа, не сокращая пространство возможных вариантов приватного ключа.

Перед использованием программное обеспечение должно правильно восстановить и проверить точку.

В BIP-340 применяется соглашение об открытом ключе только с координатой x, а также дополнительные правила выбора соответствующей точки.

Изменяемость подписи

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

В базовой версии ECDSA есть математическая симметрия, которая может порождать связанные значения

s
.

Криптовалютные протоколы могут снижать этот риск, требуя каноническую форму с низким значением

s
или применяя другие правила кодирования.

Изменяемость подписи сама по себе не обязательно позволяет злоумышленнику тратить средства без разрешения.

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

Схемы Schnorr с сильной защитой от подделки и фиксированным форматом кодирования могут обеспечивать более строгие свойства неизменяемости при реализации согласно спецификации.

Генерация ключей и энтропия

Математическая надежность ECC не защищает приватный ключ, созданный на основе предсказуемых данных.

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

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

Ключ, созданный неисправным аппаратным генератором случайных чисел, может быть предсказуемым, даже если имеет ожидаемую длину.

Кошелькам следует использовать проверенные источники энтропии, выполнять проверку диапазона и защищать среду генерации сид-фразы.

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

Иерархические детерминированные кошельки

Иерархические детерминированные кошельки позволяют получать множество связанных ключей из одной мастер-сид-фразы.

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

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

Некоторые пути деривации позволяют создавать открытые дочерние ключи на основе расширенного открытого ключа, не раскрывая приватные ключи.

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

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

Аппаратные кошельки и ECC

Аппаратный кошелек может хранить приватные ключи ECC и создавать подписи непосредственно на специальном устройстве.

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

Это снижает риск воздействия вредоносного ПО на компьютере общего назначения.

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

Защищенный элемент или изолированный процессор не помогут пользователю, если он подтвердит транзакцию с вводящими в заблуждение данными.

Фраза восстановления также имеет критическое значение, поскольку с ее помощью можно восстановить ключи ECC на другом устройстве.

Мультиподпись и пороговые схемы ECC

Системы с мультиподписью требуют подтверждения несколькими ключами, а не одним.

Скрипт блокчейна может проверять несколько независимых подписей ECC.

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

В спецификации MuSig2 определен интерактивный метод мультиподписи, совместимый с ключами и подписями BIP-340.

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

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

Атаки по побочным каналам

При атаке по побочному каналу секреты получают из физических или эксплуатационных особенностей криптографической реализации.

Источниками сигналов могут быть время выполнения, энергопотребление, электромагнитное излучение, поведение кэша, доступ к памяти и реакция на сбои.

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

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

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

Разработчикам следует использовать библиотеки, созданные и проверенные с учетом защиты от атак по побочным каналам.

Атаки с неверной кривой и подгруппой

Злоумышленник может предоставить некорректную точку или точку, принадлежащую неожиданной группе.

Если программное обеспечение выполняет секретные операции с такой точкой без проверки, ответ может раскрыть информацию о приватном ключе.

Атаки на малые подгруппы могут заставить систему выполнять вычисления в группе с ограниченным числом возможных результатов.

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

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

Атаки с внесением сбоев

При атаке с внесением сбоев злоумышленник намеренно вызывает ошибку во время криптографических вычислений.

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

Иногда сравнение корректных и ошибочных подписей позволяет раскрыть приватный ключ.

Устройства для подписания с высоким уровнем безопасности могут проверять вычисленные подписи перед их отправкой.

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

Почему разработчикам следует использовать проверенные библиотеки

Безопасная реализация арифметики на эллиптических кривых — сложная задача.

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

Проверенные библиотеки обеспечивают оптимизированную арифметику, тестовые векторы, стандартизированную сериализацию и усиление защиты.

Разработчикам следует использовать библиотеку, поддерживающую именно ту кривую и протокол, которые нужны блокчейну.

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

Использовать для хранения криптовалют в производственной среде самодельную реализацию ECC из статьи или фрагмента кода небезопасно.

Разделение доменов

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

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

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

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

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

Повторное использование приватных ключей

Использование одного приватного ключа в несвязанных сетях и приложениях повышает риск.

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

Разные системы могут по-разному хешировать, кодировать или проверять сообщения.

Повторное использование ключа в нескольких приложениях также упрощает сопоставление действий пользователя.

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

Пользователям кошельков следует не импортировать сид-фразы с крупными суммами в ненужные приложения.

ECC и смарт-контракты

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

В Ethereum есть встроенная поддержка восстановления подписавших на secp256k1 с помощью прекомпилята

ecrecover
.

Другие прекомпиляты или библиотеки контрактов могут поддерживать дополнительные кривые и системы доказательств.

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

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

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

ECC и доказательства с нулевым разглашением

Эллиптические кривые также применяются во многих системах доказательств с нулевым разглашением.

Кривые, подходящие для спаривания, позволяют создавать компактные доказательства и эффективно проверять их.

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

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

Кривая, подходящая для обычных подписей, не обязательно будет эффективной или безопасной для доказательств на основе спаривания.

Отдельно необходимо оценивать предположения о доверенной настройке, устройство схемы, совместимость полей, проверки подгрупп и надежность системы доказательств.

Преимущества ECC в криптовалютах

ECC обеспечивает высокий уровень защиты с использованием открытых ключей от классических атак при относительно компактных ключах и подписях.

Она позволяет пользователям подтверждать транзакции, не раскрывая приватные ключи.

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

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

Для различных применений доступны несколько хорошо изученных кривых и стандартизированных алгоритмов.

Эффективность ECC сделала ее фундаментальной технологией современных криптовалютных кошельков и систем консенсуса.

Ограничения ECC

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

Кривые и схемы подписей разных типов не становятся совместимыми автоматически.

ECC сама по себе не шифрует обычные транзакции в общедоступном блокчейне.

Она не может помешать пользователям подтверждать вредоносные переводы или раскрывать фразы восстановления.

Квантовые компьютеры с достаточными вычислительными возможностями могут поставить под угрозу предположения о ее безопасности.

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

Квантовые компьютеры и ECC

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

Это позволило бы злоумышленнику вычислять приватный ключ по открытому ключу, который стал известен.

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

Однако долгосрочным блокчейн-системам необходимо подготовиться до появления такого оборудования.

В актуальном руководстве Ethereum по постквантовой безопасности ECDSA, подписи BLS и обязательства на эллиптических кривых названы областями, для которых в будущем потребуется переход на другие решения.

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

Постквантовая криптография

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

В августе 2024 года NIST утвердил стандарт FIPS 203 для ML-KEM, FIPS 204 для ML-DSA и FIPS 205 для SLH-DSA.

В объявлении NIST о постквантовых стандартах рекомендуется начать планировать переход.

ML-KEM предназначен для установления общих секретов, а ML-DSA и SLH-DSA — для создания цифровых подписей.

У этих схем обычно более крупные ключи или подписи, чем у распространенных систем ECC.

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

Криптографическая гибкость

Криптографическая гибкость — это возможность заменять или комбинировать криптографические алгоритмы, не перестраивая всю систему.

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

Во время перехода протокол может использовать гибридные подписи, требуя как существующую подпись ECC, так и постквантовую подпись.

Смарт-аккаунты иногда позволяют гибче обновлять алгоритмы, чем аккаунты, правила проверки подписи которых жестко заданы базовым протоколом.

Криптографическую гибкость нужно проектировать тщательно: небезопасный переход или возможность отката к слабому алгоритму могут ослабить всю систему.

Как разработчикам безопасно использовать ECC

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

Нужно использовать поддерживаемые криптографические библиотеки с проверенной историей аудитов.

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

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

Операции, зависящие от секретных данных, следует выполнять с применением методов с постоянным временем выполнения.

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

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

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

Как пользователям криптовалют защитить ключи ECC

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

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

Перед подписанием следует проверять важные сведения о транзакции на надежном экране.

Крупные суммы можно защищать с помощью аппаратной изоляции, политик мультиподписи, лимитов расходов или отдельных уровней хранения.

Не следует импортировать одну сид-фразу во множество приложений.

Резервные копии необходимо проверять, не раскрывая секрет ненадежному устройству.

Обновления кошелька и протокола следует получать через проверенные официальные каналы.

Пример транзакции криптовалюты с подписью ECC

Предположим, что Алиса управляет аккаунтом криптовалюты с помощью приватного ключа ECC.

Ее кошелек создает транзакцию для отправки токенов на адрес Боба.

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

Затем он хеширует или иначе обрабатывает сериализованное сообщение согласно требованиям схемы подписи.

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

Транзакция и подпись отправляются в сеть.

Каждый проверяющий узел получает или восстанавливает открытый ключ Алисы и проверяет подпись.

Узел также проверяет баланс Алисы, nonce, комиссии и все остальные правила консенсуса.

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

Распространенные ошибки при использовании ECC

Одна из распространенных ошибок — считать, что ECC шифрует каждую транзакцию криптовалюты.

Другая — путать открытый ключ с адресом кошелька.

Третья — повторно использовать одноразовое число для подписи ECDSA.

Четвертая — генерировать приватные ключи обычными функциями генерации случайных чисел.

Пятая — принимать не прошедшие проверку точки открытых ключей, предоставленные злоумышленником.

Шестая — считать, что все эллиптические кривые длиной 256 бит взаимозаменяемы.

Седьмая — без экспертной проверки писать собственную арифметику кривых для хранения криптовалют в производственной среде.

Восьмая — повторно использовать один приватный ключ в несвязанных приложениях и сетях.

Девятая — считать, что действительная подпись доказывает финансовую безопасность подписанной транзакции.

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

FAQ

Что означает ECC в криптовалютах?

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

Каково основное применение ECC в криптовалютах?

Главное применение ECC — создание и проверка цифровых подписей, которые подтверждают право отправлять транзакции в блокчейне.

Шифрует ли ECC транзакции криптовалют?

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

Что такое приватный ключ ECC?

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

Что такое открытый ключ ECC?

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

Можно ли узнать приватный ключ по открытому?

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

Что такое задача дискретного логарифмирования на эллиптической кривой?

Это сложная задача восстановления приватного скаляра по базовой точке и соответствующей открытой точке.

Что такое ECDSA?

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

Что такое secp256k1?

secp256k1 — это стандартизированная эллиптическая кривая длиной 256 бит, используемая в Bitcoin, аккаунтах уровня исполнения Ethereum и ряде других криптовалютных систем.

Использует ли Bitcoin ECC?

Да. В Bitcoin используются secp256k1 и ECDSA, а для расходования средств в Taproot — подписи Schnorr на secp256k1.

Использует ли Ethereum ECC?

Да. В аккаунтах уровня исполнения Ethereum используются secp256k1 ECDSA, а валидаторы Proof of Stake применяют подписи BLS на BLS12-381.

Использует ли Solana ECC?

Да. Подписывающие транзакции Solana используют подписи Ed25519.

Что такое Ed25519?

Ed25519 — это схема подписей EdDSA, основанная на математике кривых Эдвардса, связанной с Curve25519.

Что такое подпись Schnorr?

Это схема подписей с полезными свойствами линейности и агрегирования при условии использования безопасного протокола.

Что такое ECDH?

ECDH — это протокол согласования ключа на эллиптических кривых, с помощью которого две стороны могут вычислить общий секрет.

Что такое сжатый открытый ключ?

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

Почему одноразовое число ECDSA должно быть уникальным?

Повторное использование одноразового числа или возможность его предсказать может позволить злоумышленнику вычислить приватный ключ.

Можно ли угадать приватный ключ?

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

Все ли кривые ECC одинаково безопасны?

Нет. Уровень безопасности зависит от параметров кривой, алгоритма, длины ключа, реализации, проверки и известных математических атак.

Можно ли скопировать подпись ECC?

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

Гарантирует ли действительная подпись безопасность транзакции?

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

Могут ли аппаратные кошельки защитить ключи ECC?

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

Можно ли использовать ECC в кошельках с мультиподписью?

Да. Такие кошельки могут проверять несколько подписей ECC или использовать проверенные протоколы агрегирования и порогового подписания.

Могут ли квантовые компьютеры взломать ECC?

Достаточно мощный отказоустойчивый квантовый компьютер мог бы взломать ECC с помощью алгоритма Шора, однако общедоступных машин, способных сейчас сделать это в масштабах криптовалютных систем, нет.

Что придет на смену ECC?

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

Безопасна ли ECC сегодня?

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

Заключение

Криптография на эллиптических кривых — одна из ключевых технологий защиты владения криптовалютой и авторизации транзакций.

Она создает одностороннюю математическую связь между секретным приватным ключом и открытым ключом, которым можно делиться.

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

В Bitcoin используются secp256k1, ECDSA и подписи Schnorr; Ethereum применяет secp256k1 для аккаунтов уровня исполнения и BLS12-381 для валидаторов; Solana использует Ed25519 для подписания транзакций.

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

Безопасность ECC зависит не только от математики кривой.

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

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

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

Поэтому разработчикам криптовалют необходимо защищать существующие ключи и одновременно создавать надежные планы перехода на постквантовую криптографию.
Откат или возможность?
Откат или возможность?Откат или возможность?
Почему BTC ETF привлекли 2,4 млрд $ при ликвидациях

В тренде

Трендовые криптовалюты, которые в настоящее время привлекают значительное внимание рынка

Недавно добавленные

Криптовалюты недавно внесенные в листинг и доступные для торговли