Не думала, что мне когда-то придется писать такой пост, но как показывает практика, многие пользователи, особенно новички, понятия не имеют о том, как на платформе GOLOS работает доступ к блокчейну по ключам и паролям, так что даже в чате техподдержки Голоса, меня попросили написать такой вот гайд.
Как это работает:
Все ключи для управления вашим аккаунтом, основаны на алгоритме шифрования SHA256, разработанном Агентством национальной безопасности США. Этот же алгоритм используется для работы сети Bitcoin и многих других криптографических сетей, к примеру для создания адресов и ключей доступа к кошелькам с целью повышения их безопасности и конфиденциальности, ну и для многих других целей.
Если кому интересно как это все работает - то я нашла в сети познавательное видео:
Как это работает на Голосе:
Но на самом деле, для того чтобы этим пользоваться, совсем необязательно знать весь механизм работы алгоритма (потому что полное раскрытие механизмов его работы потянет на отдельную статью как минимум из трёх частей).
Все, что нам нужно знать (сейчас объяснение будет очень упрощенное для облегчения понимания) - это то, что каждый ключ sha256 состоит из двух половинок - публичной и приватной. Каждая из этих половинок представляет собой определенный набор символов, причем одному конкретному набору символов публичного ключа, соответствует только один конкретный набор символов приватного ключа. Стоит заменить в нем хотя бы один символ - и ключи не состыкуются.
Пример создания такой пары ключей при помощи генератора sha256:
Как мы видим, публичному ключу GLS6PJFFzbHtYEMrTJWhyk5kRbkfu4jPp263y6wuPFZfmoA8fHYNx соответствует приватный ключ 5JEDztYgARH57MLUbAGMhZAwoTf4vD22VcgqDEzcXxgZEsNzhys. Только он, и больше никакой другой. Заменить/добавить/удалить любую букву/цифру в любом из этих ключей - и состыковка не произойдет, а блокчейн отреагирует на это отказом в авторизации.
Зачем все это нужно:
Казалось бы, почему бы не сделать все намного проще, к примеру как на форумах начала нулевых? У админа сайта база с паролями, у каждого пользователя свой пароль, он его вводит, если пароль такой же как в базе - происходит авторизация. Если отличается - давайдосвидания.
Так вот - шифрование таки нужно. Нужно для того, чтобы ваши реквизиты доступа не хранились в блокчейне, на сервере, или еще где-то, где их могли бы украсть или воспользоваться ими без вашего ведома. Еще проще говоря, чтобы админ не полез в базу паролей, не зашел под вашим аккаунтом, взяв пароль из этой базы, и не украл ваши токены из кошелька. Поэтому в блокчейне хранится только ваш публичный ключ, который сам по себе без приватного, абсолютно бесполезен в плане доступа к авторизации. У вас же хранится еще и его приватная часть, которая без публичной, тоже, по сути, бесполезна. И только состыковка публичной части с соответствующей ей приватной половинкой, дает право на авторизацию. В общем, объяснила как смогла =)
Права доступа
Для каждого аккаунта Голоса существует несколько пар таких ключей, и каждая из этих пар дает разные права доступа.
Самый высокий приоритет имеет ключ OWNER - это ключ владельца, дающий права на восстановление утерянного пароля. Далее в порядке снижения уровня идет MASTER (он же главный пароль), выдаваемый Голосом при регистрации, он позволяет выполнять практически любые действия, включая изменение пароля. Еще более низкий приоритет дает активный ключ (ACTIVE), позволяющий полноценно пользоваться аккаунтом, но не дающий права поменять пароли и ключи (читай угнать аккаунт). И самые низкие права доступа, дает постинг-ключ (POSTING), позволяющий только публиковать посты/комменты и апать/флаговать, но не дающий доступа ни к чему больше, включая кошельки.
Есть еще несколько разных узкоспециализированных типов ключей, но для повседневной работы они вряд ли понадобятся.
Еще несколько слов о мастер-пароле.
Несмотря на то, что он выглядит как ключ, (только начинается на "P5"), на самом деле это нечто большее. Это как некая "кодовая фраза" для расшифровки всех остальных ключей, соответвующих аккаунту, c однонаправленной хэш-функцией.
Кто изучал в школе информатику - тот знает, что однонаправленная (или односторонняя) функция легко принимает значение (input) и выдает результат вычисления (output), но трудно работает в обратную сторону - имея результат (output) и функцию, очень сложно (почти невозможно) выяснить вводное значение. То есть, по логике вещей, при помощи мастер-пароля, можно узнать все свои остальные ключи, но при помощи этих всех остальных ключей, даже вместе взятых, невозможно (или настолько трудно, что практически невозможно) узнать мастер-пароль. Если кто не может вспомнить что это такое, односторонние функции в некоторых учебниках могут называться также трудно обратимыми или необратимыми.
Как работает авторизация мастер-паролем, и почему крайне нежелательно так делать:
Когда вы авторизуетесь на голосе при момощи мастер-пароля - система расшифровывает его, извлекает из него все остальные ключи, и подписывает ваши операции/транзакции тем типом ключа, который нужен для той или иной конкретной операции. По сути, мастер-пароль стали отдавать пользователям для упрощения, так как большинство пользователей привыкли на других ресурсах использовать один пароль для одного сайта и начинают путаться в этом сонмище разных ключей. Но тем не менее, пользоваться мастером для повседневной работы, я настоятельно не рекомендую, т-к при этом повышается риск попадания ключа в руки злоумышленника, к примеру при помощи фишинга.
Исходя из всего вышесказанного, я советую для повседневного использования юзать только постинг-ключ, не дающий никаких прав (а значит, если он даже попадет в руки злоумышленника - тот не сможет похитить ни ваш аккаунт ни ваши средства) а все остальные ключи использовать только в том случае, если они понадобятся (к примеру активный для перевода средств или MASTER/OWNER для смены пароля).
Набор ключей, привязанных к вашему аккаунту, можно посмотреть в разделе Кошелек/Разрешения вашего аккаунта:
Внимание: Если кто еще не понял - логиниться в блокчейне Голоса, следует приватной половинкой выбранного вами ключа, потому что публичная там уже и так есть. Сохранять в архив тоже нужно именно приватные ключи.
Это распостраненная ошибка - люди сохраняют публичные ключи вместо приватных, а потом, когда браузер их разлогинивает в силу каких-то причин, к примеру чистки куков/кэша или переустановки операционной системы - пытаются авторизоваться публичными. Конечно же ничего у них не выходит, а в некоторых случаях (когда был утерян или не был сохранен еще и мастер-пароль), заканчивается полной утратой доступа к аккаунту.
Чтобы получить доступ к приватной части ключей - нужно на странице с ключами, нажать кнопку "показать приватный ключ" (иногда для этого система может вас попросить еще раз дополнительно авторизоваться паролем или приватным ключом более высокого приоритета).
Если что непонятно, или наоборот заинтересовало, или я где-то допустила ошибку - пишите в комментариях, я отвечу на все вопросы, как обычно.
На этом всё, подписывайтесь, ставьте лайки/апы, присылайте донаты, любите Голос.
Мои кошельки для донатов здесь:
Ethereum (ETH)
0x0ced481b9a6f77a64e29408facb038227490cfd0
Bitcoin (BTC)
1FpRpNFNYwpCJpZCfYQ6WvwcJQ66ehG1ec
GOLOS
lindsay
VIZ
lindsay
@lindsay Хорошая информация для новичков.
P. S. Так зачем вообще выводить публичные ключи, если это приводит к тому, что их копируют...
@denis-skripnik да и для старичков, которые даже после прочтения поста сделали умное лицо, кивнули, нихрена не поняли и поставили лайк)
это я про себя
@chika25 😊😊😊
Прочти еще раз медленнее и все поймешь.
@denis-skripnik В качестве обучающего пособия как раз это неплохо что они выводятся. Пусть у людей формируется понимание что есть приватные а есть публичные.
@lindsay отличная статья. спасибо большое.
@lindsay, Поздравляю!
Ваш пост был упомянут в моем хит-параде в следующих категориях:
@lindsay, привет, Настя. Приходи на Serey, появилась возможность реги без прохождения KYC https://serey.io/uk/signup
Курс полцента, трендовые посты набирают около 2000 монет.