- Вернуться к меню
- Вернуться к менюЦены
- Вернуться к менюИсследовать
- Вернуться к менюКонсенсус
- Вернуться к менюПартнерский материал
- Вернуться к меню
- Вернуться к меню
- Вернуться к менюВебинары и Мероприятия
Что означает «ошибка Bitcoin »: руководство по гибкости транзакций
Что вообще означает пластичность транзакций и сломан ли Bitcoin или нет? Узнайте здесь.
На этой неделе появился термин, который многие биткойнеры раньше T слышали: пластичность транзакций. Mt Gox процитировал этокак ключевая причина приостановки вывода средств, а также упоминалось как основа для эксплойта, использованного вМассированная атака на сеть Bitcoinна этой неделе. Итак, что это такое, как это работает и стоит ли нам беспокоиться? Вот что мы знаем.
Что такое пластичность транзакций?
Это атака, которая позволяет кому-то изменить уникальный ID транзакции Bitcoin до того, как она будет подтверждена в сети Bitcoin . Изменение позволяет кому-то сделать вид, что транзакция T произошла, если выполнены все необходимые условия.
Это то же самое, что и двойные траты?
Нет. Двойная трата подразумевает трату монет один раз, а затем создание другой транзакции с теми же монетами до подтверждения первой транзакции. Хитрость заключается в том, чтобы сначала подтвердить мошенническую транзакцию в сети Bitcoin , чтобы первая транзакция T произошла. Это фактически означает, что вы можете потратить их дважды.
Как работает пластичность транзакций?
Чтобы понять это, вам нужно знать, как работает транзакция Bitcoin .
Когда вы отправляете кому-то биткоины, вы T снимаете их со счета и не отправляете их со свистом по проводам. Биткоины никогда не отправляются таким образом. Вместо этого транзакция создается в цепочке блоков Bitcoin .
Блокчейн действует как гигантская главная бухгалтерская книга для всей сети Bitcoin . Он ведет учет того, какие адреса Bitcoin отправляли средства на другие адреса Bitcoin и когда. Это дает ему полную запись того, сколько биткойнов можно отнести к каким адресам в сети в ONE момент времени.
При совершении Bitcoin транзакции она включает в себя такую информацию, как адреса, с которых поступили биткойны (входы), куда они направляются (выходы), переведенные суммы и адреса, с которых эти средства были отправлены на адрес отправителя.
[после цитаты]
Каждая транзакция должна быть уникально идентифицирована, чтобы на нее можно было ссылаться в цепочке блоков. Этот ID транзакции (TX ID) создается путем взятия информации в транзакции и пропускания ее через хэш-функцию.
Хеширование — это математическая процедура, которая берет различные фрагменты данных и объединяет их для создания более короткого фрагмента информации, известного как хеш. ONE из вещей, которая включена в хеш транзакции, — это цифровая подпись пользователя, которая доказывает, что транзакция исходит от него. Это способ для них цифровым образом «подписать» транзакцию.
ONE из ключевых качеств функции хеширования является то, что невозможно сказать, какой была исходная информация, просто взглянув на хеш. Также невозможно предсказать, каким будет хеш, основываясь на тех частях информации, с которых вы начинаете. Если какая-либо маленькая деталь изменится в любой из этих частей данных, это изменит хеш совершенно непредсказуемым образом.
Это делает идентификаторы транзакций практически невозможными для подделки. Каждая транзакция должна иметь только ONE возможный хэш. Вы можете доказать, что транзакция действительна, просто пропустив все части информации, которые составляли эту транзакцию, через функцию хэширования, чтобы проверить, что вы получаете тот же хэш.
По крайней мере, такова идея. Но вот тут-то и появляется пластичность. Цифровые подписи пользователя, используемые как часть хэша для «подписания» транзакции, должны быть в определенном формате. Этот формат T всегда проверялся должным образом. Это означало, что можно было ввести плохо отформатированный ONE , который все равно был бы принят. Изменение подписи таким образом позволяет создавать разные хэши для одной и той же транзакции.
Это нехорошо. Но, как оказалось, это и не совсем плохо. Вот почему.
Какие проблемы это может вызвать?
ONE из проблем здесь сосредоточена вокруг бирж, которые пользователи Bitcoin часто использовали для покупки и продажи биткойнов. Они отправляют свою фиатную валюту или свои биткойны на биржу, где они находятся на счете, чтобы их можно было конвертировать. В какой-то момент они могут захотеть снять биткойны со счета.
Есть несколько потенциальных сценариев. Вот пара из них:
Вредоносные индивидуальные атаки
Допустим, ALICE управляет биржей, а у Евы есть биткоины, лежащие на этой бирже. Ева решает вывести свои монеты и просит ALICE отправить биткоины на ее адрес. Когда ALICE отправляет их, это автоматически создает транзакцию, которая передается для майнинга, чтобы ее можно было включить в цепочку блоков Bitcoin .
Но Ева делает вид, что ALICE их не отправляла. Она использует недостаток пластичности транзакций, чтобы воспроизвести исходную транзакцию Алисы, слегка изменив подпись, чтобы получить другой хэш. Затем она повторно передает эту транзакцию с другим ID.
Есть вероятность, что транзакция Евы будет подтверждена в цепочке блоков первой. Если это произойдет, сеть предположит, что транзакция действительна, и T запишет транзакцию Алисы. Затем Ева может пожаловаться ALICE , что она T получила монеты. Когда ALICE проверит свой ID транзакции в цепочке блоков, она его T найдет и может попытаться отправить больше биткойнов, что означает, что она останется без денег.
Благонамеренные несчастные случаи
Если вы используете собственное программное обеспечение для обработки биткойнов, оно может по ошибке генерировать неправильно сформированные хеши. Затем эти хеши могут быть «исправлены» другим, более корректно работающим кошельком, который правильно их отформатирует. Но это может изменить ID TX. Если ваш кошелек не предназначен для обнаружения транзакций с теми же характеристиками, но с другим ID, то он может закончить с «застрявшими» транзакциями, которые зависнут в подвешенном состоянии. Что еще хуже, он может подумать, что у него все еще есть эти монеты для трат.
В любом случае, это кошмар бухгалтерии, если ваше программное обеспечение T справляется. Разработчик CORE Bitcoin Грегори Максвелл размышляет о такой возможности здесь.
Массовые атаки типа «отказ в обслуживании»
Кто-то также может вызвать более масштабные проблемы для сети Bitcoin , намеренно запустив атаки на пластичность транзакций на нескольких биржах одновременно, возможно, используя программное обеспечение, специально разработанное для создания мутантных транзакций. Эта согласованная атака, похоже, произошла на этой неделе, и пострадало несколько бирж.
Системы внутреннего учета этих бирж, возможно, способны справиться с умеренным количеством транзакций-мутантов, но если они будут подвергаться многократной бомбардировке ими, то это может на некоторое время вызвать у них логистические проблемы.
Это может вызвать краткосрочные проблемы для рынка. Любая неопределенность или сомнения относительно стабильности рынка, естественно, повлияют на рыночные цены, особенно с таким неликвидным, волатильным классом активов.
Означает ли это, что в Bitcoin есть ошибка?
Было несколько проблем с технологиями, которые использует сеть Bitcoin , которые создают проблемы пластичности. ONE из них изначально была в эталонном клиенте — это программное обеспечение, созданное CORE командой разработчиков, на которое большинство людей опирается при создании собственных сервисов. Эта проблема заключалась в невозможности перепроверить данные подписи перед передачей их в другую часть программного обеспечения, на которую полагался эталонный клиент Bitcoin .
Согласно заявлению Bitcoin Foundation, сделанному на этой неделе, последняя атака на податливость заключается в передаче измененных версий транзакций, что «выявляет ошибки как в эталонной реализации, так и в программном обеспечении некоторых бирж», что означает наличие программных недостатков в различных местах экосистемы Bitcoin , которые необходимо устранить.
CORE разработчики также рассказали CoinDesk о двух «пограничных случаях» в эталонном клиенте (это недостатки, которые будут проявляться очень редко). Оба они касаются части программного обеспечения, связанной с кошельком.
Оказывается, существует немало других проблем с пластичностью, включая некоторые из перечисленных только в этом месяце <a href="https://gist.github.com/sipa/8907691">https://gist.github.com/sipa/8907691</a> ONE из CORE разработчиков Bitcoin в предложении по улучшению Bitcoin (BIP) — документе, в котором предлагается внести некоторые изменения в Bitcoin.
CORE разработчики не сообщают, какие именно проблемы представляют наибольшую проблему, поскольку T хотят предоставлять потенциальным злоумышленникам дополнительную информацию.
Как это исправляется?
Сообщество знало о наиболее часто обсуждаемой проблеме, которая позволяла подавать искаженные подписи, еще в 2011 году (см.это обсуждение). Проблема здесь заключалась в том, что ключевая часть программного обеспечения, используемая клиентом Bitcoin , T обрабатывала неправильно сформированные подписи. Это T было ошибкой разработчиков CORE Bitcoin , но они не смогли заставить клиент Bitcoin дважды проверить, что подпись была правильно сформирована, прежде чем они ее передали. Это было исправлено в версии 0.8 эталонного клиента.
Однако не все биржи используют эталонный клиент для обработки своих транзакций Bitcoin . Они могут использовать пользовательские версии, которые делают все немного по-другому. Поэтому разработчики Bitcoin , а также разработчики кошельков и бирж все возятся со своим кодом, чтобы гарантировать, что все работает гладко. Для бирж это будет включать в себя обеспечение того, чтобы биржи изящно обрабатывали транзакции-мутанты, делая правильные вещи, когда они ONE видят.
Другие исправления больше касаются процессов. То, что делает гибкость более проблематичной, — это зависимость от неподтвержденных транзакций, в которых товары и услуги передаются или предоставляются до подтверждения транзакции в цепочке блоков. Поэтому требование подтверждения транзакции всегда является хорошей идеей.
Аналогичным образом, ручная проверка вывода Bitcoin с бирж может помочь KEEP порядок на внутреннем рынке.
Так что, Bitcoin миру приходит конец? Нас ждет криптокалипсис?
Это раздражает, но не более того. В большинстве программных продуктов есть ошибки, но не все ошибки одинаковы. Некоторые из них критические, вызывающие беспокойство, а некоторые — T. Это не T, и Bitcoin не сломан. CORE основы Bitcoin — децентрализованный способ, которым множество компьютеров работают вместе, чтобы принимать решения о транзакциях — все еще работают.
В нашем примере обмена выше вы надеялись бы, что у ALICE были бы достаточно подробные бухгалтерские записи, чтобы она все равно смогла бы сверить биткойны, которые она отправила. Если бы она отправила Еве, скажем, 1 Bitcoin в 12:10 по GMT 5 февраля, это была бы довольно уникальная транзакция. Она могла бы просто сказать: «Наши записи показывают, что эта транзакция была выполнена в это время с этими параметрами. ID транзакции, должно быть, изменился, поэтому я не отправляю эти биткойны повторно».
Биржа также могла бы внедрить инструменты для автоматического отслеживания входных данных по транзакциям, что помогло бы ей выявлять мутации.
Если что, то пластичность транзакций поможет доказать устойчивость децентрализованной сети к дискретным сетевым Мероприятия. Децентрализация — это ONE из вещей, которая делает ее « BADGER денег», в конце концов.
Ковкая монетаизображение через Shutterstock
Danny Bradbury
Дэнни Брэдбери — профессиональный писатель с 1989 года, а с 1994 года работает внештатным автором. Он пишет статьи о Технологии для таких изданий, как Guardian.
