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

Что такое переносимость транзакций?

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

Это то же самое, что и двойные расходы?

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

Как работает переносимость транзакций?

Чтобы понять это, вы должны знать, как работает биткойн.

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

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

Когда выполняется биткойн транзакция, она включает в себя информацию, такую ​​как адреса, из которых были биткойны (входы), куда они идут (выходы), переданные суммы и какие адреса отправили эти средства на адрес отправителя.

« Транспортировка ковкости поможет доказать устойчивость децентрализованной сети к дискретным сетевым событиям »

Каждая транзакция должна быть однозначно идентифицирована, чтобы на нее можно было ссылаться в цепочке блоков. Идентификатор транзакции (идентификатор ТД) создается путем передачи информации в транзакции и запускается через хеш-функцию.

Хеширование – это математическая процедура, которая использует разные части данных и объединяет их для получения более короткой информации, известной как хэш. Одна из вещей, которая включена в хеш транзакции, – это цифровая подпись пользователя, которая доказывает, что транзакция исходила от них. Это способ для них в цифровой форме «подписать» транзакцию.

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

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

По крайней мере, это идея. Но здесь присутствует ковкость. Цифровые подписи пользователя, используемые как часть хеша, чтобы «подписать» транзакцию, должны быть в определенном формате. Этот формат не всегда был правильно проверен. Это означало, что плохо отформатированный может быть введен и по-прежнему принят. Изменение подписи таким образом позволяет создавать разные хэши для одной и той же транзакции.

Это не хорошо. Но, как выясняется, это тоже не очень плохо. Вот почему.

Как это может вызвать проблемы?

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

Существует несколько потенциальных сценариев. Вот пара:

Вредоносные индивидуальные атаки

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

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

Существует вероятность того, что транзакция Eve будет подтверждена в блочной цепочке в первую очередь. Если это произойдет, сеть предположит, что транзакция действительна и не будет записывать Alice’s. Ева может потом пожаловаться Алисе, что она не получила монеты. Когда Алиса проверяет свой идентификатор транзакции в цепочке блоков, она не найдет его, и она может попытаться отправить больше биткойнов, а это значит, что она будет в кармане.

Благонадежные несчастные случаи

Если вы используете собственное программное обеспечение для обработки ваших биткойнов, это может привести к неправильным ошибкам. Эти хеши могут затем быть «исправлены» другим, лучше сделанным кошельком, который правильно их форматирует. Но это может изменить идентификатор TX. Если ваш кошелек не предназначен для заметок транзакций с такими же характеристиками, но с другим идентификатором, тогда он может закончиться «застрявшими» транзакциями, зависающими в подвешенном состоянии. Что еще хуже, может показаться, что у него все еще есть те монеты, которые нужно потратить.

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

Атаки массового отказа в обслуживании

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

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

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

Означает ли это, что в биткойне есть ошибка?

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

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

Основные разработчики также сказали CoinDesk о двух «крайних случаях» в ссылочном клиенте (это недостатки, которые очень редко вызывались). Они оба сосредоточены на части кошелька программного обеспечения.

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

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

Как это фиксируется?

Сообщество знало о наиболее часто обсуждаемой проблеме, которая позволила представить неверные подписи еще в 2011 году (см. это обсуждение ). Проблема заключалась в том, что ключевая часть программного обеспечения, используемая клиентом биткойнов, неправильно обрабатывала неправильно сформированные подписи. Это была не ошибка разработчиков ядра биткойнов, но то, что они не смогли сделать, это заставить клиента биткойнов дважды проверить, что подпись была правильно сформирована, прежде чем передать ее. Это было исправлено в версии ссылочного клиента 0,8.

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

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

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

Так заканчивается ли биткойн мир? Перед нами криптокалипсис?

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

В приведенном выше примере обмена вы можете надеяться, что у Алисы будет достаточно подробное ведение бухгалтерского учета, что она все равно сможет примирить биткойны, которые она отправила. Если она послала Еву, скажем, 1 биткойн в 12:10 по Гринвичу 5 февраля, это довольно уникальная сделка. Она могла просто сказать: «Наши записи показывают, что эта транзакция в это время исчезла с этими параметрами. Идентификатор транзакции должен был измениться, поэтому я не пересылаю эти биткойны».

Обмен может также реализовывать инструменты для автоматического отслеживания входных данных по транзакциям, что помогло бы выявить мутации.

Во всяком случае, переносимость транзакций поможет доказать устойчивость децентрализованной сети к дискретным сетевым событиям. Децентрализация – одна из вещей, которая делает ее «медовым барсуком денег», в конце концов.

Могущая монета изображение через Shutterstock

ОСТАВЬТЕ ОТВЕТ

Please enter your comment!
Please enter your name here