Я хотел бы видеть текущий метод адрес пула в бумажнике заменен процессом детерминированной генерации ключей. Идея заключается в том, что, когда пользователь запускает первую Bitcoin, он будет либо генерировать случайные 256-битный ключ для них, или пользователь может поставить их собственные случайные биты (монетку 256 раз, положить результаты в файле). Дело в том, чтобы у них полные 256-бит энтропии в этом "генератор," так что нет никакой необходимости в ключ растяжения или любого рода соление, одноразовые номера и т.д. Это будет "мастер" ключ для этого пользователя навсегда (Или пока они не решили изменить его). После этого, каждый раз, когда пользователь нуждается в новый адрес, клиент вычисляет его с помощью:
Код:
PrivKey [+ 1] = sha256 (sha256 (GenKey исключающее PrivKey [I]))
Это обеспечивает пол-бесконечное число частных ключей, которые всегда могут быть воссозданы только от исходного ключа генератора. затем пользователь имеет только один файл резервного копирования, когда-либо. Сохраните его на бумаге в сейфе, или получить его татуировку на нижней стороне веко, потому что вам не нужно, чтобы обновить резервную копию.
Я вижу только три возможных проблем:
- (1) Слабое ссылка будет генератор случайных чисел.
- (2) Если главный ключ скомпрометирован, так каждый кошелек адрес.
- (3) Недостатки, обусловленные "отношения" ключей через SHA256
Задача (1) "без труда" адресованный. Если клиент создает ключ генератора для пользователя, он может пройти через процесс вытягивания энтропии от событий мышей и клавиатур, или известных физических процессов, которые могут быть измерены с компьютером пользователя, такими как тепловые колебания / напряжения в CPU / БПЕ, значения ячеек ОЗУ после сброса и т.д. клиент может быть установлен, чтобы отвергнуть все, что не в точности 256 бит или содержит слишком много человеческих эск-энтропии. Пользователь должен либо использовать диалог клиента для создания генератора, или выяснить, как поставить реальную энтропию.
Задача (2) на самом деле не кажется, что большая проблема для меня. Я не могу думать о какой-либо атаки, которая может поставить под угрозу один закрытый ключ пользователя и не все из них. Они все хранятся в одном файле бумажник, и любой злоумышленник собирается скопировать весь файл, если они получают доступ к нему. Таким образом, за счет сокращения весь свой кошелек на один частный ключ, я не уверен, что любая ценная бумага теряется.
Задача (3) является проблемой только тогда, когда дважды sha256 хеширования нарушается, и если да, то все BTC ввинчивается. Это может быть заменено на SHA256 ^ 10, если это делает кто-то чувствовать себя лучше, или смесь хэш, и сами шифровки (возможно использовать в качестве пароля AES для шифрования себя перед тем хеширования).
Простой, безопасный и полезный. Мысли?