Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
Парольная фраза (passphrase), часто называемая “кодовой фразой” или “25 словом”, является частью предложения BIP-39 и создает дополнительный слой безопасности для вашего сида. Благодаря парольной фразе, пользователь может создать несколько кошельков на основе одной и той же сид-фразы. Кроме того, без знания парольной фразы, получить доступ к биткоинам, зная только 12 или 24 слова, будет невозможно. Функцию парольной фразы поддерживает множество кошельков, например, Electrum, Sparrow Wallet, Samourai, ColdCard, Trezor и многие другие.
Изначально перевод появился на сайте 21ideas: https://21ideas.org/passphrase/
Существуют различные подходы к созданию хорошей кодовой фразы для вашего кошелька. Вы можете выбрать что-то, что быстро набрать, но не так легко запомнить, например “5Xai1WhSYu”, или выбрать предложение, которое легко запомнить, но требуется больше времени для ввода в Trezor, например “Buying a Trezor was the wisest choice I ever made”.
Другой вариант - составить последовательность случайных слов, например “correct horse battery staple”. Все зависит от того, что вам легче всего запомнить и как часто вы вводите кодовую фразу. В этой статье мы хотели бы дать вам представление о том, насколько надежна ваша кодовая фраза в зависимости от используемого метода и длины.
Вариант 1: Случайная последовательность слов
Первый метод создания кодовой фразы - выбрать несколько слов из списка слов наугад. Вы можете взять словарь, открыть его на случайной странице и выбрать слово, приложив палец к странице с закрытыми глазами, и повторить это несколько раз, чтобы получить кодовую фразу из четырех или пяти слов.
Однако люди не очень хорошо умеют делать случайный выбор, поэтому лучшим методом может быть выбор слов путем бросания кубиков и использования результата для выбора слова из списка слов.
Популярным выбором является список Diceware Арнольда Рейнхолда 1, впервые опубликованный в 1995 году. Список содержит 7 776 слов, что равно количеству возможных упорядоченных бросков пяти шестигранных игральных костей (7776 = 6⁵). Недавно Джозеф Бонно внес усовершенствования в этот список 2, исключив слова, которые являются необычными или трудными для написания, а также представил сокращенную версию, содержащую всего 1 296 слов.
Длинный список Diceware Бонно
Короткий список Diceware Бонно
Вы бросаете только четыре кубика, чтобы выбрать слова из короткого списка (1296 = 6⁴). Список работает как словарь. Каждому слову в списке предшествует уникальный четырехзначный номер. Эти четыре цифры указывают на слово, которое вы должны выбрать при выпадении этих четырех чисел на игральной кости. Например, если вы бросаете
то вы должны выбрать слово, которое имеет номер 4216, а это слово “move”:
…
4215 mouth
4216 move
4221 movie
…
Если для создания кодовой фразы вы используете короткий список слов Diceware, то по сравнению с длинным списком вам потребуется больше слов для достижения того же уровня безопасности, но слова в коротком списке Diceware короче. В результате кодовая фраза из четырех слов из длинного списка будет содержать в среднем 28,0 букв, в то время как кодовая фраза из пяти слов из короткого списка будет содержать в среднем только 22,7 букв. В качестве примера можно привести следующие кодовые фразы, обеспечивающие одинаковый уровень безопасности:
При изпользовании короткого словаря “float volt limes rhyme nest”
При изпользовании длинного словаря “freeway oppose spinout managing”
Вариант 2: Кодовая фраза из случайных символов
Другой способ создания кодовой фразы - использовать те же правила, которые часто просят соблюдать при создании пароля. Выберите случайную последовательность символов с прописными и строчными буквами, цифрами, пунктуацией и специальными символами, такими как #!@+ и т.д.
Если вам не нравится использование специальных символов, вы можете не использовать их, но тогда вам придется сделать свою кодовую фразу длиннее, чтобы достичь того же уровня безопасности. Аналогично, если вам трудно запомнить, строчная или заглавная буква в вашей кодовой фразе, вы можете использовать только строчные буквы, но в этом случае вам придется сделать кодовую фразу длиннее.
Вот несколько примеров:
Используемые символы | Пример | |
---|---|---|
Нижний регистр | a–z | akorhrjfmsym |
Цифры и буквы в нижнем регистре | a–z, 0–9 | bqkng36w9nf |
Цифры и буквы в разных регистрах | A–Z, a–z, 0–9 | 5Xai1WhSYu |
Любые символы | ASCII 32–126 | q%9Ec#pD7 |
Вариант 3: Правильное английское предложение
Также можно использовать в качестве кодовой фразы правильное английское предложение или стихотворение. Ее будет легко запомнить, но она должна быть достаточно длинной и случайной, чтобы обеспечить достаточный уровень безопасности.
Правильная длина зависит от количества энтропии (случайности) на слово. Оценки для грамматически правильного и семантически достоверного английского предложения варьируются. Консервативная оценка - 5,7 бит на слово, приведена в работе “Универсальная энтропия упорядочивания слов в разных группах языков” 3, которую мы и используем в наших расчетах ниже.
Самая большая проблема с этим вариантом остается: люди не очень хорошо умеют делать случайный выбор. Вы, конечно, не можете использовать свою любимую цитату из книги или фильма, поскольку они будут находиться в верхней части списка парольных фраз для проверки злоумышленниками. Точно так же вы не можете использовать опубликованное стихотворение, а скорее стихотворение, которое вы придумали сами.
Длина кодовой фразы и безопасность
Предположим, что злоумышленники украли seed-фразу BIP-0039 и пытаются угадать правильную кодовую фразу, чтобы получить доступ к вашему кошельку. Они могут провести перебор по словарю, чтобы перебрать возможные кодовые фразы, которые вы могли использовать. Если вы хорошо подобрали кодовую фразу, то это займет у них много времени и вычислительной мощности.
Один из способов сделать это - арендовать графический процессор NVIDIA Tesla V100 в Amazon AWS, который может вычислять 2160 миллионов хэшей SHA-512 в секунду (см. бенчмарки hashcat) по цене $3,06 в час (см. цены Amazon EC2).
При наличии seed-фразы проверка одной кодовой фразы требует 2048 вычислений HMAC, получения нескольких открытых ключей и проверки их наличия в блокчейне. Это составляет более 4096 вычислений SHA-512 плюс дополнительная работа по проверке блокчейна. Таким образом, злоумышленник может проверить не более 620 миллионов парольных фраз за 1 доллар.
Это может показаться огромным числом, но если вы используете случайную кодовую фразу из 12 строчных букв, то злоумышленнику придется проверить в среднем около 48’000’000’000’000’000 кодовых фраз, прежде чем он найдет нужную. Это составляет 77 миллионов долларов в сегодняшних ценах! Если добавить заглавные буквы и цифры, то для достижения того же уровня безопасности потребуется всего 9 или 10 случайных символов.
Следует учесть, что в будущем цена вычислительной мощности будет снижаться, что сделает эту атаку более дешевой. При выборе длины кодовой фразы следует убедиться, что она останется безопасной в течение следующих нескольких лет.
Согласно закону Мура, стоимость любой фиксированной атаки уменьшается в 2 раза каждые 18 месяцев 4. Это означает, что через 10 лет стоимость атаки может снизиться до одной сотой от сегодняшних затрат. В приведенном выше примере это означает около $750'000, что, вероятно, не будет интересовать злоумышленника, если только он не знает, что вы храните более $1'000'000 криптоактивов на своем Trezor.
Наконец, таблица, которую вы так долго ждали. В этой таблице показано, сколько будет стоить взлом вашей парольной фразы сегодня и в 2030 году, в зависимости от длины и используемого метода:
Например, если вам нужна кодовая фраза, взлом которой в 2030 году будет стоить не менее $10'000'000, и вы хотите использовать короткий список Diceware, то, согласно таблице, вам нужно создать кодовую фразу длиной 5,8 слов. Разумеется, вы должны округлить это значение до 6 слов.
Время, необходимое для проведения брутфорс-атаки, соответствующей любой из строк таблицы, огромно. Точные оценки зависят от количества вычислительных мощностей, которыми располагает злоумышленник. Именно поэтому стоимость в долларах США является более точной метрикой.
Если вам интересно узнать больше о временных затратах, то есть обширный анализ от Coldbit 5. Для примера, Coldbit подсчитала, что если злоумышленник спроектирует и построит суперкластер ASIC, специально предназначенный для взлома PBKDF2-HMAC-SHA512, то на взлом кодовой фразы из 6 слов из короткого списка Diceware уйдет 150 лет. Такого оборудования сегодня даже не существует, поэтому его разработка и создание потребует дополнительных затрат.
Расчет стоимости атаки
В таблице мы работаем с предположением, что злоумышленник может арендовать у Amazon AWS графический процессор NVIDIA Tesla V100, который, как объяснялось выше, может быть использован для проверки 620 миллионов парольных фраз за $1. Итак, вопрос в том, если злоумышленник попытается перебрать все возможные кодовые фразы заданной длины и построенные по определенному методу, сколько их придется проверить, прежде чем он найдет нужную? В среднем количество кодовых фраз, которые необходимо проверить, составляет половину от общего числа.
Для кодовых фраз со случайными символами общее количество кодовых фраз определенной длины равно nᵏ, где n - размер алфавита, а k - длина кодовой фразы в символах. Так, для строчных букв n = 26, для алфавитно-цифровых строчных n = 36, для алфавитно-цифровых чувствительных к регистру n = 62 и для всех печатаемых символов ASCII n = 95.
Для кодовых фраз из случайных слов общее число снова равно nᵏ, но теперь n - это количество слов в списке слов, а k - длина парольной фразы в словах, поэтому n = 7776 для длинного списка Diceware и n = 1296 для короткого списка Diceware.
Для кодовой фразы из правильного английского предложения общее количество зависит от энтропии на слово. Как отмечалось выше, мы используем оценку 5,7 бит на слово. В этом случае общее количество парольных фраз равно 2^(5,7 × k) ≈ 52_ᵏ_, где k - длина парольной фразы в словах.
Получив общее количество парольных фраз, разделите его на 2, а затем разделите полученный результат на 620 миллионов, чтобы получить стоимость в долларах США на сегодняшний день. Помните, что в среднем злоумышленнику нужно проверить только половину от общего числа парольных фраз, поэтому и нужно делить на 2.
Что касается прогноза стоимости атаки в ближайшие годы, мы исходим из закона Мура, согласно которому стоимость любой фиксированной атаки уменьшается в 2 раза каждые 18 месяцев. Поэтому, чтобы рассчитать стоимость атаки через m месяцев, возьмите оценку стоимости атаки сегодня и разделите ее на 2^(m/18). В таблице выше мы использовали m = 126 месяцев для января 2030 года.
Доверенный дисплей Trezor T
Помните, что никакое оборудование не может обеспечить 100% защиту seed-фразы. При наличии достаточных ресурсов и соответствующего опыта злоумышленник сможет извлечь seed-фразу из любого аппаратного кошелька. Поэтому если вы опасаетесь, что ваш кошелек может быть украден, используйте надежную кодовую фразу.
В настоящее время самым передовым решением на рынке является Trezor Model T. Его уникальный дисплей Trusted Display позволяет вводить парольную фразу прямо на устройстве. Ввод парольной фразы на устройстве, а не на компьютере позволяет достичь максимальной безопасности. Таким образом, даже если ваш компьютер заражен вредоносным ПО, ваша кодовая фраза останется в безопасности.
Совет: Знаете ли вы, что если провести пальцем влево или вправо по клавиатуре на Trezor T, то раскладка изменится, и вы сможете вводить заглавные буквы, цифры и специальные символы?
В конце концов, вы лучше всех знаете свои потребности в безопасности. Если физические атаки входят в вашу модель угроз, используйте надежную кодовую фразу для защиты вашего кошелька. Даже если кто-то получит физический доступ к вашему устройству и извлечет семя восстановления, он все равно не сможет взломать надежную кодовую фразу.
Наша цель в SatoshiLabs - предоставить вам все необходимые инструменты для самостоятельной защиты ваших активов, независимо от нас как компании. Ваше устройство Trezor защищено от удаленных атак, а функция кодовой фразы защищает его от физических атак.
Arnold G. Reinhold: The Diceware Passphrase Home Page, http://world.std.com/~reinhold/diceware.html. ↩︎
Joseph Bonneau: Deep Dive: EFF’s New Wordlists for Random Passphrases (2016), https://www.eff.org/deeplinks/2016/07/new-wordlists-random-passphrases. ↩︎
Montemurro MA, Zanette DH (2011) Universal Entropy of Word Ordering Across Linguistic Families. PLoS ONE 6(5): e19875. https://doi.org/10.1371/journal.pone.0019875. ↩︎
Arjen K. Lenstra: Key Lengths. In: The Handbook of Information Security, ch. 114. Wiley (2005). ↩︎
Coldbit: Can BIP-39 passphrase be cracked? (2019), https://coldbit.com/can-bip-39-passphrase-be-cracked/. ↩︎