Siggen как узнать мнемоническую фразу
Обновлено: 05.11.2024
Чтобы создать мнемоническую фразу, прежде всего нужно сгенерировать случайные числа (энтропию), которые являются нашим источником для сид-фразы.
Энтропия - это очень большое случайное число, которое никто никогда не генерировал раньше или никогда не будет генерировать в будущем.
Лучше всего думать об этом числе как о последовательности битов (например 10011010010001 . ), как компьютеры хранят числа.
Примечание: бит (0 или 1) является наименьшей единицей хранения информации на компьютере.
Генерируемая энтропия должна быть кратна 32 битам, поскольку это позволит разделить энтропию на четные порции и преобразовать ее в слова в дальнейшем.
Кроме того, энтропия должна составлять от 128 до 256 бит , так как этого достаточно, чтобы два человека не смогли сгенерировать одинаковую энтропию.
Осторожно! Всегда используйте безопасный генератор случайных чисел для вашей энтропии. Не используйте «случайную» функцию вашего языка программирования по умолчанию, поскольку числа, которые он выдает, не достаточно случайны для криптографии.
2. Энтропия переводится в слова (мнемонику)
Теперь, когда у нас есть энтропия, мы можем закодировать ее в слова.
Прежде всего, мы добавляем контрольную сумму к нашей энтропии, чтобы помочь обнаружить ошибки (делая последнюю фразу более удобной для пользователя). Эта контрольная сумма создается путем хеширования энтропии через безопасный алгоритм хеширования SHA256 , что дает нам уникальный отпечаток нашей энтропии.
Затем мы берем 1 бит этого хеша контрольной суммы на каждые 32 бита энтропии и добавляем его в конец нашей энтропии.
Затем мы разбиваем это на группы по 11 битов, преобразуем их в десятичные числа и используем эти числа для выбора соответствующих слов.
В словаре есть 2048 слов.
И теперь у нас есть мнемонический код.
Примечание: 11- битное число может содержать десятичное число между 0-2047 (именно поэтому в словаре 2048 слов).
Примечание: добавляя 1 бит контрольной суммы к каждым 32 битам энтропии, мы всегда получим кратное 33 битам, которое можно разделить на равные 11-битные порции.
3. Из мнемонического кода создается SEED-фраза
Теперь, когда у нас есть наш мнемонический код, мы можем преобразовать его в нашу SEED-фразу.
Чтобы создать СИД, нужно поместить мнемонический код в функцию PBKDF2. Эта функция, в основном, многократно хэширует мнемоническое предложение (+ необязательную парольную фразу), пока не получит окончательный 64-байтовый (256-битовый) результат.
Необязательная парольная фраза ( passphrase ) позволяет изменять конечный результат.
Этот 64-байтовый результат является вашей финальной СИД-фразой, которая может быть использована для создания мастер ключа для иерархического детерминированного кошелька.
Иерархия ключей в криптовалюте
PBKDF2 - это, по сути, хеш-функция, которая разработана для медленной работы (путем хеширования данных несколько раз до получения результата). Преимущество этого состоит в том, что кому-то еще сложнее использовать мнемоническую фразу, чтобы попытаться получить сид, который люди уже когда-то использовали.
Кроме того, PBKDF2 также позволяет вам предоставить второй ввод, называемый « фразой-паролем » или « seed extension » вместе с данными, которые вы хотите хэшировать. Это позволяет вам создавать совершенно разные начальные числа из одной и той же мнемонической фразы.
Слова в мнемоническом предложении происходят из фиксированного списка из 2048 слов (они определяются BIP39). Первые 4 буквы каждого слова уникальны в списке.
Читайте также: