The Trezor: 4 января 2016 года: 7,4 BTC = $3000

В январе 2016 года я потратил $3000, чтобы купить 7,4 биткоина. В то время это казалось полностью оправданным поступком. Я только начал работу как директор по исследованиям в Institute for the Future’s Blockchain Futures Lab и хотел получить опыт работы с биткоинами из первых рук. Я понятия не имел, что эта покупка приведет к напряженной борьбе за сохранение небольшого состояния. 

Эксперименты с биткоином меня просто завораживали. Оказалось, что на удивление легко покупать всякое с помощью криптовалюты. Используя airBitz, я покупал кредитку Starbucks, с помощью Purse.io – беспроводной дверной звонок с камерой с Amazon. Расплачивался биткоинами за бумажные версии комиксов в Лос-Анджелесе. 

К ноябрю стоимость биткоина с января выросла примерно вдвое и продолжала расти каждый день. Моя криптовалютная “заначка” понемногу превращалась в реальные деньги. Мои биткоин-ключи хранились в веб-кошельке, но я хотел переместить их в более надежное место. Многие онлайновые биткоин-сервисы хранят приватные ключи своих пользователей – то есть, аккаунты уязвимы к действиям хакеров и мошенников (помните, как с аккаунтов Mt. Gox в 2014 году исчезло 850 000 биткоинов) или правительств (как российская биржа BTC-e, у которой отобрал домен американский суд, попутно заморозив активы пользователей). 

Я поговорил с несколькими биткоин-экспертами, они единодушно заявили, что самый безопасный способ защиты – аппаратный кошелек. Это маленькое устройство фактически является USB-флешкой, оно хранит ваши личные биткоин-ключи и позволяет авторизировать сделки без того, чтобы “светить” эти ключи в интернете. 

Я остановился на кошельке под названием Trezor (чешское слово, обозначающее “безопасный”), который сам производитель описывал как “пуленепробиваемый”. Я купил такой кошелек 22 ноября за $100 на Amazon (опять же, через Purse.io).

Когда он прибыл, я подключил кошелек к компьютеру и пошел на сайт Trezor, чтобы настроить его. Монохромный экранчик устройства величиной с два моих ногтя ожил и высветил мне иконку замка. Сайт сказал мне записать 24 слова, которые будет рандомно генерировать Trezor. Слова были в стиле aware, move, fashion, bitter и т.д. Я записал их на куске оранжевой бумаги. Затем мне предложили создать PIN. Его я тоже записал (используя знакомые мне числовые комбинации, которые я смог бы легко вспомнить) на том же куске бумажки, что и список из 24 слов. 

Эти слова должны были использоваться при восстановлении доступа, а также – чтобы сгенерировать мастер-ключ к моему биткоин-счету. Если я потеряю свой кошелек или он перестанет работать, я смогу восстановить доступ к аккаунту, введя эти 24 слова в новый Trezor или любой другой кошелек, использующий такой же стандартный алгоритм генерации ключей. 

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

Ошибка: март 2016 года: 7,4 BTC = $8799

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

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

“Кори” – это Кори Доктороу, мой друг и бизнес-партнер по сайту Boing Boing. Он – не поклонник биткоинов, но я знал, что он разберется, как получить мастер-ключ с помощью списка слов. 

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

Мусор: 4 апреля 2017 года, 7,4 BTC = $8384

Мы вернулись из Токио 24 марта и мысль об оранжевой бумажке даже не приходила мне в голову. Но 4 апреля я вспомнил, что засунул ее дочери под подушку. “Забавно, она дома уже неделю и до сих пор не спрашивала меня о ней”, – подумал я тогда. 

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

“Карла, ты не видела оранжевую бумажку с моим биткоин-паролем? Не могу найти ее в комнате Джейн”, – спросил я. Жена ответила, что Джейн могла засунуть бумажку в ящик стола. Дочь была в школе, я написал ей SMS, и она ответила, что не видела оранжевой бумажки. 

Затем жена вспомнила, что мы заказывали уборку дома, пока мы были в отпуске. Она позвонила в клининговый сервис и связалась с женщиной, которая убиралась у нас. Она действительно вспомнила оранжевый кусок бумаги. И сказала, что выкинула его. 

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

Жена поинтересовалась, так ли важна эта записка. Я ответил, что не особо. Придется переслать все биткоины из Trezor в веб-кошелек, перезапустить Trezor, сгенерировать новый список слов и вернуть биткоины на аппаратный кошелек. Ситуация была бы незавидной, если бы я не помнил свой PIN. Но он был в моей памяти – 551445 (цифры изменены – ред.). 

Забывчивость: 4 апреля 2017 года: 7,4 BTC = $8384

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

Введен неверный PIN-код. 

Я, наверное, опечатался, вводя код. Попробовал 551445 еще раз, аккуратно нажимая клавиши. 

Введен неверный PIN-код. 

О нет. Попробовал немного изменить код. 554445. 

Введен неверный PIN-код. 

Это просто смешно. Я знаю PIN-код. Я вводил его как минимум десятки раз за последние месяцы, не сверяясь с бумажкой. Может, 554145? 

Введен неверный PIN-код. 

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

Проблема была в том, что вором в этой ситуации был я сам. Меня начало подташнивать. На шестой неверной попытке меня охватила паника – видимо, придется распрощаться со своими 7,4-ю биткоинами. 

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

Я рассказал все жене. И то, что не могу вспомнить код, и то, что меня наказывают всякий раз за неверную попытку ввода. Она уточнила, не сохранял ли я код в 1Password. Нет. Когда она спросила, почему, я не нашелся с ответом. 

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

Введен неверный PIN-код. Чтобы продолжить, пожалуйста, подождите 4096 секунд. 

В ту ночь я почти не спал. Отрывки сна были заполнены кошмарами с участием цифр 1,4 и 5. Меня беспокоила не так потеря $8000, как стыд – я был настолько глуп, чтобы потерять бумажку и забыть код. Идея того, что биткоины еще вырастут в цене, а доступа к ним у меня не будет, сводила меня с ума. Если я не вспомню PIN, этот кошелек будет преследовать меня до конца жизни. 

Поиск: 5 апреля 2017 года: 7,4 BTC = $8325

Утром, с опухшими глазами я начал искать пути, как вернуть свои биткоины без помощи кода или списка слов. Я зашел на тред /r/TREZOR/ на Reddit и написал: 

Можете насмехаться надо мной – я это заслужил. Я записал свой PIN и список слов на одной и той же бумажке. Я собирался выгравировать их на металлической пластинке и спрятать, но перед этим бумажку выкинула уборщица. Я не помню пароля, я пытался ввести его 13 раз. Теперь придется ждать около часа перед следующей попыткой, а совсем скоро часы превратятся в годы. Я могу что-то сделать или лучше распрощаться со своими 7 биткоинами? 

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

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

Другие пользователи предполагали, что zero404cool – мошенник либо же некто, прицельно занимающийся антипиаром Trezor. Я склонялся к тому, чтобы согласиться с ними, ведь я много прочел о том, что Trezor предпринимает ради безопасности своих устройств. Самый очевидный способ взлома кошелька – установка неофициального софта, который взламывает PIN и ключевые слова – привел бы только к стиранию данных с диска. 

Я связался с поддержкой Trezor и объяснил свою проблему. Поддержка ответила ссылкой на “Справочник по внештатным ситуациям”, который никак не описывал мою проблему. Во всех случаях нужен был либо PIN, либо список слов. 

Ситуация начинала казаться безнадежной. В это же время, со мной связался zero404cool и предложил извлечь информацию из кошелька “за 10 секунд”. Но предупредил меня, что поскольку он меня не знает, то не может мне полностью доверять: вдруг я использую эту информацию, чтобы взломать чужой кошелек.  

Я ответил zero404cool в том духе, что он может погуглить меня и решить, может ли мне доверять. Он бы увидел, что я был среди первых редакторов Wired, еще в 1993 году. Спустя какое-то время zero404cool написал, что сейчас занят и не сможет сам заняться моей проблемой, после чего исчез. 

Гипнотизер: 25 мая 2017 года: 7,4 BTC = $12 861

“Гипноз позволяет нам раскрыть все каналы, всю информацию”, – говорила гипнопсихолог Мишель Гузей. Я лежал в наклоненном кресле в ее офисе, укрытый одеялом, концентрируясь на успокаивающей речи. Моя жена, журналист и редактор, пару лет тому проводила интервью с Мишель о гипнозе, а я был в таком отчаяньи по поводу PIN, что записался к ней на прием. 

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

Эти опыты ни к чему не привели, но Мишель заметила, что мы всего лишь готовим мое подсознание к сеансу гипноза. Она приглушила свет и начала говорить приятным шепчущим певучим голосом. Попросила меня представить себя на длинном эскалаторе, говоря, что я буду впадать в транс. Все это продолжалось 15 минут, я расслабился, но не загипнотизировался. После 4 часов в ее офисе я решил, что код – 5514455.

Четыре дня я копил решимость испробовать его. Каждый раз, когда я думал о Trezor, мне в голову приливала кровь, меня бросало в пот. Когда я попробовал код, кошелек сообщил мне, что я неправ. Мне нужно подождать 16 384 секунд (4,5 часа), чтобы повторить попытку. 

Финальное предположение: 12 августа 2017 года: 7,4 BTC = $28 749

Я пробовал прекратить думать о биткоинах, но ничего не мог с собой поделать. Ухудшало ситуацию еще и то, что летом цена на них постоянно росла. Я не мог выбросить из головы, что единственная преграда на пути к небольшому состоянию – простая комбинация цифр. Последовательность, которую я без труда вспоминал, хранилась, упрятанная в мозгу, устойчивая к гипнозу, медитации и ругани. Дочки пытались подкрасться ко мне и выкрикнуть: “Быстро, какой пароль на биткоины?”. И это не работало. Иногда перед сном я умолял мозг поискать пароль. И просыпался ни с чем. Любой вообразимый PIN казался ничуть не лучше других комбинаций. Биткоин рос в цене, и я представлял себе, как сундук с сокровищами отплывает от меня все дальше в туманный горизонт. 

Мы с женой складывали белье, когда к нам вошла Сарина и сказала, что знает пароль – 55445. Она объяснила, что я часто использую как пароль 5054, но поскольку на Trezor нет нулей, я скорее всего просто пропустил его. Поэтому я бы просто добавил 45 или 455 к 554 (иногда я использую 45 в паролях, поскольку это – значимое число для меня). 

Жена заметила, как у меня загорелись глаза. 

Утром я решился. Мне казалось, что эти цифры – как раз то, что нужно. Я включил кошелек. Пришлось подождать 16 384 секунду (или 4,5 часа). Я опросил жену и дочерей подойти, мне очень нужна была моральная поддержка. Сердце выскакивало из груди, пульс отдавался молотком в голове. Я попробовал дышать спокойнее. Медленно ввел PIN. Каждый раз, когда я вводил цифру, один из членов моей семьи подтверждал, что я ввел ее правильно. После набора 55445 я навел курсор на кнопку “Ввод” на сайте Trezor. Готовы? Все подтвердили. И я нажал “Ввод”.

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

“Ох, дерьмо”, – сказал я. Еще оставался вариант 554455. Нужно было подождать 9 часов. 

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

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

Письмо: 16 августа 2017 года: 7,4 BTC = $32 390

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

Письмо извещало об обновлении безопасности Firmware Security Update 1.5.2, которое фиксило уязвимость, имеющуюся в устройстве. Чтобы воспользоваться уязвимостью, хакеру бы пришлось взломать корпус кошелька и использовать специальный софт. 

Я задумался, возможно, в Trezor все же есть уязвимость, которую я смогу использовать. Я пошел на r/TREZOR, чтобы почитать обсуждения. Первым делом я нашел линк на статью на Medium, где кто-то писал, что знает, как взломать кошелек с использованием эксплойта, упомянутого в письме. Автор выложил фото разобранного кошелька, а также дампы файлов, содержащие 24 ключевых слова и код. Он также выложил линки на софт, но без инструкций к использованию. Я перечел статью пару раз, прежде чем глянул на имя автора – Doshay Zero404Cool. Это был тот же пользователь, с которым я списывался пять месяцев тому!

Я зашел в переписку и обнаружил, что он снова писал мне, предлагая взломать кошелек за награду в 50%. 

Сначала я решил проконсультироваться с экспертом по биткоинам Андреасом Антонопулусом, автором The Internet of Money. Я написал ему 20 августа и рассказал, что не могу получить доступ к $30 000 в биткоинах, застрявших на Trezor. Я спросил, могу ли использовать для этого упомянутую уязвимость.

Эксперт подтвердил, что уязвимость реальна и что ее можно использовать для доступа, если я еще не обновил софт. Андреас также рассказал, что среди его знакомых есть подросток-гений, который отлично разбирается в софте для Trezor. Оказалось, что ему 15 лет, он живет в Британии и его зовут Салем Рашид. Производитель Trezor также знал о Салеме и даже предоставлял ему образцы для экспериментов. Андреас предложил мне связаться с Салемом в Telegram и представил меня ему, как “владельца Trezor, который надеется на чудо”. 

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

 Хакеру я предложил 0,2 BTC ($800), из них – 0,05 BTC ($200) авансом за детальную видеоинструкцию взлома. Я заказал второй Trezor на Amazon и установил на свой MacBook Air Ubuntu Linux (по рекомендации Салема). 

Плата: 24 августа 2017 года: BTC = $32387

Мне написал Салем, извещая о том, что видео готово, но придется повысить цену, поскольку его съемка оказалась трудной, плюс он включил в оплату стоимость кода для эксплойта. С этим я согласился. Затем Салем попросил поднять оплату до 0,85 BTC ($3700) – это примерно вчетверо превышало оговоренную вначале сумму. Но мне показалось, оно того стоит (и уж явно лучше, чем условия, предложенные мне zero404cool). На тот момент получение доступа к злополучному PIN казалось почти что чудом – как можно оценить чудо в деньгах? И я согласился. 

Салем дал свой биткоин-адрес, я переслал ему часть оплаты со старого онлайн-кошелька. Спустя минуту он загрузил два файла – exploit.bin и 10-минутное видео – съемку экрана его компьютера с Linux-командами в консоли, без звука. 

Я очень мало знал о командах в Linux, так что смотря видео, я почти ничего не понимал. Первая часть видео касалась запуска тестового кошелька, вторая – взлома целевого кошелька. 

Софт для взлома должен был работать так: когда Trezor запускается, его софт копирует PIN и список слов в SRAM (статическая RAM, которую кошелек использует для хранения информации) в незашифрованной форме. Если в это же время выполнить софт-ресет (с помощью пинцета и печатной платы самого устройства), можно установить софт для эксплойта, не стирая SRAM. Это и позволит добраться до кода. 

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

Эксплойт:  26 августа 2017 года: 7,4 BTC = $32 208

В ночь на пятницу я спал на удивление хорошо. Утром я установил Linux на MacBook Air и подключил к нему тестовый кошелек. Еще раз пересмотрел видеоинструкцию, переписывая команды в текстовый файл, чтобы затем копировать их в консоль.

В какой-то момент на видео Салем закоротил два контакта на плате с помощью пинцета, одновременно нажимая две кнопки кошелька. Контакты казались крошечными и я понимал, что с моими трясущимися руками ничего не выйдет. Все же, в конце-концов, я смог установить эксплойт на тестовый кошелек, ввел дюжину команд, перезапустил его и все сработало! Тестовый Trezor был успешно взломан! А кодовые слова и PIN были выведены на дисплей “мака”. Я отработал весь процесс еще шесть раз – это заняло целое утро и большую часть дня. Я пропустил обед и свое традиционное послеполуденное эспрессо.

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

Я подключил кошелек и ввел команду: sudo trezorctl get_features. Оказалось, что кодовую фразу я не задавал: passphrase_protection: false. Теперь меня почти ничто не могло остановить. 

Когда настало время перезагружать кошелек, у меня так тряслись руки, что пришлось посидеть минуту и успокоиться. Только на третью попытку у меня получилось удачно нажать все кнопки. Я установил exploit.bin, ввел команду sudo trezorctl firmware_update -f exploit.bin. Она стерла оригинальную прошивку и установила версию Салема. После мягкой перезагрузки на экране появилось сообщение-предупреждение об установке неофициального ПО. Я подтвердил, что хочу продолжать установку и с этого момента пути назад уже не было: или сработает, или нет, и все мои биткоины будут потеряны. Оставалось ввести еще несколько команд, чтобы прочесть содержимое SRAM. 

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

По инструкциям Салема, я ввел еще одну команду. И на экране возник код 45455544. 

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