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

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

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


Хэш-функция

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

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


Криптография с открытым ключом (PKC)

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

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

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

В некоторых случаях цифровые подписи могут включать шифрование, но не всегда. Например, блокчейн биткойна использует PKC и цифровые подписи, но, вопреки распространенному мнению, в этом процессе нет шифрования. Технически Биткойн реализует так называемый алгоритм цифровой подписи на основе эллиптической кривой (ECDSA) для аутентификации транзакций.


Как работают цифровые подписи

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

Хеширование данных

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

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

Подпись

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

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

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

Аутентификация

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

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

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


Почему цифровая подпись важна?

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

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

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

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


Варианты использования

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

  • Информационные технологии. Для повышения безопасности систем Интернет-коммуникаций.

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

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

  • Здравоохранение. Цифровые подписи могут предотвратить мошенничество с рецептами и медицинскими записями.

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


Лимит

Основные проблемы, с которыми сталкиваются системы цифровой подписи, основаны как минимум на трех требованиях: 

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

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

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


Электронная подпись и цифровая подпись

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

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


Заключить

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

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

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