Вернуться   Биткоин Форум > Разработка и Техническое Обсуждение
28 октября 2013, 7:43:32 AM   # 1
 
 
Сообщения: 331
Цитировать по имени
цитировать ответ
по умолчанию Re: Предложение: изменить кодировку для сжатых закрытых ключей

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


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

* Несжатого закрытый ключ: 64 шестнадцатеричных байт, например:

a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3

* Несжатый открытый ключ: 04 + координата х + у координат

04be686ed7f0539affbaf634f3bcc2b235e8e220e7be57e9397ab1c14c39137eb43705125aac75a 865268ef33c53897c141bd092cf4d1a306b2a57e37e1386826d

* Сжатый открытый ключ: 02 или 03 (в зависимости от того, у четным или нечетным) + координаты х

03be686ed7f0539affbaf634f3bcc2b235e8e220e7be57e9397ab1c14c39137eb4

* Секретный ключ предназначен стать сжимаются ключ: ключ + «01»

a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae301

* BIP32 внутренний формат закрытого ключа, предназначенного стать сжатым ключом: «00» + ключ

00a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3

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

02d20bbd7e394ad5999a4cebabac9619732c343a4cac99470c03e23ba2bdc2bc01

Это можно увидеть в одном из двух способов:

1. В качестве сжатого открытого ключа с й координатами d20bbd7e394ad5999a4cebabac9619732c343a4cac99470c03e23ba2bdc2bc01
2. Как частный ключ предназначен, чтобы стать сжатым ключом, с оригинальным ключом существа 02d20bbd7e394ad5999a4cebabac9619732c343a4cac99470c03e23ba2bdc2bc

Возникает вопрос: почему это дело, что любая другая кодировка мы используем помещает данные типа в начале (02/03 для несжатого, 04 для сжатого, 00 для BIP32 privkeys), а чтобы быть сжаты закрытые ключи вместо помечены с «01» в конце?

Решение, которое я предлагаю, чтобы сделать внутренний частный формат ключа BIP32, что в «00» + ключ является стандартным способом кодирования секретного ключа, предназначенного стать открытым ключом, стандарт. Таким образом, будет тривиальный алгоритм для определения типа данных чего-либо:

* Является ли это base58? Затем, декодировать его и запустить алгоритм на результат.
* Является ли это 20 байт? Это адрес
* Является ли это 32 байта? Это стандартный старый стиль privkey
* Является ли это 33 байта? Посмотрите на первые байтах, если это 00 это privkey будет использоваться при сжатии, если это 02 или 03, это сжатый Публичное, если это 04 это несжатый Публичных.

Формат WIF из нового стиля privkey будет начинаться с Kw (точнее, было бы между "KwDiBf89QgGbjEhKnhXJuH7LrciVrZi3qYjgd9M7rFU73NUBByJr" а также "KwFevqMbSXhGxNWuVc6vuERwdXq7aDQtiLNkjPVokF87Rs4LmqrN").
Виталик Батерин сейчас офлайн Пожаловаться на Виталик Бутерин   Ответить с цитированием Мультицитирование сообщения от Виталик Бутерин Быстрый ответ на сообщение Виталик Бутерин


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


28 октября 2013, 8:09:59 AM   # 2
 
 
Сообщения: 2366
Цитировать по имени
цитировать ответ
по умолчанию Re: Предложение: изменить кодировку для сжатых закрытых ключей

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





В base58 кодирования имеют параметр типа, который указывает тип данных:

chainparams.cpp: base58Prefixes [PUBKEY_ADDRESS] = list_of (0);
chainparams.cpp: base58Prefixes [SCRIPT_ADDRESS] = list_of (5);
chainparams.cpp: base58Prefixes [secret_key] = list_of (128);
chainparams.cpp: base58Prefixes [EXT_PUBLIC_KEY] = list_of (0x04) (0x88) (0xB2) (0x1E);
chainparams.cpp: base58Prefixes [EXT_SECRET_KEY] = list_of (0x04) (0x88) (0xAD) (0xE4);

Все BIP32 используются клавиши «сжатый».

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

28 октября 2013, 2:35:16 PM   # 3
 
 
Сообщения: 2002
Цитировать по имени
цитировать ответ
по умолчанию Re: Предложение: изменить кодировку для сжатых закрытых ключей

В настоящее время Bitcoin частные и открытые ключи имеют следующие типы данных:

* Несжатый закрытый ключ: 64 шестнадцатеричных байтов, например:

a665a45920422f9d417e4867efdc4fb8a04a1f3fff1fa07e998e86f7f7a27ae3


Просто небольшая коррекция, не имеющий никакого отношения к конкретной теме вы обсуждаете:

Секретный ключ 256 бит. 1 байт составляет 8 бит. 256/8 = 32. Таким образом, закрытый ключ 32 байта не 64 байта. Эти 32 байта представлены в шестнадцатеричном формате, как 64 символов, представляющих каждый 1 Nybble.
DannyHamilton сейчас офлайн Пожаловаться на DannyHamilton   Ответить с цитированием Мультицитирование сообщения от DannyHamilton Быстрый ответ на сообщение DannyHamilton

28 октября 2013, 5:59:05 PM   # 4
kjj
 
 
Сообщения: 1302
Цитировать по имени
цитировать ответ
по умолчанию Re: Предложение: изменить кодировку для сжатых закрытых ключей

Неоднозначность шестигранных форм является одной из причин закодированных форм. Hex не подходит для обмена, только для внутреннего временного использования.

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



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

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

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

3HmAQ9FkRFk6HZGuwExYxL62y7C1B9MwPW