Просмотров: 7872

Ещё одно слово против Биткоин


Делаю сейчас интервью с автором одной крипто-платформы — не хочу пока в связи с этим светить никакой конкретики, да и не суть это важно. Он обозвал Биткоин «динозавром с невероятно уродливым кодом». Собственно аргументы у него для этого есть свои, и они вполне весомые, но я в связи с этим вспомнил совсем другую историю про то, как сообщество биткоин-разработчиков тупило с уязвимостью, которая могла запросто завалить всю сеть (а в латентном своем состоянии полностью деанонимизирует её пользователей).

И тут есть над чем серьёзно подумать. Дело даже вовсе не в этой конкретной (очередной) проблеме, но в... странных людях и неясных мотивах, стоящих за всем этим движением.

И прежде чем мы продолжим, оговорюсь, что это продолжение моих прошлых постов: Биткоин: в преддверии криптоанархической смуты и Биткоин под прессом рейдеров. Кто их не читал — советую предварительно догнаться контекстом оттуда. Сразу опережая сегодняшний материал, отвечаю на центральный вопрос — нет, я не думаю, что Биткоин умрет. Даже в случае его фиаско — есть множество альтернативных и гораздо более устойчивых форков (чего только один PPCoin стоит с его Proof-of-Stake). Цитируя про будущую судьбу всех крипто-анархистов типа меня, используя древние источники, скажу:

«Говорю вам тайну: не все мы умрем, но все изменимся» (1Кор.15:51).

Биткоин, конечно, вряд ли выживет в долгосрочном плане в нынешнем своем ущербном виде, но движение крипто-валют заткнуть уже не получится никому, даже государству — крипта живет, и будет жить, и здесь всё только начинается. Что же касается старичка биткоина и его мутных консерваторов-охранителей, то:

Более всего пострадают, конечно, те формы, которые непосредственно конкурируют с формами, претерпевшими модификацию и улучшение (Чарльз Дарвин)

А теперь сама история — под катом.

Ещё одно слово против Биткоин Bitcoin безопасность шифрование и анонимность

Пишет Олег Ховайко

Доброго дня, Читатель!

Хочу поделиться информацией об интересной истории, которая разворачивается на наших глазах.

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

Началась же история с простого и банального факта. Анализируя исходный код, унаследованный нами от PeerCoin-a (а им в свою очередь от BitCoin-a) мы обнаружили часть кода, где происходит получение внешнего IP адреса. Код написан был явно впопыхах, и для получения внешнего IP обращается к двум серверам, адреса которых «вшиты» в исходный код программы-кошелька:

  • http://checkip.dyndns.org
  • http://www.showmyip.com

Мы удивились, и решили проверить, как современный BitCoin справляется с этой задачей. И удивились ещё больше, когда увидели, что старый код от Сатоши продолжает использоваться до сих пор, без каких бы то ни было изменений.

Смотрите сами:

https://github.com/bitcoin/bitcoin/blob/master/src/net.cpp, function GetMyExternalIP()

Причём продолжает использоваться как в самом Биткоине, так и во всех бесчисленных альтернативных криптовалютах, так или иначе базирующихся на оригинальном коде от Сатоши.

Небольшое исследование выяснило, что сервер http://www.showmyip.com в настоящее время недоступен, и все запросы кошельков за IP обрабатываются единственным оставшимся сервером http://checkip.dyndns.org.

Осознав этот факт, мы были просто шокированы. Подумать только! Новая экономика, декларируемая децентрализованность, полная независимость от правительств, многомиллиардные капиталы, одни правительства не знают, что с этим делать, другие — принимают какие-то законы...

А весь сетевой протокол этой новой цифровой экономики висит на одном-единственном ржавом гвозде по имени http://checkip.dyndns.org, скромно торчащем из карты штата New Hampshire!

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

https://github.com/bitcoin/bitcoin/pull/3461

Однако, ответы разработчиков биткоина сводились к банальному:

«Не обращайте внимания, и так работает, и даже если сервис будет недоступен для кого-то, ничего страшного не случится. Ну, какие-то клиенты не смогут установить прямое соединение... Но это же мелочи!»

При этом игнорировались два факта:

  • Если сервер выйдет из строя, то сеть не рухнет, но прямые связи будут устанавливаться с пониженной вероятностью, что снизит связность сети, и, как следствие, надёжность. Это неприятно, но может быть, и не критично.
  • Каждый раз, когда кошелёк запрашивает свой внешний IP у http://checkip.dyndns.org, он, естественно, рапортует своей сигнатурой: «Эй! На этом IP-address запустился биткоин-кошелёк!». А это уже серьёзно. Ибо люди обычно запускают кошельки, когда им надо куда-то что-то заплатить или посмотреть приход. И связать время транзакций (которые все публичны) с временем запуска кошелька, тем самым получив IP кошелька, не так уж сложно. Ну а по IP можно узнать много интересного о подписчике, да...

Вы еще не до конца поняли, что это значит? А значит это то, что:

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

Мы осознали, какую серьёзную угрозу анонимности и прочим заявленным свойствам биткоина несёт эта централизация, и решили избавиться от неё в нашем проекте. Вместо единственного WEB-сайта мы использовали список из 263 STUN-серверов, которые помогают пройти через NAT-ы другой пиринговой сети — SIP-телефонии (ибо каждый SIP-телефон является и клиентом, и сервером). Для получения внешнего IP наш клиент обращается к случайным STUN-серверам, разбросанным по всему миру.

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

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

Анонсы я дал здесь:

Русскоязычные:

— https://forum.btcsec.com/index.php?/blog/38/entry-258-stun-protokol-dlia-kriptovaliuty/

Англоязычные:

— https://bitcointalk.org/index.php?topic=736721

— https://bitcointalk.org/index.php?topic=134731.0

И тут начались настоящие чудеса

Моё сообщение было оперативно перенесено администраторами из широко читаемого технического форума в форум альтернативных валют, которые мало кому интересны. Хотя сообщение как раз имеет прямое указание на техническую уязвимость биткоина.

На другое сообщение же разработчики биткоина нам прямо указали, что не стоит поднимать эту старую тему: Also, your post is barely on topic and you’ve bumped a pretty old thread. Please don’t do that. То есть налицо видна тенденция к заминанию темы биткоинщиками. Интересно также отношение различных комментаторов к нашему нововведению. Разработчики биткоина недовольны, и считают это глупостью ( Thats a really foolish method ).

Зато другие люди, не связанные напрямую с разработкой и поддержкой биткоина, рассматривают наше нововведение как важное и нужное. Вот парадокс!

Копаем дальше

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

Давным-давно это была небольшая компания, предоставлявшая динамический DNS мелким пользователям бесплатно или за небольшую сумму. И если эта мелкая компания в 2010-м покупала мелкие бизнесы «из одного программиста и одного сервера» своей направленности (динамический DNS, и т.п.), то потом, после паузы, в 2013м фирма резко выросла, и стала скупать компании, владеющие собственными технологиями:

http://en.wikipedia.org/wiki/Dyn_%28company%29#Acquisitions

Заметим — технологиями мониторинга интернета, к динамическому DNS отношения не имеющими. А в начале 2014-го, примерно как раз, когда были слушания в конгрессе США, и биткоин держался свыше $1000, компания закрыла поддержку бесплатных акаунтов:

http://dyn.com/blog/why-we-decided-to-stop-offering-free-accounts

А на платные — взвинтила цену так, что по сравнимой цене можно арендовать статический IP. Таким образом, по сути, компания закрыла свой изначальный бизнес... Весь... Кроме http://checkip.dyndns.org, который так любят разработчики биткоина. И который, по сути — технология мониторинга активности пользователей биткоин-кошельков.

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

И, напоследок, мы решили выяснить, что же случилось с другим адресом, который использовал когда-то Сатоши — http://www.showmyip.com, и который сейчас почему-то не работает.

И выяснилось, что он принадлежит некому Уэсли Кензи (Wesley Kenzie aka Securikai) из Канады, что подтверждается данными whois. Чем он занимался — http://safezone.cc/threads/tajpskvotter-vymogatel-popal-na-million-dollarov.18030/. Но когда он перебежал дорогу Lochkeed Martin на почве киберсквоттинга, то был окорочен. Как раз вовремя. Только его твиттер и остался: https://twitter.com/securikai.

Вот какие интересные совпадения бывают, не правда ли?

По следам полемики

Далее мой дайджест-выжимка из последовавшей горячей дискуссий в виде вопросов-ответов:

Там же массовый майнинг идет — все транзакции «тут же» дублируются всем участникам сети. У меня есть серьезные сомнения в практической ценности этой информации. Да к тому же ip-4 адреса кончились, все больше ip — серые. Учитывая же, что сервис dyn.com пользуют (судя по информации статьи) все *coin — каша там еще та в логах. Хотя, следить за каким-то конкретным ip — вполне возможно).

Знаете, есть такие страшные слова как ковариационный анализ и линейная регрессия. Если хочется узнать, кто такой bitcoin payment address 1XYZ, достаточно взять лог этого транзакций адреса из блокчейна, и накореллировать по времени его на IP-шники из лога WEB-сервера dyn.com, поставив в качестве критерия правдоподобия dT^2; И через несколько минут — списки IP-кандидатов для этого кошелька. Потом можно заглянуть в гости к провайдеру, и узнать адрес того, кому был выдан некий IP в некий момент. Ну а потом — в гости по вашему адресу может «черный воронок» подъехать...

Тут меня упрекают, что, мол, чего я это дурью страдаю, ведь все кому не лень пользуются этим сервисом checkip.dyn.com, и, мол, запрос кошелька хорошо маскируется среди запросов браузеров, отличить невозможно. Отвечаю:

Отличить вас элементарно, с помощью grep или strstr();

Снова смотрим исходник bitcoin, строку 397:

https://github.com/bitcoin/bitcoin/blob/master/src/net.cpp

Видим там жестко вшитую сигнатуру BTC-клиента:

Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)

Далее — ищем эту сигнатуру в списке всех сигнатур всех браузеров и прочих WEB-клиентов, включая даже библиотеки: http://www.useragentstring.com/pages/All/

И не находим. Снова случайность?

Итак, вся супер-мупер-распределённая и независимая сеть упирается в один единственный сервис, и критически от него зависит. Касаемо ж моей паранойи... Я ещё не рассматривал вариант, в котором этот сервер не просто пассивно собирает IP-шники, а клиентам раздаёт «какие надо» IP, замыкая сеть через кого надо и устраивая MIТM. Но это, наверное, таки уже правда паранойя...

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

IMHO, просто выпадут товарищи без UPNP сидящие с серыми IP. Прогресс идёт вперёд и таких всё меньше. Не вижу как был сделан вывод и снижении связанности сети.

Многие сидят за двойными натами (домовые сети и пр). UPNP в этом случае поможет мало. Advertising-a не будет. То есть новые горизонтальные связи Bitcoin через advertise устанавливаться не будут, а старые — теряются.

Я специально запускал свой кошелёк с заблокированным dyn.com и тестировал на себе моделируемую ситуацию. Как было число пиров в биткоине 3, так через сутки 3 и осталось. Горизонтальные связи не появились.

checkip dyndns org используется только если у системы нет публичного адреса, IP не указан вручную, а также определить IP через UPNP или другими методами не получилось. Его используют меньшинство клиентов.

Врёте. К сожалению, используют все клиенты. У меня и роутер с UPNP, и торчит он наружу в интернет (то есть нет двойного ната и прочего). Смотрим в

C:\Users\maxihatop\AppDataRoaming\Bitcoin\debug.log

И видим там строчки:

2014-06-15 13:39:07 GetMyExternalIP() received [105.23.111.33] 105.23.111.33:0

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

У биткоин кроме checkip.dyn.com есть ещё механизм UPUP, так что не гоните, товарищ.

Уже писали сто раз, что UPUP не пробивает через два NAT, а таких не меньшинство, а большинство — это все рядовые пользователи, сидящие под провайдером. Вот типичная сегодня для большинства ситуация: первый NAT — домашний роутер, второй — провайдерский (тем более сейчас, когда дефицит IPv4, и все ISP внутри сети повально используют серые IP).

Что сигнатура у битка есть и вполне себе не массовая, тоже выше объяснили. И что прогрепать по логам, это уже дело техники. Что, вручную определять и вводить свой белый IP? Да 99% пользователей крипто-кошельков где строка отладки находится в qt не знает!

Ещё одно слово против Биткоин Bitcoin безопасность шифрование и анонимность
Подозреваю, что с биткоином происходит что-то не то...

Но прервем мой поток слов срочным новостным выпуском.

Экстренный выпуск новостей

Отсюда свежее:

Минфин предлагает ввести уголовную ответственность за выпуск и оборот криптовалют. Нарушителям может грозить штраф до 500 тыс. руб. или до двух лет исправительных работ. Оборот биткоинов и других виртуальных денег противоречит текущему российскому законодательству и Конституции, солидарны с Минфином эксперты. Даже сейчас принимающим к оплате биткоины компаниям грозит уголовная статья за легализацию средств. Ведомство Антона Силуанова предлагает дополнить Уголовный кодекс статьей «Оборот денежных суррогатов».
Выпуск и оборот криптовалют возможен, только если их эмитентом будет российский Центробанк, отмечают эксперты.

Заключение

После этой правовой паузы снова вернемся на наше шоу — теперь совмещаем все части вместе.

Этот пост посвящается всем тем парням, кто под новостью от Минфина об уголовке пишет в комментариях что-то типа «крипта же физически размещается не на территории РФ» + «это же полностью анонимная и безопасная сеть». Я не знал, как вам ответить кратко, поэтому решил написать свою очередную телегу.

Ещё одно слово против Биткоин Bitcoin безопасность шифрование и анонимность

Да, согласен, все озвученные выше проблемы в принципе решаемы, а крипто-идеалы всё-таки достижимы.

Но прямо сейчас ясно одно — все это лежит за пределами Биткоина (даже если они там и разберутся с величиной своих блоков не завалив при этом сеть). У меня лично вся надежда на некоторые прогрессивные альткоины, ведь даже однажды выдавленную наружу зубную пасту уже никогда не получиться затолкнуть обратно. И об этих альтернативных кандидатах крипто-будущего мы обязательно поговорим в следующий раз.

А пока... а пока про биткоин я могу лишь констатировать: кто-то, что-то, где-то мутит...

А ты, %username%, всё ещё пользуешься Биткоином?

Ещё одно слово против Биткоин Bitcoin безопасность шифрование и анонимность

twitter.com facebook.com vkontakte.ru odnoklassniki.ru mail.ru ya.ru pikabu.ru blogger.com liveinternet.ru livejournal.ru google.com bobrdobr.ru yandex.ru del.icio.us

Подписка на обновления блога → через RSS, на e-mail, через Twitter
Теги: , , , , , , , ,
Эта запись опубликована: Среда, 21 октября 2015 в рубрике Мнения.

9 комментариев

Следите за комментариями по RSS
  1. То что я сейчас прочитал это бонба ваще!, ты шаблон рвал ты трубу шатал и мой криптоанархистский домик ментальный розовый разбил об кафель только что) Чувак тя теребонькнут када нить) это же инсайд лютый так выходит..

  2. Выглядит так будто чел нашел старый "баг" и написал о нем в тех раздел с рекламой своего форка. Его ожидаемо от туда выпнули.

  3. Статья какого года?

    /*

    GetMyExternalIP

    Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)

    */

    Это было в версии 0.8.

    В ветке master этого уже нет

  4. Да, еще год назад все выпилили. Теперь, судя по всему, используется только upnp

    https://github.com/bitcoin/bitcoin/commit/845c86d128fb97d55d125e63653def38729bd2ed

  5. Аноним, cheese: Так и есть, этот пост был впервые опубликован ровно год назад. Но, тем не менее, пока пресса не подняла гвалт насчет этого dyndns, никто ничего в биткоин исправлять не собирался. Да, теперь у BTC монопольно используется механизм upnp (он был и раньше), но об его недостатках “за двойным натом” выше также много чего говорится. Короче, вопрос остается отчасти открытым.

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

  6. Добавлю и я свое слово против текущей реализации Bitcoin и остальных криптовалют.

    Для начала какая никакая статистика по поличествву тразназкций:

    (http://www.coinside.ru/2014/12/04/pobit-novyj-rekord-v-100-tysyach-tranzaktsij-v-den/)

    Средний размер одной тразнакциив Bitcoin, байт (грубо): 500.

    Рассчитаем суточный прирост объма базы транзакций (блокчейна), если Bitcoin заменит Visa:

    212603000*500 = 106 ГБайт в день. На год потребуется около 40 ПБайт.

    Способен ли каждый или хотябы занчительное большинство частных лиц выделять ежегодно под хранене блокчейна такой объем ?

    Очевидно нет! (по крайней мере мне такие не известны). Если остввить схему работы биткоин с базой-блокчейн как она есть сейчас

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

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

    на самом деле копья сторонников и противников увеличения блока (т.е. уеличения числа транзакций за единицу времени).

    Ситация очень плоха:

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

    - увеличим -- и контроль за криптовалютой будет централизован и захвачен корпорациями.

    Есть ли выход ?

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

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

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

    и одновременно имела клиенткое API для программы-клиента (кошелька или майнера).

    (сразу видится еще и задача балансровки блоков: если вдруг клиентов хранящих данный конкретый блок стало мало -- то вытрем у кого-нить с диска блок который часто встречается среди клиентов, и запишем редкий на это место)

    Существют ли сейчас подобные распределеные базы данных -- я не знаю.

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

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

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

  7. >Уже писали сто раз, что UPUP не пробивает через два NAT, а таких не меньшинство, а большинство — это все рядовые пользователи, сидящие под провайдером. Вот типичная сегодня для большинства ситуация: первый NAT — домашний роутер, второй — провайдерский (тем более сейчас, когда дефицит IPv4, и все ISP внутри сети повально используют серые IP).

    Большинство в рашке/может быть других странах третьего мира. Даже в Украине имхо провайдерский НАТ так часто не встречается.

  8. Ганзеец

    На Guns.ru http://forum.guns.ru/forummessage/151/1745378-0.html

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

  9. Ай, ананим, много ты знаешь о провайдерах! В большинстве мест провайдером может стать тупо владелец сетки БЦ - и уж там, будь уверен, будет +1 НАТ. Всосал?

Оставьте комментарий!

Не регистрировать/аноним

Используйте нормальные имена. Ваш комментарий будет опубликован после проверки.

Зарегистрировать/комментатор

Для регистрации укажите свой действующий email и пароль. Связка email-пароль позволяет вам комментировать и редактировать данные в вашем персональном аккаунте, такие как адрес сайта, ник и т.п. (Письмо с активацией придет в ящик, указанный при регистрации)

(обязательно)


⇑ Наверх
⇓ Вниз