Trezor — как его готовить

Итак, вы получили Трезор с Биткойн-пати. Что дальше?

Маленькое пояснение. Трезор хранит внутри себя один длинный 256-битный секретный ключ (Seed), на основе которого расчитываются все ваши секретные ключи для каждого адреса приёма денег (это называется детерминистическим кошельком). Этот секретный ключ никогда не покидает ваш девайс. Чтобы обеспечивать надёжную работу с Биткойном, Трезор работает как миникомпьютер для подписи всех транзакций на трату денег. Вообще, по большому счёту, Трезор нужен только для траты денег с адресов, которые закреплены за ним и на которых есть биткойны. Чтобы получить биткойны на адреса Трезора, сам девайс по большому счёту не нужен, поскольку он работает по стандарту BIP32 (BIP44 расширяет стандарт BIP32), который позволяет расчитывать адреса приёма денег на Трезор сторонними программами, опираясь на публичный ключ аккаунта. Про аккаунты я уже писал чуть ранее.

На данный момент пока существует одна компьютерная программа, которая работает с этим девайсом — Electrum, при том, пока только новая бета версии 2.X. В будущем, другие программы-клиенты добавят работу с ним. А пока, временно, разработчики сделали компромисный вариант — работу через сайт MyTrezor.com. Но при этом всё равно это не снижает существенно вашей безопасности. Единственная уязвимость, которая могла бы быть сейчас — подмена вирусами/трояными адресов приёма денег, которые выдаёт вам сайт MyTrezor.com для вашего девайса. Но от этого легко защититься, установив на Андроид телефон BIP32 совместимое приложение BTCReceive, добавив туда публичный ключ одного из аккаунтов Трезора. В таком случае, достаточно проверять, что адрес приёма денег как на компьютере, так и на телефоне совпадает. Разработчики знают о проблеме и готовят патч, чтобы адреса приёма денег также отображался на экране Трезора.

Работа с Трезором начинается с сетапа. Для начала на компьютер необходимо поставить плагин, который обеспечит работу броузера с вашим девайсом. Делается просто — при первом посещении сайт MyTrezor.com сам обнаруживает, что у вас нет плагина и предлагает его для вашей ОС. После этого, сайт поможет вам установить ПИН код для девайса (чтобы в случае утери девайса никто не смог им воспользоваться), а также Трезор сгенерирует серкретный Seed ключ и оцифрует его в английские слова (каждое слово — комбинация 2^11 бит). Эти 24 слова вам надо записать на карту и карту хранить в надёжном месте. Можно карту разрезать на две половинки и половинки хранить на разных квартирах и т.п.. Это необходимо, чтобы в случае поломки/кражи Трезора можно было восстановить доступ ко всем биткойнам. Зная эти слова, можно даже восстановить доступ к деньгам с помощью любой BIP44 совместимой программы, например Wallet32 для Android. То есть, если вы потеряли Trezor, вы всегда можете взять карту, вбить слова в Wallet32 программу, она сгенерирует снова Seed и вы сможете отправить все ваши Биткойны на какой либо надёжный кошелёк (чтобы быть уверенным, что утечка Seed не скомпрометирует ваш кошелёк). Вообще, всегда можно сделать, чтобы Трезор заново сгененировал новый Seed. Это самый универсальный способ в Биткойне спасти свои деньги в случае предполагаемой утечки секретного ключа — просто отправлять все деньги на новый сгенерированный адрес с новым секретным ключом и забыть про старый (в Биткойне нельзя для адреса изменить секретный ключ). Новым адресом может быть даже просто распечатанный на принтере в оффлайне бумажный кошелёк.

Итак, вы установили 24 слова. После, MyTrezor.com может показывать вам адреса приёма денег (даже когда Трезор не подключён к компьютеру), вы можете посылать Биткойны, подключив Трезор и подписав им транзакцию на отправку денег. Сайт MyTrezor берёт на себя все основные функции, которые обычно реализуются в программах — генерация адресов приёма денег и слежение за балансами на них. Трезор понятия не имеет, сколько денег у вас и на каких адресах. Он просто подписывает транзакции, которые по USB для него сформировал сайт. Главная ваша задача — ввести ПИН девайса, проверить сумму и адрес, куда посылаются деньги и согласится, или отказаться от транзакции.

Ввод ПИНа происходит интересным способом. Чтобы защититься от потенциальных программ шпионов, разработчики сделали следующий способ ввода ПИН кода. Компьютер понятия не имеет, какой пин вы вводите — он лишь показывает матрицу 3×3, а от вас просит кликнуть по позициям. В то же время Трезор показывает вам также матрицу 3×3, но в ней, случайным образом, раскиданы цифры. Вы смотрите на экран Трезора и кликаете на компьютере те позиции, где цифры вашего ПИН кода. Компьютер отсылает в Трезор только позиции матрицы, Трезор соотносит их с цифрами и проверяет ПИН код. Если всё окей — Трезор разблокируется для работы.

Итог. Итак, все ваши адреса приёма группируются по аккаунтам, внутри аккаунтов есть адреса для приёма денег, есть адреса для сдачи, на которые идёт остаток от исходящих платежей. Адреса сдачи вам не показываются, чтобы не запутывать и сделать работу проще. Но сумма всех адресов приёма денег и сдачи суммируются внутри аккаунта и показываются вам как баланс аккаунта. Аккаунты — просто логическая группа адресов (бесконечного количества). Например, можно адреса из одного аккаунта использовать для приёма денег от одной партнёрской программы. Последующие аккаунты можно создавать когда были какие либо транзакции на предыдущем аккаунте. Это сделано для того, чтобы упорядочить процесс восстановления из резервной копии — поскольку количество аккаунтов и адресов не ограничено, чтобы при восстановлении не сканировать бесконечное количество потенциально не нулевых адресов, решили. что алгоритмы не будут позволять создавать много «дырок» неиспользованных адресов между использованными адресами. Поэтому, если вы хотите создать аккаунты для каждой партнёрской программы, но там не было активности, можете отправить на первый адрес аккаунта сколько то денег, оставить их там или отправить потом обратно. Хоть 5 центов. Это позволит вам создать следующий новый аккаунт. Это неудобство, скорее всего самой программы (а данном случае MyTrezor.com), нежели ограничение алгоритма. Есть программы, которые этого не требуют.

В завершение. Когда вы подключите девайс, поставите плагин — вы увидите на сайте MyTrezor.com раздел вашего кошелька (Имя), а там — «Advanced details». Там есть xpub* ключи — публичные ключи для ваших аккаунтов. Их можно импортировать в любую BIP32 программу, например в BTCReceive на Android, и получить Watch-only доступ к своим адресам аккаунта — можно следить за балансом, получать новые адреса для приёма денег, отслеживать приход денег. При этом, пуличный ключ аккаунта позволяет вычислять только адреса приёма денег и сдачи, но не тратить средства (то есть по нему нельзя вычислить секретный ключ каждого из адресов — это можно сделать, только зная Seed, который хранится только в Trezor-е и на вашей бумажной карте)