Короткий ответ: есть стандартный метод, который называется подписью приложения. Более длинный ответ немного сложнее.
Что касается вашей идеи хеширования MD5, то существует по крайней мере один экспериментальный плагин Firefox, который вычисляет хэши загружаемых файлов. Затем вы можете вручную сравнить их. Кроме того, многие сайты предлагают загрузки текстовых файлов с предварительно вычисленными хэшами для их программного обеспечения. Затем вы можете принудительно выполнить проверку, используя md5sum -c < hash filename >
. Проблема всех этих методов заключается в том, что если злоумышленник сможет заменить загруженный вами файл, он, вероятно, сможет изменить хэши, перечисленные на веб-сайте.
Подписание заявки является официальным решением этой проблемы. Он использует криптографию с открытым ключом и центры сертификации таким же образом, как это используется в стандарте безопасности SSL для веб-сайтов. Это работает, получая цифровой сертификат от центра сертификации. Этот сертификат может быть проверен кем угодно, и убедиться, что его владельцем является тот, кем они себя называют. Он также может быть использован для «подписи» упаковки, которая гарантирует, что упаковка была произведена держателем и не была изменена кем-либо, кроме держателя.
Итак, почему мы не видим лучшего принятия этих методов? Ну, они уже довольно хорошо приняты, и в основном невидимы, когда они работают. Основные операционные системы и браузеры используют подписи, если они доступны по умолчанию. Кроме того, основные дистрибутивы Linux подписывают пакеты программного обеспечения и обновления, которые они предоставляют, используя эти методы. Тем не менее, когда дело доходит до мелких игроков, мы вряд ли увидим широкое принятие.
Проблема здесь - смесь хакерской бедности и хакерской гордости. Чтобы получить один из этих сертификатов, вам необходимо заплатить большую сумму денег одному из центров сертификации. Если они этого не делают, программист все еще может подписывать свои собственные пакеты без какого-либо благословения CA. Делая это, пользователь, который загружает файл, может быть уверен, что только владелец сертификата коснулся определенного пакета, который отвечает требованию целостности вашего вопроса.
К сожалению, использование подобного самоподписанного сертификата снижает доверие общественности к вашему программному обеспечению, а не повышает его. Если вы подписываетесь самостоятельно, ОС / браузер громко жалуется при попытке открыть пакет; даже громче, чем для абсолютно неподписанного файла. Поскольку браузер или операционная система не доверяют создателю программного обеспечения, они думают, что вам также не следует им доверять.
Отсюда хакерская жалоба: почему кто-то должен доверять какому-то безликому многонациональному центру сертификации больше, чем кому-то другому? Что они когда-либо делали, чтобы доказать, что они заслуживают большего доверия, чем все остальные?
Для многих людей выдача сертификатов сводится к вымогательству: «Заплатите нам $$$, чтобы удостоверить вас, или ваши загрузки будут гражданами второго сорта». Именно поэтому подписание заявки не было принято никем, кроме крупнейших игроков.