Рейтинг:1

Какая длина парольной фразы подходит для того, чтобы взломать биткойн-ключ PBKDF2 было сложно?

флаг ru

Согласно с https://github.com/bitcoin/bips/blob/master/bip-0039.mediawiki#From_mnemonic_to_seed

Чтобы создать двоичное семя из мнемоники, мы используем функцию PBKDF2. с мнемоническим предложением (в UTF-8 NFKD), используемым в качестве пароля и строка «мнемоника» + парольная фраза (опять же в UTF-8 NFKD), используемая в качестве соли. Счетчик итераций установлен на 2048, а HMAC-SHA512 используется в качестве псевдослучайная функция. Длина полученного ключа составляет 512 бит (= 64 байта).

Учитывая, что мы знаем мнемоническое начальное число из 24 слов, какое количество символов я должен выбрать для своего пароля, чтобы его было очень трудно угадать на очень быстром суперкомпьютере? Или лучше, сколько перестановок должно быть достаточно, чтобы это было безопасно?

kelalaka avatar
флаг in
Какова ваша целевая безопасность? Можем ли мы назвать это обманом на ваш вопрос [Является ли использование 7-8 случайных слов из всех слов языка в качестве пароля хорошей идеей?] (https://crypto.stackexchange.com/q/76701/18298). Если нет, то укажите.
fgrieu avatar
флаг ng
Любой современный совет использовать PBKDF2 для хеширования паролей некомпетентен или направлен на то, чтобы сделать систему взломанной. В сочетании с _"Счетчик итераций установлен на 2048"_ это провокация против здравого смысла! Угадайте, как я классифицирую [этот](https://pages.nist.gov/800-63-FAQ/#q-b17) совет в свете таких прецедентов, как [размер ключа DES](https://crypto.stackexchange. com/a/34228/555) и [Dual_EC_DRBG](https://en.wikipedia.org/wiki/Dual_EC_DRBG).
kelalaka avatar
флаг in
@fgrieu Я думаю, они используют PBKDF2 только для объединения пароля и вывода двоичного начального числа, которое будет использоваться в secp256k1. Не для безопасности. Они уже говорят, что разрешена минимальная 128-битная энтропия. OP должен использовать 256 для достижения 2560-битной энтропии, начиная с Гровера.
fgrieu avatar
флаг ng
@kelalaka: вопрос заключается в том, как выбрать пароль, чтобы он защищал закрытый ключ. Вопрос предполагает, что «мы знаем мнемоническое начальное число из 24 слов», и предполагается, что открытый ключ известен. При этом разве каждый пароль не может быть проверен примерно с 2048 SHA-512 и умножением на одну точку на secp256k1? Если это так, я не могу мириться с этим небольшим энтропийным растяжением. Это дорога для взломщиков паролей.
kelalaka avatar
флаг in
Мнемоника @fgrieu _недоступна_ . парольная фраза может быть использована для правдоподобного отрицания в случае определения мнемонических слов. Затем снова требуется около 256-битной энтропии. Кроме того, как вы можете видеть по ссылке OP, она может быть пустой.Может быть, спрашивает ОП, учитывая, что злоумышленники знают 24 слова,...
fgrieu avatar
флаг ng
@kelalaka: если пароль не нужен, потому что в него входит 128 или более других битов энтропии, то я согласен с PBKDF2 и любым количеством раундов, и бритвой Оккама предлагается сделать пароль пустым (или лексикографически первый приемлемый пароль) и покончили с этим. Если пароль необходим, например. для правдоподобного отрицания и/или из-за того, что остальная часть энтропии может утечь, то использовать PBKDF2 плохо, использовать его с 2048 раундами еще хуже. В любом случае я считаю вопрос/метод не заслуживающим внимания.
kelalaka avatar
флаг in
@fgrieu продолжил ответ, если чего-то не хватает, не могли бы вы сообщить мне?
Рейтинг:1
флаг in

Закрытый и открытый ключ в ECC

Для создания открытого ключа в 256-битном ECC (Биткойн использует secp256k1) требуется однородный случайный 256-битный ключ для создания секретного ключа. $к$ (256-битное число) и публикует $[k]G$, то есть скалярное умножение с базовой точкой $G$ и это защищено проблемой дискретного логарифмирования в ECC, и если группа кривых является общей, то самая известная атака имеет стоимость $2^{128}$. Имейте в виду, что раз в Криптографический квантовый компьютер построен, алгоритм Шора применительно к DLog, безопасность пропала!

Случайные пароли несложно запомнить, используйте Dicewire кскд936

Людям трудно запомнить случайные 64 гекса, поэтому исследователи изобрели dicewire, и Bip39 похож на него. В Bip39, вместо запоминания 64 гексов, один раз выбрасываются случайные числа, вероятно, подбрасывая честную монету или получая от /dev/urandom для выбора слов из списка слов Bip39. Хорошо известно, что 24 слова создают около 256-битной энтропии.

Выбранные слова не являются общедоступными и держать их в секрете все время.

Теперь мы можем рассматривать использование парольной фразы как

  • Достигатьправдоподобное отрицание
  • Увеличить случайность, когда случайный источник для генерации мнемоники из 24 слов ненадежен, как хотелось бы, и
  • Используйте мнемоническое семя в качестве источника энтропии и защитите его парольной фразой.

Если мы прочитаем вопрос как,

Учитывая, что злоумышленники (не мы) знаю мнемоническое семя из 24 слов, какое количество символов я должен выбрать для своего пароля, чтобы его было очень трудно угадать на очень быстром суперкомпьютере? Или лучше, сколько перестановок должно быть достаточно, чтобы это было безопасно?

Итак, мы предполагаем, что мнемоническое слово из 24 слов не защищено должным образом.

Во-первых, репозиторию около 8 лет (created_at": "2013-11-19T17:18:41Z ) старше, чем последнее соревнование по хешированию паролей, проведенное в 2015 году. Для них нормально упоминать PBKDF2, а не Argon2. Кажется, этот документ не обновлен для сегодняшних нужд! Но ненормально предлагать итерацию 2048, и в то время были еще лучшие кандидаты.

  • Bcrypt 1999 — итерация, без жесткости памяти
  • PBKDF2 2000 — итерация, без жесткости памяти
  • Scrypt 2009 — итерация, есть жесткость памяти
  • Argon2 2015 — итерация, имеет жесткость памяти и противодействие распараллеливанию.

Во-первых, не используйте символы, снова используйте Bip39 или dicewire для генерации парольной фразы. Таким образом, с 12 словами можно достичь 128-битной энтропии, и это даже с простым хешем, таким как SHA1 или SHA256 вместо PBKDF2 или Argon2, достаточно безопасно с точки зрения безопасности. Саммит и Коллективная сила майнеров биткойнов, где майнер когда-то достиг $\приблизительно 2^{92,09}$ SHA256d в год на 7 февраля 2021 года. Если мы предполагаем, что это ваша целевая безопасность для вашего пароля, то для PBKDF2

  • используйте итерацию, такую ​​​​как 1M, чтобы вы могли уменьшить коллективную мощность до $\приблизительно 2^{70}$ и уменьшить саммит примерно до $~2^{50}$*. Хорошая вещь в этой итерации настраивается в соответствии с вашими потребностями. (Можно использовать бенчмарк Hashcat на NVidia RTX 3090 настроить целевую безопасность в соответствии с суперкомпьютером, который содержит множество RTX, а не коллективной мощностью майнеров).

    Мнемоника из 12 слов будет безопасна для Summit, 6-словный Bip39 преодолеет свою мощь. однако у нас есть лучшие альтернативы, даже тогда и сейчас - Скрипт и Аргон2!

Используйте Argon2, когда это возможно

Сегодня майнеры биткойнов широко используют ASIC и графические процессоры для массового распараллеливания процесса майнинга. Теперь у нас есть механизмы, подобные Argon2, против них.

  • Регулируемая память так что мощность поиска ASIC и GPU снижается. Даже на ПК, и не то, чтобы время использования памяти можно было эксплуатировать.

  • Регулируемый параллелизм так что ядро ​​ЦП не может быть полностью запущено в параллельных экземплярах.

  • И, опять же количество итераций для сокращения времени поиска.

    Параметры Argon2 должны быть измерены перед принятием решения, и все же мнемоника из 12 слов будет вполне безопасна для Argon2. Мы все еще можем сказать, что Bip39 из 6 слов будет защищен от Summit.

Или лучше, сколько перестановок должно быть достаточно, чтобы это было безопасно?

Читая это как перестановку 24 слов. Тогда у нас есть 24! и с помощью Формула приближения строки $$n! \sim \sqrt{2 \pi n}\left(\frac{n}{e}\right)^n$$ затем установка $n=24$

24 доллара! \sim \sqrt{2 \pi 24}\left(\frac{24}{e}\right)^{24} \sim 6.2\mathrm{e}{+23} \sim 2^{80}$$

Это неплохо (примерно 8-словный Bip39), однако имейте в виду, что если злоумышленник знает мнемонику из 24 слов, то энтропия полученного ключа $к$ вместе с парольной фразой не может пройти $2^{80}$. Если у вас все в порядке с 80-битной энтропией, то с Argon2id с хорошими параметрами этого достаточно, чтобы обезопасить себя от перебора пароля. $2^{50}\ll 2^{80}$

Тем не менее, совет состоит в том, чтобы использовать новую мнемонику из 24 слов, если вы можете сохранить ее в безопасности, чтобы можно было найти эксплойт $80$-битная энтропия - теперь непонятно без перебора парольной фразы. Если не,

Заключительный совет; используйте менеджеры паролей, такие как keepass и password1, где вам нужен только один хороший пароль, желательно от dicewire или Bip39. Они могут создавать действительно случайные пароли для нужд, а хранилища паролей защищены вашим паролем, а все остальное они берут на себя.


*Имейте в виду, что цифры приблизительные, а не точные. Мы не можем быть уверены, не сидя за консолью суперкомпьютера - Summit

fgrieu avatar
флаг ng
Я согласен с тем, что «тест на комаров над горным рынком племени рождения неизвестный надежный акт» или перестановка с 1M, а не с 512 итерациями PBKDF2, была бы безопасной. Но я лучше потрачу это процессорное время на Argon2, scrypt (представлен в 2009 г., широко доступен в 2013 г.) или даже на bcrypt (1999 г.) и смогу использовать более короткую фразу с эквивалентной безопасностью. Кроме того, я не смог бы уверенно запомнить такую ​​длинную фразу-пароль, и я уверен, что более 1/4 пользовательской базы не смогли бы или написали бы парольную фразу. Поэтому я не рекомендую эту систему.
kelalaka avatar
флаг in
Да, это требовало реального расчета, который я пропустил, так как не могу быть точным. Тем не менее, 6-7 должно быть достаточно. Хм, кажется, я забыл подчеркнуть использование Argon2. Длинный пароль, ну, это человеческая проблема, однако некоторые люди записывают его, а некоторые забывают. Есть новости о забытом пароле от кошельков с огромным количеством монет. Кажется, что предел доступных монет приближается к 0, когда n стремится к бесконечности. Я обновлю ответ позже. Спасибо.
kelalaka avatar
флаг in
@fgrieu Я предполагаю, что настоящая цель парольной фразы - генерировать более одного приватного и соответствующих ключей. Биткойн использует множество пар ключей для каждого пользователя. Они используют больше иерархических детерминированных кошельков, BIP0032/BIP0044, которые больше подходят для использования.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.