Как проверить скачанный кошелёк: контрольные суммы, подписи и воспроизводимые сборки

·4 мин. чтения·Автор: SSP Editorial Team
Обложка SSP Academy: как проверить скачанный кошелёк

Как проверить скачанный кошелёк: контрольные суммы, подписи и воспроизводимые сборки

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

Вот что доказывает каждый из них и как использовать их с SSP Wallet.

Контрольные суммы: это тот же файл?

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

В macOS или Linux её можно вычислить в терминале:

shasum -a 256 ssp-wallet-chrome-v2.1.3.zip

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

Подписи: это опубликовали разработчики?

Подпись доказывает, кто опубликовал контрольные суммы. Разработчики подписывают файл с контрольными суммами закрытым ключом, и любой, у кого есть соответствующий открытый ключ, может проверить эту подпись. Злоумышленник, изменивший файл или контрольные суммы, не сможет создать действительную подпись без этого закрытого ключа.

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

Воспроизводимые сборки: действительно ли этот файл собран из опубликованного кода?

Подписи доказывают, кто выпустил файл, но не что в нём. Сборочная машина разработчика может быть скомпрометирована и добросовестно подписать вредоносный результат.

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

Проверка SSP Wallet

Релизы SSP Wallet на GitHub (RunOnFlux/ssp-wallet) собираются детерминированно для Chrome и Firefox и содержат два дополнительных файла: SHA256SUMS со списком контрольных сумм каждого пакета и SHA256SUMS.asc — подпись GPG для этого списка.

1. Скачайте файлы релиза. Со страницы релиза скачайте в одну папку пакет для вашего браузера — с именем вида ssp-wallet-chrome-v2.1.3.zip или ssp-wallet-firefox-v2.1.3.zip — вместе с SHA256SUMS и SHA256SUMS.asc.

2. Проверьте подпись. Импортировав в GPG открытый ключ SSP для подписи релизов, выполните:

gpg --verify SHA256SUMS.asc SHA256SUMS

GPG должен сообщить о действительной подписи от ожидаемого ключа. Если он сообщает о недействительной подписи или неизвестном ключе, остановитесь.

3. Сверьте файлы со списком.

sha256sum -c SHA256SUMS

В macOS то же самое делает shasum -a 256 -c SHA256SUMS. Для каждого скачанного файла должно выводиться OK. Список охватывает и пакет для Chrome, и пакет для Firefox; если вы скачали только один, добавьте --ignore-missing, чтобы второй не отмечался как отсутствующий.

4. При желании соберите его сами. Клонируйте репозиторий на теге релиза и запустите детерминированную сборку:

git clone https://github.com/RunOnFlux/ssp-wallet.git
cd ssp-wallet
git checkout <release-tag>
yarn build:deterministic

Сборка выполняется в зафиксированном окружении Docker и записывает собственный SHA256SUMS. Если ваши контрольные суммы совпадают с опубликованными, вы независимо подтвердили, что релиз собран именно из этого исходного кода.

А как же магазины браузеров?

Большинство людей устанавливают SSP Wallet из Chrome Web Store или Firefox Add-ons, и это разумный выбор: установленные из магазина расширения обновляются автоматически, а у магазинов есть собственные процессы проверки. Описанные выше контрольные суммы относятся к пакетам релизов на GitHub. Если вы устанавливаете из магазина, самые важные проверки проще: что вы перешли на страницу расширения с официального сайта и что издатель совпадает. В статье Как распознать поддельные приложения-кошельки описаны эти шаги, а гигиена браузерных расширений рассказывает, как затем поддерживать безопасность браузера.

Честный итог

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

Большинство людей установят кошелёк из официального магазина, и это нормально. Если вы хотите проверить всё сами, релизы SSP Wallet дают вам все три инструмента: подписанный список контрольных сумм, проверку одной командой и сборку, которую можно воспроизвести байт в байт.

Поделиться статьёй

Похожие статьи