Реальная история.
Итак, все обновления своих клиентов андроид использовать метод DEV / urandom так, что сделки, подписанные не в состоянии раскрыть секретные ключи обоих адресов, участвующих.
Она не работает таким образом. Там нет ничего, что я могу сделать, чтобы раскрыть свой секретный ключ без физической кражи кошелька, если не произошло подписать два сообщения или транзакцию с тем же случайным числом. Я мог бы иметь "случайный" номер генератора, который всегда возвращает один и тот же номер (например, осуществление Sony, подписей ECDSA), и это не повлияет на ваши ключи на всех, но в любое время я подписал более одной сделки с того же адреса, я бы поставить под угрозу один из моих собственных закрытых ключей. ., который был бы мой единственный секретный ключ, если бы я использовал генератор Sony неслучайное число.
Но что помешает кому-то из простого генерирования адреса с помощью RandomSecure и отправки биткойны по другим адресам, чтобы просто поставить под угрозу их?
Я предлагаю читать вверх немного на эллиптических кривых криптографии в целом (и ECDSA, в частности), даже Википедия дает очень хорошее объяснение того, как это работает, но если математика не ваша вещь, то, может быть, нет. В основном есть два вопроса.
Первый "слабые ключи", Если я использую слабый генератор случайных чисел, есть шанс, что я мог бы создать ключ, который гораздо проще реверс с точки EC (открытый ключ) обратно к большому целому числу он основан на (закрытого ключа). В этом случае, мой ключ, вероятно, будет поставлена под угрозу. Если вы не используете также слабый генератор случайных чисел, ключ не влияет, только мои.
Вторая подпись. Подпись ECDSA требует случайный одноразовый номер (число используется один раз), это число не является секретным ключом, это новое случайное число для каждой подписи. Как следует из названия, это число никогда не должно использоваться более чем один раз с тем же ключом. Если я использую слабый генератор случайных чисел и подписание нескольких транзакций или сообщений с тем же ключом, есть хороший шанс, что я в конечном итоге с помощью того же временного значения с помощью этого ключа более чем один раз. Если это произойдет, это тривиальное для тех, кто понимает ECDSA и видит эти две подписи в "оправляться" мой секретный ключ. Опять же, мой ключ скомпрометирован, но если вы не также используется слабый генератор случайных чисел ключ еще не затрагивается.
Я уверен, что второй вопрос гораздо более вероятно, и чаще, чем первый, но ни один из них может поставить под угрозу ваши личные ключи, если не случится быть с помощью слабого генератора случайных чисел. Даже если я сгенерировал тысячи подписей с моим генератором Sony неслучайное число там еще ничего (если не считать кражи wallet.dat), что я мог сделать, чтобы показать или поставить под угрозу личные ключи. Реально, я даже не могу знать ваши открытые ключи, пока вы не опубликуете их на blockchain как часть сделки, так как ваш адрес фактически ripemd160 хэш SHA256 хэш вашего открытого ключа.
В принципе я могу суммировать его с этими 3 вещами (ТЛ / DR):
1) Не следует использовать генераторы случайных чисел, которые, как известно, слабым. Эта проблема с Android, как известно, в течение достаточно долгого времени, игры, которые полагаются на случайных чисел всегда действовали странно на этой ОС.
2) Не используйте Bitcoin адрес, если вы никогда не подписать более чем одну вещи с любым заданным закрытым ключом, то второй вопрос не может повлиять на вас, даже со слабым генератором случайных чисел.
3) Слабый генератор случайных чисел влияет только ключи, если ты один, используя слабое случайное число gnerator для генерации ключей и / или подписи.