Вернуться   Биткоин Форум > Разработка и Техническое Обсуждение
18 октября 2014, 10:51:55 AM   # 1
CJP
 
 
Сообщения: 210
Цитировать по имени
цитировать ответ
по умолчанию Re: Нужна помощь по работе со сжатыми ключами

Взлом Биткоин адресов.
500 Биткоинов взломаны в "мозговом кошельке" с паролем "bitcoin is awesome"
Адрес кошелька: 14NWDXkQwcGN1Pd9fboL8npVynD5SfyJAE
Приватный ключ: 5J64pq77XjeacCezwmAr2V1s7snvvJkuAz8sENxw7xCkikceV6e
подробнее...


Всем кто хочет заработать Биткоины без вложений - рекомендую сайт http://bitcoin-zarabotat.ru
Я сделал кусок программного обеспечения, которое
* Извлекает закрытый ключ данного адреса с dumpprivkey команды
* Декодирует закрытый ключ в соответствии с Бумажник Формат импорта
* Дает закрытый ключ OpenSSL (на основании того, что делает исходный код Bitcoin), и получает соответствующий открытый ключ
* Кодирует открытый ключ к Bitcoin адрес
* Проверяет данные и полученные Bitcoin адреса являются одинаковыми.

Это отлично работает для некоторых клавиш, но не для других. Дальнейшие исследования показали, что он работает для ключей, сгенерированных старой версией BOTG (импортируемой в Bitcoin-Qt), и не для ключей, генерируемых Bitcoin-Qt самих (версия 0.8.6). Адреса, по которым она работает есть закрытый ключ (который возвращается dumpprivkey), который начинается с «5», а когда он не работает, он начинает с «L». Я читал, что те, которые начинаются с «L» соответствует "Сжатые открытые ключи", Так что, вероятно, что вызывает проблему.

Обратите внимание, что мой код не генерирует никаких ошибок: он просто вернул адрес, который отличался от оригинала. Среди прочего, это означает, что номер версии в формате закрытого ключа является то же самое.

Я не мог найти хорошую документацию о том, как перейти от закрытого ключа к открытому ключу, либо для сжатого или несжатых ключей, так что я буду использовать исходный код Bitcoin снова, чтобы помочь мне. Я был бы признателен, если кто-то может задокументировать (также, на всякий случай, если я не могу понять его из кода). По-видимому, просто говоря, "это закрытый ключ, и это ECDSA кривая вы должны использовать" недостаточно.
CJP сейчас офлайн Пожаловаться на CJP   Ответить с цитированием Мультицитирование сообщения от CJP Быстрый ответ на сообщение CJP


Как заработать Биткоины?
Без вложений. Не майнинг.


18 октября 2014, 12:12:51 PM   # 2
CJP
 
 
Сообщения: 210
Цитировать по имени
цитировать ответ
по умолчанию Re: Нужна помощь по работе со сжатыми ключами

Получил 1806 Биткоинов
Реальная история.





Для тех из вас, с той же проблемой: Я думаю, что я понял это. По-видимому, закрытые ключи, которые соответствуют сжатым открытым ключам могут быть признаны, поскольку Bitcoin добавляет один (неиспользуемые) байты для них (значения: 0x01), что делают их 33 байт длиной вместо 32 байт. См CBitcoinSecret в base58.h. Какой-то добавляется байты вызывают первый Base58 характер, чтобы стать «L» вместо «5» (вероятно, есть некоторая инверсия в порядке байт трубопровода).

Для точных различий в поведении см key.cpp. Суть в CKEY :: SetCompressedPubKey, который вызывает EC_KEY_set_conv_form. Сжатые открытые ключи могут быть распознаны, потому что они меньше (они 33 байт), чем несжатые ключи. Соответствующие адреса Bitcoin не могут быть отделены друг от друга, так как они безопасные хэши открытых ключей.
CJP сейчас офлайн Пожаловаться на CJP   Ответить с цитированием Мультицитирование сообщения от CJP Быстрый ответ на сообщение CJP

18 октября 2014, 12:57:10 PM   # 3
 
 
Сообщения: 464
Цитировать по имени
цитировать ответ
по умолчанию Re: Нужна помощь по работе со сжатыми ключами

Рад, что ты понял это. Если вы хотите справочную информацию, вот нить объяснить тонкие различия.


hhanh00 сейчас офлайн Пожаловаться на hhanh00   Ответить с цитированием Мультицитирование сообщения от hhanh00 Быстрый ответ на сообщение hhanh00

18 октября 2014, 1:59:25 PM   # 4
CJP
 
 
Сообщения: 210
Цитировать по имени
цитировать ответ
по умолчанию Re: Нужна помощь по работе со сжатыми ключами

Благодарю.

Вот моя реализация в Python:
https://github.com/cornwarecjp/amiko-pay/commit/40ad1f844bad6c74223d13bc71a4812e8b24e9db

Интересно, что не требовалось никаких изменений в другие части программного обеспечения. Им нужно просто передать ключевые данные в этот класс, и этот класс будет выяснить различие между сжимаются / несжатый автоматически.
CJP сейчас офлайн Пожаловаться на CJP   Ответить с цитированием Мультицитирование сообщения от CJP Быстрый ответ на сообщение CJP



Как заработать Биткоины?

Bitcoin Wallet * Portefeuille Bitcoin * Monedero Bitcoin * Carteira Bitcoin * Portafoglio Bitcoin * Bitcoin Cüzdan * 比特币钱包

bitcoin-zarabotat.ru
Почта для связи: bitcoin-zarabotat.ru@yandex.ru

3HmAQ9FkRFk6HZGuwExYxL62y7C1B9MwPW