[Уязвимость?!] Пластичные и тягучие транзакции

Тема в разделе "Разработка", создана пользователем bblizard, 20 фев 2014.

  1. bblizard

    bblizard Космонавт

    MtGox выступил с заявлением, что в связи с «проблемой» в протоколе Bitcoin, у них были задержки с выводом BTC и поэтому им пришлось прекратить все выплаты, пока причина не будет устранена. www.mtgox.com/press_release_20140210.html

    Если вам нужен быстрый ответ — нет ошибки в самом Bitcoin. Вы можете пойти на Bitstamp / Coinbase / btc-e и купить больше BTC с огромной скидкой, прежде чем курс вернется к $800 — $900…

    Длинный ответ:

    Неподтвержденные транзакции Bitcoin всегда были malleable (тягучими), то есть вы можете немного изменить транзакцию, которая «в подвешенном состоянии » (еще не в blockchain), и вы не нарушите свои подписи. Однако, невозможно изменить какие-то важные данные, такие как исходные операции, суммы, порядок входов и выходов, а также какие-то другие метаданные. То, что вы можете сделать, это добавить некоторые фиктивные данные, что не меняет сути сделки, но меняет ее содержание.

    Что это означает? Вы можете отправить ABC123 транзакцию, а кто-то может увидеть ее в сети и по тихому изменить, в результате чего ее вид будет — ABC124. Если ему повезет, то ABC124 будут включена первой, а исходная ABC123 никогда не будет включена (для предотвращения даблспендинга). Нет никаких проблем для получателя сделки — он все равно получат все свои деньги на адрес, на который он запросил вывод. Но если он будут наблюдать за транзакцией через blockchain специально, то ABC123, он никогда там уже не обнаружит.

    MtGox объясняет, как они были обмануты:

    1). Пользователь делает запрос на вывод из MtGox некоторое количество BTC на свой адрес.
    2). MtGox принимает некоторые из его собственных «неизрасходованных выходов» и составляет транзакцию, которая посылает средства на адрес пользователя.
    3). MtGox помнит хэш этой транзакции и смотрит появилась ли она в blockchain.
    4). Пользователь (злоумышленник) или кто-то еще, видит неподтвержденную транзакцию MtGox в p2p сети и создает транзакцию, состоящую из тех же данных что и оригинальная, в следствии чего ему не требуется подписывать ее элементы (т.е. он не меняет суммы, входы или выходы), но добавляет в нее незначительные данные (лишние байты например), в итоге хеш этой транзакции отличается от исходной но она остается валидной для сети (прим. переводчика).
    5). Новая, измененная, транзакция включается в blockchain. MtGox послал деньги, но еще не знает об этом. Запросивший вывод, к тому времени уже получил средства на кошелек и уже видит их.
    6). Затем пользователь(злоумышленник) идет в поддержку MtGox и жалуется, что деньги не поступили. Или, MtGox сам видит, что средства не поступают слишком долго, и может автоматически, повторно, отправить другую транзакцию, которая посылает некоторые другие «неизрасходованные TX выходы» на тот же адрес (повторяет отправку). Так или иначе, он создает много путаницы для MtGox и первоначально может даже привести к отправке одной и той же сумы много раз.
    Является ли это проблемой самого Bitcoin, который позволяет проводить такие изменения в транзакциях? Да, вероятно, так. Но не совсем ясно, как это можно предотвратить вообще.

    MtGox наткнулись на эту проблему, потому что они не знали, об этом свойстве Bitcoin.

    MtGox могло бы решить проблему следующим образом: вместо того, чтобы использовать blockchain для наблюдения за появлением хэша конкретной транзакции, следует смотреть, если адрес X ( задается пользователем ) получил сумму N ( указанную пользователем ) с выходами Y, Z и W (используется MtGox ). Это гарантировало бы, что даже если сделка будет изменена, они наверняка это увидят и узнают, получил ли пользователь деньги, предназначенные для него или нет.

    P.S. Материал размещен с разрешения автора oleganza, который тут бывает редко и сейчас высказывается на Reddit.

    Источник: http://habrahabr.ru/post/212117/
     
  2. LExxx

    LExxx Новичок

    Админы сети Биткоин ответили,что о той проблему которую гокс пытается выдать за критичную они знали уже давно (больше года),но данная проблема никаким образом не может совершить то,что описывает гокс.
    "MtGox наткнулись на эту проблему, потому что они не знали, об этом свойстве Bitcoin." смешно слышать от одного из управляющих биткоин фандэйшена,от людей у которых работа знать о системе все.

    Просто представляю картину как человек стучится в супорт гокса с проблемой,что 750к битков не дошли,с грустным лицом,котику еду не купить....:confused:
     
  3. bblizard

    bblizard Космонавт

    Полностью согласен, такого тупилова в коде большой биржи быть не могло!
     
  4. LExxx

    LExxx Новичок

    Там даже не тупилова кода,там должно быть сочетание несочетаемого,нескольких программных,нескольких человеческих факторов и тп
    Если они будут придерживаться того бреда,что сейчас ходит в инете,то единственное,что приходит на ум,что у них откуда то образовалась крупная финансовая дыра и они попутно решили попутно прикарманить НЕМАЛУЮ часть от как бы потерянного себе на пенсию.Сейчас возможно вообще зачищают следы.
    Особо интересно,что это за колоссальное уничтожение биткоин дней было не давно,тогда все сразу подумал на внутренние транзы гокса.
     
  5. bblizard

    bblizard Космонавт

    Что за уничтожение?
     
  6. LExxx

    LExxx Новичок

    Лежащий на счету 1 биткоин каждый день "генерирует" биткоино-день. Например, если кто-то получил 100 BTC и потратил их через неделю, значит было потрачено 700 биткойно-дней.
     
  7. bblizard

    bblizard Космонавт

    Не понимаю, а в чем смысл биткоинодней?
     
  8. LExxx

    LExxx Новичок

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

    bblizard Космонавт

    Вроде как условное обозначение(название)-монетки отлеживаются где-то, а потом вдруг куча транзакций появляется сравнимые по объему с стыреными!