- Я хотел избавиться от словника, и заменить его на более язык агностиком представления, что по-прежнему относительно легко читать.
- Гораздо более компактное представление.
- Используйте настраиваемую п-о-м представление корневого ключа вместо пароля
Кроме того, прототип, что у меня есть следующие возможности:
- Очень компактное представление: 16bit накладных расходов на каждую акцию
- 4 версии бита. Этот прототип в настоящее время версии 0.
- Поддержка п-о-м акций, до 4-оф-4.
- Очень хорошая защита от опечаток: Вероятность того, что опечатка доли 2-в-м не будет обнаружена в 1 в 262144.
- Очень компактный QR-код: 128 бит закодировать в 45 алфавитно-цифровых символов, поэтому версия 2 достаточно. Например. видеть https://chart.googleapis.com/chart?chs=150x150&CHT = дг&CHL = BASABMIVAPPOTUFJULOHHIFOBRIGIJPAJIHLUTOLHAJAJ
- Случайно смешивание два акций, которые были построены из различного секрета незамеченный с вероятностью 1 в 65536.
- представление proquints является необязательным, например, основание 58 также возможно.
Здесь приведен пример случайный 128 бит секрет кодируется в акции 2-в-3:
batod kibab Namus jupag pahot Zumas Filur fuhuk hojid
BiPAP bupar bugul nadun lokil kuhoj jilub buzih pijuv
Bonik foguf Муталь fasoz Гахам Дугар mubab dakap bofif
Каждая доля состоит из 9 proquints (см https://arxiv.org/html/0901.4016), Кодирующего 16 битов каждый. Первый proquint особенный: он кодирует версию, доля ID, количество требуемых акций реконструировать тайну, и контрольную сумму.
- Версия: первый 4 бита. Так как первые 4 бита кодируют по первой букве, буква для версии 0 всегда «б».
- Доля ID: 2 бита для идентификации ID доли (1, 2, 3, 4).
- Следующие 10 бит кодируют число требуемых акций (2 бит), и 1-байтовую контрольную сумму восстановленного секрета. Эти 10 бит являются операции XOR с 10 битами контрольной суммы доли, когда 10 бит были установлены в ноль. При декодировании сообщения из двух акций, количество требуемых акций и 1 байт контрольной суммы секрета восстанавливается за каждую акцию по XORing обратно с контрольной суммой общей папки. Обе акции должны декодировать те же 10 бит, чтобы быть действительными. Кроме того, первый байт контрольной суммы реконструированного секрета должен соответствовать для реконструкции, чтобы быть успешной. Таким образом, фактическая безопасность этой системы является контрольным суммированием ^ 10 2 * 2 ^ 8 = 2 ^ 18 = 262144 (есть 1 в 262144 шанс, что опечатка остается незамеченной).
У меня есть прототипичная реализация в Руби здесь: https://github.com/martinus/bitcoin-mnemonic/blob/master/bitcoin-mnemonic.rb.
Как вы думаете? Я признателен за любые комментарии!