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

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

Ответы (1)

(Я оставил это как ответ, а не вики, чтобы поощрять несколько ответов, поскольку могут быть другие объяснения, которые лучше находят отклик у людей)

Для краткости этот ответ предполагает, что базовая криптография Ethereum не была взломана.

TLDR:

  • закрытый ключ = единственный способ получить доступ к учетной записи Ethereum
  • пароль = защищает закрытый ключ с помощью шифрования; закрытый ключ + пароль -> зашифрованный ключ. Зашифрованный ключ + пароль -> закрытый ключ
  • мозговой кошелек = набор символов, которые генерируют приватный ключ; фраза мозгового кошелька -> закрытый ключ
  • парольная фраза восстановления = набор слов, которые генерируют серию закрытых ключей; парольная фраза восстановления -> несколько закрытых ключей
  • кошелек = программа для использования блокчейна; использует ключи для управления учетными записями.

Закрытый ключ

Учетная запись Ethereum создается с использованием 256-битного закрытого ключа . 256 бит — это последовательность из 256 двоичных цифр (0 и 1). Закрытый ключ является основой для подписания транзакций в Ethereum; только тот, у кого есть закрытый ключ, имеет право управлять учетной записью Ethereum. Если кто-то усердно защищает свои закрытые ключи, то доказательство владения закрытым ключом также служит эффективным механизмом аутентификации . Это связано с тем, что астрономически маловероятно, что кто-то выбрал те же случайные биты, что и вы, — 1 из 2^256 или около 1 с последующими 77 нулями; количество песчинокна планете всего около 1, за которой следуют 18 нулей, а количество атомов в среднем человеке, если мне не изменяет химия, порядка 1, за которой следуют 27 или 28 нулей. Нам пришлось бы сгенерировать в среднем 2^128 ключей (~3 с последующими 38 нулями), прежде чем мы ожидаем увидеть два идентичных ключа из-за парадокса дня рождения .

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

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

Пароль

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

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

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

Мозговой кошелек

Напомним, закрытый ключ состоит из 256 единиц и нулей. Один из способов сгенерировать закрытый ключ — подбросить монету 256 раз и сохранить 0 для каждой решки и 1 для каждой орла. Это утомительно. Вместо этого было бы полезно, если бы мы могли взять произвольный объем данных и превратить его в кажущийся случайным поток из 256 бит. Как оказалось, наше нынешнее понимание математики предполагает, что некоторые хеш-функции (криптографически безопасные) обладают этим удобным свойством. Таким образом, мы можем сделать одну из этих функций чем-то «запоминающимся» для человека, например, 396 ЧРЕЗВЫЧАЙНЫМ [Куры#кенс Предположительно ПРЕДПИСАТЬ ЗЛОВЕЧНЫЕ ПАРЫ!(как оказалось, это все еще гораздо меньше энтропии при использовании моего связанного программного обеспечения, чем может использовать 256-битная хэш-функция). Запомнив эту фразу и используя программное обеспечение, которое превращает фразу в соответствующий закрытый ключ (а также открытый ключ и учетную запись), нет необходимости хранить копию закрытого ключа — его можно сгенерировать в любое время. Обратите внимание, что люди ужасно генерируют пароли . Если вы не уверены, что создаете пароли безопасным способом с достаточной энтропией, я бы не рекомендовал использовать мозговой кошелек . Плагин: мой генератор паролей— это попытка упростить процесс генерации умеренно безопасных парольных фраз, но я не гарантирую, что он работает корректно. Источник преднамеренно мал, чтобы его было легко проверить. Эта программа не предназначена для использования с криптовалютами.

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

Пароль для восстановления

Делая мозговой кошелек еще на один шаг вперед, некоторые кошельки используют стандарт для создания нескольких учетных записей, используя только одно (псевдо или действительно) случайное значение. Обратите внимание, что мы можем взять любое число и представить его в виде последовательности слов. Например, если у нас есть следующее: Ноль = 0, Один = 1, Два = 2 и т. д., мы можем представить любое число. Например, сто двенадцать (112) можно хранить как one one two. Вместо того, чтобы использовать всего десять слов, мы можем хранить больше цифр за раз, используя больший словарный запас. Таким образом, парольные фразы восстановления позволяют превратить относительно короткую последовательность слов в закрытый ключ. Но вместо того, чтобы использовать этот ключ для создания ОДНОЙ учетной записи, его можно использовать для создания серии. Вот упрощенный пример:

  • d72979c91b77462791012dd218d98025ca647e0bc9a34e81197e55c3bba033c8
  • 0581f7d25cc2e7e23a988ffd79118e23f87f5b2dd4f555b703172b4b346490f3
  • 76cb09e89fa33377a660877308ce1840b30504c7e3e8fdd0ed8d67d98d5ad393

Это не случайная последовательность шестнадцатеричных чисел. Если бы вы знали, что это хэши, сгенерированные с использованием алгоритма sha256 с солью , stackexchangeза которой следуют строки 1, 2, и 3, вы бы знали, что следующее значение в последовательности является совершенно детерминированным значением b777f9cf9036352c9adf739668b2be0cd8ace1b355122fe56c5ec9aaa9c00a95, хэшем sha256 stackexchange4. Следовательно, парольная фраза восстановления для иерархического детерминированного (HD) кошелька — это все, что необходимо для повторного создания закрытых ключей. Как и в мозговом кошельке, «пароль» используется для генерации закрытых ключей и должен храниться в безопасности.

Бумажник

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