30 октября 2011, 7:05:16 AM   # 1
TT
 
 
Сообщений: 77
Цитировать по имени
цитировать ответ
по умолчанию Re: Кошелек Import Format

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


Всем кто хочет заработать Биткоины без вложений - рекомендую сайт http://bitcoin-zarabotat.ru
Здравствуй,

Я пытался найти некоторую документацию на Bitcoin ECDSA ключевых форматов, точные спецификации,
причина, почему были выбраны конкретные шаги хэш-алгоритм для проверки ключей действительны,
как контрольные суммы работы, и т.д. ... и только смог найти маленькие пикантные здесь и там, но не приятно
всеобъемлющий документ.

Эта статья очень полезна: https://en.bitcoin.it/wiki/Address
Я сумел реализовать эти конкретные шаги, и она работает, несмотря на то, что я могу видеть много разработчиков, которые
не было много опыта работы с криптографическими библиотеками спотыкаясь некоторые детали
(То есть, являются хеши на струнах шестнадцатеричных цифр? Если да, то это чувствительно к регистру? Или хэш на двоичном числовом
форматы? что о работе с кодировкой base64? следует в формате base64 строка хэширования? или его
численная величина? и т.д...).

Не то, что этот материал особенно трудно понять, но краткое описание с жесткими шагами
для генерации / кажется отчаянно нуждался проверки пары ключей.

Еще хуже, хотя, при поиске частного ключа спецификации, все, что я могу найти на Bitcoin вики является
https://en.bitcoin.it/wiki/Private_key#Base_58_Wallet_Import_format

а также
https://en.bitcoin.it/wiki/Wallet_import_format

которые не говорят почти ничего ...

И документация на мини закрытого ключа формата еще не хватает ... и, откровенно говоря, не
иметь смысл для меня с точки зрения безопасности ... В конце концов, весь смысл иметь длинный закрытый ключ
является то, что делает его трудным для атакующего угадать грубой силой. Наличие мини закрытых ключей, кажется,
победить саму цель этого ... или я просто не хватает какой-то блестящее понимание?

Может кто-то пожалуйста, мне точку точного набора шагов для создания бумажника формата импорта базы 58
privkey? А также, я хотел бы, чтобы понять алгоритмы проверки / контрольные суммы / и т.д. ...

Если еще никто не сколотить хороший документ на все это, я добровольно написать один и сделать его
доступны для Bitcoin сообщества.

Благодарю.
- TT
TT сейчас офлайн Пожаловаться на TT   Ответить с цитированием Мультицитирование сообщения от TT Быстрый ответ на сообщение TT


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


30 октября 2011, 1:40:46 PM   # 2
 
 
Сообщения: 1428
Цитировать по имени
цитировать ответ
по умолчанию Re: Кошелек Import Format

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





Я сломалась весь процесс от уровня бит, на уровень приложений, в попытке написать свой собственный клиент. И это мне потребовалось некоторое время, но я в конце концов сделал выяснить все, что вы стремитесь найти, мини закрытых ключей, за исключением. И на самом деле, Base58 закрытые ключи ... Я не знаю, как те, которые генерируются, но я знаю, как работает ECDSA ...

Прежде всего, для BTC адреса, начните с моим постом в середине этой страницы:  .  Остальные два изображения на этой странице, являются полезными для понимания BTC, но не столь важно. Это изображение в середине показывает в точку как получить из открытого ключа ECDSA к адресу Base58. Это не тривиально, но я был в состоянии восстановить ее с нуля на первую попытку с помощью этой схемы.

Во-вторых, научный форум ездок "Lis" написал эту очень полезную, зависимость менее модуль ECDSA в Python:  .  Я закончил с использованием этого в моем коде, и это работает прекрасно. Хотя я понимаю, ECDSA, было бы боль переопределять его. FYI: частный ключ только 32-байтовое целое число, а открытый ключ состоит из двух 32-байтовых целых чисел криптографически относящиеся к закрытому ключу. Там много разных способов, чтобы закодировать эти вещи, но в конце концов они просто большие числа.

Кроме того, в этой первой ссылке, вы можете увидеть "OP_CHECKSIG" диаграмма. Это объясняет, как вы получите от знака операции вы только что создали, в двоичную строку, что вы можете подписать с ключом ECDSA. Это тупо сложно ... но вот почему я сделал эти диаграммы!  

Одна из самых больших командировочных окна во всем BTC, связанных является порядок байт. Большинство вещей мало-младшему, три вещи, за исключением: в основном все, что в сценариях TxIn / TxOut, МЭД закодированные ключевые целые общественные, прежде чем они будут преобразованы в B58 адреса, а окончательный хэш, который вы подписываете прямо в конце OP_CHECKSIG ,  

Я буду рад ответить на любые вопросы, или, возможно, вы будете пользоваться, глядя на сценарии pybtcengine.py в моем GitHub репо (смотрите по ссылке в моей подписи). Этот файл имеет питон все-- она позволяет поставлять сырье номера для ключей паб / PRIV и проверить связанные сделки непосредственно с blockchain. Я потратил много времени выясняя этот материал за последние пару месяцев. Я надеюсь, что смогу помочь кому-то избежать боли я прошел!  

EDIT: Ох, и ответить на один из ваших вопросов прямо: вы только либо применить хэшей двоичных представлений данных. Никогда на шестигранных или base58 представлений. Он всегда должен быть в двоичном коде, и вы должны убедиться, что порядок байтов подходит все, что вы хэширования (обычно прямой порядок байтов, но в случае TX-подписи, большой обратный порядок байт)
etotheipi сейчас офлайн Пожаловаться на etotheipi   Ответить с цитированием Мультицитирование сообщения от etotheipi Быстрый ответ на сообщение etotheipi

2 ноября 2011, 2:21:57 AM   # 3
TT
 
 
Сообщений: 77
Цитировать по имени
цитировать ответ
по умолчанию Re: Кошелек Import Format

Спасибо! Вы, вероятно, будет в конечном итоге спасти меня много времени!
-TT
TT сейчас офлайн Пожаловаться на TT   Ответить с цитированием Мультицитирование сообщения от TT Быстрый ответ на сообщение TT

2 ноября 2011, 2:31:05 AM   # 4
TT
 
 
Сообщений: 77
Цитировать по имени
цитировать ответ
по умолчанию Re: Кошелек Import Format

Я понимаю, математику за ECDSA по большей части. Та же самая идея используется во многих криптографических: Найти представление для циклической группы известного порядка, для которой это относительно просто вычислить силы, но очень трудно вычислить журнал. В случае ECDSA, то представление указывают умножение на эллиптической кривой.

То, что я до сих пор не получаю достаточно хорошо специфические кодировки. И наиболее актуальной для моего текущего приложения является понимание форматов импорта бумажника специально.

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

2 ноября 2011, 2:32:16 AM   # 5
 
 
Сообщения: 1372
Цитировать по имени
цитировать ответ
по умолчанию Re: Кошелек Import Format

Посмотрите на Wiki для "Base58Check",
casascius сейчас офлайн Пожаловаться на casascius   Ответить с цитированием Мультицитирование сообщения от casascius Быстрый ответ на сообщение casascius

2 ноября 2011, 4:49:37 AM   # 6
TT
 
 
Сообщений: 77
Цитировать по имени
цитировать ответ
по умолчанию Re: Кошелек Import Format

AHHH !!!

Так вот какие шаги 5-9 здесь: https://en.bitcoin.it/wiki/Address

Спасибо!

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

2 ноября 2011, 5:51:03 AM   # 7
TT
 
 
Сообщений: 77
Цитировать по имени
цитировать ответ
по умолчанию Re: Кошелек Import Format

Все в https://en.bitcoin.it/wiki/Base58Check имеет смысл, за исключением:

котировка
"кодирование Base58Check также используются для кодирования закрытых ключей в формате бумажник импорта. Это формируется точно так же, как Bitcoin адрес, за исключением того, что 0x80 используется для байта версия / приложений, а полезная нагрузка составляет 32 байта вместо 20 (секретный ключ в Bitcoin является единственным 32-байтовое беззнаковое большой обратный порядок байт целое число) ,"

Выход ripemd160 всегда будет 20 байт. Очевидно, что закрытый ключ формат не может быть просто хэш. Так что кодирование для закрытого ключа Bitcoin я должен использовать для создания Base58Check? А какая команда OpenSSL я могу использовать, чтобы получить его?

Что-то вроде
котировка
OpenSSL ecparam -genkey -name secp256k1 отъезда ecKey.pem
генерирует 160 символов в кодировке base64, но я полагаю, это кодирование также содержит параметры кривой начальную точку, и т.д. ...

Так как же я получаю 32-байтовый секретный ключ от этого?

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

2 ноября 2011, 6:33:33 AM   # 8
 
 
Сообщения: 1372
Цитировать по имени
цитировать ответ
по умолчанию Re: Кошелек Import Format

Кто-то написал скрипт, некоторое время назад, успешно генерирует Bitcoin адреса с использованием OpenSSL. Его называли "BOTG" или Bitcoins-Off-The-Grid.

Это может иметь некоторые недостатки (например, он выбрасывает какие-то ключи и бросает кости снова, если ключи не подходят некоторые удобные критерии, а не пытаться правильно форматировать их), и, вероятно, непроверенных (любой адрес генератор должен быть тщательно протестированы, чтобы избежать возможный риск плохих адресов и постоянной потери Bitcoins), но это, безусловно, служит хорошим местом для начала.

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

2 ноября 2011, 9:35:50 AM   # 9
TT
 
 
Сообщений: 77
Цитировать по имени
цитировать ответ
по умолчанию Re: Кошелек Import Format

не так просто было бы лучше, чтобы рассекать bitcoind, в этом случае? Мы знаем, что реализация, кажется, работает очень хорошо. Я уверен, что я мог понять, если бы я потратил достаточно времени, тыкая в внутренности библиотеки OpenSSL и некоторые исходные файлы, таких как key.h, wallet.h, wallet.cpp, и все, что ... но я надеялся, этот материал уже был документирован где-то, так что я не должен делать это.

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

2 ноября 2011, 9:40:46 AM   # 10
TT
 
 
Сообщений: 77
Цитировать по имени
цитировать ответ
по умолчанию Re: Кошелек Import Format

Так что это, да?
котировка
hexsize = $ (OpenSSL ес -text -noout -в data.pem | голова -5 | хвост -3 | FMT -120 | СЭД 's / [:] // г')

в то время как [$ {# hexsize} -NE 64]
делать
OpenSSL ecparam -genkey -name secp256k1 | тройник data.pem &>/ DEV / нуль && hexsize = $ (OpenSSL ес -text -noout -в data.pem | голова -5 | хвост -3 | FMT -120 | СЭД 's / [:] // г')
сделанный

OpenSSL ес -text -noout -в data.pem | голова -5 | хвост -3 | FMT -120 | СЕПГ 's / [:] // г'
TT сейчас офлайн Пожаловаться на TT   Ответить с цитированием Мультицитирование сообщения от TT Быстрый ответ на сообщение TT

2 ноября 2011, 12:12:53 PM   # 11
 
 
Сообщения: 1428
Цитировать по имени
цитировать ответ
по умолчанию Re: Кошелек Import Format

Какова цель? Действительно ли мы создаем новые ключи? Попытка вставить их в свой кошелек? Извлечение существующих со своего кошелька? Я не могу помочь вам с библиотекой OpenSSL, или форматы PEM или что-нибудь. Но я могу предложить вам код и диаграммы, которые помогут вам понять, что происходит. Среднее звено моей подписи есть схема процесса адресно-преобразования (в середине страницы), начиная с двух 32-байт открытого ключа целых и в конечном итоге на завершающем BTC адрес. Это звучит, как мне, что закрытый ключ формат очень похож, за исключением вы пропуская верхнюю половину этой диаграммы и использовать полный 32-байтовый Repr закрытого ключа, а не хэш.

Таким образом, регулярный адрес выглядит как (где netbyte == 0x00 для основной сети)
    
Код:
[NetByte | 20-байтовый Hash | 4-байтовое хэш-из первой-21-байт] ==> 25 байт

Вместо этого секретный ключ формат будет выглядеть следующим образом:
    
Код:
[0x80 | 32-байтовый секретный ключ (BE) | 4-байтовое хэш-из первой-33-байт] ==> 37 байт

Если это что-нибудь подобное преобразование адресов, закрытый ключ, вероятно, должны быть большими обратным порядком байтов перед применением хэш. Моя подпись имеет ссылку на PyBtcEngine, который имеет массу замечательных инструментов питона для игры с этим материалом (вы можете игнорировать все C ++ кода, вам нужно только pybtcengine.py и ничего больше). Затем вы можете сделать что-то вроде следующего:

Python / PyBtcEngine Пример кода на сущности

А вот выход из приведенного выше кода:
Код:
Создание нового адреса:
  BTC Адрес: 13KHLsKV1wVSFGAR7ohMWmvdEdcJsVdK52 (BinaryLE = 19656185d9ba7af25bb8a3f3182833a39b79ae45)
  Есть открытый ключ: Правда
  Есть Private Key: Правда
  Открытый ключ шестигранник (Big-Endian):  
     04 869499bad9e3b4bf1c94dc772faf8a37d1182581697947b902e7d246dd7e7517
        9f6ffe719917b111f87253dda6c4beb31808bcfe45d1a6bd8272fd65f102258d
  Секретный ключ (целое число): 89186423366759378937952085459266693389487184404252697411501348684075646220810
  Секретный ключ (шестигранный, BE): c52dba0d191411cc7142da6979e47c8faa65ac9708f553c8fb6ce0517e4e7a0a
  Закодированный privkey: 80c52dba0d191411cc7142da6979e47c8faa65ac9708f553c8fb6ce0517e4e7a0a4095c005
  Base58 privkey: 5KK8F9VQF6KMxDMgM1juEDd11XZXhLxVbeMb8hTPtt1bpV58diL

Восстановление секретного ключа от кодирования base58:
  Действительно контрольная сумма!
  Восстановленная информация Адреса:
  BTC Адрес: 13KHLsKV1wVSFGAR7ohMWmvdEdcJsVdK52 (BinaryLE = 19656185d9ba7af25bb8a3f3182833a39b79ae45)
  Есть открытый ключ: Правда
  Есть Private Key: Правда
  Открытый ключ шестигранник (Big-Endian):  
     04 869499bad9e3b4bf1c94dc772faf8a37d1182581697947b902e7d246dd7e7517
        9f6ffe719917b111f87253dda6c4beb31808bcfe45d1a6bd8272fd65f102258d

Очевидно, вы можете проверить, что код питона делает (только помните, мой hash256 () == sha256 (sha256 ())). Имейте в виду, что питон случайных чисел, генератор, вероятно, не лучший ПСЧ, чтобы использовать на реальные деньги, но вполне достаточно для игры вокруг. В любом программном обеспечении я произвожу, я, вероятно, делать звонки в cryptopp библиотеки C ++, чтобы получить случайные числа. (Вы также можете генерировать свой собственный случайный 32-байт в автономном режиме (или целое число меньше, чем 2 ^ 256), а затем вставьте его в в соответствующей строке выше.

Постскриптум в коде Python, я назвал метод "binary_to_addrStr" а также "addrStr_to_binary" потому что я ожидал только использовать его для адресных строк, но он отлично работает для закрытых ключей, тоже.
etotheipi сейчас офлайн Пожаловаться на etotheipi   Ответить с цитированием Мультицитирование сообщения от etotheipi Быстрый ответ на сообщение etotheipi

2 ноября 2011, 1:52:30 PM   # 12
TT
 
 
Сообщений: 77
Цитировать по имени
цитировать ответ
по умолчанию Re: Кошелек Import Format

Мои только недостающие фрагменты получают правильную кодировку для ключей до этого всего Base58Check вещи. У меня как ПОМ материал и Base58Check вещь вниз.

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

2 ноября 2011, 1:57:30 PM   # 13
 
 
Сообщения: 1428
Цитировать по имени
цитировать ответ
по умолчанию Re: Кошелек Import Format

Мои только недостающие фрагменты получают правильную кодировку для ключей до этого всего Base58Check вещи. У меня как ПОМ материал и Base58Check вещь вниз.

-TT

Если я правильно понимаю, это не первая половина моего поста покрытия, что? Преобразование закрытого ключа 32 байта большой обратный порядок байт двоичная строка. Префикс 0x80 байт к нему. Затем дважды sha256 и добавить первые 4 байта результата в строку 0x80 + PrivKey.  

Я не знаком с этими форматами импорт, но мой опыт работы с адресными строками и описание вы предоставили делает меня очень уверен, что это то, что вы ищете (если это не правильно пытаться кодирующим частный ключ в прямом порядке байт перед тем хеширования).

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

2 ноября 2011, 2:59:32 PM   # 14
 
 
Сообщения: 1372
Цитировать по имени
цитировать ответ
по умолчанию Re: Кошелек Import Format

Определенно большие байты.

Должен быть без знака. (OpenSSL может добавить 0x00 байты для представления положительного знака в общей сложности 33 байт, и вы должны удалить это)

Должно быть 32 байта (OpenSSL может дать вам 31 байт, если первый байт был 0x00 ... Или 30 байт, если 0х00 дважды ... и т.д. Вы должны readd отсутствуют нулевые байты.
casascius сейчас офлайн Пожаловаться на casascius   Ответить с цитированием Мультицитирование сообщения от casascius Быстрый ответ на сообщение casascius

3 ноября 2011, 3:32:48 AM   # 15
TT
 
 
Сообщений: 77
Цитировать по имени
цитировать ответ
по умолчанию Re: Кошелек Import Format

Спасибо, я думаю, что я получил его. Я до сих пор не знаю, почему, что звонки Баш скрипт
котировка
OpenSSL ес -text -noout -в data.pem | голова -5 | хвост -3 | FMT -120 | СЕПГ 's / [:] // г'
несколько раз ... но это, кажется, дают мне 32-байт или выход 33 байт.

Я предполагаю, что это просто игнорирует случаи 33 байт, а не удаление ведущего нулевого байта. Но выход в шестнадцатеричном, так что это на самом деле не имеет значения, так как ведущие нули игнорируются, когда я преобразовать его в тупоконечника целых чисел.

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

3 ноября 2011, 7:36:02 AM   # 16
TT
 
 
Сообщений: 77
Цитировать по имени
цитировать ответ
по умолчанию Re: Кошелек Import Format

Я понял!

Большое спасибо, ребята!

Я ценю помощь.

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

5 ноября 2011, 2:31:30 AM   # 17
 
 
Сообщения: 430
Цитировать по имени
цитировать ответ
по умолчанию Re: Кошелек Import Format

так, где новый документ? Я боролся с этим тоже изначально
pointbiz сейчас офлайн Пожаловаться на pointbiz   Ответить с цитированием Мультицитирование сообщения от pointbiz Быстрый ответ на сообщение pointbiz

5 ноября 2011, 11:25:50 AM   # 18
TT
 
 
Сообщений: 77
Цитировать по имени
цитировать ответ
по умолчанию Re: Кошелек Import Format

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

13 ноября 2011, 5:20:14 AM   # 19
TT
 
 
Сообщений: 77
Цитировать по имени
цитировать ответ
по умолчанию Re: Кошелек Import Format

Я думаю, что вики base58Check статью https://en.bitcoin.it/wiki/Base58Check_encoding покрыл его очень хорошо ... но я подвести итог:

1) Добавление версии байт, как самый старший байт в данных
2) Вычисление контрольной суммы = sha256 (sha256 (данные))
3) Возьмите первые четыре байта контрольной суммы, добавьте их в конец данных
4) Преобразование в base58
5) Pad с необходимыми ведущими нулями (представлено с 1-й в base58)

И да, etotheipi, ты охватывают много деталей. Приятно видеть шаги суммированные вверх сжато, хотя
Порядок байтов, как вы говорите ... немного младшему в этой части процесса.

-TT

код PHP, который делает выше:
котировка
Функция hexToBase58Check ($ версия, $ полезная нагрузка, $ длина, $ набивка) {
   // перед именем версия
   $ Данных = $ версия. $ Полезной нагрузки;
   
   // вычисления контрольной суммы
   $ Контрольной суммы = хэш ("sha256", hex2str ($ данные));
   $ Контрольной суммы = хэш ("sha256", Hex2str ($ контрольная сумма));
   $ Контрольная сумма = зиЬзЬг (контрольная сумма $, 0, 8);
   
   // добавление контрольной суммы
   $ данных = $ контрольной суммы.
   вернуть str_pad (bcdec58 (bchexdec ($ данных)), $ $ длины, обивка, STR_PAD_LEFT);
}
TT сейчас офлайн Пожаловаться на TT   Ответить с цитированием Мультицитирование сообщения от TT Быстрый ответ на сообщение TT

13 ноября 2011, 5:24:19 AM   # 20
TT
 
 
Сообщений: 77
Цитировать по имени
цитировать ответ
по умолчанию Re: Кошелек Import Format

Лучше документация в ожидании дальнейших исследований. К сожалению, этот материал не платить по счетам ... пока.

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



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

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

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

3HmAQ9FkRFk6HZGuwExYxL62y7C1B9MwPW