В течение прошлой недели сеть Bitcoin подвергалась неопасной атаке, основанной на гибкости транзакций [malleability attack]. Ответственность взял на себя один из энтузиастов криптовалют и активный участник интернет-форума bitcointalk.org. Он утверждает, что живёт в Москве, а атаку на сеть проводил «потому, что может это сделать».

Атака, которая была организована силами одного человека и повлияла на работу всей сети, известна в криптосообществе уже довольно давно. Разработчики bitcoin уже почти год готовят изменения в коде, Хотя она не обладает фатальными последствиями, но способна значительно замедлить скорость обработки транзакций.

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

Криптохулиган, называющий себя Alister Maclin (возможно, в честь шотландского новеллиста Alistair MacLean), признался на форуме bitcointalk, что именно он стоит за этой атакой, продолжавшейся несколько дней. Он согласился пообщаться с изданием Vice и поделиться подробностями о проведённой акции.

image
Временный всплеск количества отвергнутых транзакций

amaclin продемонстрировал интервьюеру свои возможности, включая и выключая атаку на сеть – эти действия были видны в статистике работы сети, доступной на сайте statoshi.info. По его словам, организовать такую акцию сведущему человеку довольно просто – это заняло у него пару часов и сотню строчек кода скрипта.

На вопросы о целях атаки amaclin отвечает, что делает это потому, что может, а также цитирует произведение Джека Лондона «Морской волк»: «Мы делаем всё, чтобы выжить, и прокормить наших жён и детей» (прообразом главного героя произведения стал, кстати, ещё один Маклин – капитан Алекс Маклин [Alex MacLean]). При этом он заявляет, что не преследует в данной ситуации корыстных целей.

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

Этим летом сеть биткоин подвергалась другому стресс-тесту – в том случае он был связан с размерами блока. Текущий размер блока позволяет обрабатывать слишком мало транзакций в единицу времени. Чтобы продемонстрировать эту ограниченность, биржа CoinWallet.eu 22 июня провела свой стресс-тест. Десять серверов с кошельками Bitcoin посылали транзакции два раза в секунду, и каждая из них рассылалась на 10–20 адресов. Выходы из этих сделок объединялись и отправлялись обратно на рассылавшие серверы. Однако, серверы CoinWallet сами упали, и компания не смогла создать нагрузки в тех объемах, которые планировались. Сеть этот стресс-тест выдержала без особых проблем.

Комментарии (20)


  1. awoland
    11.10.2015 07:03

    Не знаю насколько актуален в данной конкретной теме Д.Лондон, но ответили этому подражателю Герострата грамотно: «With Great power comes great responsibility my child......»


    1. idiv
      11.10.2015 10:49
      +2

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


      1. awoland
        11.10.2015 12:28
        +3

        Судя по его словам, непримиримый робингуд борец c «количеством паразитной энергии» и «активист», на деле оказывается спамером — антагонистом (а проще говоря саботажником) и банальным стяжателем-халявщиком:

        Вкратце это означало следующее:
        мой бот зафиксировал перевод на адрес с известным мне приватным ключом и сразу же создал транзакцию перевода на мой адрес
        сразу после этого мой бот также зафиксировал, что владелец адреса 1LdUHTEVxWJhrhKfy4H3VuYDnTHQVjsdBn тоже сделал перевод на свой адрес.

        Короче, кто-то опрометчиво вчера послал 5 btc транзакцией
        blockchain.info/tx/4c8b5bc34471c3fa823c5d7f02e453a77aeaa26c5c2fe5a7bcd04f8d271f3f19
        на адрес 1CgCMLupoVAnxFJwHTYTKrrRD3uoi3r1ag
        А это брейнваллетовский адрес от строки «the»

        Чорд! Его транзакция быстрее моей разошлась по сети (а может и создана была раньше).
        И мне не достались халявные 5 btc — а это, на минуточку, полторы штуки баксов

        ...
        Проработала моя программа на сервере azure больше года.
        Заработала мне денег около 40 килобаксов. Но… Всему хорошему приходит конец. И этому приключению — тоже.
        В последние месяцы уже даже хостинг свой не отбивает. Вот я и грохнул её. Всему есть свой конец.

        , который не против прибрать к рукам что нибудь чужое из того, что кто-то плохо положил.
        Хотя, следует отдать ему должное, программист он хороший и в технический принципах построения и функционирования системы разобрался неплохо.
        Жаль что свои таланты он тратит не на улучшение критикуемой системы и устранение ее недостатков (и уязвимостей), а на их использование для извлечения личной выгоды и профита.
        А по-поводу темы конкретно этой заметки — вот его ликующий топик на BTT:
        Вау! Йа Знаменит! Переводите скорее!
        motherboard.vice.com/read/i-broke-bitcoin


        Так что диагноз, как говорится, «на лицо» и это далеко не человек в белой шляпе.


        1. idiv
          11.10.2015 12:38
          +5

          Я не говорю, что он все правильно сделал. Но если вся система может лечь от действий одного человека — грош цена этой системе.


          1. awoland
            11.10.2015 13:41

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

            Ну допустим, мне надо объяснить вам, что malleability — это возможность поменять транзакцию
            таким образом чтобы она осталась валидной, а её txid поменялся. Для этого можно воспользоватся
            тем фактом, что если есть валидная ECDSA-подпись (R,S), то при замене S на (G-S) подпись останется валидной.
            Я беру чужую транзакцию из сети, заменяю в ней подпись и отправляю дальше уже измененную.
            amaclin


            1. idiv
              11.10.2015 14:04
              +2

              Как по мне, если платеж, условно, вместо минуты проходить будет за неделю — это скорее «лежит», чем «замедлился». И тут был всего один человек, а если этим займется бoльшее число участников?


              1. awoland
                11.10.2015 14:27
                -1

                Так платеж пройдет, только с другим txid и пользователь (или сервис) не смогут его отследить. Это проблемы не для системы (биткойны так украсть не получится), а исключительно для ее пользователей.


                1. idiv
                  11.10.2015 14:48
                  +3

                  А разве может система существовать без пользователей? Я не понимаю, какой толк от такой системы, что у нее проблем нет, а у пользователей есть? Это же как в старом анекдоте выходит «проблемы индейцев шерифа не интересуют».


              1. Mad__Max
                11.10.2015 14:57
                +1

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

                В результате деньги то до адресата дошли и с примерно той же скорость. Но он видит 2 входящие транзакции (вместо одной). И у отравителя в исходящих тоже лишняя «зависшая» появляется. (от нее можно избавиться — но потребуется время потратить пока кошелек заново синхронизирует свое состояние в соответствии с блокчейном).
                Так же в некоторых случаях может создать путиницу. Отправитель создает транзакцию, передает ее id получателю. Скрипт атакующего успевает ее перехватить и отправить уже под другим id. Если он это сделал достаточно быстро есть довольно большая вероятность что подтверждена будет именно измененная транзакция. Тогда получатель проверяя по id исходную транзакцию — будет видеть, что она не дошла (не подтвердилась) и предоставит того, что платильщик заказывал.
                В конце конечно все выяснится когда получатель списки транзакций вручную сверит и увидит поступление требуемой суммы на свой кошелек (просто под другим id). Но минимум 2 человека (отправитель и получатель) зря потратят свое время.
                Так же это создает дополнительную нагрузгу на выч. мощности и память всех биткоин нод — т.к. им приходится проверять в 2 раза больше транзакций (оригиналы и дубли). Если нода стоит на слабом железе (типа дешевого виртуального VPS сервера) это может нехватку ресурсов.

                В общем мелкая пакость. Опасности не представляющая, но слегка раздражающая.


        1. Calvrack
          11.10.2015 13:42

          кстати о брейнволлетах и их безопасности есть доклад с последнего дефкона — http://www.youtube.com/watch?v=foil0hzl4Pg
          говорят что отслеживание ключей для всех фраз короче 5ти символов идет постоянно.


          1. elite7
            11.10.2015 21:46

            Да уж, белый хакер отказался от 733 биткойнов, без комментариев…


  1. MAXH0
    11.10.2015 09:39
    +13

    Господа!
    Я конечно выскажу очень холираврное утверждение (хобби у меня такое. Кто не верит смотри профиль :)), но мне кажется что биткойн не достиг и одной из целей которуе он пастулировал изначально.
    Во первых он не анонимен, а псевдо-анонимен. Получить анонимность можно, но не тривиально. И еще не факт, что это будет реальная анонимность Мир крипто — закрытый мир.
    Во вторых хотя сейчас он в целом децентрализован, но угроза централизации есть. Более того она экономически выгодна (по тем же причинам, что образуются монополии — уход с рынка маргинальных игроков и их поглощение).
    В третьих хваленая дефляционная природа биткойна в значительной мере фикция. Потому что инфляция/дефляция зависит не только от объема валюты, но и от объема рынка по которому эта валюта ходит. Выпустит чей то ЦБ удобную цифровую валюту (возможно *койны, но не обязательно), съест долю рынка и все — биткойн просядет.
    В четвертых — зависимость от спекуляций… И ТД И ТП

    Сейчас есть лучшие крипто-валюты (хотя и сырые). НО QWERTY эффект работает на совсем не идеальный биткойн.
    Так что этот крипто-геросртат делает важное дело — показывает что биток должен меняться. Либо умереть и дать место другим крипто-валютам (хотя держателям битков это ОЧЕНЬ не понравится)


    1. polym0rph
      12.10.2015 01:54

      Он свою задачу выполнил замечательно. Proof of concept.
      Кому нужна реальная анонимность вкручивают всякие кольцевые подписи и миксеры.
      Насчет угроз централизации — угрозы всегда были есть и будут. Практически в любой области.
      Насчет дефляции и кто там чего может выпустить — так выпускайте, а мы посмотрим. Будет реально удобно и полезно — перейдем.

      Я сразу скажу, мне Bitcoin нравится. Но также нравятся и все попытки ему создать проблемы. От этого технология развивается и становится более приспособленной.


      1. awoland
        12.10.2015 10:00

        Так и Роберт Моррис свою задачу тоже на отлично выполнил. И ущерб в 96,5 миллионов долларов нанес.


        1. elite7
          12.10.2015 10:56

          Если не делать прививки, то может быть эпидемия?

          Если не подвергать организм физическим нагрузкам, то можно заболеть?


          1. awoland
            12.10.2015 12:05

            Прививки делают посредством введения в организм ослабленных и нежизнеспособных штаммов возбудителей заболевания. А в данном конкретном случае это не прививка, а распространение полноценного болезнетворного штамма (благо что не смертельного). И это в биологическом разрезе выглядит примерно как если вам или мне в глазные капли или жидкость для линз просто «для фана» штамм Neisseria gonorrhoeae введут… Чтобы пакость сделать и проблем создать.


            1. elite7
              12.10.2015 13:57

              пока гром не грянет мужик не перекрестится.

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

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


              1. awoland
                12.10.2015 14:10

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


        1. polym0rph
          12.10.2015 13:01

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


  1. orcy
    11.10.2015 14:19

    > что делает это потому, что может

    Судя статье больше похоже на поведение attention whore, столько пафоса.