Welcome, Guest. Please login or register.

Author Topic: О пароле к кошельку (passphrase and account)  (Read 76 times)

0 Members and 1 Guest are viewing this topic.

Offline dokhes

  • Fresh Nxter
  • *
  • Posts: 18
    • View Profile
О пароле к кошельку (passphrase and account)
« on: February 01, 2014, 08:46:03 AM »
На форуме bitcointalk.org постоянно всплывает вопрос про пароль к кошельку. Монеты с аккаунтов вида 12345 и подобных естественно давно уже сделали ноги. Одна из таких историй:
Quote
один чел сделал для пробы кошелёк с паролем "santabarbara", положил 100 NXT. Через несколько СЕКУНД монет там уже не было, т.к. сейчас запущены боты, которые по спец. словарям нагенерили приватных ключей, и отслеживают каждый новый перевод денег на соответствующие этим ключам аккаунты, и сразу выводят монеты.

Если не погружаться в детали, то в первом приближении все очень просто. Генери пароль посложней (обычно советуют длиннее 30 символов, случайно выбранных, образующих максимально неаналитическую комбинацию для потенциального взломщика; я делаю с запасом под сотню). Следи за защитой компьютера от вирусни типа malware.

ZeroTheGreat писал:
Quote
Существует 2 в степени 64 непубличных аккаунтов, которые открываются пассфразами из символов UTF-8 комбинацией ЛЮБОЙ длины: подсчитывается хэш пассфразы, почитай о хэш-функциях.

После первой выходящей транзакции с аккаунта, он становится публичным и записывается так, что публичных может существовать 2 в 256 степени. Так что хотя бы одна выходящая транзакция (скажем, алиас) — тоже способ повысить общую защиту.

2^64, 2^256 — это примерно обратная сторона вероятности наткнуться на коллизии: твоя фраза А и чья-то фраза Б дадут доступ к одному и тому же акку (с такой же примерно вероятностью у тебя могут "увести" выбранный приватный ключ Биткойна, угадав/сгенерировав его). Неаналитичность пароля защитит от социнженерных атак, а 30+ символов унесут угрозу успешного брутфорса (подбор пассфразы перебором) далеко в будущее (и хотя ты тресни, есть вероятность подобрать с первой попытки пароль любой сложности, в криптомире надо помнить о всех рисках, которые ты несёшь; хотя с другой стороны вероятность того, что мошенник сможет увести у тебя средства, обманув регулятора в случае фиата, пожалуй, повыше, чем вероятность брутфорса сложной фразы в обозримом будущем).

В моем понимании складывается так: я определяю пассфразу, пускай даже 500 символов  :)(понятно, что есть разумный уровень, определяемый сегодняшним технологическим уровнем взломщиков, а это 70...100 символов, впрочем для KeePass нет разницы). Символы могут быть любые Unicode в кодировке UTF-8. Т.е. не только спецсимволы, но и китайские иероглифы, русские буквы и т.д. Пассфраза может быть любой длины, теоретически от 1 до бесконечности, практически не менее 70 символов. Из пассфразы вычисляется хеш фиксированной длины 256 бит (он же - публичный ключ пользователя). Из любого пароля, даже однобуквенного, получится 32 байта = 256 бит = 2^256 аккаунтов.

По хешу открывается доступ в аккаунт. Если аккаунт непубличный (с него не было ни одной исходящей транзакции, входящие не в счет, и в блокчейне не хранится его публичный ключ), то для доступа к нему используется хеш, усеченный до 8 байт = 64 бит. Если же аккаунт публичный (была хотя бы одна исходящая транзакция, например комиссия за алиас или перевод монет на другой аккаунт), то для доступа к аккаунту хеш используется целиком, все 256 бит.

Номер кошелька - это видимая часть публичного ключа пользователя (64 бита из 256-ти). Почему номера аккаунтов разной длины, к примеру один содержит 19, а другой 20 десятичных цифр? Потому что не отображаются впереди идущие незначащие нули, в общем случае номер аккаунта может иметь длину от 1 до 20 десятичных цифр. Наименьший возможный номер аккаунта 2^0=1 (длина номера 1 десятичная цифра), наибольший возможный номер аккаунта 2^64 = 18.446.744.073.709.551.616 (длина номера 20 десятичных цифр).
« Last Edit: February 06, 2014, 07:02:32 AM by dokhes »