Криптографические подписи — краткий экскурс для новичков

1533
Просмотры

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

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

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

История цифровых подписей

Первая концепция алгоритмов, которые легли в основу цифровой подписи, принадлежит Уитфилду Диффи и Мартину Хеллману. Она описана в статье 1976 года. В этой работе решалось несколько проблем криптографии, в частности, введены функции, которые составлены так, что их легко вычислить в одном направлении и чрезвычайно трудно вычислить в обратном.

Впоследствии появился первый примитивный алгоритм цифровой подписи, известный как RSA. Это самый распространенный криптографический алгоритм, который используется до сих пор и доминирует в безопасной передаче данных через Интернет. Вскоре после этого были разработаны известные схемы цифровой подписи, такие как Подпись Лэмпорта и Деревья Меркля.

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

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

Обычно алгоритм цифровой подписи состоит из трех компонентов:

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

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

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

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

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

Разновидности криптографических подписей

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

Подписи Лампорта

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

Подписи Лампорта могут быть построены из современных криптографических хеш-функций, таких как квантовоустойчивые Skein и Keccack.

Для создания секретного ключа используется генератор случайных чисел (2×256). Для создания открытого ключа закрытый ключ хэшируется. Сообщение (транзакция) также хэшируется, для каждого бита в хэше берется число из закрытого ключа. Из этих чисел получается подпись.

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

Алгоритм цифровой подписи RSA

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

Криптографические подписи  — краткий экскурс для новичков

ECDSA

Алгоритм цифровой подписи на эллиптических кривых (ECDSA) используется во многих криптовалютах. Он используется в биткоине, пока тот не перейдет к подписям Schnorr. ECDSA более эффективен, чем RSA, благодаря гораздо меньшему размеру ключа. Это оптимальный выбор для блокчейнов, которым необходимо уменьшить раздувание размера цепи и сделать передачу и просмотр данных более быстрым.

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

384-битный ключ ECDSA считается достаточно безопасным для самой секретной правительственной информации АНБ.

Кольцевая подпись

Кольцевая подпись — это тип цифровой подписи, которая запутывает: кто фактически подписал транзакцию, а кто просто находится в сети. Все объединяются в одну группу (кольцо) и смешиваются. Невозможно определить, кто является истинным подписавшим транзакцию. Это обеспечивает анонимность, поэтому используется криптовалютами на CryptoNote, включая Monero.

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

Подписи Шнорра

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

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

Более того, эти подписи могут повысить конфиденциальность, стимулируя пользователей использовать CoinJoin, метод смешивания монет.

Наконец, подписи Шнорра могут расширить возможности мультиснг-транзакции: переводы с множеством подписей будут занимать столько же места, сколько и с одной.

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