Глоссарий / Кошельки и хранение
Кодовая фраза (passphrase)
Другие названия: кодовая фраза, passphrase, 25-е слово.
- Что такое кодовая фраза (passphrase)?
- Кодовая фраза (passphrase) представляет собой дополнительный секрет, который добавляется к словам восстановления и создает совершенно другой кошелек, причем проверить, правильно ли введена эта фраза, невозможно.
Определено в BIP-39.
Кодовая фраза (passphrase) подмешивается к словам до того, как появляется какой-либо ключ, поэтому изменение одного символа дает совершенно новый и пустой кошелек. Ничто не отвергает неверный ввод, потому что любая возможная строка является допустимым вводом. Это свойство составляет всю суть функции и одновременно представляет собой самый распространенный способ потерять с ней деньги.
Как это работает
BIP-39 определяет кодовую фразу как необязательное расширение соли, используемой при преобразовании слов в сид. Соль представляет собой буквальный текст "mnemonic", к которому дописана ваша кодовая фраза, и эта пара проходит 2048 раундов PBKDF2 с HMAC-SHA512. Измените кодовую фразу, и каждый из 512 бит выходных данных изменится, что изменит мастер-ключ, что изменит каждый адрес, который кошелек когда-либо покажет.
Отсюда следуют три последствия, и все три удивляют людей.
Неверного ответа не существует. Введите кодовую фразу с заглавной буквой, которую вы не использовали в прошлый раз, и кошелек успешно откроется, покажет нулевой баланс и выдаст вам новые адреса для получения. Ничего не сломано, и ничто вас не предупреждает. Отправка биткоинов на такой кошелек превращает ошибку в постоянную.
Каждый символ имеет значение ровно в том виде, в каком он введен. Регистр, пробелы, знаки препинания и буквы с диакритическими знаками входят в секрет, включая пробел в конце, который вы не видите. Кошельки нормализуют текст до Unicode NFKD перед хешированием, что устраняет большинство различий в кодировке диакритических знаков, но ничто не спасет фразу, которую вы помните лишь приблизительно.
Растягивание слабое. Две тысячи сорок восемь итераций PBKDF2 были дешевы в 2013 году и сейчас почти ничего не стоят. Злоумышленник, у которого уже есть ваши записанные слова, может проверять кодовые фразы из словаря с огромной скоростью, поэтому "bitcoin2020" или кличка питомца добавляют часы защиты, а не годы. Кодовая фраза должна быть длинной и не поддающейся угадыванию, иначе это только видимость.
Прозвища тоже вводят в заблуждение. Название «25-е слово» наводит на мысль, что оно берется из списка слов BIP-39 и охватывается контрольной суммой. Ни то, ни другое не верно: это произвольный текст, не проверяемый, отсутствующий в списке и невосстановимый.
Почему это важно при покупке биткоина
Кодовая фраза существует для одной конкретной угрозы: когда кто-то физически завладел вашим устройством или вашими записанными словами. Все остальное в вашей настройке уже охватывает удаленных злоумышленников.
Для старого оборудования эта угроза не гипотетическая. Оба устройства Trezor, обзоры которых есть на этом сайте, Model One и Model T, не имеют Secure Element, и их производитель прямо заявляет, что злоумышленник с устройством в лаборатории может извлечь сохраненный сид. Кодовая фраза является задокументированной мерой защиты, потому что извлеченный секрет сам по себе открывает не тот кошелек. Те же рассуждения применимы к письменной резервной копии, найденной при краже со взломом или прочитанной гостем.
Цена этого в том, что восстановление теперь требует двух независимых секретов, и второй обычно существует только в вашей голове. Именно отсюда происходит большинство потерь кодовых фраз: не кража, а человек, который умер, забыл или переехал. Если вы используете кодовую фразу, запишите ее и храните в другом месте, отличном от места хранения слов, так, чтобы ни одно место не содержало оба секрета и никакой единичный случай не уничтожил оба. Trezor ограничивает ввод 50 символами, поэтому планируйте длину, которая укладывается в этот предел.
Используйте ее, когда ваши запасы существенно изменили бы вашу жизнь и ваша реальная угроза исходит от человека, а не от хакера. Откажитесь от нее, пока вы только учитесь, пока ваш баланс невелик или пока у вас нет плана на случай, если вы станете недоступны.
Кошелек на случай принуждения, который действительно работает
Функция скрытого кошелька помогает, только если видимый кошелек выглядит правдоподобно, и большинство людей понимает это наоборот.
Настройте устройство без кодовой фразы и положите на него реальную сумму, которой можно распоряжаться. Несколько сотен долларов в биткоине, которые время от времени двигаются, выглядят как чей-то кошелек. Пустой стандартный кошелек выглядит ровно тем, чем он является: доказательством того, что где-то существует кодовая фраза.
Храните сбережения в кошельке с кодовой фразой и не трогайте его. На Trezor ввод кодовой фразы открывает скрытый кошелек как отдельный сеанс, а если оставить поле пустым, происходит возврат к приманке без каких-либо указаний на существование другого кошелька.
Будьте честны насчет предела. Это защищает вас от того, кто найдет или украдет устройство и станет искать, что на нем есть. Это защищает вас гораздо меньше от того, кто знает о существовании функции, а в ряде юрисдикций активная ложь властям об активах является отдельным правонарушением, не связанным с биткоином. Молчание является позицией, которую можно отстоять. Ложное заявление таковой не является.
Кодовая фраза vs двухфакторная аутентификация
Кодовая фраза является вторым секретом, а не вторым фактором в том смысле, в каком банки используют этот термин. Двухфакторная аутентификация представляет собой проверку, выполняемую сервером, который может отклонить вас, ограничить число попыток, заблокировать учетную запись и позволить службе поддержки восстановить доступ. Кодовую фразу никто не проверяет, ее нельзя сбросить, она допускает бесконечные попытки подбора в автономном режиме со стороны любого, у кого есть ваши слова, и молча открывает другой кошелек, когда она неверна. Это сравнение льстит ей ровно в неверном направлении.
Кодовая фраза vs резервная копия Shamir
Кодовая фраза добавляет секрет; резервная копия Shamir делит один секрет. Они отвечают на разные вопросы. Кодовая фраза спрашивает, как сделать найденную резервную копию бесполезной, и делает это, требуя нечто такое, чего у нашедшего нет. Shamir спрашивает, как пережить утрату резервной копии, и делает это, превращая один лист в несколько, из которых нужны лишь некоторые. Их сочетание возможно и умножает способы, которыми восстановление может потерпеть неудачу, поэтому выбирайте ту проблему, которая у вас действительно есть.