можно ли взломать биткоин
Можно ли взломать Биткоин?
Возможные уязвимости и способы противостояния им
Сейчас речь пойдет об утверждении, что Биткоин, как систему, можно взломать. А это означает, что надежность денежной системы и ваших денег в ней под угрозой.
Взломы криптовалютных бирж и компаний — не такое уж редкое событие. Вот, к примеру, список некоторых случаев:
И это далеко не все примеры.
Но взлом кода бирж еще не означает, что взломан сам Биткоин, как система. Это означает лишь то, что злоумышленники взломали стороннее хранилище приватных ключей, не более.
Биткоин, как система, не несет и не может нести в принципе ответственности за ненадлежащее хранение приватных ключей от биткоин-адресов. Ответственность за это хранение возложена на самих владельцев адресов.
Поэтому взлом криптовалютных бирж, либо других сервисов, на которых временно хранятся приватные ключи пользователей, не является по сути взломом системы Биткоин.
Аналогия: Если у вас супернадежный замок от входной двери вашей квартиры, а вор похитил из вашего кармана ключи, это не означает, что вор взломал сам замок.
За всю историю существования Биткоина (с 2009 года) не было ни одного серьезного инцидента, связанного с безопасностью и взломом, приведшего к фатальным последствиям.
Но, тем не менее, потенциальные угрозы существуют и мы сейчас их рассмотрим и выясним, насколько они реальны. Всего я выделяю три основных угрозы безопасности системы Биткоин:
Ошибка в коде системы, приводящая к уязвимости
Биткоин — постоянно развивающаяся система и код её основного программного клиента Bitcoin Core неоднократно менялся и совершенствовался. Несмотря на то, что работу над этим кодом ведут независимые профессиональные программисты из разных уголков планеты, а окончательное решение по внесению изменений в код принимается после их всестороннего обсуждения, тем не менее существует потенциальная опасность возникновения непреднамеренных ошибок (багов) и уязвимостей. Этот риск мизерный, но он есть и его надо принимать во внимание. Тем более, что такое уже случалось в истории Биткоина.
15 августа 2010 года баг в программном коде стал причиной «грязной» транзакции в блоке №74638 — более 184 млрд BTC ( точное значение — 184 467 440 737,09551616) были переданы в одном переводе. На два адреса было отправлено по 92,2 млрд BTC на каждый и еще на один — дополнительно 0,01 BTC, которых не существовало до транзакции. Это было возможно, потому что код, используемый для проверки транзакций, прежде чем включать их в блок, не учитывал настолько больших выходов, что они переполнялись при суммировании.
Спустя час ошибка была обнаружена, код был исправлен в течение нескольких часов и в результате преднамеренного форка «чистый» блок №74691 стал заменой для «грязного» в цепочке.
Это была единственная найденная и использованная существенная уязвимость за всю историю Биткоина.
Следует отметить, что подобного рода ошибки в блоках транзакций можно исправить только при помощи форка — создании более длинной цепи валидных блоков. При этом, разумеется, будут потеряны транзакции, попавшие в фейковую цепочку, но сохранены биткоины, бывшие на счетах клиентов до возникновения форка.
Взлом приватных ключей
Биткоин-адреса связаны с приватными ключами посредством криптографического алгоритма хэширования на основе функции SHA256.
Хэш-функция SHA256 является необратимой. Это означает, что невозможно вычислить приватный ключ по известному биткоин-адресу. Потребуется только перебор всех возможных вариантов, которых насчитывается 2 в 256–й степени или 10 в 77-й степени, т.е. единица с 77 нулями. Это настолько огромное число, что для него даже нет названия.
Перебрать все эти варианты в поисках соответствия адреса ключу за сколь-нибудь приемлемое время при существующем уровне развития компьютерной техники невозможно. Говорят, что если бы все компьютеры Земли одновременно решали эту задачу, то потребовалось время, сравнимое со временем существования нашей Вселенной.
Но компьютерная техника и технологии не стоят на месте, а стремительно развиваются. Не исключено, что хэш-функция SHA256 будет когда-то взломана. Возможно, для этого будет использован разрабатывающийся сейчас квантовый компьютер. Однако, когда это случится, сколько для этого потребуется ресурсов, включая энергетические, пока предсказать сложно. Поэтому, взлом SHA256 в настоящее время — это из области фантастики.
Захват управления блокчейном («атака 51%»)
Но, высокая затратность майнинга вследствие применения PoW (доказательства выполненной работы) служит надежной защитой от попыток взлома денежной сети и осуществления над ней контроля, делая экономически нецелесообразной т.н. «атаку 51%».
Теоретически это возможно, но практически трудно осуществимо.
Итоги:
В настоящее время система Биткоин имеет достаточно надежную защиту от взлома и несанкционированных действий. Эта защита обеспечена:
Как я пытался взломать Bitcoin
Считается, что некоторые функции, в обратную сторону не работают. Википедия в статье оперирует таким понятием, как «вычислительная невозможность». В одном из каментов приводили как пример функцию
Кто-то может скажет, что эта функция в обратную сторону нерешаема. Я считаю, что это функция очень даже решаема, просто в обратную сторону она выдает бесконечное множество пар (A,B), если нам известно «В», то решением будет бесконечное множество возможных чисел «А». Не совсем то, что нам хотелось бы, но ведь мы и не думали, что попали в сказку? Это чем-то похоже на вырывание одного уравнения из системы уравнений — каждое уравнение в системе дает множество, но в системе пересечение этих множеств дает небольшое количество решений. Поэтому, точно так же, как мы не решаем отдельно каждое уравнение в системе уравнений, нет смысла рассматривать такие функции в отрыве от других функций, из который состоит криптоалгоритм. Поэтому на элементарные операции криптоалгоритма нельзя смотреть по отдельности, а если на них смотреть как на систему уравнений, то теоретически ее можно решить. И получается, что по аналогии можно посчитать sha256 в обратную сторону, достаточно только перенести ту же идею работы со списками на побитовые операции. Но начнем мы, конечно, не с sha-256, а с тривиальных примеров.
Пусть у нас есть битовые переменные a, b, c. Пусть так же мы знаем, что в результате взятия a&b мы получили 0, а бит «c» не участвовал в формуле. Попытаемся «проиграть» эту формулу в обратную сторону. Мы знаем, что операция И дает нам в итоге ноль, если хотя бы один из операндов поступающих на ее вход равен нулю. Таким образом, возможные значения abc, как они видятся операнду «а» можно представить списком из одного регэспа 0**. Где звездочка означает 0 или 1. Возможные значения переменных abc, как они видятся операнду «b» можно представить списком из регэкспа *0*. Список нам нужен потому, что в больших выражениях одного регэкспа нам мало. Под регэкспом я понимаю не традиционное регулярное выражение, а урезанный его вариант, в котором звездочка означает любое значение соответствующего бита.
Когда мы берем логическое «И» над приходящими на входы списками, нам надо скомбинировать каждый входящий регэксп на правый вход с каждым входящим на левый. В данной задаче нам просто — входит только по одному регэкспу, вот их и комбинируем. Для «И», если на выходе надо получить 0 — левый список просто дополняем правым. Схематически я это показал на картинке в виде графа:
Пояснение. Результат f подается снизу, на выход, и поднимается в противоположную стрелкам сторону — вверх, раздваиваясь на узлах, до тех пор, пока не приходит в конечную переменную. Конечная переменная формирует список возможных значений переменных (тот который видится с позиции этой переменной), необходимых для достижения пришедшего результата. Для переменной «а» это 0**, для переменной «b» это *0*. Фактически, это все звездочки, но только одна из них, в позиции переменной, заменена на пришедшее f. Далее этот список спускается вниз по стрелкам, комбинируясь в узлах с другими такими же списками. Переменную «с» я добавил специально, чтобы показать, что неучаствующие в выражении переменные не мешают нам, а спускаются вниз в исходном виде. На выходе мы получили список, состоящий из двух регэкспов. Каждый регэксп определяет набор возможных значений, которые при желании мы легко можем сгенерировать из этого регэкспа. Это и есть ответ.
Разумеется, если в списке много элементов, мы должны как-то объединять непротиворечащие регэкспы и исключать дубликаты, этот момент важный, но — оптимизационный, и потому сейчас несущественен для понимания идеи. Про него будет ниже.
Теперь то же самое, но только для f=1. Получаем а=1**, b=*1*. Правило объединения, если для «И» нам на выходе надо получить 1 — сложнее. Мы должны объединить с правой и левой части непротиворечивые регэкспы, построив при этом список новых регэкспов. У меня получились следующие итоговые правила:
Регэкспы просматриваются побитово. В зависимости от значений бита справа и слева, выбираем наиболее конкретное значение, или отбрасываем данную пару регэкспов, если встретили биты, которые противоречат друг другу.
Обработав входы по этому правилу, получим:
Думаю, идея ясна. Для «ИЛИ» и «НЕ» можно построить аналогичные правила:
Тут еще показано, что для лог «НЕ» мы оперируем не со списками регэкспов, а с самой f, инвертируя ее. Списки регэкспов через «НЕ» проходят без изменений и без инверсий.
Таким образом, для sha256 мы можем построить граф, разбить наш message digest на биты, подать эти биты на выходы и нам вернется список возможных значений переменных прообраза.
Оптимизация
Целей максимально оптимизировать алгоритм не ставилось. Понятно, что работать с битами через символы — расточительно, и можно сильно повысить скорость алгоритма, если переложить его на си и ассемблер с побитовыми операциями. Однако, есть еще один путь оптимизации — минимизация размеров списков, которыми мы оперируем. При объединении списков часто возникают дубликаты и непротиворечащие регекспы, которые надо откидывать. Кроме того, иногда, два регэкспа могут быть объединены в один новый, который в свою очередь можно подвергнуть дальнейшей оптимизации. Например, 000100 и 001100 можно объединить в 00*100, правило такого объединения относительно легко выводится — допустимо только изменение одного бита, важно только чтобы вновь созданный регэксп не представлял никаких лишних значений переменных. Поэтому *0 нельзя объединить с 0*, получив при этом **, потому что ** представляет 11, чего не допускал ни первый ни второй регэксп.
Кроме этого, в узлах списки мы будем кэшировать — считаем их однократно для каждого f которое пришло снизу.
Эксперимент
Я сделал следующие предположения
— исходное сообщение короче 56 байт (для биткоина можно было бы считать что это так, на самом деле от этого упрощения отказаться не сложно);
— нам известно все исходное сообщение, кроме первых 8 бит.
Конечно, это не фонтан, я понимаю, что 8 неизвестных бит — это достаточно мало, чтобы подобрать их прямым перебором, но целью эксперимента была именно проверка способа. У меня получилось этим способом найти букву T, зная sha-256 от фразы «The quick brown fox jumps over the lazy dog», и зная все буквы этой фразы, кроме самой буквы T. Программа должна сработать и для больших неизвестных, просто будет работать дольше, и потребует больше памяти. По этой причине, невозможно считать все буквы неизвестными — не хватит вычислительных ресурсов, а значит практического применения нет. Вычисление буквы T занимает 82сек на 3ггц Phenom. Конечно, прямой перебор всех неизвестных бит (256 значений) занял бы доли секунды, так что в этом смысле тоже практической пользы от программы нет.
Как мне кажется, есть возможный путь оптимизации, который заключается в придумывании компактной записи множеств, но все равно способ будет работать не быстрей прямого перебора.
ТОП-8 способов взлома криптовалютных кошельков и как защититься от них
Биткоин и другие криптовалюты традиционно привлекают повышенное внимание мошенников самого разного калибра, которые не только используют их в своей противоправной деятельности, но и активно похищают не только с бирж, но и у рядовых пользователей.
Прибегая к помощи продвинутых технологий, хакеры находят все новые способы отъема средств, однако основные и проверенные временем методы остаются все те же, поскольку каждый день в криптовалютное пространство заходят новые люди, которые часто не располагают адекватным уровнем знаний и осведомленности для противодействиям таким атакам.
Ниже перечислены основные уловки и трюки хакеров, зная о которых пользователи могут как минимум обезопасить свои монеты.
Навигация по материалу:
Социальная инженерия и фишинг
Под социальной инженерией понимается совокупность обменных приемов, заставляющих пользователей выполнять на сайтах или в приложениях действия, которые могут нанести им ущерб. Одним из таких весьма популярных методов является фишинг – создание сайтов-клонов известных ресурсов, которые вынуждают пользователей раскрывать свои персональные данные, включая пароли, телефонные номера, реквизиты банковских карт, а в последние годы и приватные ключи от криптовалютных кошельков.
Ссылки на фишинговые сайты могут распространяться разными способами – это и рекламные объявления в соцсетях, и электронные письма, копирующие внешний вид рассылок от официальных проектов. Все это делается с единственной целью — заставить невнимательного пользователя перейти на фейковый сайт и ввести там персональные данные.
По данным Chainalysis, в криптовалютном пространстве фишинг оставался наиболее прибыльным мошенническим методом на протяжении 2017 и 2018 годов. Однако, если в 2017 году на его долю приходилось более 88% всех мошеннических схем, то в 2018 году этот метод стал менее эффективным, и его показатель успешности снизился уже до 38,7%.
Тем не менее опасность стать жертвой фишинговой атаки сохраняется. Среди последних таких инцидентов можно выделить атаки на популярный кошелек Electrum в декабре 2018 и в апреле 2019 гг. Нередко при этом атаки велись и на альткоин-кошельки.
Кроме того, за последнее время жертвами фишинговых атак становились биржи Bitfinex и Binance, аппаратный кошелек Trezor, платформа для покупки и продажи биткоинов LocalBitcoins, а также пользователи социальных сетей, например, Facebook. В последнем случае злоумышленники копируют страницы популярных криптовалютных сообществ, после чего используют фотографии участников реальных сообществ, отмечая их в посте как победителей программы лояльности к платформе.
О том, какое значение борьбе с фишингом придают ведущие представители индустрии, сполна говорит и тот факт, что в апреле этого года Binance Labs, венчурное подразделение криптовалютной биржи Binance, осуществило инвестиции в PhishFort. Эта компания специализируется на решениях по защите от фишинговых атак и ориентируется на бизнесы, находящиеся в высокой группе риска, такие как биткоин-биржи, ICO-проекты и платформы по выпуску токенов.
Рекомендации по защите от фишинговых атак весьма просты: повышение общей компьютерной грамотности, собственная внимательность (ручной ввод URL и проверка использования протокола https), а также используемое по умолчанию недоверие к объявлениям, предлагающим бесплатную раздачу криптовалют.
Троянские вирусы
Эти многочисленные вирусы представляют собой разновидность вредоносных программ, проникающих в компьютер под видом легального программного обеспечения.
В данную категорию входят программы, осуществляющие различные неподтвержденные пользователем действия:
Но изобретательность хакеров на месте не стоит. Так, в 2018 году была обнаружена новая версия печально известного трояна Win32.Rakhni. Этот вирус известен еще с 2013 года, но если поначалу он фокусировался исключительно на шифровании устройств и требовании выкупа за разблокировку, то новая версия пошла намного дальше.
Для начала она проверяет наличие папок, связанных с биткоин-кошельками, и если таковые обнаружены, шифрует компьютер и требует выкуп. Однако, если таких папок найдено не было, Win32.Rakhni устанавливает вредонос, похищающий вычислительные мощности компьютера с целью скрытого майнинга криптовалют, а также пытается распространиться на другие устройства в сети.
При этом, как видно на изображении выше, более 95% всех случаев заражения компьютеров этим трояном приходилось на Россию, второе и третье места достались Казахстану и Украине.
Согласно данным Kaspersky Labs, Win32.Rakhni чаще всего распространяется через электронные письма, в которых пользователям предлагается открыть прикрепленный pdf-файл, однако вместо ожидаемого содержимого запускается программа-вредонос.
Как и в случае с фишинговыми атаками для предотвращения заражения устройств необходимо соблюдать базовую компьютерную гигиену и быть крайне внимательным к открываемым вложениям.
Клавиатурные шпионы (keyloggers)
Вредоносные программы зачастую состоят из нескольких компонентов, каждый из них выполняет собственную задачу. По сути их можно сравнить с швейцарскими армейскими ножами – при их помощи хакеры могут выполнять множество различных действий на атакованной системе.
Один из популярных компонентов при атаках – это так называемые клавиатурные шпионы (кейлоггеры). Они представляют собой узкоспециализированный инструмент, записывающий все нажатия клавиш на устройствах. С его помощью злоумышленники могут незаметно завладеть всей конфиденциальной информацией пользователя, включая пароли и ключи от криптовалютных кошельков.
Чаще всего кейлоггеры проникают в системы с составе комплексного вредоносного софта, но иногда они могут быть встроены во вполне легальное программное обеспечение.
Производители антивирусных решений, как правило, добавляют известные кейлоггеры в свои базы, и метод защиты от них мало чем отличается от метода защиты от любого другого вредоносного софта. Проблема состоит в том, что кейлоггеров существует огромное количество, и уследить за всеми физически очень сложно. По этой причине клавиатурные шпионы с первой попытки часто не определяются антивирусами.
Тем не менее обычная компьютерная гигиена и использование специального софта могут стать хорошей помощью в борьбе с этим видом атак.
Публичные сети Wi-Fi
Кража средств через общедоступные сети Wi-Fi всегда была и остается одним из наиболее популярных инструментов злоумышленников.
Большинство Wi-Fi-роутеров используют протокол WPA (Wi-Fi Protected Access), который не только шифрует всю информацию в беспроводной сети, но и обеспечивает доступ к ней только авторизованным пользователям.
Однако хакеры нашли лазейку и здесь: запуская несложную команду KRACK, они заставляют устройство жертвы переподключиться к собственной сети Wi-Fi, после чего получают возможность отслеживать и контролировать всю проходящую через нее информацию, включая ключи от криптовалютных кошельков.
Защититься от такой атаки помогают регулярные обновления прошивок роутера, а также собственная внимательность: никогда не следует осуществлять транзакции, находясь в публичных местах, вроде вокзалов, аэропортов, гостиниц или – что происходит весьма часто среди представителей биткоин-сообщества – на блокчейн-конференциях.
Slack-боты
Существует достаточно большое число ботов для Slack, которые хакеры успешно берут на вооружение. Как правило, такие боты отправляют пользователю уведомление о наличии проблем с его кошельком. Конечная цель – заставить пользователя нажать на уведомление и ввести приватный ключ.
Кроме того, представители Enigma подтвердили, что также был скомпрометирован Slack-чат проекта:
Рекомендации: игнорировать подобные сообщения, слать жалобы на распространяющие их боты, установить защиту на Slack-канал (например, security-боты Metacert или Webroot).
Аутентификация по SMS и SIM Swapping
Аутентификация по SMS по-прежнему остается весьма распространенным методом верификации различных операций, в том числе и криптовалютных транзакций. Однако еще в сентябре 2017 года специализирующаяся на кибербезопасности компания Positive Technologies продемонстрировала, как легко можно перехватить SMS с паролем, пересылаемое по протоколу Signaling System 7 (SS7).
Демонстрация была проведена на примере аккаунта на платформе Coinbase, который был привязан к почте на Gmail. На первый взгляд могло показаться, что речь идет об уязвимости на стороне Coinbase, однако в действительности задействованный Positive Technologies инструмент собственной разработки использовал слабые места в самой сотовой сети.
Перенаправив текстовые сообщения на собственный номер, исследователи смогли сбросить и установить новый пароль на почте, после чего получили полный доступ к кошельку.
В данным случае эксперимент был поставлен в исследовательских целях, и фактической кражи монет не произошло, однако его результаты показали, что такой метод вполне может быть использован и настоящими преступниками.
В данном материале специалисты Hacken также перечислили основные варианты перехвата SMS :
Речь идет о случае, произошедшем в 2018 году, когда в США были арестованы два хакера, сумевших убедить оператора мобильной связи передать им контроль над номером, где была двухфакторная аутентификация к аккаунту администратора проекта Crowd Machine.
Рекомендация: отказ от верификации через SMS в пользу специальных программ для двухфакторной аутентификации (2FA), например, Google Authenticator.
Мобильные приложения
Жертвами хакеров чаще всего становятся владельцы устройств на Android, вместо 2FA использующие только логин и пароль. Происходит это в том числе и потому, что процесс добавления приложений в Google Play Store менее строгий, чем у App Store. Злоумышленники пользуются этим, размещая собственные приложения, которые имитируют известные кошельки и биржи, и выманивают у невнимательных пользователей конфиденциальные данные.
Одна из громких историй с фейковыми приложениями была связана с биржей Poloniex. В ноябре 2017 года эксперты компании ESET обнаружили в Google Play программу, которая выдавала себя за официальное мобильное приложение этой американской биржи. Суть мошенничества заключалась в том, что скачавшие программу пользователи вводили туда логин и пароль. Это позволяло создателям вируса самостоятельно менять настройки, выполнять транзакции, а также получить доступ к почте пользователей.
Несмотря на то, что на тот момент у Poloniex не было официальных мобильных приложений (они были выпущены только в июле 2018), два варианта фейковых приложений установили более 5 тысяч человек. После предупреждения ESET они были удалены из Google Play.
Также в Google Play находились фальшивые приложения MetaMask и Trezor Mobile Wallet.
Пользователи устройств на iOS чаще становятся жертвами злоумышленников, распространяющих приложения со встроенной функцией скрытого майнинга. После обнаружения этой проблемы компания Apple была вынуждена ужесточить правила принятия приложений в App Store. При этом ущерб от таких приложений достаточно невелик — они только снижают производительность компьютера, не уводя при этом средства.
Рекомендации: не устанавливайте приложения, в которых нет крайней необходимости. Не забывайте о двухфакторной аутентификации, а также проверяйте ссылки на приложения на официальных сайтах проектов и платформы, чтобы убедиться в их подлинности.
Расширения, плагины и аддоны для браузеров
Существует немало браузерных расширений и плагинов, призванных сделать взаимодействие с криптовалютными кошельками более простым и комфортным. Однако написаны они, как правило, на JavaScript, что делает их уязвимыми к хакерским атакам. Речь может идти как о перехвате пользовательских данных и дальнейшем доступе к кошелькам, так и об установке программ для скрытого майнинга.
При этом, как отметили в Check Point Software Technologies Ltd, именно скрытые криптомайнеры остаются доминирующей угрозой для организаций по всему миру. Так, в 2018 году криптомайнеры стабильно занимали первые четыре строчки рейтингов самых активных угроз и атаковали 37% организаций по всему миру. В 2019 году, несмотря на снижение стоимости всех криптовалют, 20% компаний продолжают подвергаться атакам криптомайнеров каждую неделю.
Противостоять этой угрозе можно несколькими способами: установить отдельный браузер или даже отдельный компьютер для трейдинга, использовать режим инкогнито, регулярно обновлять антивирусные базы и не скачивать никаких сомнительных расширений или плагинов.
Несмотря на то, что основная часть хакерских атак приходится на биржи и компании, индивидуальных пользователей они также не обходят вниманием. Согласно результатам прошлогоднего исследования компании Foley & Lardner, 71% крупных трейдеров и инвесторов назвали наиболее высоким риском именно кражу криптовалют, 31% при этом назвал деятельность хакеров угрозой всей криптовалютной индустрии.
Хакеры, как правило, идут на шаг впереди всей индустрии, поэтому помимо специальных защитных программ не менее важным аспектом борьбы со злоумышленниками остается собственная компьютерная грамотность пользователей и отслеживание последних трендов и событий в области кибербезопасности.
Дата публикации 22.06.2019
Поделитесь этим материалом в социальных сетях и оставьте свое мнение в комментариях ниже.