Новый вид мошенничества: раскрываемые закрытые ключи

Новый вид мошенничества: раскрываемые закрытые ключи

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

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

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

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

Вот так смотрится закрытый ключ:

6c951c460a4cfe5483863adacafad59e5de7e55876a21857733ca94049d7d10c 

После того, как закрытый ключ сотворен, он проходит через  функцию хэширования. Хэш-функция — это математическая функция, которая, после помещения в нее числа либо цепочки знаков, возвращает другую, новейшую цепочку, которая уже не имеет оборотной связи с первым числом/цепочкой. Получить 2-ое из первого до боли просто, тогда как получить 1-ое из второго математически нереально. 2-ое число – это общественный (открытый) ключ, и он хэшируется  вновь — сейчас, чтоб получить адреса кошельков биткоина.

«Расшифровка» закрытого ключа

Так как закрытым ключом может в буквальном смысле быть все, что угодно, на техническом уровне мы можем взять всякую фразу либо цепочку букв и цифр и использовать их в качестве закрытого ключа (к примеру, «satoshi nakamoto») . Другими словами, можно забросить в хэш-функцию хоть какой набор знаков и сделать кошелек. После чего создается общественный ключ и – добро пожаловать в мир криптовалют! Но так поступать безотступно не рекомендуется, так как разумеется, что раз вы сможете придумать закрытый ключ, то раскрыть его сумеет и кто-то другой. Таковой ключ уже не будет по-настоящему случайным, а ведь конкретно это свойство нужно для сотворения неопасного кошелька.

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

Проверка закрытых ключей для обнаружения биткоинов

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

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

Потом он использовал корешки Блекла (Merkle roots) неких блоков на предмет существования раскрываемых ключей, и вновь ему удалось найти адреса, на которые отчаливали монеты.  К огорчению, все балансы были нулевыми, но охота становилась все увлекательнее. 3-ий опыт проводился с внедрением обычных слов, пару раз прошедших хэширование, таких как  “hello” либо “sender”. Хэши этих слов потом хэшировались опять и опять, добавляя дополнительный защитный слой и понижая шансы на то, что ключ будет открыт. Если вы захэшируете слово один раз, потом вы можете повторить это к тому же еще, и в итоге вы получите закрытый ключ, который уже когда-то употреблялся. Таким макаром было найдено несколько адресов, использовавших этот способ. Один из самых смешных было слово “password” (пароль), после хэширования которого 1 975 раз выходил действующий закрытый ключ, на который отчаливали средства.  Более чем возможно, что создатель этого адреса родился в 1975 году.

Новый вид мошенничества: раскрываемые закрытые ключи

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

Мысль использования общественного адреса в качестве закрытого ключа не имеет смысла и очень рискованна, потому что его просто раскрыть. Такие адреса получали биткоины и воспринимали их в течение минут либо часов после доказательства. И конкретно тут анонимный юзер  Pastebin заподозрил что-то неладное.

Что происходит по сути?

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

Юзер сделал бот для неизменного сканирования данных адресов и перехвата всех отправляемых на их биткоинов, и волей варианта он натолкнулся на транзакцию в 0,5 биткоина на адресок с раскрываемым закрытым ключом. К огорчению, бот сработал недостаточно отлично, и  ему не удалось во время сделать транзакцию. Биткоины были извлечены из кошелька и высланы далее. Но юзер что-то заподозрил и продолжил опыт с ботом, после этого он увидел, что аналогичный «адрес сбора» употреблялся во огромном количестве методов раскрытия ключей. Само мало, один адресок из всех способов перечислял биткоины, один за одним, в адресок кого-либо, контролирующего всю систему. Раз в день юзер следил более 6 транзакций, прошедших через его базу данных закрытых ключей.

К примеру, юзер Reddit под ником /u/fitwear сказал о взломе кошелька на blockchain.info и краже практически 9 BTC. Невзирая на то, что при разработке кошелька он выполнил все меры предосторожности (использовал надежный пароль и двухфакторную аутентификацию), его биткоины пропали. В ответ на воззвание в службу техподдержки он получил стандартный ответ, ссылающийся на то, что кто-то, может быть, овладел его данными, или его устройство было повреждено вирусом.

Анонимному юзеру Pastebin удалось отыскать 9 биткоинов на адресе, копия закрытого ключа к которому содержалась в его базе данных.  Юзеру /u/fitwear подфартило, и он получил свои биткоины вспять, но предстоящее расследование адреса открыло очень тревожные подробности.

Разумеется, что догадки техподдержки blockchain.info о вирусе полностью безосновательны – разумно, что разработчик сделал бы закрытый ключ из некий секретной инфы, а не случайного адреса.  Тот факт, что адресок является случайным, дает хоть какому понимающему эту схему шанс забрать монеты до того, как взломщик сумеет выслать их в кошелек, находящийся под его контролем. Что-то тут точно  не сходится.

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

Что далее?

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

Волноваться следует людям, которые пользуются услугами третьих сторон, таких как биржи либо онлайн-кошельки. С другой стороны, стоит также отметить, что прямых доказательств причастности веб-сайта blockchain.info либо кого-либо другого к краже биткоинов /u/fitwear либо другим подозрительным транзакциям, найденными анонимным юзером в блокчейне, не существует.

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

По материалам Новый вид мошенничества: раскрываемые закрытые ключи

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *