Invalid bitcoin private key

Содержание
  1. Приватный ключ биткоина (private key) – что это такое, как выглядит, как получить и безопасно сохранить
  2. Как внешне выглядят публичный и приватный ключи кошелька биткоина
  3. Публичный адрес (ключ)
  4. Как создать приватные биткоин-ключи
  5. Как получить (экспортировать) приватный ключ биткоина
  6. Извлечение (экспорт) приватных ключей из криптокошельков
  7. Получение приватного ключа из онлайн-кошелька Blockchain
  8. Получение ключа в бумажного кошельке
  9. Что такое детерминированный кошелек (HD wallet), seed фраза
  10. Как безопасно хранить приватные ключи
  11. bgold-cli importprivkey returns error code -5 with bitcoin priv key #131
  12. Comments
  13. MrHillss commented Nov 3, 2017 •
  14. Describe the issue
  15. Can you reliably reproduce the issue?
  16. If so, please list the steps to reproduce below:
  17. Expected behaviour
  18. Actual behaviour
  19. Screenshots.
  20. What version of bitcoin-core are you using?
  21. Machine specs:
  22. MrHillss commented Nov 4, 2017
  23. Emendiz commented Nov 10, 2017 •
  24. h4x3rotab commented Nov 10, 2017
  25. Emendiz commented Nov 10, 2017
  26. h4x3rotab commented Nov 10, 2017
  27. h4x3rotab commented Nov 10, 2017
  28. Emendiz commented Nov 10, 2017
  29. Уязвимость генератора псевдослучайных чисел в Bitcoin
  30. Атака генератора псевдослучайных чисел
  31. Каков масштаб угрозы для Биткоина?
  32. Как с этим бороться ?

Приватный ключ биткоина (private key) – что это такое, как выглядит, как получить и безопасно сохранить

Сегодня рассмотрим значение слов «приватный ключ биткоина» – для чего он нужен, как получить и как правильно хранить.

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

Как внешне выглядят публичный и приватный ключи кошелька биткоина

Приватный ключ биткоина кодируется в следующих форматах: Base64, MINI, Hex, WIF, сжатый WIF. Все они взаимосвязаны и преобразуются один в другой:

  • Формат WIF (51 символ, «5» в начале): 5JPeWYZx922hXi49Lg2RJPwLfqcmDGS9YegMNgANvx8cJa6kNK8.
  • Большинство криптовалютных кошельков, используют для хранения приватных ключей WIF-сжатый формат (52 символа, начинается с «L» или «K»): KykxZQLSNPYVtYCsoqFGFnEqpRar997zihJgvfrPo8LapFrAtaea.
  • Формат Hex (64 символа): 4BBFF74CA25A2A00409DCB24EC0418E9A41F9B3B56216A183E0E9731F4589DC6.
  • Формат Base64 (44 символа): S7/3TKJaKgBAncsk7AQY6aQfmztWIWoYPg6XMfRYncY=.

На картинке один приватный ключ биткоина в разных форматах:

Публичный адрес (ключ)

Внешний вид публичного биткоин-ключа в различных форматах:

  • Наиболее используемый в кошельках — короткий адрес. Он имеет вид 1BSUkuwtdM7gkdy6W4Q954gNKWBgy4A19Q и всегда начинается с единицы или тройки (segwit address).

Публичные ключи (public key) видны всем желающим и используются как адрес для отправки или получения биткоинов. В одном кошельке можно сгенерировать неограниченное количество публичных ключей. Каждому будет соответствовать свой приватный ключ.

Как создать приватные биткоин-ключи

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

  1. Локальные. Устанавливаются на десктопные или мобильные устройства. К ним относят Jaxx, Electrum, Coinomi, Exodus и другие. Делятся на «тонкие» и «толстые», в зависимости от способа обращения к блокчейн-сети.
  2. Онлайн-кошельки. Для их создания обычно нужно указать email и пароль. Такие сервисы могут предоставлять возможность просмотра приватных ключей или не иметь такой функции. Популярные сайты для хранения криптомонет: blockchain.com.
  3. Биржи криптовалют. После создания счета доступны кошельки для криптовалют, которые в листинге площадки. Приватные ключи не предоставляются. Можно вносить депозит на предоставленный адрес, торговать криптовалютой и совершать вывод. Популярные торговые платформы: LocalBitcoins (ЛокалБиткоинс), EXMO, Binance, Huobi, BitMEX и другие.
  4. Аппаратные кошельки. Наиболее безопасный вариант сохранить криптоактивы в безопасности. Владелец имеет полный контроль над всеми приватными ключами, а их кража невозможна. Выпускают аппаратные устройства Ledger, Trezor и другие.
  5. Бумажные. Это может быть просто записанный приватный ключ на бумаге или сервисы, которые его генерируют и предоставляют возможность распечатать и сохранить. Способ относится к «холодному» хранению криптовалют.
Читайте также:  Доходность по обезличенным металлами

Как получить (экспортировать) приватный ключ биткоина

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

Извлечение (экспорт) приватных ключей из криптокошельков

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

Инструкция по экспорту:

  1. Активировать «Developer Menu». В Windows и Linux это действие производится нажатием сочетания клавиш Ctrl+Shift+D.
  2. Выбрать ту криптовалюту, частный ключ которой интересует в текущий момент. Перейти по пунктам: «Developer» – «Assets» – «Bitcoin» или иная выбранная валюта – «Export Private Keys».
  3. В появившемся окне подтвердить свое желание нажатием кнопки «I’m sure».
  4. На рабочем столе появится папка под названием «Exodus-export», внутри – файл формата CSV. Это файл скопировать в надежное место, папку сразу удалить.

Открыть файл можно через текстовый редактор Libre Office, Wordpad, Exel, стандартный Блокнот и т. д. В графе «PRIVKEY» будет буквенно-цифровое сочетание – это и есть приватный (закрытый) ключ биткоина:

Получение приватного ключа из онлайн-кошелька Blockchain

Рассмотрим, как получить приватный ключ в популярном онлайн-кошельке Блокчейн. В настройках функции экспорта ключей нет. Нужно воспользоваться seed-фразой, которая находится по адресу «Настройки» — «Безопасность» — «Фраза для восстановления кошелька». Скопировать все слова и перейти в генератор iancoleman.io . Указать количество слов (12) и вставить их в форму «BIP39 Mnemonic».

Опуститься вниз страницы в раздел «Derived Addresses». В нем будет адрес, публичный и приватный ключ.

Получение ключа в бумажного кошельке

Бумажные кошельки генерируют приватные ключи локально с помощью выполнения скрипта в браузере.

После сбора случайной энтропии высветится сжатый адрес биткоина и приватный ключ в сжатом WIF-формате. Что с ними делать, понятно по картинке:

Сервис для создания бумажных кошельков: bitaddress.org.

Что такое детерминированный кошелек (HD wallet), seed фраза

В 2011 году для решения ряда проблем с анонимностью разработчики Bitcoin Core выпустили такую разработку, как HD Wallet. HD расшифровывается «hierarchical deterministic», то есть «иерархически детерминированный». Звучит непонятно, но по факту все не так сложно.

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

Пример seed (backup phase) в кошельке Blockchain (всего 12 слов):

«Детерминированная» система – та, где недопустимы никакие случайности в процессе формирования будущих состояний. То есть конкретные вводные данные всегда будут выдавать конкретный результат.

Преимущества технологии HD wallet:

  1. Усиление анонимности. Владелец HD wallet обладает одной копией программного бумажника с одним тайным ключом (называемым также «семя» или «master key»). При объединении семени с хеш-функциями образуется бесконечное количество связанных между собой адресов. Связь невидима со стороны. Это адреса называют «дочерними».
  2. Легкость запоминания сид-фразы. Записать или выучить код из 12 слов намного легче, чем хранить приватные ключи для каждого отдельного адреса биткоина.
  3. Комфортное резервное копирование. Многие пользователи сталкиваются с проблемами резервного копирования мобильных кошельков на iOS или Android – возникает необходимость использовать один и тот же ключ, а это прямая угроза для безопасности. HD кошелек вообще не требует создания резервных копий, достаточно распечатать или сохранить в надежном месте сид-фразу.

Технология реализована в надстройке Armory для Bitcoin Core, кошельках Electrum, MultiBit HD, BitGo, CarbonWallet, The Hive, Mycelium Bitcoin Wallet, Green Address, Trezor и других.

Как безопасно хранить приватные ключи

Используя интернет-кошельки, следует понимать, что ключи хранятся на серверах компании-разработчика. Пользователь лично владеет private key лишь в случае использования десктопных, аппаратных или бумажных кошельков.

Варианты хранения кода:

  1. На бумаге.
  2. На флешке в виде скриншота или фотографии, pdf-файла.
  3. На жестком диске, в том числе съемном.
  4. На физической монете, металлической пластине (своеобразный аналог аппаратного «холодного» кошелька в форме криптовалютной монеты).
  5. В памяти.
Читайте также:  Как правильно начать заниматься инвестициями

Ни один из перечисленных способов не дает 100%-ную гарантию сохранности ключа, в каждом случае есть вероятность физического повреждения, взлома или кражи. Так что выбор каждый делает, исходя из своих соображений.

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

Источник

bgold-cli importprivkey returns error code -5 with bitcoin priv key #131

Comments

MrHillss commented Nov 3, 2017 •

Describe the issue

bgold-cli importprivkey returns «error code -5» when fed with a regular bitcoin private key created before the fork. Idk if it is normal.

Can you reliably reproduce the issue?

If so, please list the steps to reproduce below:

  1. Turn node on with sudo bgoldd -printtoconsole -testnet
  2. run «bgold-cli importprivkey /bitcoin priv key/ /label/»
  3. Error message returned:
    error code: -5
    error message:
    Invalid private key encoding

Expected behaviour

Bitcoin private key should be added to the node and the related address should be accessible

Actual behaviour

Bitcoin private key is not added

Screenshots.

What version of bitcoin-core are you using?

Machine specs:

VM created with virtualbox

The text was updated successfully, but these errors were encountered:

MrHillss commented Nov 4, 2017

Ty for your answer. I thought the address mechanism was the same. Now it turns out the addresses are going to be differentiated as well, which is a plus in my mind. I’ll close the issue.

Emendiz commented Nov 10, 2017 •

Sorry, not sure I understand and I am having the same issue.
Is there a specific BTG command to import private keys?

Above it is stated «ty for your answer» but I don’t see any answer!

h4x3rotab commented Nov 10, 2017

Are you trying to import Bitcoin mainnet private key to BTG testnet? The privkey of mainnet and testnet is not compatible. You can import mainnet or testnet privkey between Bitcoin Core and BTG client but not cross.

Emendiz commented Nov 10, 2017

No, it was something even more basic: I installed all the daemon and CLI succesfully (it took me a while), and I am now able to do everything, even I am mining on the testnet.
The only thing «failing» is that I created a new address, then deleted the wallet.dat, and then with a new wallet tried to import that same address and I get the error shared above:
«error code -5»

I am following the SAME steps that I have done for BTC thousand of times, and this issue is marked as resolved. so how do I import a private key to the bgold node wallet?

Is there an «alternative» CLI command for this? (In ZCash you use other command, so BTG might also be different).

h4x3rotab commented Nov 10, 2017

I’m trying to reproduce your problem.

h4x3rotab commented Nov 10, 2017

My command line:

The privkey is generated by a Bitcoin Core testnet client. @Emendiz, can you try the same command?

Emendiz commented Nov 10, 2017

Your command worked perfectly fine. so I deep dived. and I think I know what happened. I might not have used a testnet address! Could that be?

What is strange is that now the address I generated with the CLI commands, are now able to re-import after deletion of the wallet.dat file. and that was not happening!

So, please «re-mark» as resolved, and if I see this error I will again reach out here.

Источник

Уязвимость генератора псевдослучайных чисел в Bitcoin

Приватные Биткоин-ключи — это целочисленное значение от 1 до 115792089237316195423570985008687907852837564279074904382605163141518161494337 или в HEX 1 до 0xfffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141. В главной сети Биткоина существуют адреса начинающиеся на 1: compressed, uncompressed; адреса на 3: SigScript и обратно совместимые с SegWit, а так же нативные SegWit адреса начинающиеся на bc1. К тому же есть уже порядка семидесяти форков, имеющие другие префиксы, но те же корни что и основного Биткоина.

Читайте также:  Сколько биткоинов может заработать мой компьютер

Биткоин-адреса рассчитываются криптографической функцией подписи ECDSA ( ) основанной на эллиптической кривой.

Итак, рассмотрим генерацию Биткоин-адреса из приватного ключа.

Закрытый ключ d — число
Открытый ключ Q — точка эллиптической кривой, равная dG,
где G — базовая точка кривой.

  • Для подписи выбирается случайное число k, в диапазоне [1, n-1].
  • Вычисляется точка кривой (x1,y1) = k*G
  • Вычисляется r = x1 mod N, где N — порядок кривой.
  • Вычисляется s = k-1(H(m)+rd) mod N, где k-1 — число, обратное по модулю N к k.
  • H(m) — хэш подписываемого сообщения.

Подписью является пара (r,s).

Переменная «k» рандомная и получается в алгоритме ECDSA из стандартных библиотек операционной системы.

Таким образом, во всей функции можно повлиять только на эту переменную. Что даёт два вектора атаки:

  1. заложенная уязвимость в псевдослучайное число
  2. и вселенское везение при котором случайное число выпадает дважды

Атака генератора псевдослучайных чисел

Первым эту проблему исследовал и опубликовал Nils Schneider в 28 января 2013 на своей личной странице. Но проблема сохранилась и более того, приобрела новый масштаб.

Программная атака на ГПСЧ подразделяется на три типа:
Прямая криптографическая атака основанная на анализе выходных данных алгоритма.

Атаки, основанные на входных данных, могут быть разделены на атаки с известными входными данными, атаки с воспроизводимыми входными данными и атаки на избранные входные данные.

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

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

К программным уязвимостям также относится слабая генерация псевдослучайных чисел в отдельных библиотеках. Таких как SSL, OpenSSL, некоторые библиотеки Java, JavaScript и т.д. Подробные материалы неоднократно описывались в периодических изданиях по взлому и со временем становились примерами в учебниках криптографии.

Каков масштаб угрозы для Биткоина?

Имея полную Биткоин ноду, можно провести сравнение и группировку всех транзакций сети. Достаточно сравнить переменную «к» во всех транзакциях по каждому адресу и найти дублирующие.

Первый раз мы делали сверку в конце 2016 года, тогда база данных составляла более 210 миллионов адресов, транзакций с общим количеством более 170 миллионов адресов, а подписей 447 миллионов. Сканирование уязвимых адресов в десять потоков заняло неделю.

В итоге было найдено 1327 уязвимых адреса с одинаковыми подписями! Список адресов можно найти в конце статьи.

Это означает, что к этим адресам можно вычислить приватный ключ, а значит получить контроль над деньгами.

Самая крупная утечка произошла летом 2015 года. JavaScript кошелька Blockchain.info несколько часов выдавал одно и тот же значение переменной «к». Что привело к краже порядка 200 Биткоинов!

Если убрать человеческий фактор программных уязвимостей, вероятность совпадения примерно 0,000296868 %. Совсем не много, но очень бы не хотелось стать таким “счастливчиком” и потерять свои деньги.

Как с этим бороться ?

Как мы описывали выше, данная уязвимость работает только при отправке платежей и генерации одинаковой переменной “К”, как минимум на двух транзакциях. Следовательно, если не создавать исходящих транзакций или свести их количество к минимуму, то и угрозы нет ни какой. Такая идея давно реализована в Биткоин протоколе BIP 32 (Hierarchical Deterministic Wallets, HD wallet) Иерархический Детерминированный Кошелек.

Его идея заключается в том, что используется приватный ключ из которого можно получить бесконечную цепочку Биткоин-адресов. Для приема каждой отдельной транзакции можно использовать одноразовый адрес. При этом сумма баланса HD wallet — это сумма всех балансов цепочки адресов. А при исходящей транзакции, с этих адресов собираются монеты, составляя для каждого Биткоин-адреса одну исходящую транзакцию. Сдача будет направлена на новый Биткоин-адрес из цепочки адресов.

Такая схема работы значительно увеличивает безопасность и анонимность кошелька.

Источник

Оцените статью