#переводсинвестиционного

Что такое приватный и публичный ключ кошелька

Как работает блокчейн и
как происходит шифрование криптовалюты
(на примере Ethereum / BSC)
Кошелёк и счёт
Сначала разберёмся в понятиях, в которые многие путаются и смешивают их.

Что такое криптовалютный кошелёк и что такое криптовалютный счёт/аккаунт? Это разные вещи, несмотря на то, что это часть единого целого

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

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

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

Как работает блокчейн и как шифруется информация

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

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

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

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

Что такое хэш транзакции

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

Хэш транзакции в сети Binance Smart Chain выглядит так:

0x479a1913074449fe3a03f0f22da527727e48de66ebc386d945f88d88b3f52cda

Это набор цифр и букв - захэшированная транзакция. Она закодирована и не видно никаких подробностей - ни получателя, ни отправителя, ни суммы, ни других деталей
Хэширование транзакции
Подробно о том, как читать информацию в блокчейне
мы описали в одной из предыдущих инструкций "Как пользоваться обозревателем блоков BscScan.com на Binance Smart Chain"

Что такое публичный ключ криптовалютного счета

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

В Ethereum (и Binance Smart Chain как хард-форка Ethereum) открытый ключ получается на основе закрытого ключа и состоит из 128 шестнадцатеричных символов. Затем берётся хэш этого по алгоритму “SHA3” (Keccak-256) (он состоит из 64 символов), берутся последние 40 символов и добавляете в начало 0x, что дает вам адрес из 42 символов.

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

И выглядит адрес в сети BSC вот так (это то же самое что счёт или аккаунт):

0xB8F1dB13B36dD64A7fcCD22222Bd9a4444Be2e66

Тут символы 0x + 40 шестнадцатеричных символов (всего 42 символа).

Иногда используют ENS-домены (Ethereum Name Service) - это платный сервис, который позволяет присвоить данному адресу человекопонятное имя и даже аватар. В этом случае будет работать и 42-значный адрес и адрес типа yourname.eth
ethereum name service
С помощью публичного ключа и адреса можно раскодировать транзакцию
Хэширование транзакции
Если мы применим публичный ключ (адрес) не к отдельной транзакции, а ко всему блокчейну - то мы увидим всё, что связано с этим ключём (адресом) - какие транзакции были с его участием, сколько пришло, сколько ушло и какой сейчас остаток. Всё это записано в блокчейне и это то же самое, что посмотреть выписку по вашему банковскому счёту - там все операции и остатки
Публичный ключ
Публичный (открытый) ключ и адрес (аккаунт, счет) - это почти одно и то же. Публичный ключ служит для расшифровки публичной информации и участвует в генерации адреса получателя. Адрес могут увидеть все, кто например, отслеживает определенную монету или транзакцию этой монеты в блокчейне, если она попадала на данный адрес

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

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

afdfd9c3d5555ef696594f6aaaaaa59e72dcd697e2a7521b1578140422a4f890

Тут 64 знака - цифры от нуля до десяти и латинских букв от A до F. Он создаётся случайным образом при генерации счета и не может быть изменен. Тот кто владеет приватным ключем - может получить доступ к активам на счете из любой точки мира и с любого устройства. Приватный ключ доступен только создателю изначально - поэтому очень важно его безопасно создать и не менее важно безопасно хранить и использовать. Потеря закрытого ключа ведёт к полной потере средств (они просто остаются лежать в блокчейне и никто ими не сможет воспользоваться), потому что восстановить приватный ключ или подобрать его невозможно. Закрытый ключ находится у создателя аккаунта и хранится в блокчейне для проверки и его идентификации и валидации

Итак, что мы имеем:

  • пара ключей - публичный и приватный ключ. Они генерируются при создании счета и служат для доступа к нему
  • адрес в сети (или открытый профиль владельца счета). Генерируется из публичного ключа

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

Логин в данном ваше имя и оно публично доступно всем. Это как адрес в блокчейне

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

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

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

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

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

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

а) приватный ключ в стандартном виде. Просто 64 символа, ничем не защищенных

приватный ключ = просто приватный ключ и больше ничего

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

мнемоническая фраза = приватный ключ + дополнительное шифрование в фразу + дополнительное пользовательское слово

в) файл-хранилище ключа (JSON-файл). Это во-первых, дополнительно зашифрованная версия приватного ключа + защищенная пользовательским паролем. Формат файла следующий: UTC + -- + DATE_CREATED + -- + YOUR_ADDRESS_WITHOUT_THE_Ox.

файл-хранилище = приватный ключ + дополнительное шифрование + пользовательский пароль

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

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

браузерный кошелек = файл-хранилище + дополнительный пользовательский пароль

д) мобильный или десктопный кошелёк Myetherwallet/MyCrypto и Wallet Link / Wallet Connect

десктопный кошелёк = файл-хранилище + хранение в безопасном локальном хранилище + пользовательский пароль

е) аппаратный кошелёк Ledger/Trezor

аппаратный кошелёк = файл-хранилище + хранение в отдельном хранилище с bluetooth-доступом + пользовательский пин-код

Как видно безопасность увеличивается от "а" к "е" - система доступа усложняется для взлома, но она становится проще для пользователя

В данном случае все указанные виды кошельков являются лишь интерфейсом доступа к вашему приватному ключу - вы лишь в начале использования подтверждаете доступ к своему счету и далее используете варианты г), д) и е) с паролем или пин-кодом. При подтверждении транзакций они не показывают и не передают в сеть ваш закрытый ключ и это максимально безопасно
Приватный ключ нужно использовать только тогда, когда не получилось восстановить доступ к счету более безопасными способами (варианты от "е" до "б"). Нельзя допускать использование закрытого ключа в качестве основного способа доступа. Приватный ключ выдаётся лишь единожды и нельзя его изменить, если он скомпроментирован (если он стал известен кому-либо кроме владельца аккаунта)
И когда вы пытаетесь восстановить доступ к вашему счёту например в кошельке MyEtherWallet или MyCrypto то вам обязательно укажут на безопасные и небезопасные способы - не игнорируйте эти предупреждения
myetherwallet приватный ключ
MyCrypto
Всё это теория, но есть не менее важная практика, которая в некоторой степени различается при процессах взаимодействия в закрытыми (приватными ключами) на разных стадиях:

  • стадия генерации ключей
  • стадия хранения ключей
  • стадия использования ключей

Это максимально подробно будет рассмотрено в следующих статьях
Насколько было полезно?

Советуем также посмотреть...