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

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

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

Из 1-й статьи ( https://www.blockchain-council.org/blockchain/how-does-blockchain-use-public-key-cryptography/ ) я понимаю, что закрытый ключ отправителя используется для подписи цифровой транзакции и открытый ключ отправителя используется майнером/получателем для проверки подписи отправителя.

Однако во второй статье, которую я прочитал ( https://www.ibm.com/support/knowledgecenter/en/SSB23S_1.1.0.14/gtps7/s7pkey.html ) о криптографии с открытым ключом, все наоборот; сначала с помощью открытого ключа, а затем закрытого ключа. Прикрепил картинку со второй ссылки:

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

Заранее спасибо за ваш вклад...

Ответы (3)

Что я неправильно понимаю?

Вы смешиваете несколько разных применений криптографии, несколько разных целей:

  • аутентификация
  • безотказность
  • конфиденциальность
  • доказательство честности

Криптография в целом

Цели

Конфиденциальность

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

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

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

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

Типы шифрования

Асимметричный

Асимметричность означает, что вы используете разные ключи для шифрования и дешифрования. Существует как закрытый ключ, так и открытый ключ. отсюда и название «криптография с открытым ключом».

Симметричный

Напротив, примером симметричного (не асимметричного) алгоритма является DES , который является симметричным алгоритмом шифрования, поскольку существует только один ключ, один и тот же ключ используется как для шифрования, так и для дешифрования. Ключ является общим «секретным ключом» — отсюда и названия «криптография с секретным ключом» или «криптография с общим ключом».


Криптография в биткойнах

Из того, что я читал, Биткойн использует

  • Хэш-алгоритмы
    • SHA-256 для подтверждения работы
  • Цифровые подписи
    • ECDSA для подписи транзакций

Обратите внимание, что ECDSA асимметричен.

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


Рекомендации

так что Биткойн использует метод «аутентификации», который вы упомянули правильно? а не метод «Конфиденциальность». В другом ответе MCCCS на этот вопрос говорится, что «асимметричное шифрование» не используется Биткойном; но ваш ответ предполагает, что «мы создаем криптографический хэш сообщения». Не уверен, что я слишком много думаю об этом!
@DCH: алгоритм, используемый для криптографического хэша, является «односторонним» или «лазейным» алгоритмом, а не алгоритмом шифрования. Асимметричное шифрование используется для создания цифровых подписей. См. en.bitcoin.it/wiki/How_bitcoin_works . «Криптография с открытым ключом» — это другое название «асимметричного шифрования». См. en.wikipedia.org/wiki/Public-key_cryptography .

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

Вторая статья посвящена асимметричному шифрованию . Это для шифрования данных, а не для аутентификации. Это не то, что использует Биткойн. (См. Также: ECIES)

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

Эти две статьи говорят о двух очень разных вещах.

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

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