Глоссарий / Кошельки и хранение
Кошелек из фразы
- Что такое кошелек из фразы?
- Кошелек из фразы (brain wallet) превращает запомненную фразу прямо в приватный ключ, вычисляя ее хеш; исследователи опустошили такие кошельки в массовом порядке, и ни один поддерживаемый кошелек больше не предлагает такую возможность.
Привлекательность была очевидна: запомнить предложение, пересечь границу, не неся ничего, и воссоздать кошелек на другой стороне. Изъян был столь же прост, потому что люди выбирают угадываемые предложения, а злоумышленник может бесплатно проверять кандидатов офлайн. Академическое исследование 2016 года выявило 884 кошелька из фразы, содержавших 1806 биткоинов в период с 2011 по 2015 год, и все, кроме 21, были опустошены.
Как это работает
Статус: от кошельков из фразы отказались после появления публичных инструментов взлома в 2015 году, и ни один кошелек в текущем сопровождении не предлагает эту возможность. Их полностью заменили фразы восстановления, генерируемые устройством.
Построение занимает одну строку кода. Возьмите фразу, примените к ней SHA-256 и рассматривайте полученные 32 байта как приватный ключ. Здесь нет соли, нет случайного компонента и нет намеренной медлительности. Поэтому одна и та же фраза дает один и тот же ключ каждому человеку на земле, который когда-либо о ней подумает, а это превращает секрет в задачу поиска.
Злоумышленники используют это напрямую. Они составляют список всех адресов, на которых когда-либо был баланс, загружают его в быструю структуру проверки принадлежности, а затем хешируют фразы-кандидаты миллионами: тексты песен, стихи из священных книг, цитаты из фильмов, пароли из старых утечек и все строки, в которые эти источники можно переставить. Каждый хеш сверяется со списком адресов за микросекунды. Ryan Castellucci продемонстрировал атаку на DEF CON 23 в августе 2015 года и опубликовал brainflayer, инструмент, который сделал эту технику обыденной. Та же исследовательская группа насчитала около дюжины конкурирующих «осушителей», следивших за новыми пополнениями, поэтому пополненный кошелек из фразы обычно опустошали в течение дня, а часто за минуты.
Выбор фразы человеком является той частью, которую нельзя исправить. Даже предложение, которое вы считаете оригинальным, занимает пространство поиска, неизмеримо меньшее, чем 2 в степени 256, которое занимает случайный ключ, а злоумышленнику нужны только те фразы, которые люди действительно выбирают.
Где это встречается
Кошельки из фразы остались в прошлом, но идея возвращается под новыми названиями, поэтому ее стоит узнавать. WarpWallet, опубликованный Keybase в 2014 году, пытался спасти концепцию с помощью scrypt и PBKDF2 плюс адрес электронной почты в качестве соли, что повышает стоимость каждой попытки, не меняя того факта, что входные данные выбрал человек.
Живая путаница связана с заучиванием настоящей фразы восстановления. Двенадцать слов, сгенерированных аппаратным кошельком, несут 128 бит машинной энтропии и остаются стойкими независимо от того, заучите вы их дополнительно или нет. Фраза, которую вы придумали, несет ту энтропию, которая есть в вашем воображении, а ее гораздо меньше, чем кажется. Если сайт, приложение или инструмент «пользовательской фразы для красивого адреса» просит вас ввести придуманное вами предложение и обещает взамен кошелек, закройте его.
Кошелек из фразы vs кодовая фраза
Кошелек из фразы содержит весь секрет целиком; кодовая фраза (passphrase) BIP-39 является дополнительным фактором, добавленным поверх сгенерированных машиной слов. Это различие определяет атаку. Чтобы перебрать кошелек из фразы, противнику нужны лишь список слов и электричество, потому что адреса публичны. Чтобы перебрать кодовую фразу, противник должен уже располагать вашими словами восстановления, а значит, атака начинается только после физической компрометации. Слабый человеческий ввод опасен в обоих случаях, но только один из них открыт всему интернету с момента пополнения.