Вики ZooBC
Интеграции

Проверка загруженного файла

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

Отпечатки в цепочке

Отпечаток — это хеш SHA-256 файла. Измените в файле хотя бы один байт, и хеш изменится полностью, поэтому совпадающий хеш означает тот же самый файл.

Цепочка хранит хеши в двух местах:

  • Реестр релизов. Орган выпуска релизов — аккаунт, указанный в генезисе цепочки, — регистрирует каждый релиз со строкой версии и 32-байтовым хешем манифеста и может позже его отозвать. Отдельные файлы тоже внесены в список: у кошелька, обозревателя и файлов адресов свои хеши, а запись набора файлов — это хеш SHA-256 его файла SHA256SUMS. Две трети зарегистрированных мест также могут наложить вето на релиз, а после недели голосования — заменить орган выпуска (релизы и обновления).
  • Сообщения транзакций. Любая транзакция может нести хеш в своём сообщении, и этот хеш можно найти поиском.

Поскольку эти записи — часть цепочки, каждый узел даёт о них один и тот же ответ.

Страница /verify

Каждый шлюз отдаёт страницу по адресу /verify. Перетащите на неё файл, и страница:

  1. вычислит хеш SHA-256 внутри вашего браузера; файл никуда не загружается;
  2. найдёт хеш в списке релизов (/api/v1/release/list) и в сообщениях транзакций (/api/v1/search/transactions?q=, за которым следует хеш);
  3. сообщит один из трёх статусов: в цепочке, когда хеш зарегистрирован в цепочке; закрепление ожидается, когда у файла должно быть подтверждение в цепочке, но его хеш не зарегистрирован, так что за файл ручается только шлюз; отозван, когда орган выпуска релизов его отозвал.

При загрузке страница также читает текущий орган выпуска релизов (/api/v1/release/authority) и предупреждает, если ожидается его смена. Отозванный файл — это файл, который был отозван; удалите его.

Файл хешируется SHA-256 внутри браузера, никуда не загружаясь, и хеш ищется в реестре релизов или в транзакции, которая его несёт; либо проверьте его сами с помощью sha256sum и списка релизов
Файл хешируется SHA-256 внутри браузера, никуда не загружаясь, и хеш ищется в реестре релизов или в транзакции, которая его несёт; либо проверьте его сами с помощью sha256sum и списка релизов

Без сайта

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

sha256sum wallet.html
GET /api/v1/release/list

Если вычисленный вами хеш указан для релиза, который не отозван, у вас в руках выпущенный файл. Для набора файлов сверьте со списком хеш его файла SHA256SUMS, а затем выполните sha256sum -c SHA256SUMS рядом с файлами набора. Каждый узел отвечает по одной и той же цепочке, поэтому ни одному отдельному сайту доверять не нужно.

Что публикует шлюз

Каждый шлюз публикует манифест проверки с хешем файла кошелька и хешем его zip-архива. Zip собирается воспроизводимо: одни и те же файлы всегда дают один и тот же архив, а значит, и один и тот же хеш, что позволяет любому собрать его заново и сравнить.

Что ничего не доказывает

  • Замок (HTTPS) доказывает только то, на какой сайт вы попали, но не то, что делает файл.
  • Размер файла легко подделать.
  • Правильный на вид баланс ничего не говорит о том, куда дальше отправится ваша фраза восстановления.

Только хеш, сверенный с цепочкой, говорит вам, что файл — тот самый, который был выпущен.

См. также