Почему это важно
Бинари кошельков распространяются статически (GitHub releases, сайт проекта, зеркала). Каждая точка распространения — мишень. Компрометация CDN, hijack DNS и (в отдельных юрисдикциях) принудительная подпись наблюдались на практике. Защита — проверка бинаря против отдельно вам известной подписи, обычно GPG-ключа мейнтейнера.
Минимальная проверка (для любого кошелька)
- Скачайте бинарь вместе с публикуемым рядом файлом
SHA256SUMSилиhashes.txt. - Локально посчитайте хеш:
sha256sum monero-wallet-cli(Linux/macOS) илиGet-FileHash(PowerShell). - Сравните локальный хеш со строкой в опубликованном файле. Совпадение = файл бит-в-бит идентичен опубликованному проектом.
Это ловит подмену через CDN и порчу в транзите. Не ловит скомпрометированный ключ проекта — для этого шаг 2.
Проверка GPG-подписи (реальная защита)
- Импортируйте GPG-ключ мейнтейнера из источника, отличного от загрузки — keyserver, личный сайт мейнтейнера или fingerprint, опубликованный в коммите многолетней давности. Не импортируйте с того же домена, что отдавал бинарь.
- Проверьте подпись SHA256SUMS:
gpg --verify SHA256SUMS.sig SHA256SUMS. Должно быть «Good signature from <maintainer>» с ожидаемым fingerprint. - Проверьте цепочку доверия: убедитесь, что тот же fingerprint использовался в прошлых релизах. Подписи web-of-trust от знакомых лично людей усиливают это.
- Теперь делайте сверку хеша из шага 1.
Воспроизводимая сборка — золотой стандарт
Некоторые проекты экосистемы Monero (сам Monero CLI, Feather Wallet) публикуют инструкции по воспроизводимой сборке. Вы собираете из исходников у себя — итоговый бинарь бит-в-бит совпадает с опубликованным. Если не совпадает, либо ваш build-окружение не то, либо релиз проекта подменён. Самая строгая защита — см. reproducible-builds.org.
Режимы отказа по типу кошелька
- Мобильные кошельки: app-store подписи заменяют GPG-верификацию. Вы доверяете Apple/Google + аккаунту разработчика. Менее строгая, но всё же значимая защита. Сверьте имя аккаунта-публикатора с тем, что документирует проект.
- Web-кошельки: проверить нельзя — код доставляется заново при каждой загрузке страницы. Не держите там сумм, потерю которых заметите.
- "Портативные" загрузки через Telegram / Discord: никогда. Бинари — только с канонического домена проекта, не из чат-ссылок.
- Пре-компилированные в "удобном" репо: если владелец репо сам не публикует подписи — считайте, что не верифицировано, и качайте с канонического источника.
Статус кошельков, которые мы рекомендуем
- Monero GUI / CLI: SHA256SUMS + GPG-подпись от binaryFate (давний fingerprint). Воспроизводимая сборка документирована.
- Feather Wallet: SHA256SUMS + GPG-подпись от tobtoht. Воспроизводимая сборка документирована.
- Cake Wallet: мобайл, полагается на подпись app-store. Десктоп-билды несут checksums.
- Monerujo: Android, F-Droid + Play Store, оба подписаны. SHA256 APK опубликован.