Итак, вы написали что-то гениальное, «Следующее большое дело». Вы придерживаетесь современного подхода. Вы читали или смотрели нашу серию статей о Fluent UI и, возможно, даже применили несколько визуальных вещей, таких как неоскевоморфизм, о которых мы узнали на конференции Desktop First . Возможно, вы применили некоторые темы VCL к своему приложению и интегрировали возможность обнаружения темного / светлого режима Windows 10 в свое приложение Delphi? Все идет хорошо … пока пользователи не попытаются использовать ваши приложения.
Вы начинаете получать жалобы от пользователей, что они не могут загрузить ваше приложение. Или, когда им, наконец, удается бороться с паранойей современного веб-браузера, ваше приложение блокируется Windows 10 или, что более загадочно, просто исчезает в синем облаке дыма джинна корпоративной групповой политики.
Вы не сделали последнего шага: подписали свой код, чтобы доказать, что ваше прекрасно созданное приложение принадлежит вам и только вам, и не было заражено компьютерным вирусом или трояном-криптолокером.
В недавнем TCoffeeAndCode, посвященном безопасности, мы намеревались поговорить о подписи кода, но нас отвлекли многие другие возникающие вопросы безопасности. Честно говоря, мы сказали, что это не сценарий!
Table of Contents
Что такое подписывание кода?
Подписание кода — это ручной процесс, который вы можете выполнить сразу после или в момент окончательной сборки вашего приложения. Он добавляет к вашему exe небольшой ресурс, содержащий цифровую подпись. Подпись идентифицирует, кто, по крайней мере теоретически, написал код, и добавляет информацию, которая берет контрольную сумму exe-файла вашего приложения. Эта информация — подпись кода — в целом означает, что любой пользователь, запускающий ваши приложения, может быть уверен, что exe-файл не был изменен с момента его создания на своем компьютере или сервере сборки. Любые изменения exe, например, вирусом, нарушат криптографическую контрольную сумму, чтобы пользователи могли сказать, что что-то пошло не так.
Доставка приложений через веб-ссылку в значительной степени требует подписи кода
Подпись кода не только помогает идентифицировать исходного разработчика, но и играет роль, когда ваши программы загружаются с веб-сайта или аналогичного механизма онлайн-доставки. Большинство браузеров (возможно, все) будут предупреждать вас о загрузке exes с веб-сайта, особенно того, который не использует HTTPS. Microsoft Edge и Windows вместе идут немного дальше и будут активно кричать на вас, если исполняемый файл не имеет цифровой подписи (другой способ сказать, что он не подписан кодом).
Неподписанные приложения выглядят как компьютерные вирусы
Если вашим пользователям, наконец, удастся перепрыгнуть через все различные обручи и фактически получить exe для загрузки на свой компьютер, некоторые из них могут обнаружить, что загруженный файл волшебным образом исчез. Это связано с тем, что в корпоративных сетях довольно часто применяется правило, согласно которому пользователи могут запускать только определенные доверенные приложения. Отсутствие подписи кода обычно означает, что вашему приложению не доверяют. Некоторые идут еще дальше, хотя это встречается реже и настаивают на том, что все пользовательские приложения должны быть 64-битными, особенно серверные приложения и службы Windows. Администраторы корпоративной сети и сотрудники ITSec могут быть немного перегружены, когда дело доходит до применения политик и принуждения кучки пользователей к поведению себя, не позволяя им делать очевидные вещи, такие как потоковая передача торрентов,открытие сомнительных вложений и случайный запуск вредоносного ПО.
Ваше приложение без кодовой подписи? Для них это выглядит как наихудший способ кражи паролей с криптоблокировкой — и нет, они не хотят отказываться от своего тощего миндального латте-макачули с дополнительной спиреллой, чтобы запустить его, чтобы «проверить это», большое спасибо.
Подпись кода предназначена только для голубых фишек?
Подписание кода ОБЯЗАТЕЛЬНО, если вы хотите получать доход от своего кода. Но даже если у вас есть проект с открытым исходным кодом или бесплатное ПО, подписывание кода помогает вашим пользователям помочь себе самим.
Безмятежные дни простого создания exe-файла, его архивирования и размещения на веб-сервере в значительной степени прошли. Если вы доставляете свое программное обеспечение таким образом, я ненавижу быть источником плохих новостей: вы устарели, и пора модернизироваться. Скоро появится целый ряд изменений в способах работы Windows, и многие улучшения безопасности, такие как UAC, HTTPS и принудительная защита каталогов, будут реализованы в одностороннем порядке и, в большинстве случаев, уже были.
Из вопросов, которые мне задают, подписание кода, вероятно, является горячей темой номер один, поэтому я * знаю *, что есть целая толпа разработчиков, которые приходят к осознанию того, что подписание кода на самом деле не является необязательным действием.
Дополнительные ресурсы по подписи кода
Чтобы узнать больше о плюсах и минусах подписи кода, попробуйте следующие ресурсы:
- Мое собственное сообщение в блоге о подписи кода, в котором подробно описаны различные типы подписи кода и где можно получить очень экономичные сертификаты подписи кода вместе с примерами экранов: https://www.codedotshow.com/blog/delphi -10-3-рио-код-подписание-подготовка-и-Microsoft-app-store /
- Действительно отличная статья в Википедии содержит хорошее общее представление о преимуществах подписи кода: https://en.wikipedia.org/wiki/Code_signing
- Статью с дополнительным обзором преимуществ подписи кода можно найти по этой ссылке: https://www.encryptionconsulting.com/code-signing-top-5-benefits/ и здесь https://www.globalsign.com / en / blog / the-important-of-code-signed-redux ПРИМЕЧАНИЕ: обе эти ссылки имеют что-то, что можно вам продать, так что имейте это в виду, но их описания и предпосылки достаточно надежны.
Не тратьте свой тяжелый труд на драконовского привратника безопасности — пора модернизировать и подписывать код для ваших приложений.