- Что такое детерминированный кошелек (hd wallet), seed фраза
- С чего всё началось?
- Bitcoin brut
- Атака генератора псевдослучайных чисел
- Извлечение (экспорт) приватных ключей из криптокошельков
- Как безопасно хранить приватные ключи
- Как внешне выглядят публичный и приватный ключи кошелька биткоина
- Как получить (экспортировать) приватный ключ биткоина
- Как с этим бороться ?
- Как создать приватные биткоин-ключи
- Каков масштаб угрозы для биткоина?
- Меры безопасности
- Мошенник на блокчейне
- Получение ключа в бумажного кошельке
- Публичный адрес (ключ)
Что такое детерминированный кошелек (hd wallet), seed фраза
В 2022 году для решения ряда проблем с анонимностью разработчики Bitcoin Core выпустили такую разработку, как HD Wallet. HD расшифровывается «hierarchical deterministic», то есть «иерархически детерминированный». Звучит непонятно, но по факту все не так сложно.
В контексте криптовалют словом «иерархия» обозначают связь между элементами. В данном случае появляется возможность использовать один адрес для выяснения второго, а также применять секретную seed-фразу для генерации сразу многих связанных между собой адресов.
С чего всё началось?
Беднарек обнаружил хакера совершенно случайно. Ранее он занимался исследовательской работой по заказу одного из своих корпоративных клиентов, который хотел разработать собственный кошелёк с интегрированным алгоритмом генерации ключей.
В Эфириуме, Биткоине или любом другом блокчейне, поддерживающем протокол Elliptic Curve Digital Signature Algorithm (ECDSA), приватные ключи представлены в виде 256-битных чисел. Во время исследования аналитики ISE разделили эту комбинацию на восемь 32-битных «субрегионов», так как брутфорс целого приватного ключа статистически невозможен.
В этих восьми субрегионах было найдено 34 миллиарда слабых ключей. По словам Беднарека, сканирование заняло целый день. Стоит отметить, что ключи были сгенерированы из-за ненадёжного кода.
Bitcoin brut
Эта программа создает случайные адреса с приватными ключами, которые проверяются по базе из файла “bit.txt”.
В БАЗЕ ИМЕЕТСЯ 87312 АДРЕСОВ С БАЛАНСОМ ОТ 1 BTC
Отсутствуют пустые балансы
Отсутствуют дубликаты адресов
Очень много кошельков с 50-100 монет
(статистика на на 26.06 2021)
В случае столкновения случайного адреса с адресом из базы, то вы получите доступ к средствам из кошелька.
Минимальные системные требования
Win 8-10
1 CPU
2ГБ RAM
Скорость работы программы
Например, при размере базы в 87313 адресов, скорость брута будет 17-20 адресов в сек на каждом CPU.
Подумайте, сколько будет на 8-16 CPU в сек…
Сколько потребуется время на поиск монет?
Это никому неизвестно. Со стороны математики, это вовсе считается невозможным.
Но, математика математикой, а удачу никто не отменял.
(Можно использовать по несколько дедиков)
Можно просто так использовать, чтоб комп не простаивался без дела.
Кто знает, вдруг вернетесь и увидите неожиданный Джек пот.
Короче, это выбор каждого. Вроде ничего сложного нет.
Что делать, если нашли адрес из базы?
Импортируйте приватный ключ в кошелек Electrum, а затем сможете вывести средства куда угодно.
Скачать тут: https://mega.nz/file/eTIUzTrD#WoLItNToO8pEr62qMN1CPQdPO9Kf2E0gMtpehiEbyOo
VT: https://www.virustotal.com/gui/file/2f7b3aae63aa95f8c6582c903ce4d1749d0f7a704627d6c5c9efdb5634afe821/detection
Для донатов с профита: 15ZJuBDV9CL7uxZVhdZtTxEa9e5vbssqNQ
Атака генератора псевдослучайных чисел
Первым эту проблему исследовал и опубликовал Nils Schneider в 28 января 2022 на своей личной странице. Но проблема сохранилась и более того, приобрела новый масштаб.
Программная атака на ГПСЧ подразделяется на три типа:Прямая криптографическая атака основанная на анализе выходных данных алгоритма.
Атаки, основанные на входных данных, могут быть разделены на атаки с известными входными данными, атаки с воспроизводимыми входными данными и атаки на избранные входные данные.
Атаки, основанные на вскрытии внутреннего состояния при которых злоумышленник знает начальное или исходное состояние генератора.
Также сюда можно отнести — закладки в программное обеспечение, при которых создатель алгоритма знает любое из хэшированных псевдослучайных чисел и последующие в цепочке. Такой алгоритм сложно определить со стороны, так как числа выглядят равномерно распределенными по всему диапазону.
К программным уязвимостям также относится слабая генерация псевдослучайных чисел в отдельных библиотеках. Таких как SSL, OpenSSL, некоторые библиотеки Java, JavaScript и т.д. Подробные материалы неоднократно описывались в периодических изданиях по взлому и со временем становились примерами в учебниках криптографии.
Извлечение (экспорт) приватных ключей из криптокошельков
В качестве примера используется «тонкий» десктопный кошелек Exodus. В нем нужно произвести операцию экспорта приватного биткоин-ключа. Изначально она надежно скрыта, поскольку разработчики справедливо считают, что неопытному пользователю лучше не пытаться ее произвести. Неверные действия чреваты потерей средств из кошелька.
Инструкция по экспорту:
- Активировать “Developer Menu”. В Windows и Linux это действие производится нажатием сочетания клавиш Ctrl Shift D.
- Выбрать ту криптовалюту, частный ключ которой интересует в текущий момент. Перейти по пунктам: “Developer” – “Assets” – “Bitcoin” или иная выбранная валюта – “Export Private Keys”.
- В появившемся окне подтвердить свое желание нажатием кнопки «I’m sure».
- На рабочем столе появится папка под названием “Exodus-export”, внутри – файл формата CSV. Это файл скопировать в надежное место, папку сразу удалить.
Открыть файл можно через текстовый редактор Libre Office, Wordpad, Exel, стандартный Блокнот и т. д. В графе “PRIVKEY” будет буквенно-цифровое сочетание – это и есть приватный (закрытый) ключ биткоина:
Как безопасно хранить приватные ключи
Используя интернет-кошельки, следует понимать, что ключи хранятся на серверах компании-разработчика. Пользователь лично владеет private key лишь в случае использования десктопных, аппаратных или бумажных кошельков.
Варианты хранения кода:
- На бумаге.
- На флешке в виде скриншота или фотографии, pdf-файла.
- На жестком диске, в том числе съемном.
- На физической монете, металлической пластине (своеобразный аналог аппаратного «холодного» кошелька в форме криптовалютной монеты).
- В памяти.
Ни один из перечисленных способов не дает 100%-ную гарантию сохранности ключа, в каждом случае есть вероятность физического повреждения, взлома или кражи. Так что выбор каждый делает, исходя из своих соображений.
В Сети сейчас много злоумышленников, которые мечтают украсть приватный ключ биткоина. Они могут соблазнять бесплатными токенами, предлагать получить новые монеты, а взамен просят загрузить в сеть или созданную ими программу частный ключ. Делать этого ни в коем случае нельзя.
Как внешне выглядят публичный и приватный ключи кошелька биткоина
Приватный ключ биткоина кодируется в следующих форматах: Base64, MINI, Hex, WIF, сжатый WIF. Все они взаимосвязаны и преобразуются один в другой:
На картинке один приватный ключ биткоина в разных форматах:
Как получить (экспортировать) приватный ключ биткоина
Бывают ситуации, когда необходимо получить свой приватный ключ из кошелька для тех или иных целей. Разберем, как это сделать.
Как с этим бороться ?
Как мы описывали выше, данная уязвимость работает только при отправке платежей и генерации одинаковой переменной “К”, как минимум на двух транзакциях. Следовательно, если не создавать исходящих транзакций или свести их количество к минимуму, то и угрозы нет ни какой.
Его идея заключается в том, что используется приватный ключ из которого можно получить бесконечную цепочку Биткоин-адресов. Для приема каждой отдельной транзакции можно использовать одноразовый адрес. При этом сумма баланса HD wallet — это сумма всех балансов цепочки адресов.
Такая схема работы значительно увеличивает безопасность и анонимность кошелька.
Ссылки:
[1] ECDSA — Application and Implementation Failures, Markus Schmid, UC SANTA BARBARA, CS 290G, FALL 2022.
Как создать приватные биткоин-ключи
При создании любого кошелька для биткоина создается приватный ключ. В зависимости от вида бумажников можно обладать контролем над ними или нет. Последний случай больше относится к онлайн-сервисам, на которых можно пройти простую регистрацию, получить адрес биткоина, но приватные ключи не доступны.
Кошельки для криптовалют бывают:
Каков масштаб угрозы для биткоина?
Имея полную Биткоин ноду, можно провести сравнение и группировку всех транзакций сети. Достаточно сравнить переменную «к» во всех транзакциях по каждому адресу и найти дублирующие.
Первый раз мы делали сверку в конце 2022 года, тогда база данных составляла более 210 миллионов адресов, транзакций с общим количеством более 170 миллионов адресов, а подписей 447 миллионов. Сканирование уязвимых адресов в десять потоков заняло неделю.
В итоге было найдено 1327 уязвимых адреса с одинаковыми подписями! Список адресов можно найти в конце статьи.
Это означает, что к этим адресам можно вычислить приватный ключ, а значит получить контроль над деньгами.
Меры безопасности
Итак, Беднарек выделяет две причины, из-за которых приватные ключи могут быть ненадёжными. Первая — ошибки в ПО, которое генерирует сам ключ. Второе — некоторые пользователи могут получить идентичные ключи из-за использования слабых кодовых фраз (к примеру, «abc123» или что-то в этом роде).
По словам аналитика, пока ни одна команда разработчиков кошельков не связалась с ними.
Мошенник на блокчейне
Примечательно, что кошельки с большинством упомянутых слабых приваткеев имеют определенные транзакции, которые ведут к узкому кругу адресов.
Кое-кто просто высасывал деньги с ключей, которые нам чудом удалось обнаружить. Из 735 приватных ключей, которые мы нашли, он имел доступ к 12. Мошенник не мог просто так угадать комбинацию, он занимался тем же, чем и мы. Он вытаскивал средства с кошельков, как только те поступали туда.
Эксперты установили, что хакер (или группа хакеров) установил ноду, которая «выкачивала деньги» в автоматическом режиме. Чтобы протестировать это, аналитики даже отправили один доллар с использованием слабого приватного ключа. Монеты с указанного кошелька исчезли за считанные секунды.
По данным Etherscan, на кошельке мошенника хранится около 45 000 ETH или около 7,3 миллиона долларов по сегодняшнему курсу. На момент исторического максимума цены Эфириума хакер мог бы обладать более чем 50 миллионами долларов.
Кстати, адрес мошенника имеет много комментариев от потерпевших. Судя по всему, преступник безнаказанно занимается своим делом вот уже несколько лет. В одном из комментариев нашли ссылку на старый тред с Reddita за 2022 год. Создатель обсуждения рассказывал о том, как его «ограбили» всего через несколько минут после запуска собственной ноды.
Ethereum nodes with insecure RPC settings are actively exploited from ethereum
Аналитики подробнее изучили методы работы хакера.
Во-первых, он ищет слабые приватные ключи. Во-вторых, он ищет кошельки с ненадёжной кодовой фразой и неправильно настроенные RPC.
Проблема, как всегда, скрыта в человеческом факторе. Даже у самих экспертов ISE были «моральные трудности» во время проведения исследования.
Перед началом работы у нас появилась этическая дилемма — что если мы найдём ключ от кошелька с миллионами долларов? Мы просто оставим всё как есть? Но если сделать так, хакеры наверняка рано или поздно доберутся до денег.
Однако кого нам предупредить об опасности? Найти владельца приватного ключа довольно сложно. Возможно, мы могли бы взять деньги на хранение, пока кто-то не докажет факт владения ими? Такой сценарий может вызвать много проблем с законом.
Получение ключа в бумажного кошельке
Бумажные кошельки генерируют приватные ключи локально с помощью выполнения скрипта в браузере.
Публичный адрес (ключ)
Внешний вид публичного биткоин-ключа в различных форматах:
- Наиболее используемый в кошельках — короткий адрес. Он имеет вид 1BSUkuwtdM7gkdy6W4Q954gNKWBgy4A19Q и всегда начинается с единицы или тройки (segwit address).
Публичные ключи (public key) видны всем желающим и используются как адрес для отправки или получения биткоинов. В одном кошельке можно сгенерировать неограниченное количество публичных ключей. Каждому будет соответствовать свой приватный ключ.