Перевод «GhostX» - научно-фантастический рассказ в стиле Monero

Тема в разделе "Статьи", создана пользователем Mr. Pickles, 31 май 2020.

  1. Mr. Pickles

    Команда форума Модератор Редактор

    Регистрация:
    11 сен 2017
    Сообщения:
    793
    Симпатии:
    229
    Что-то пошло не так в маленьком мире криптовалюты Monero.

    Monero использует так называемый алгоритм «доказательства работы». Если говорить простым, нетехническим языком, то представьте, что тысячи людей по всему миру запускают на своих компьютерах специальную программу, называемую «майнером», которая способна решать что-то наподобие дьявольски сложных математических головоломок. В случае с Monero новая головоломка в среднем появляется каждые две минуты, и тот, кто решит её первым, положит в карман довольно неплохое вознаграждение в виде Monero.

    Так что же всё-таки произошло? После долгого периода стабильности общая вычислительная мощность в сети Monero неуклонно росла в течение 3 месяцев и в определённый момент стала на 50% выше, чем в среднем за многие предыдущие годы. Либо майнеры Monero были запущены на гораздо большем количестве компьютеров, чем до этого, либо заработало что-то новое, решающее головоломки с гораздо большей эффективностью. Проблема состояла в том, что не было никаких чётких свидетельств в отношении любой из двух вероятных причин; рост так называемого «хешрейта» оставался загадкой.

    Сеть отреагировала на это так, как и должна была отреагировать: она повысила сложность решения головоломок. Повышение так называемой «сложности» является механизмом поддержания среднего двухминутного времени ожидания между появлением решений.

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

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

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

    Вот почему RandomX выдерживал испытание временем. Ну, по крайней мере, до этого момента.

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

    Его первоначальная версия, которая была примерно на 5% быстрее конкурентов, пока ещё была не столь примечательной. GhostX представлял собой программу с закрытым исходным кодом, то есть предполагалось, что люди должны были довериться её анонимным создателям, поверить в их честность, то есть должны были поверить в то, что программа не станет скрытно заниматься майнингом в интересах создателей майнера в течение какой-то части общего времени его работы. Мало кто был готов пойти на подобный риск за те незначительные 5%, которые были обещаны сверх обычной выплаты, поскольку большинство других майнеров были «открытыми», и люди могли проверить их и убедиться, что с программой всё в порядке.

    Ситуация начала меняться немного позже, когда появилась вторая версия майнера, которая была уже на целые 10% быстрее. Но всё же большинство людей продолжало использовать свои проверенные программы, которым доверяло. Массовый переход начался только тогда, когда версия GhostX 3.0 стала обеспечивать сокрушительное преимущество в скорости, которая теперь уже была на 15% выше, чем у всех остальных.

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

    Это был момент, когда я решил попытать удачу, несмотря на то, что был совершенным новичком в технологиях майнинга и был плохо знаком с RandomX. Но «никогда ничего не узнаешь, пока сам не попробуешь», опять же, «даже слепая курица вдруг, да и найдёт зёрнышко» и всё такое.

    Ладно. Если что-то действительно было не так с GhostX, то что же это могло быть? Как уже упоминалось, это могло быть тем, что называется «кражей хешей», то есть тайным переводом некоторого процента результатов самим создателям. Другими словами, 80% времени майнер работал на владельца компьютера, а оставшиеся 20% дохода просто утекали от него.

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

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

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

    Ну, очевидно, ждать этого было долго и бесполезно.

    Решение было найдено лишь спустя несколько дней. Я создал фальшивый пул и подсоединил к нему GhostX. Майнер ожидали хорошие новости: «Вы не поверите! Сегодня уровень сложности сети очень, очень низок, и головоломки, требующие решения, до смешного просты. Не упустите такую возможность и воспользуйтесь ею!»

    Моя хитрость сработала: похоже, создатели GhostX не предвидели этого и заглотили наживку в виде донельзя низкого уровня сложности, моя копия майнера действительно начала отправлять пакеты на второй IP-адрес в обход пула.

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

    А в процессе ожидания результатов я обдумывал некоторые вопросы. Я был вполне уверен в том, что «публичная» часть GhostX сама по себе была честной в той или иной степени — все копии GhostX правильно решали головоломки и зарабатывали Monero для своих операторов. Если бы в этой части что-то было не так, то это заметили бы довольно быстро.

    Но каким образом получалось так, что хоть сколь-нибудь стоящая часть результатов отправлялась создателям майнера? Не означало ли это, что действительная вычислительная мощность майнера была даже выше видимой и составляла все 115%?

    На основе результатов, полученных при помощи моего фальшивого майнинг-пула, я произвёл некоторые вычисления, учитывая при этом, что каждый тайно отправляемый пакет содержал правильное решение головоломки. Я был просто в шоке: майнер должен был быть в два раза быстрее, чем все остальные!

    Я даже представить себе не мог, как такое вообще возможно. Но одно мне было абсолютно ясно: при наличии такой мощности легко было подстроить видимые показатели GhostX до уровня, необходимого, чтобы люди начали пользоваться им, и отношение между открытой и скрытой мощностью майнинга подстраивалось до тех пор, пока люди не попались на крючок и... готово!

    Несколько дней спустя Пол сообщил мне: «Тут, в этом майнере, использована какая-то серьёзная технология защиты от проверок. На самом деле я никогда не видел ничего подобного. Возможно, GhostX станет темой моего следующего выступления на конференции Black Hat.

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

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

    «Хм, круто. Но как это связано с GhostX и майнингом Monero?» — спросил я несколько ошарашенно.

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

    «Ах, ну да, конечно же. RandomX».

    «В точку. Эти процессоры естественным образом могут выполнять команды RandomX без какой-либо требующей времени эмуляции, к которой вынуждены прибегать и которую приходится использовать традиционным майнерам. Я не проводил тестирования, но, по моим оценкам, при майнинге с использованием «родных» для процессора команд RandomX скорость практически удваивается, даже если учесть всё, что только можно: вход и выход из режима RandomX, ограничения сети и прочее».

    «И для всего этого действительно хватает памяти микропрограммы?» — спросил я.

    «Да. Сегодняшние ПЗУ довольно объёмны, а команды RandomX не так уж сложны, если в твоём современном процессоре имеются все необходимые для их реализации механизмы».

    «Интересно. Но ведь это же было сделано кем-то из своих. Только сами разработчики микрокода из Intel могли проделать подобное».

    Пол согласился: «Определённо. И ещё тут нужно терпение. Требуется подождать, пока достаточное количество процессоров не будет установлено в компьютеры по всему миру. Кстати, у меня есть догадка, почему они назвали свой майнер GhostX. Ведь этот набор команд подобен призраку, засевшему в машине».

    Вот так всё и выяснилось. Разгадка крылась в секретном майнинге Monero при помощи практически половины вычислительной мощности всех остальных майнеров вместе взятых: копии GhostX использовали процессоры Intel в качестве своего рода ASIC, разработанных под RandomX. Сообщество Monero было в бешенстве, когда всё выплыло наружу.

    И тут я вспомнил об IP-адресе, который GhostX использовал, чтобы «звонить домой», и спросил о нём Пола.

    «Ах да, конечно, — ответил он. — Сам по себе этот IP ничего особенного не представляет — он принадлежит облачному серверу, находящемуся в США. Однако один из сотрудников компании, владеющей им, оказал мне услугу, ведь я как-то спас его задницу, обнаружив трояна в их внутренней сети, который он сам же по неосторожности установил. Так вот, этот человек рассказал мне, что кто-то из Intel арендует именно этот компьютер».

    Конечно, это не удивило меня, но послужило ещё одним подтверждением.

    «Пожалуйста, разреши мне немного похвастаться взломом GhostX перед его авторами, перед тем как опубликуешь всё, что мы раскопали», — попросил меня Пол. Я не видел причин, чтобы отказать, и мы оставили создателям майнера сообщение на самом большом онлайн форуме, посвящённом GhostX, где они определённо должны были его заметить, особенно учитывая тот факт, что мы разместили его там не просто в виде текста, а зашифровав при помощи того же ключа, что использовался GhostX для разблокирования набора команд RandomX при майнинге.

    Ответ не заставил себя ждать и был довольно удивительным: нам с Полом предлагались 20% от всего дохода от скрытого майнинга Monero с использованием GhostX в обмен на молчание, которое бы обеспечило дальнейшую работу всего этого предприятия.

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

    Но затем произошло то, что заставило нас раскрыть все карты: объявился ещё один майнер. Он назывался GhostXBuster и был на 5% быстрее, чем самая последняя версия GhostX. Нам было предельно ясно, что всё это означает: кому-то ещё удалось взломать майнер, и этот кто-то также воспользовался этим «призраком в машине», посаженным туда командой Intel, разработавшей микрокод.

    Всё быстро выходило из-под контроля и было слишком опасно для Monero. Я решил без огласки связаться с Monero Core Team и рассказать им всё как есть, чтобы в следующей версии Monero набор команд RandomX был изменён, и «интегрированный» в процессоры Intel майнинг прекратился, а соответствующие возможности снова стали для всех равными.

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

    Источник: "GhostX" - A Monero Fiction Short Story

    Перевод:
    Mr. Pickles (@v1docq47)
    Редактирование:
    Agent LvM (@LvMi4)
    Коррекция:
    Kukima (@Kukima)
     
  • О нас

    Наш сайт является одним из уникальных мест, где русскоязычное сообщество Monero может свободно общаться на темы, связанные с этой криптовалютой. Мы стараемся публиковать полезные мануалы и статьи (как собственные, так и переводы с английского) о криптовалюте Monero. Если вы хорошо владеете английским (или можете писать собственные статьи/мануалы) и хотите помочь в переводах и общем развитии Monero для русскоязычной аудитории - свяжитесь с одним из администраторов.