Алгоритм цифровой подписи на основе эллиптической кривой ECDSA

Алгоритм цифровой подписи на основе эллиптической кривой ECDSA

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

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

В соответствии с этой схемой работы ECDSA гарантирует в первую очередь следующее:

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

Концепцию криптографии на основе эллиптических кривых предложили, — математики Нил Коблиц и Виктор С. Миллер в 1985 году. Официально концепцию ECDSA представил в 1992 году канадский математик и криптограф Скотт Ванстоун.

Благодаря этим двум характеристикам ECDSA считается безопасным стандартом для развертывания систем цифровой подписи. Их использование сегодня настолько разнообразно, что они применяются почти во всех компьютерных областях. Алгоритм ECDSA в 1999 г. был принят как стандарт ANSI, в 2000 г. — как стандарт IEEE и NIST. Также в 1998 г. алгоритм был принят стандартом ISO. А также, инфраструктура сертификатов безопасности SSL y TLS Internet активно использует ECDSA.

Биткоины существуют в качестве записей в блокчейне, копии которого распределяются сетью связанных компьютеров. «Владеть» биткоином означает иметь возможность передавать контроль над ним другому пользователю, создавая запись передачи в блокчейне. Доступ к паре ключей ECDSA – открытому и закрытому. ECDSA имеет отдельные процедуры для подписи и для верификации. Каждая процедура – это алгоритм, состоящий из нескольких арифметических операций. Алгоритм подписи использует закрытый ключ, алгоритм верификации – открытый ключ.

Как это работает ECDSA 

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

графический пример ECDSA

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

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

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

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

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

ECDSA и блокчейн:

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

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

  • Безопасная система, — Сатоши решил использовать стандарт эллиптической кривой SECP256k1 для Биткойна. Эта эллиптическая кривая имеет очень хорошо зарекомендовавшую себя безопасность, поэтому ее можно было применять идеально.
  • Вычислительные затраты на создание ключей и проверку подписей очень низки. Это позволяет генерировать бесконечные открытые ключи. Однако 256-битные ключи ECDSA очень обширны. Учитывая это, Накамото решил реорганизовать открытые ключи, чтобы сделать их короче. Используя кодировку Base58 y хэш-функций как SHA-256 и RIPEMD-160, уменьшив размер открытых ключей и создав адреса биткойнов.
  • Например, этот адрес: 1PfS6w6MonCT976xe2jD9tqwo8QkDnonRW.

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