Являются ли эти строки правильным выводом для проверки ключей контрольной суммы файла?

По их предложению я пытаюсь проверить целостность файлов перед установкой загруженной копии Netbeans с сайта Apache.org. Мне не удалось проверить, правильно ли я использую инструменты и/или правильно ли считываю результаты.

Я использовал один инструмент под названием File Checksum Utility от blqsoftware, который я скачал с сайта SourceForge.net. На мой взгляд инструкции действительно не хватает. Я не уверен в результатах, но они выглядели не очень хорошо, поэтому я использовал второй инструмент в Windows 10 — certUtil —hashfile в командной строке. Каждый раз он заявлял об успешном завершении команды, указывая хеш SHA1 файла.

Это пример того, как я использовал команду certUtil и результат:

C:\WINDOWS\system32>certutil -hashfile C:\Users\admin\Downloads\netBeans\apache-netbeans-12.0-bin-windows-x64.exe Хэш SHA1 C:\Users\admin\Downloads\netBeans\apache-netbeans-12.0-bin-windows-x64.exe:b9b94a787f6da1498d542f9da2595fdd0914ecc0CertUtil: команда -hashfile успешно завершена.

Это результаты из загруженного исполняемого файла netbeans, а также файлов .txt, в которые я скопировал содержимое PGP ASC/подпись и SHA-512:

b9b94a787f6da1498d542f9da2595fdd0914ecc0

099223c7e088271f1e9753665b891eed67a89e59

f29257fa61656c3bd9a00194299cde6f554cf18b

63ab3ef3d58a8dcc310a1a4b11492885314cf17e

baa1a27b53862cbb95ae79e3c6cc5049ce251aab

Первый — из исполняемого файла netbeans, а остальные — это результаты, сгенерированные на основе ключей, которые я скопировал из ссылок Apache.

Если это законные результаты, то что теперь? Попробуйте еще раз загрузить netbeans?

2 ответа

Каждый раз он заявлял об успешном завершении команды, указывая хеш SHA1 файла.

Вам необходимо включить опцию «SHA512» в конце команды certUtil, чтобы она давала хеш SHA512 вместо SHA1 по умолчанию:

      certutil -hashfile C:\Users\admin\Downloads\netBeans\apache-netbeans-12.0-bin-windows-x64.exe SHA512

Это создаст хэш SHA512 файла, который вы сравните со значением хэша SHA512, показанным на сайте Apache :

525d61838c0cb82a6234bff1984b9886324eccdb0320875c639889e64299b1b621d01ca524ff0a770ac65ef05aad367722977066cf017369932c10f55992e90f ./Apache-NetBeans-12.0-bin-windows-x64.exe

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

Я использовал второй инструмент в Windows 10 — certUtil-hashfile в командной строке. Каждый раз он заявлял об успешном завершении команды, указывая хэш SHA1 файла.

Инструменты хеширования не могут ничего проверить сами по себе. При таком использовании они всегда будут указывать на успех, поскольку единственное, что они делают, — это алгоритмически генерируют хэш для данного ввода (который не может дать сбой), но им не с чем его сравнивать — нет способа узнать, соответствует ли этот хэш тому, что вы ожидать.

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

Некоторые инструменты могут сравнивать хэши автоматически, но только при наличии двух файлов (оригинала и списка хэшей — например,файл общий). Certutil Windows не может этого сделать.


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

(Вероятно, он даже ничего не скажет вам о самом файле .asc, если вы скопировали его вручную. Имейте в виду, что инструменты хеширования считают каждый байт — дополнительное пространство здесь или новая строка там приведут к другому хешу.)

Для работы с подписями вам необходимо использовать программу, которая понимает этот конкретный формат подписи — для подписей PGP .asc и файлов ключей вам необходимо PGP-совместимое программное обеспечение, например GnuPG (Gpg4win). Фактически он интерпретирует файл .asc или .sig, выполняет собственное хеширование и проверяет связь цифровой подписи между .exe и ключом PGP, которым он был подписан.

      gpg --verify netbeans.asc netbeans.exe

(Однако эти инструменты только сообщают вам, что ключ X действительно подписал файл Y, но они все еще не знают, является ли этот ключ X тем, которым должен был подписываться этот файл. Это все еще ваша работа - как-то проверить. Опять же, веб-сайт обычно публикует официальные ключи PGP где-то рядом со ссылками для скачивания.)

Другие вопросы по тегам