Безопасность

Как проверить цифровую подпись дистрибутива криптокошелька перед установкой

Пошагово проверяем GPG-подпись файла кошелька: официальный источник, публичный ключ, независимая сверка отпечатка и правильная реакция на ошибку.

Как проверить цифровую подпись дистрибутива криптокошелька перед установкой

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

Что именно подтверждает подпись

Разработчик подписывает релиз закрытым криптографическим ключом, а пользователь проверяет подпись соответствующим публичным ключом. Если файл изменился после создания подписи, проверка обычно завершится ошибкой. Это помогает обнаружить подмену дистрибутива на этапе загрузки или распространения. Для некоторых проектов опубликованы подписи GPG, для других – другие механизмы: следуйте документации выбранного кошелька, не переносите команды одного проекта на другой.

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

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

Проверка на примере Electrum

Electrum публикует дистрибутивы и инструкции проверки GPG-подписей на официальном сайте. Это пример конкретного процесса, а не универсальный рецепт для всех кошельков. Сначала вручную откройте официальный домен проекта и выберите версию и файл для своей системы. Не скачивайте установщик из результатов поиска, зеркала или письма, если проект прямо не указывает их как официальный канал.

Скачайте файл подписи, соответствующий выбранному дистрибутиву, и публичный ключ подписанта по инструкции проекта. Имя файла в команде проверки должно точно соответствовать загруженному файлу. Если используется GPG, общая форма команды выглядит как gpg --verify имя-файла.asc имя-файла, но точные имена и способ проверки ключа сверяйте с текущей страницей проекта. Не запускайте установщик до завершения проверки.

Если GPG сообщает о корректной подписи, проверьте, что она сделана ожидаемым ключом, и сверьте полный отпечаток. Сообщение «Good signature» без доверенного подтверждения личности ключа означает только, что подпись согласуется с импортированным ключом. Оно не отвечает на вопрос, кто контролирует этот ключ. Официальные инструкции могут перечислять несколько подписантов или менять ключи, поэтому ориентируйтесь на текущую версию документации.

Практический порядок действий

  1. Перейдите на официальный сайт проекта вручную и выберите релиз для своей ОС и архитектуры.
  2. Скачайте дистрибутив и файл подписи через указанный проектом источник.
  3. Получите публичный ключ из официальной инструкции; не импортируйте ключ из незнакомого сообщения.
  4. Сверьте полный отпечаток ключа по независимому официальному каналу.
  5. Запустите команду проверки из документации, точно указав имя файла и подписи.
  6. Убедитесь, что GPG сообщает о корректной подписи и ожидаемом подписанте.
  7. При любом несовпадении удалите файл и уточните детали у поддержки проекта до установки.

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

Частые ошибки и ограничения

Одна частая ошибка – сверить только короткий идентификатор ключа. Используйте полный отпечаток, поскольку короткие значения могут совпадать. Другая – скачать ключ и файл с одного подозрительного адреса и посчитать это независимой проверкой. Третья – спутать проверку подписи с антивирусным сканированием. Это разные проверки: одна подтверждает криптографическую связь, другая ищет признаки вредоносного поведения.

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

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

На Windows пользователь может установить Gpg4win, на macOS и Linux обычно доступны сборки GnuPG, но скачивать и настраивать их нужно из официальных каналов этих проектов. Команда проверки отличается для архивов, установщиков и подписанных манифестов. Не копируйте пример команды, если имя файла или расширение подписи другое. Если терминал сообщает, что нет публичного ключа, это означает, что ключ нужно получить и проверить, а не что файл автоматически безопасен. Если сообщение говорит о неверной подписи, файл нельзя запускать; скачайте заново только после проверки официального канала и разъяснений разработчика.