Trezor: 4 января 2016 года: 7.4 BTC = 3 000 долларов


В январе 2016 года я потратил 3 000 долларов на покупку 7,4 биткойна. В то время это казалось вполне достойным занятием. Недавно я стал руководителем научно-исследовательских работ в Blockchain Futures Lab Института будущего и хотел узнать все о биткойнах, криптовалюте, использующей блокчейн для записи транзакций в сети. Я не мог и представить, что данная операция выльется в напряженную борьбу за то, чтобы не потерять достаточно крупную сумму денег.


Мои эксперименты с биткойнами были увлекательны, а покупать вещи за криптовалюту — удивительно легко. Я использовал приложение airBitz для пополнения баланса в Starbucks, а Purse.io — для покупки беспроводного дверного звонка с камерой видеонаблюдения на Amazon. Еще за биткойны я купил комиксов в лос-анджелесском магазине Meltdown Comics.


К ноябрю стоимость биткойна практически удвоилась с начала года и продолжала расти чуть ли не ежедневно. Моя криптовалютная заначка стала превращаться в реальные деньги. Я хранил свои биткойн-ключи в онлайн-кошельке, но думал переместить их в более безопасное место. Многие интернет-сервисы сохраняют личные ключи клиентов, вследствие чего аккаунты становятся уязвимы для хакеров и мошенников (помните в 2014 году Mt. Gox потеряла 850 000 биткойнов со счетов своих клиентов?) или правительства (например, когда в августе домен российской биткойн-биржи BTC-e был конфискован по решению окружного суда США в Нью-Джерси, а активы пользователей — заморожены).


Я опросил несколько экспертов по биткойнам, и все они сказали, что самым безопасным способом защиты кэша является использование так называемого аппаратного кошелька. Это маленькое устройство представляет собой усовершенствованный USB-накопитель, который хранит ваши личные биткойн-ключи и позволяет подтверждать операции, не обнаруживая их в сети интернет, где их могут перехватить ненадежные люди. Я остановил свой выбор на аппаратном кошельке под названием Trezor («сейф» в переводе с чешского), позиционировавшемся как «сверхнадежный». Я купил его 22 ноября за 100 долларов на Amazon (опять же, через приложение Purse.io).


Получив прибор на руки, я подключил его к компьютеру и зашел на официальный сайт Trezor, чтобы настроить его. Маленький монохромный экран гаджета (размером с два моих ногтя на больших пальцах) загорелся и показал значок замкá. Согласно указаниям на сайте, я записал 24 слова, случайно сгенерированных Trezor одно за другим. Слова были типа «осознавать», «двигаться», «мода» и «горький.» Я записал их на оранжевой бумажке. Затем мне было предложено придумать ПИН-код. Его я записал на той же бумажке (выбрав пару коротких комбинаций, которые смог бы легко вспомнить).


На сайте Trezor я узнал, что эти 24 слова могут быть использованы для восстановления доступа, а также для генерации главного ключа к кошельку. В случае утери Trezor или выхода его из строя я мог бы восстановить свой кошелек, введя эти слова в новый аппарат или любой из многих других аппаратных и онлайн-кошельков, использующих тот же стандартный алгоритм генерации ключей. Мне было важно спрятать бумажку в надежное место, поскольку с ее помощью любой мог бы украсть мои 7.4 биткойна. Я перевел валюту с веб-кошелька на Trezor и закинул его вместе с оранжевой бумажкой в ящик стола в своем кабинете дома. Сразу после праздников я собирался выгравировать эти 24 слова на полоске алюминия и хранить в более безопасном месте.


Ошибка: 16 марта 2017 года: 7.4 BTC = 8 799 долларов


Было 6:30 утра. Моя 14-летняя дочь Джейн была в Лондоне с классом, а старшая дочь Сарина — на учебе в одном из колледжей Колорадо. Мы с женой Карлой собирались в аэропорт, так как нам предстоял отпуск в Токио. Роясь в ящике стола в поисках зарядного устройства для телефона, я наткнулся на оранжевую бумажку с кодом восстановление и ПИНом. Что было с ней делать? Если бы наш самолет упал в океан, мне бы хотелось, чтобы дочери смогли получить эти биткойны. На тот момент последние уже почти утроились в цене, и я воображал, как однажды они будут стоить 50 000 долларов. Я взял ручку и написал на бумажке:


«Джейн, если что-нибудь случится, покажи этот листочек Кори. Он знает, что с ним делать. Люблю, папа».


(Я имел ввиду Кори Доктороу, моего друга и бизнес-партнера. Биткойнами он не увлекается, но, уверен, смог бы разобраться, как получить с помощью набора слов главный ключ.)


Я отнес бумажку в спальню Джейн и положил под подушку, а затем вызвал такси до международного аэропорта Лос-Анджелеса.


Мусор: 4 апреля 2017 года: 7.4 BTC = 8 384 доллара


Из Токио мы вернулись 24 марта, и только 4 апреля я вспомнил об оранжевой бумажке и ее местоположении. Я еще подумал: забавно, дочь вернулась домой уже больше недели назад, но ничего об этом не сказала.


Я пошел к ней в комнату и заглянул под подушку. Листка там не было. Я посмотрел под кроватью, двигая контейнеры для хранения и светя телефоном как фонариком.


— Карла?— позвал я. — Ты не видела оранжевый листочек с моим биткойн-паролем? Не могу найти его в комнате Джейн.


— Может, Джейн положила его в ящик стола, — ответила жена. Джейн была в тот момент в школе, и я послал ей вопрос по СМС. Она сказала, что никакой оранжевой бумажкии никогда не видела.


— Погоди, — сказала Карла. — Пока нас не было, дом убирали. Сейчас позвоню им.


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


— Где он?— спросила Карла.


— Выбросила.


Я знал, что мусор уже увезли, но надел перчатки и прошелся по всем уличным бакам. Ничего, кроме контейнеров от яиц, кофейной гущи и коробок с Amazon. Оранжевая бумажка давно разлагалась на одной из свалок Лос-Анджелеса.


Карла спросила, большую ли проблему представляет собой потеря листка.


«Все не так плохо, — сказал я. — Хлопотно, но не более того. Мне придется перевести все биткойны с Trezor на онлайн-кошелек, повторно инициализировать Trezor, сгенерировать новый набор слов и вернуть биткойны. Плохо было бы в случае утери ПИН-кода, но я его помню: 551445».


Забывчивость: 4 апреля 2017 года: 7.4 BTC = 8 384 доллара


Я подключил Trezor к ноутбуку и ввел 551445.


Неверный ПИН-код.


Должно быть, ошибся, подумал я. Я снова попробовал 551445, следя за правильностью набора.


Неверный ПИН-код.


Ой-ой. Я изменил одну цифру: 554445


Неверный ПИН-код.


Просто смешно, подумал я. Я же знал свой ПИН. За последние несколько месяцев я вводил его как минимум раз десять, не подглядывая в бумажку. Ну хорошо, пусть будет 554145.


Неверный ПИН-код.


Я посмотрел на крошечный монохромный дисплей биткойн-кошелька и заметил, что появился таймер обратного отсчета. Пришлось ждать несколько секунд, прежде чем попробовать снова. Сердце билось неровно. Я зашел на сайт производителя аппаратного кошелька и прочел плохие новости: время на таймере удваивалось при каждом неверном вводе. На сайте было сказано: «количество неверных попыток ввода ПИН-кода хранится в памяти Trezor. Вследствие чего перезагрузка Trezor таймер волшебным образом не обнулит. Этим вы добьетесь не более чем запуска таймера по новой. Вору придется вводить ПИН-код до конца своих дней. Между тем, у вас достаточно времени на то, чтобы перевести средства на новое устройство или кошелек из резервной копии». (Главный офис Trezor находится в Праге, отсюда такой дубовый язык.)


Проблема была в том, что вором был я, пытаясь украсть собственные биткойны со своего же Trezor. Мне стало тошно. После шестой неудачной попытки ввода ПИН-кода тревога переросла в панику, а сердце бешено забилось — я мог навеки распрощаться со своими 7.4 биткоина.


Я попытался угадать еще несколько раз, но с каждой неудачей ощущение нереальности происходящего росло пропорционально цифрам на таймере, которые составляли на тот момент 2 048 секунд или около 34 минут. Я достал из ящика стола калькулятор и быстро понял, что не доживу и до 31й попытки (34 года). Сто попыток заняли бы более 80 триллиардов лет.


Я поделился новостями с Карлой. Сказал, что не могу вспомнить ПИН-код и что при каждом неверном вводе время на таймере растет. Она спросила, сохранил ли я ПИН-код в приложении 1Password (безопасный менеджер паролей). Я ответил, что нет, а на вопрос «почему?» ответа у меня не было.


Я знал, что не стоит тратить драгоценную попытку в столь возбужденном состоянии. Мой мозг засорился беспорядочными сочетаниями паролей. Я пошел на кухню нарезать овощи для карри на ужин, но не мог думать ни о чем, кроме ПИН-кода. Нарезая картофель кубиками, я мысленно перебирал в голове цифры, как если бы играл в «Эрудита». Через некоторое время мне пришел в голову новый номер 55144545. Ну наконец-то! Я пошел в кабинет. На дисплее Trezor еще оставалось несколько сотен секунд, и я решил потратить это время на отправку электронных писем. Затем набрал 55144545.


Неверный ПИН-код. Чтобы продолжить, подождите, пожалуйста, 4 096 секунд…


Той ночью я почти не сомкнул глаз, а тот краткий промежуток времени, когда сон все же накрыл меня, был полон кошмаров с комбинациями цифр 1, 4 и 5. Меня беспокоили не столько 8 000 долларов, сколько осознание собственной глупости и стыд за потерю бумажки и забытый ПИН-код. Мне была противна мысль о том, что биткойн может возрасти в цене, а доступа к деньгам у меня не будет. Если бы я не смог вспомнить пароль, Trezor дразнил бы меня всю оставшуюся жизнь.


Поиски: 5 апреля 2017 года: 7.4 BTC = 8 325 долларов


В то утро я стал спросонья искать способы вернуть свои биткойны без ПИН-кода и пароля восстановления доступа. Если бы я потерял ПИН-код от дебетовой карты, то мог бы связаться с банком и в конечном счете восстановить доступ к средствам. С биткойнами дело обстоит иначе. Сетью биткойн-транзакций не владеет никто, а программное обеспечение запускают тысячи компьютеров по всему миру. Кто угодно может установить биткойн-ПО на свой компьютер и стать частью этого процесса. Децентрализованная природа биткойн-сети имеет свои последствия, главное из которых заключается в том, что если вы где-то напортачите, виноваты будете сами.


Я зашел на Reddit и написал:


«Можете надо мной смеяться — я это заслужил. Я записал ПИН-код и пароль восстановления на одном и том же листочке. Хотел выгравировать слова на металлической пластине и спрятать ее, но клининговая служба опередила меня и выбросила листок. Теперь я не могу вспомнить пароль; пытался угадать его около 13 раз, а чтобы попробовать снова, нужно ждать больше часа. Очень скоро часы перерастут в годы. Я могу что-то сделать или можно попрощаться со своими биткойнами?»


Большинство ответов выражали сочувствие, но пользы не принесли. Один человек сказал, чтобы я связался со службой Wallet Recovery Services, которая дешифрует зашифрованные биткойн-кошельки. Я написал им электронное письмо с просьбой о помощи. Ответ пришел на следующий день:


«Я бы и рад помочь… но решения вашей проблемы не вижу. Вам нужно либо правильно угадать ПИН, либо найти пароль восстановления».


На форуме Reddit меня заинтриговал ответ от пользователя под ником zero404cool:


«…вся ваша информация до сих пор хранится в Trezor, и кое-кто знает, что делать, чтобы ваш кошелек заработал. Мне довелось такое наблюдать».


В другом посте он добавил:


«Берегите свой Trezor. Ничего с ним не делайте. Экспериментировать с ПИН-кодами нет нужды. Вы можете вернуть все свои биткойны».


Другие пользователи форума считали, что с этим zero404cool что-то не так. Один обвинил его в мошенничестве, другой — в распространении страха, неуверенности и сомнений относительно безопасности Trezor. Я был склонен согласиться с ними, особенно когда прочел о всех тех мерах, что были предприняты производителем Trezor для защиты устройства от хакеров. Производитель с уверенностью утверждал, что Trezor выдержит любые попытки несанкционированного доступа. Как говорилось на сайте, наиболее очевидный способ взломать его путем установки неофициальной прошивки с целью разблокировки ПИН-кода и слов доступа приведет лишь к очистке памяти устройства.


Чтобы удостовериться, я послал письмо в Trezor и объяснил свою проблему. Представительница службы поддержки клиентов прислала имейл со ссылкой на «руководство при возникновении чрезвычайных ситуаций», но ни один из описанных случаев мне не подошел. Тогда она написала:


«Во всех этих ситуациях подразумевается наличие либо ПИН-кода, либо пароля восстановления доступа к средствам. К сожалению, без указания хотя бы одного из них доступ к данному конкретному счету с хранящимися на нем средствами получить не сможет никто. Я могу еще чем-нибудь помочь вам, Марк?»


Ситуация начинала казаться безвыходной. Но тут zero404cool с Reddit прислал мне личное сообщение с предложением о помощи:


«Могу помочь, если вы готовы принять мою помощь. Разумеется, в интернете вы подобной информации не найдете. А выполнение потребует определенных технических навыков. Профессионал может извлечь все данные всего за 10 секунд. В открытом доступе этого нет и никогда не будет.


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


Итак, сперва нам стоит заручиться доверием друг друга».


В ответ я предложил zero404cool загуглить мое имя, и тогда он увидел бы, что я был одним из первых редакторов Wired и работал нам с 1993 года. Я учредил популярный сайт BoingBoing, который ежемесячно читают 5 миллионов человек. Я был главным редактором журнала Make, посвященного проектам «сделай сам». Через некоторое время zero404cool ответил:


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


Я ответил, что не спешу. После этого я от него ничего не получал.


Гипнотизер: 25 мая 2017 года: 7.4 BTC = 12 861 долларов


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


Ранее на сеансе Мишель заставила меня воспроизвести написание ПИН-кода на оранжевом листке бумаги. Она положила его в ящик стола, заставила меня сесть за него, открыть ящик и взглянуть на бумажку. Она объяснила, что мы станем пробовать разные способы стимуляции моей памяти.


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


Проведя в ее кабинете около четырех часов, я решил, что мой ПИН-код 5514455.


Лишь через несколько дней я собрался с духом, чтобы попробовать снова. Всякий раз, когда я думал о Trezor, в висках начинала пульсировать кровь, и меня бросало в пот. Я ввел код, но он оказался неверным, а таймер показал 16 384 секунды, то есть около четырех с половиной часов до следующей попытки.


Последняя попытка: 12 августа 2017 года: 7.4 BTC = 28 749 долларов


Я пытался не думать о биткойнах, но не мог. Что еще хуже, на протяжении лета его цена стремительно росла и останавливаться не собиралась. В июле эксцентричный предприниматель Джон Макафи написал в Твиттере, что через три года один биткойн будет стоить более 500 000 долларов — «а если нет, я съем свой член на национальном телевидении», заявил он. Это усилило мое беспокойство, хоть я и не верил, что курс вырастет так сильно (и что Макафи выполнит обещание).


Я не мог избавиться от мысли о том, что между мной и огромной суммой денег стоит одно лишь шестизначное число, которое я не раз использовал, а теперь оно спряталось так глубоко в моем сознании, что вытащить его не способен ни гипноз, ни медитация, ни самобичевание. Я чувствовал себя беспомощным. Дочери пытались подкрадываться и быстро спрашивать «а ну, какой ПИН?», но и это не работало. Иногда, лежа перед сном в постели, я просил мозг найти мой ПИН-код, но просыпался ни с чем. Каждая возможная вариация кода, какую я только мог представить, казалась не лучше и не хуже остальных. Биткойн рос в цене и еще больше отдалялся от меня. Я представлял его в виде сундука с сокровищами, исчезающего за тускло рдеющим горизонтом. Я бы умер, так и не вспомнив его.


Вечером мы с Карлой складывали белье, и в комнату вошла приехавшая на лето из колледжа Сарина. «Я знаю твой биткойн-пароль! — сказала она. — 5445!»


— С чего ты взяла? спросил я.


— Ну, ты иногда используешь в качестве пароля 5054, но у «Трезора» нуля нет, и ты просто пропустил его. Не стал бы писать 5154, а просто 554 и добавил бы к этому 45. (Я иногда добавляю в свои пароли важное для меня число 45.)


Карла посмотрела на меня и сказала: «У тебя глаза загорелись. Может, это оно и есть?» А ведь она могла быть права.


— Если это не 55445, то тогда 554455, потому что иногда ты в конце добавляешь 455, — сказала Сарина.


— Может быть, — сказал я. — Подумаю об этом перед сном, а завтра, возможно, рискну.


Утром я все же решил попробовать. Комбинация казалась правильнее остальных. Я подключил Trezor. ждать нужно было 16 384 секунды или около четырех с половиной часов, но поскольку было воскресенье, я стал заниматься домашними делами.


Как только таймер обнулился, я попросил Карлу, Сарину и Джейн подойти и встать рядом, чтобы оказать мне моральную поддержку, убедиться в правильности набора ПИН-кода и разделить мою радость в случае успеха.


Я сидел в кресле, а Джейн, Сарина и Карла стояли рядом. Мое сердце колотилось так сильно, что я слышал пульсацию в висках. Я пытался дышать спокойно. Я медленно ввел ПИН-код. Вводя очередную цифру, я ждал подтверждения от одного из членов семьи. Закончив, я навел курсор на кнопку входа на сайт Trezor. «Готовы?» — спросил я. Все сказали «да», и я кликнул мышкой.


Неверный ПИН-код. Чтобы продолжить, подождите, пожалуйста, 32 768 секунд…


— Вот дьявол, сказал я.


— Ничего, папа, сказала Сарина. — Когда попробуем 554455?


Я открыл калькулятор.


— Через десять часов.


Карла положила руку мне на плечо. «Если еще пару раз не получится, сломай его», — сказала она. Это казалось правильным выходом, ведь альтернативой было держать Trezor подключенным к компьютеру месяцами (при отключении обратный отсчет начинается заново), а затем годами и десятилетиями. С тех пор, как мы десять лет назад переехали в этот дом, электричество отключалось минимум раз в год вследствие коротких замыканий, дождя или профилактических работ управляющей компании. Я мог бы купить бесперебойный источник питания, чтобы держать устройство включенным в течение многих лет, но хотел поскорее со всем этим покончить, а сделать это можно было лишь уничтожив Trezor.


На следующее утро после завтрака я пошел в кабинет один и ввел 554455.


Неверный ПИН-код. Чтобы продолжить, подождите, пожалуйста, 65 536 секунд…


Электронное письмо: 16 августа 2017 года: 7.4 BTC = 32 390 долларов


Мысли о забытом ПИН-коде стали чем-то наподобие шума в ушах — нескончаемого, назойливого, раздражающего. Что произошло с моим мозгом? Забыл бы я ПИН-код, будь мне 20 лет или 30? Я все жалел и жалел себя, пока не увидел на почте имейл от Satoshi Labs, производителя Trezor.


Тема гласила: «Обновление прошивки TREZOR до версии 1.5.2.»


В сообщении говорилось, что обновление призвано устранить «проблемы безопасности на всех устройствах, чья версия прошивки ниже 1.5.2». Далее говорилось вот что:


«Злоумышленники могут воспользоваться данным недочетом для взлома устройства и его перепрошивки. Если ваше устройство не повреждено, а пароль знаете только вы, следует как можно скорее обновить прошивку до версии 1.5.2, дабы ликвидировать вероятность атаки и обеспечить безопасность вашего устройства».


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


Автор приложил фотографии разобранного Trezor и скрин файл дампа с 24 ключевыми словами и ПИН-кодом, а также ссылку на пользовательскую прошивку Trezor, но без инструкций. Я прочел статью пару раз, а затем обратил внимание на имя автора: Doshay Zero404Cool. Тот же человек, с которым я переписывался пять месяцев назад на Reddit! Я зашел в нашу с ним переписку и обнаружил непрочитанное сообщение, полученное через пару месяцев после последнего разговора:


«Привет, вспомнили ПИН-код? Если нет, то и восстанавливать не стоит, учитывая небольшой размер суммы. По сегодняшним расценкам я мог бы сделать это за 50%…»


Я хотел было принять предложение zero404cool, но решил сначала обратиться к эксперту в области биткойнов по имени Андреас Антонопулос, автору книги «Интернет денег». Я несколько раз брал у Андреаса интервью от лица BoingBoing и Института будущего, так как он является весьма уважаемым в мире биткойна консультантом по вопросам безопасности.


Он знал о биткойнах больше других моих знакомых. 20 августа я послал ему электронное письмо и сообщил, что не могу получить доступ к своим хранящимся на Trezor 30 000 долларам в биткойнах. Я спросил, возможно ли вернуть биткойны с помощью бреши в прошивке. «Описанная в статье уязвимость действительно реальна и может быть использована для восстановления пароля, так как вы, предполагаю, не обновляли прошивку до версии 1.5.2, которая эту брешь устраняет». Мне повезло, что я не обновлял Trezor, потому что в таком случае стерлись бы все данные о пароле и ПИН-коде.


Андреас также сказал, что знает парнишку-«гения кодирования, который работает с Trezor и соответствующим программным обеспечением». Паренька зовут Рашид Салим, ему 15, живет в Великобритании. Андреас никогда не встречался с ним лично, но много переписывался в корпоративном мессенджере Slack. В Satoshi Labs, компании-производителе Trezor, о Салиме знали и даже выделили ему для экспериментов пару устройств. Андреас предложил создать чат с Салимом в приложении Telegram.


Через несколько минут Андреас познакомил меня с Салимом:


«Марк — обладатель заблокированного Trezor в ожидании чуда».


Андреас изложил свой план: Салим инициализировал бы одно из своих устройств с прошивкой, идентичной моей, попытался бы взломать его и в случае успеха отправил бы мне через Telegram программу для использования бреши в системе безопасности. Я купил бы второй Trezor и тренировался в ее установке и запуске, пока не выучил бы весь процесс наизусть. И затем я бы перешел к взлому целевого устройства (того, что с 7.4 биткойна).


Но прежде чем продолжить, Андреас сказал: «Лучше всего начать с уточнения ожиданий и условий. Вероятность неудачи как-никак выше вероятности успеха».


Я попросил Салима о пошаговой видео-инструкции и предложил ему аванс в размере 0.05 BTC (200 долларов) и еще 0.2 BTC (800 долларов) в случае успеха и возврата мне моих биткойнов. Салима такие условия устроили. Я добавил: «Если тебе потребуется больше времени на подготовку инструкций, дай знать, и мы увеличим сумму вознаграждения».


Я заказал на Amazon второй Trezor, а Салим сказал, что мне понадобится операционная система с открытым исходным кодом Ubuntu Linux. Я установил ее на свой старый MacBook Air.


Гонорар: 24 августа 2017 года: 7.4 BTC = 32 387 долларов


У нас с Салимом состоялся следующий диалог:


— Привет, Марк. Видео готово, но я просил бы немного увеличить оплату, и вот почему.


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


2. Пришлось написать код для использования бреши в прошивке (что, полагаю, тоже стоит учитывать при оплате)


— Справедливо.

 

— Таким образом, могу я получить 0.35 BTC за видео и программу и 0.5 BTC в случае успеха? Итого 0.85 BTC. Знаю, что много, но думаю, это честно с учетом всей проделанной работы.


Салим просил по сути 3 700 долларов, что почти в четыре раза больше первоначальной договоренности, но я решил, что это того стоило (и было намного выгоднее, чем предлагал zero404cool). Если бы я только мог снова увидеть мой ПИН-код — тот, что в Trezor, Wallet Recovery Services, среди пользователей Reddit и всех остальных считался утерянным безвозвратно, — то с радостью заплатил бы Салиму всю запрошенную сумму. Это было бы чудо, как говорил Андреас. Как тут вообще можно торговаться?


— Ты испытывал это на Trezor с той же прошивкой, что и у меня?


— В видео я устанавливаю 1.4.0 на Trezor, настраиваю его, а затем несколько раз ввожу неверный ПИН-код (так что он в таком же состоянии, что и твой).


— Хорошо, тогда по рукам.


Салим дал мне свой биткойн-адрес, и я послал ему 0.35 биткойна из созданного пару месяцев назад онлайн-кошелька. Минутой позже он загрузил два файла, один под названием exploit. bin, другой — десятиминутное видео. На нем был виден монитор компьютера Салима и строковые команды Linux, которые он вводил в окно терминала. Звука не было. В нижней правой части в формате «картинка-в-картинке» был виден примотанный скотчем к столу Trezor.


Я немного знал о строковых командах Linux, поэтому мало что понимал. Первая часть видео представляла собой лишь инструкции по инициализации пробного Trezor и установке более низкой версии прошивки, чтобы я мог попрактиковаться на втором устройстве. Лишь последние три минуты видео содержали фактические инструкции по установке и использованию бреши в прошивке.


Я попросил Салима объяснить, как работает хак. Он сказал, что когда Trezor включен, его прошивка (по сути, операционная система) копирует ПИН и 24 слова в статическую оперативную память (SRAM) в незашифрованном виде. При осуществлении так называемой «мягкой перезагрузки» устройства — путем деликатного замыкания двух контактов на печатной плате — можно воспользоваться багом прошивки, не прибегая к очистке памяти SRAM. Это позволит увидеть ПИН-код и пароль восстановления.


Второй Trezor мне доставили в пятницу. Я был готов начать, но пришлось ждать до субботы ввиду большого количества работы. Правда, в пятницу я все же вскрыл корпус тренировочного Trezor и снял печатную плату. Ножом с отламываемым лезвием я медленно и осторожно водил по шву, пока не получилось разобрать устройство. И хотя оно было учебным, я весь вспотел, а руки дрожали. За последние пять месяцев мои отношения с Trezor были столь ужасны, что мыслить рационально я не мог. Я боялся поцарапать плату. Как только устройство открылось, я подключил его к компьютеру и убедился, что все работает.


Брешь: 26 августа 2017 года: 7.4 BTC = 32 208 долларов


В ночь с пятницы на субботу я спал на удивление хорошо. Карлы и Сарины дома не было. Джейн практиковалась в игре на укулеле и учила японский в спальне. Я освободил столик в своем кабинете, поставил на него MacBook Air с установленным Linux и подключил к нему по USB тренировочный Trezor. Я приклеил его к столу скотчем, совсем как Салим.


Я снова посмотрел видео Салима, записывая использованные им команды Linux в текстовый файл, чтобы потом скопировать и вставить их в окно терминала. В какой-то момент Салим перезапустил Trezor замыканием двух контактов на печатной плате с помощью пинцета и одновременным нажатием двух кнопок на устройстве.


Следуя инструкциям, мне удалось установить прошивку более ранней версии 1.4.0. Я придумал для учебного «Трезора» ПИН-код (2468) и записал сгенерированный им пароль из 24 слов. Затем я установил прошивку с брешью, ввел около дюжины различных команд Linux, нажал кнопки для мягкой перезагрузки и ввел еще несколько команд. Сработало! Устройство было успешно взломано, и я мог видеть на дисплее слова восстановления и ПИН-код. Я повторил процесс еще шесть раз, потратив на это все утро и бóльшую часть дня. Опомнился я уже в 15:45, пропустив обед и традиционный послеобеденный эспрессо. Да не особо и хотелось.


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


Единственное, что заставляло меня нервничать в последние несколько дней, была неуверенность в том, добавлял ли я к ПИН-коду кодовую фразу в качестве дополнительной защиты. Прошло пять месяцев с момента последнего использования, и я не был уверен, устанавливал ли его. Салим и Андреас говорили, что если фраза есть, пиши пропало — разблокировать Trezor не удастся никогда. Мои сомнения по этому пункту — а думал я об этом часто — заставляли внутренности предательски сжиматься.


Я подключил Trezor к ноутбуку и ввел:


sudo trezorctl get_features


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


passphrase_protection: false


Да! То, что надо! Теперь меня ничто не остановит!


Когда пришло время нажимать на кнопки на Trezor, пальцы перестали слушаться. «Меня жутко трясет», — сказал я Джейн. Нужно было прерваться и выдохнуть. Я попробовал снова и не смог. С третьей попытки мне удалось нажать все три кнопки разом. Trezor перезагрузился, и я смог установить файл exploit. bin.


Чтобы загрузить пользовательскую прошивку Салима, я набрал следующую команду:


sudo trezorctl firmware_update —f exploit. bin


Она стерла существующую прошивку и установила версию Салима. На дисплее высветилось:


Новая прошивка успешно загружена. Теперь вы можете отключить Trezor.


Я знал, что отключать его сейчас ни в коем случае нельзя. (Я вспомнил предупреждение Андреаса: «Отключение электропитания во время загрузки прошивки — это катастрофа, потеряете все данные».) И я нажал на маленькую кнопку, присоединенную к печатной плате для мягкой перезагрузки устройства. На дисплее появился восклицательный знак в треугольной иконке и фраза:


ВНИМАНИЕ. Обнаружено неофициальное программное обеспечение


Спасибо за предупреждение, подумал я. Именно это я и пытался сделать: запустить на проклятом гаджете неофициальное ПО. Я нажал одну из кнопок Trezor, чтобы подтвердить, что хочу продолжить, и на экране появилось слово «ЭКСПЛОЙТ», что означало установку на устройство программного обеспечения Салима. Пути назад не было. Либо сработает, либо все данные навсегда исчезнут вместе с моими биткойнами, даже если я вдруг когда-нибудь вспомню ПИН. Теперь нужно было ввести еще несколько команд, дабы прочитать содержимое статической оперативной памяти Trezor (где до момента его отключения будут храниться слова пароля и ПИН-код).
«Все, — сказал я Джейн, введя команду, — сейчас появится пароль восстановления». Я склонился над клавиатурой и нажал Enter, а затем откинулся на спинку стула и тихо сказал: «О боже, сработало».


24 слова, которые я написал на оранжевой бумажке в декабре и потерял в марте, вернулись из-за криптографических рубежей сверхнадежного Trezor и светились на мониторе моего компьютера. При желании можно было остановиться здесь. Слов пароля было достаточно для возврата моих 7.4 биткойна. Нужно было просто провести повторную инициализацию устройства и ввести слова. Но нужно было сделать еще кое-что, и это было даже важнее денег. Я хотел заставить чертов Trezor выдать мой ПИН-код.


Следуя инструкциям Салима, я скопировал строку текста из окна терминала и добавил ее в предоставленную парнем команду Linux. ПИН-код высветился моментально.


45455544


Многомесячный груз упал с моих плеч подобно огромным комьям грязи. Я встал, поднял руки и засмеялся. Я победил Trezor и его жутко надоедливую функцию задержки ввода ПИНа и перехитрил ту часть мозга, которая полагала, что не выдаст код владельцу. К черту вас обоих, подумал я. Я победил.

 


Марк Фрауэнфельдер был редактором Wired и первым редактором журнала Make. Также является соучредителем культурно-технологического сайта BoingBoing и руководителем научно-исследовательских работ Blockchain Futures Lab Института будущего.