BIP32 рекомендует 256-битное начальное число. Почему большинство биткойн-кошельков используют только 128-битное начальное число?

Согласно разделу BIP32 «Генерация мастер-ключа», «рекомендуется 256 бит».

См. https://github.com/bitcoin/bips/blob/master/bip-0032.mediawiki#Master_key_generation

Почему BIP32 считает 256 бит рекомендуемым начальным размером и почему авторы многих реализаций биткойн-кошельков считают 256 бит ненужными?

Ответы (2)

Причины 3 числа:

  • Биткойн использует 256-битные подписи ECDSA. Для этого требуется порядка 2 128 шагов, чтобы найти закрытый ключ из известного открытого ключа. Это уровень безопасности Биткойна: мы стремимся всегда требовать от злоумышленника выполнения 2 128 шагов. Если начальное число имеет менее 128 бит энтропии, это неизбежно приводит к более быстрому алгоритму, в котором злоумышленник может просто перебрать все возможные начальные значения менее чем за 2 128 шагов. Из-за этого BIP32 требует не менее 128 бит энтропии .

  • Когда начальное число имеет менее 256 бит энтропии (но больше 128), результирующие ключи также будут иметь менее 256 бит энтропии. Поскольку криптография на основе эллиптических кривых использует ключи с полными 256 битами (несмотря на то, что атакующий быстрее взламывает ключ за 2128 шагов), BIP32 также рекомендует 256 бит энтропии .

  • Комбинация закрытого ключа и чейнкода («расширенный закрытый ключ») в BIP32 имеет размер 512 бит. Из-за этого использование начального числа с большей энтропией, чем 512 бит, не может повысить безопасность больше — это просто информация, которая выбрасывается. Из-за этого BIP32 ограничивает начальное значение максимум 512 битами энтропии .

Спасибо за ответ, Питер. Хотя я не совсем понял: как вы говорите, как открытые ключи (точки EC сжатого представления), так и закрытые ключи (скаляры) представлены 256 битами, но они оба имеют эффективную разрядность всего 128 бит. Поэтому, почему вообще есть какое-то преимущество в генерации скалярных ключей из начального числа, которое имеет более 128 бит энтропии? Единственная причина, о которой я могу думать, заключается в том, что битовая сила немного уменьшается, когда начальное число хешируется для получения подразделов, но это объясняет рекомендацию для начального числа, например, 140 бит, а не полных 256 бит.
Что ж, возможность сломать ключ EC всего за 2 ^ 128 шагов несколько теоретична. На практике эти алгоритмы имеют значительные компромиссы между памятью и процессором, и на практике все равно будут намного медленнее, чем прямой исчерпывающий поиск 2 ^ 128 по ключам с энтропией всего 128 бит. Я предполагаю, что ответ заключается в глубокой защите: менее 128 бит энтропии определенно вредит безопасности. Менее 256 бит может повредить. Больше 512 бит не поможет.

Похоже, на вопрос лучше всего ответит автор(ы) BIP32.

Кроме того, это извечный вопрос «сколько энтропии» мне нужно?!

Это довольно интересное чтение: 128 бит в целом. https://crypto.stackexchange.com/questions/48256/сколько-энтропия-делаете-вам-нужно-для-безопасного-сертификата-генерации

Также как правило: когда вы вставляете 128 битов энтропии в систему, они также образуют верхнюю границу для энтропии всего, что из нее получается.

Если мне позволено предположить намерение автора, вероятно, рекомендуется 256 бит, потому что конечные ключи имеют именно такой размер, и таким образом энтропия соответствует размеру ключа.

Спасибо за идею, я отправил электронное письмо автору BIP32, чтобы спросить, не рассмотрит ли он ответ на этот вопрос на stackexchange.