03.05 // Два биткоина по цене одного: первая практическая атака на быстрые bitcoin-платежи
Bitcoin — это наиболее популярная, независимо эмитируемая электронная децентрализованная валюта, позволяющая проводить анонимные платежи. Её использование ограничивается не только отдельными любителями и игроками чёрного рынка, но и вполне легальным бизнесом. Множество мелких компаний в различных странах экспериментируют с предоставлением различных связанных с ней услуг. Стремясь привлечь клиентов, биткоины принимают к оплате не только онлайн-сервисы, но и торговые автоматы, заведения быстрого питания. Во многих странах с биткоинами работают и банкоматы, стирая грань между реальной наличной валютой и виртуальной ценностью биткоинов.
Эмиссия данной валюты производится на основе концепции ("Proof-of-Work") — доказательства проделанной вычислительной работы по подбору частичных коллизий хэш-значений. Таким образом, эмиссия строится на основе добычи, "майнинга" числовых значений, удовлетворяющих определённым условиям, что гарантирует её независимость, непринадлежность к определённой организации и анонимность. Анонимность сохраняется как в добыче (если пользователь будет отправлять данные о добытых средствах на регистрацию в статистике, не раскрывая IP-адрес своего псевдонима), так и в транзакциях.
Однако, во всех протоколах перевода денег, связанных с сохранением анонимности пользователя, возникает проблема мошенничества на основе оплаты одной виртуальной монетой нескольких сервисов одновременно. В разных случаях эта проблема решается по разному. В некоторых протоколах других электронных денежных систем анонимность депонируется и может быть раскрыта при попытках нарушения протокола, однако тогда пользователя необходимо принуждать к регистрации на определённых условиях, что может сделать только банк. Где-то существуют способы проверки для получателя денег.
Разумеется, определённое решение было придумано и в системе Bitcoin. Пользователи подписывают все свои транзакции, а за их целостностью следит специальный сервис, который также осуществляет простановку времени в цепочках операций ("timestamping"), делая такую статистику доступной всем пользователям сети. Но в случае т.н. быстрых платежей, когда после оплаты проходит менее 30 секунд, в течении которых пользователь может получить услугу и забрать, например, наличные из банкомата, проверить факт двойной оплаты невозможно. До недавнего времени официальная позиция разработчика сети Bitcoin состояла в том, что при оплате мелких услуг следует игнорировать такую опасность — считалось, что стоимость атаки такого рода намного превзойдёт возможную прибыль. Хотя не было дано оценок параметров таких атак и было неясно насколько они реализуемы.
Исследователи Ghassan O. Karame (Европейская лаборатория NEC), El li Androulaki и Srdjan Capkun (Швейцарская высшая техническая школа Цюриха) впервые вывели точные оценки условий атаки двойного размещения на быстрые платежи и провели экспериментальные атаки. Они использовали только свои собственные кошельки в системе, чтобы не наносить финансового ущерба пользователям, не вовлечённым в исследование. Как оказалось, для предотвращения атаки в текущем протоколе Bitcoin период ожидания заверенной транзакции был чрезвычайно большим (до нескольких десятков минут), что недопустимо для быстрых платежей и такие платежи практически не имеют защиты от двойной оплаты. При этом, как оказалось, атака не стоит противнику практически никаких вычислительных затрат и сводится лишь к попыткам перебора соединений.
Авторами исследования были предложены простые модификации в работе Bitcoin-сети, которые не требуют существенного изменения протокола и програмного обеспечения: внесение специальных задержек в установлении соединений до 10 секунд, что уменьшает количество попыток перебора; включение в сеть обозревающих узлов; распространение в сети сообщений о попытках перебора с целью двойной оплаты, что позволит быстро заблокировать попытки такого рода.
Источник: Cryptology ePrint Archive
комментариев: 11558 документов: 1036 редакций: 4118
комментариев: 9796 документов: 488 редакций: 5664
комментариев: 9796 документов: 488 редакций: 5664
Авторы в качестве доказательства приводят таблицы и графики практических экспериментов с вероятностью успеха в зависимости от времени задержки и др. условий. Модифицированный клиент для этих целей у них есть. Другое дело, из работы не вполне ясно, они действительно обналичивали биткоины (завершали оплату) или в последний момент сами прерывали транзакцию, ограничившись только измерением необходимых условий — ведь доказательство возможности проведения двойной обналички итак получено и есть в общей статистике сети, которую они разбирали на графики своим парсером.
атака не имеет никакое отношение к системе или принципам биткоина.
все что они установили – если кто то кому то обещает заплатить – он может и не заплатить.
основа системы биткойна – подтверждение платежей, запечатывание их правильным хешем в блоке, то что занимает около 10 минут.
о чем статья – о том что есть контрагенты которые готовы предоставит какую либо услугу (например обмен на другую валюту) в ответ на обещание заплатить – ДО! момента получение подтверждения системой.
но если кто то готов так действовать – это как говорится его проблемы.
аналогия – вы зашли в магазин, показали деньги, поднесли их к кассе, забрали товар, и забрали деньги.
вывод!(авторы говорят об этом) – вы подделали деньги!!! караул!
комментариев: 9796 документов: 488 редакций: 5664
Так в любой электронной системе такая защита разумеется есть. Неважно, деньги ли это, электронный проездной или виртуальный бюллетень голосования, которыми нельзя воспользоваться более одного раза. Сам факт необходимости такой защиты очевиден и особых пояснений не требует. В разных системах будут отличаться лишь детали реализации. И эту часть протокола в данной работе не атаковали, о чём в работе действительно ясно написано.
Тогда странно другое. Авторы исследования пересказывают слова разработчиков, что для малых сумм в коротких платежах строгая проверка не нужна не по причине (не)доверия ("Вот вам непотверждённый перевод-обещание, а вы мне реальный товар сейчас" — "Нет, утром — деньги, вечером — стулья, но деньги вперёд" ©), а по каким-то другим соображениям.
Если кто-то подробно знает биткоин, может пояснит в чём дело? Может быть даже синхронно проставить два платежа-претендента в одинаковый блок (в нужное место?) в конец цепочки (это правильное описание?) раньше считалось само по себе сложным и маловерятным (например потому, что в этот же момент происходит много операций от других пользователей, сеть-то распределённая), что разработчики биткоина считали, что для платежей на малые суммы такая игра не будет стоить свеч? Поэтому и рекомендовали этого не опасаться и не заморачиваться проверками? А выяснилось, что это всё же не так. И делать быстрые платежи за счёт слабой подтверждённости (без проверки проштамповки блока) нельзя ни в каком случае (даже для малых сумм).
Кстати, во многих случаях это действительно недостаток. Неважно, деньги это, протокол голосования или ещё чего. В систему ввели данные и надо ждать 10 минут, чтобы определить, уникальны ли эти данные или они не проходят, так как это дубликат уже использованных транзакций. И только по истечении 10 минут можно совершать следующий шаг (получать доступ к платным услугам, обналичивать, получать проездной билет, голосовать и т.д.).
все что я понимаю – делать быстрые платежи за счёт слабой подтверждённости (без проверки проштамповки блока) нельзя ни в каком случае.
не было в идее биткойна слабых платежей, быстрых и так далее – не было.
вы можете всегда выслушать обещание пришедшее вам по сети биткойна – и действовать согласно нем – это ваше право.