Как генерировать свой собственный ключ Bitcoin

Автор(ы): Тимур Бадретдинов
Дата подачи заявки.

FiboMagic - Торговая система проверенная временем, ей уже более 25 лет. Основана на классике.
7 часов назад
Новинка! STIRPROFIT X - Обновленный и модифицированный трендовый торговый робот.
7 часов назад

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

Этот раздел содержит введение в закрытые ключи и показывает, как создавать собственные ключи, используя различные криптографические функции. Приведены алгоритмы на языке Python и описание кода.

Нужно ли мне создавать закрытый ключ?

В большинстве случаев нет. Например, если вы используете онлайн-кошелек, такой как Coinbase или BlockChain.info, вы создаете и управляете своим закрытым ключом. То же самое относится и к биржам.

Мобильные и настольные кошельки обычно создают секретный ключ для вас, но вы можете создать кошелек из своего собственного ключа.

Так зачем его создавать? Вот причины, которые у меня есть

  • Вы хотите убедиться, что никто не знает ваш ключ
  • Вы просто хотите узнать больше о шифровании и производстве случайных чисел (RNG)

Что такое закрытый ключ?

Технически, закрытый ключ биткоина (и многих других криптовалют) представляет собой серию из 32 байт. В настоящее время существует множество способов записи этих байтов. Это может быть строка из 256 и нулей (32 *) или 100 игральных костей. Это может быть двоичная строка, base64, WIF-ключ, монофраза или, наконец, шестнадцатеричная строка. Для наших целей мы будем использовать 64-символьную шестнадцатеричную строку.

Почему именно 32 байта? Отличный вопрос! Для создания открытого ключа на основе закрытого ключа Bitcoin использует алгоритм цифровой подписи ECDSA или алгоритм эллиптической кривой. Более конкретно, он использует специальную кривую, называемую SECP256K1 отрицание

В настоящее время эта кривая имеет класс 256 бит, принимает 256 бит в качестве входа и экспортирует 256-битные числа. 256 бит — это ровно 32 байта. Поэтому в противном случае для обеспечения этого алгоритма кривой требуется 32 байта данных.

Существуют дополнительные требования к секретным ключам. Для использования ECDSA ключ должен быть положительным и меньшим, чем класс кривой. Класс ECP256K1 — ffffffffffffffffffffffeeedce6af48a03bbfdd25e8cd0364141.

Деревенский способ

Как же создать целое число 32 байта? Первое, что приходит на ум, это использовать библиотеку RNG в выбранном вами языке. Python предоставляет хороший способ для создания некоторых битов.

Это выглядит хорошо, но на практике это не так. Как вы знаете, обычные библиотеки RNG не предназначены для шифрования, поскольку они не очень безопасны. Они создают числа на основе семян, а семя по умолчанию — это точное время. Поэтому, если вы почти знаете, когда я создал вышеупомянутое произведение, все, что вам нужно сделать, это применить почти несколько вариантов.

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

Теперь давайте сделаем его более безопасным.

Криптографически сильные РНГ.

В дополнение к стандартным методам ГПСЧ языки программирования обычно предоставляют ГПСЧ, специально разработанные для криптографических операций. Этот метод обычно гораздо более безопасен, поскольку энтропия берется непосредственно из операционной системы. Результаты таких ГПСЧ гораздо сложнее воспроизвести. Поскольку нет семени, невозможно узнать, когда оно было создано, или иметь семя. По крайней мере, пользователь не вводит семя. Скорее, семя генерируется программой.

В Python криптографически сильный ГПСЧ реализован в модуле Secrets. Измените приведенный выше код, чтобы обезопасить генерацию секретных ключей!

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

Специализированные веб-сайты

Существуют сайты, которые генерируют случайные числа. Здесь мы рассмотрим только два. Один из них — Random.org, известный генератор случайных чисел. Другой — Bitaddress.org, который специально создан для генерации ключей Биткойна.

Может ли Random.org помочь в генерации ключей? Безусловно, поскольку существуют сервисы, генерирующие случайные байты. Однако здесь есть две проблемы. Random.org утверждает, что является настоящим генератором случайных чисел, но можно ли ему доверять? Как вы можете быть уверены, что это действительно случайность? Можете ли вы быть уверены, что владелец не регистрирует все сгенерированные результаты, особенно те, которые выглядят как секретные ключи? Ответ зависит от вас. О, и вы не можете запустить его локально. Это дополнительная проблема. Этот метод не является на 100% стабильным.

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

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

Вам интересно, как работает Bitaddress.org? В учебных целях мы посмотрим на ваш код и попытаемся воспроизвести его в Python.

Адресные биты: подробности

Bitaddress генерирует энтропию в двух формах: движения мыши и нажатия клавиш. Мы обсудим оба варианта, но поскольку отслеживание мыши сложно реализовать в Python Lib, мы сосредоточимся на нажатиях клавиш. Пока энтропия достаточна, он ждет, пока конечный пользователь введет кнопку, прежде чем генерировать ключ.

На какие тактики настраивать РСЯ, какие фразы подбирать, кому показывать рекламу, как получать...
10 часов назад
Мы ускорили работу старого компьютера более, чем в 30 раз и сделали его неуязвимым...
10 часов назад

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

Bitaddress использует 256-байтовый массив для хранения энтропии. Этот массив переписывается в цикле, поэтому при первом заполнении массива указатель обнуляется, и процесс заполнения начинается заново.

Программа инициализирует массив 256 байтами из window.crypto Failure. Затем он записывает временную метку и получает дополнительные 4 байта энтропии. Наконец, он извлекает такие данные, как размер экрана, часовой пояс, информация о плагинах браузера и язык. Это дает дополнительные 6 байт.

После инициализации программа постоянно ожидает ввода пользователя для замены первого байта. Когда пользователь перемещает курсор, программа записывает положение курсора. Если пользователь нажимает кнопку, программа записывает CHAR-код нажатой кнопки.

Наконец, Bitaddress использует сохраненную энтропию для генерации секретного ключа. При этом генерируется 32 байта. Bitaddress использует для этой задачи алгоритм RNG под названием ARC4. Программа инициализирует ARC4 текущим временем и собранной энтропией и получает 32 байта один за другим.

Все это упрощенная версия того, как работает программа, но мы надеемся, что вы сможете ее понять. Вы можете узнать больше об алгоритме на Github Disclaimer

Сделайте это сами.

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

Это определяет стандартную спецификацию библиотеки генераторов. Сначала инициализируйте массив байтов зашифрованным RNG, затем введите метку времени и, наконец, строку, созданную пользователем. Как только пул семян в библиотеке заполнен, разработчики могут генерировать ключи. Фактически, они могут генерировать столько закрытых ключей, сколько им нужно, фиксируясь собранной энтропией.

Инициализация резервуара.

В этом разделе задаются байты и время от RNG шифрования. __seed_int и __seed_byte — это два помощника, которые вставляют энтропию в таблицу пула. Обратите внимание, что Секретный отказ используется для

Приточный посев.

Здесь сначала вводится метка времени, а затем строка ввода, по одному символу за раз.

Генерация секретного ключа.

Эта часть выглядит сложной, но на самом деле она очень проста.

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

Что это значит для нас? Это означает, что в любой момент, в любом месте кода, мы можем уничтожить всю энтропию, собранную простым Random.seed (0). Мы не хотим, чтобы это произошло. К счастью, Python предоставляет методы Guthrite и SetState. Поэтому каждый раз, когда мы создаем ключ, мы запоминаем прерванное состояние, чтобы сохранить энтропию, и устанавливаем его при следующем создании ключа.

Затем убедитесь, что ключ находится в диапазоне (1, Curve_order ). Это требование для всех закрытых ключей ECDSA. Curve_Order — порядок кривой TECP256K1, FFFFFFFFFFFFFFFFFFFFFFFFEBAEEDCE6AF48A03BBFD25E8CD0364141

Наконец, для удобства преобразуйте в Hex и разделите часть ‘0x’.

Деятельность.

библиотека. На самом деле это довольно просто: с помощью трех строк кода вы можете сгенерировать закрытый ключ.

Вы можете убедиться сами: ключ является случайным. Ключи случайны и абсолютно действительны. Более того, каждый раз, когда вы запускаете этот код, вы получаете разный результат.

Заключение.

Как вы видите, существуют различные способы генерации закрытого ключа. Они различаются по простоте и безопасности.

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

Если вы хотите поиграть с кодом, я разместил его в этом репозитории Github Disclaimer

Мы проводим курсы по криптовалютам здесь, в FreeCodeCamp News. Затем первая часть — подробное объяснение блокчейна.

Я также буду публиковать случайные мысли на Crypto On Twitter, так что заглядывайте туда.

FiboMagic - Торговая система проверенная временем, ей уже более 25 лет. Основана на классике.
9 часов назад
Познакомьтесь и оцените Самый Быстрый и и самый удобный Браузер!
8 часов назад

Читайте также

Как начать майнить на домашнем компьютере с помощью простой программы. Давайте разберем весь сервис и саму программу в деталях и подготовим ваш компьютер к майнингу видеокарты. Майнинг криптовалют на домашнем компьютере наверное самая большая мечта, вы просто получаете деньги за то, что ваш компьютер работает. Конечно, сложность майнинга возрастает, и еще несколько лет назад можно было зарабатывать солидные суммы на домашнем ПК, но ценность биткойна и других криптовалют была другой, сейчас добывать монеты сложнее, но все же возможно. для компьютера или ноутбука для получения дохода, вы начнете майнить всего за 15 минут. Заходим на сайт и скачиваем майнер на ПК; Пока майнер скачивается, создайте там аккаунт; Установите майнер, введите свой e-mail и пароль, нажмите СТАРТ! Ежедневно вы будете получать биткойны, которые могут быть: Выплачены напрямую на киви, вебмани или банковскую карту Выплачены в криптовалюту для хранения Переброшены на биржу для торговли криптовалютой Наверное, самый главный вопрос – сколько можно заработать на майнинге на своем компьютере. Это легко проверить, как только вы запустите майнер, он все рассчитает и покажет вам сумму денег, которую вы можете ожидать. вот скриншот моего компьютера 2014 года с видеокартой. Как видите, никаких лишних телодвижений делать не нужно, если ваш ПК или ноутбук совсем плох, взгляните на облачный майнинг! Для начала поговорим о плюсах и минусах этого майнинга, уже было бы понятно стоит ли нам на нем регистрироваться и зарабатывать. Важный момент, отображение заработанных денег не сразу, а через некоторое время. Майнинг на домашнем компьютере с программой происходит на видеокарте, конечно есть возможность майнинга на процессоре, но ее много ниже. Простота установки, просто скачайте программу и все работает автоматически. Очень хороший раздел FAQ — ответы практически на все вопросы и столь же быстрая техподдержка. Ссылки на биткойн-кошелек нет, поэтому даже если вы потеряете к нему доступ, вы сможете использовать другой кошелек. Но с другой стороны, на домашнем компьютере и не заработаешь, хотя можно получить приятный дополнительный пассивный доход. Конечно, можно настроить майнинг отдельно на более профессиональном уровне. Но лично на мой взгляд увеличение доходности при такой мощности (одна видеокарта) не имеет смысла по сравнению со сложностью настроек. Для регистрации зайдите на сайт и нажмите «Регистрация» вверху главной страницы. Регистрация вообще несложная. Вводим почту, придумываем пароль, соглашаемся с условиями и все. Затем на почту придет письмо, перейдите по ссылке в нем для подтверждения почты. Затем авторизуйтесь на сайте под своим логином (электронной почтой) и паролем Теперь можно перейти к самому интересному, скачать и настроить программу. Мы буквально в нескольких шагах от первых заработанных пассивных денег Внизу меню (слева) есть ссылка на скачивание софта для майнинга. Просто прокрутите страницу вниз и перейдите по ссылке Простая установка, достаточно несколько раз нажать «Далее». Никаких скрытых инсталляторов или дополнительного ПО. Дополнительных настроек при установке также нет. Если у вас установлен антивирус, то он может не пропускать процессы при установке, просто нажмите «разрешить все» или «добавить в доверенные» в зависимости от вашей антивирусной программы. После успешной установки программа извлечения на ваш домашний ПК будет работать автоматически, вам необходимо авторизоваться на нем. Введите адрес электронной почты и пароль, которые вы использовали при регистрации. На втором шаге появится окно с предложением пройти тест. Просто нажмите «начать тест», и программа автоматически определит параметры компьютера и установит необходимые функции в соответствии с вашими предпочтениями на вкладке «Настройки» в программе. Деньги зачисляются в виде криптовалют и автоматически конвертируются в биткойны и рубли (в соответствующем эквиваленте). Подробную статистику можно увидеть на сайте во вкладке «баланс», осталось только открыть свой криптовалютный кошелек и начать тратить! Как уже было сказано, для большого дохода нужно мощное оборудование, а для простого компьютера настройте этот параметр От чего зависит доход и как его увеличить, здесь я привел литературу по основным моментам. Чтобы узнать больше, вы можете посетить страницу часто задаваемых вопросов на самой странице: основная мощность и способность майнить новые криптовалюты, конечно же, зависит от вашей видеокарты. Лучше всего делать ставку на видеокарту с 3 ГБ видеопамяти. оставляйте компьютер включенным на полной скорости, когда вы не работаете с ним, например, на ночь. не отключайте саму программу, если вам нужна мощность компьютера, просто оставьте его в режиме ожидания. Драйверы видеокарты также могут влиять на производительность. Для карт Nvidia установите обновление Windoes 10 Anniversary, особенно для более новых карт. Если вы знаете, что делаете, попробуйте разогнать свою видеокарту. Здесь все индивидуально и тесты придется проводить в реальном времени, вот и все! В следующий раз этот процесс займет не более полминуты! Обязательно оставьте свой отзыв в комментариях ниже, чтобы другие люди могли понять, устанавливать программу или нет!

7 часов назад

[Андрей Хвостов] Честные деньги на простых текстах от 500 рублей в день (2020)

8 часов назад

Александр Горский отзывы: Проект Цепная Реакция

10 часов назад