Насколько надежен сид в Electrum и других кошельках?

В этой небольшой заметке я постараюсь развеять все сомнения по поводу безопасности использования сидов как в Electrum. Некоторые люди, особенно которые недавно вошли в тему криптовалют, ставят под сомнение надежность сгенерированных сидов вида current ripple stock slot good enlist bitter catch paddle youth panel gesture. И как оказалось таких людей немало. Вот их скепсис по этому поводу:

восстановить кошелек в электрум можно только введя сид из 13 слов, неужели нельзя случайно его угадать? понятно что не подберешь сид определенного кошелька, но неужели нельзя случайно подобрать чей-то сид? например в связке логин/пароль нужно к определенному логину подобрать пароль, а чтобы получить доступ к кошельку електрум нужно подобрать только логин без пароля.. пытался найти ответ на свой вопрос, но так и не смог понять почему seed так безопасен.

Как видно, господин орудует сравнением теоретического взлома сида и взлома пароля с логином. Что ж, давайте тогда и будем двигаться в этом направлении чтобы иметь некий базис, на основе которого постараемся математически развенчать мифы о взломоопасности сидов.

Для начала давайте определим при переборе логина+пароля сколько будет вариантов всего. Естественно, точного ответа тут не может быть, но мы будем округлять всё в сторону более тяжелого перебора, чтобы уж наверняка.

Пускай средний логин у нас будет состоять из 8 символов. Обычно логины нечувствительны к регистру и состоят только из латинских символов и цифр, но мы для простоты подсчета, в рамках нашего "округления" допустим что логин может состоять из того же набора символов что и пароль.

А из чего состоит пароль? Все цифры (0-9), буквы в обоих регистрах (a-Z), специальные символы которых штук 10. В сумме 10+26+26+10=72. Т.е. 72 варианта каждого символа.

Обычно пароль состоит из 8-12 символов, мы возьмем для примера 12. Итак, у нас получилось в сумме 8 символов логина + 12 символов пароля, т.е. 20 символов в сумме. Охренеть! Двадцать семидесятиразрядных символов!

Вооружившись знаниями школьного курса комбинаторики, посчитаем количество возможных вариантов:

7220 = 1,4016834 × 1037

Как видно из результата получается очень большое число с 37 нулями.

Если на данный момент с логином-паролем более или менее понятно, то как же обстоят дела с сидами? Давайте выясним!

Итак, для примера возьмем мнемоники BIP39, коих в сумме 2048. Иначе говоря 2048 слов, из которых в конечном итоге составляется сид.

Наш сид в рамках примера будет иметь размер - 12 слов.

Например, уже упомянутый в заметке сид:

current ripple stock slot good enlist bitter catch paddle youth panel gesture

Сид с первого взгляда может выглядеть безобидно и просто в сравнении с курьёзными паролями и мудрыми логинами. Но наверняка это лишь фасад.

Подобно примеру с логином-паролем, мы на данный момент понимаем, что имеем 12 символов слов и 2048 разрядов.

2 04812 = 5,4445179 × 1039

Ну и собственно сравниваем: 5,4445179 × 1039 : 1,4016834 × 1037 ≈ 388

Мы получили что сид длиною в 12 слов взломать перебором в 388 раз сложнее, чем сложные логин+пароль.

И давайте не забывать что это сид всего лишь в 12 слов. На аппаратных кошельках и не только вы можете использовать сиды из 24 слов! А это... погодите мгновение... 2,9642775 × 1079 вариантов! Для сравнения на нашей планете людей в сумме 7,4 × 109! Сидов в 10000000000000000000000000000000000000000000000000000000000000000000000 раз больше!

Всё!

January 16, 2018, 5:47 pm