Сертификат издателя¶
Сертификат издателя — это цифровой документ (файл), удостоверяющий личность разработчика или организации, опубликовавшей программное обеспечение (ПО), и подтверждающий подлинность цифровой подписи, которой подписано это ПО. Сертификат издателя является разновидностью сертификата открытого ключа (PKI) и используется операционными системами и браузерами для проверки того, что программа не была изменена после подписания и что её издатель является доверенным лицом.
¶Назначение и функции
Основная цель сертификата издателя — обеспечение доверия к программному обеспечению со стороны пользователя и операционной системы. При установке или запуске программы, подписанной сертификатом, система может отобразить имя издателя в диалоговом окне контроля учётных записей (UAC) или предупреждении SmartScreen. Это позволяет пользователю принять обоснованное решение о доверии к программе, а не полагаться только на имя файла или сайта загрузки.
Ключевые функции сертификата издателя:
- Аутентификация издателя: подтверждает, что программа выпущена конкретным юридическим или физическим лицом, прошедшим проверку в удостоверяющем центре (УЦ).
- Целостность кода: гарантирует, что файлы программы не были изменены (например, вирусом или злоумышленником) после подписания. Любое изменение приводит к недействительности подписи.
- Снижение уровня предупреждений: подписанное ПО от доверенного издателя, как правило, вызывает меньше предупреждений безопасности, чем неподписанное.
¶Типы сертификатов издателя
Сертификаты издателя делятся на несколько категорий в зависимости от уровня проверки и области применения.
¶Стандартный сертификат кода (Code Signing Certificate)
Наиболее распространённый тип. Выдаётся после проверки организации или физического лица (для индивидуальных предпринимателей) через стандартные процедуры, включающие подтверждение регистрационных данных. Позволяет подписывать исполняемые файлы (.exe, .dll, .msi), драйверы, скрипты и пакеты установки. Подходит для большинства коммерческих и бесплатных программ.
¶Расширенный сертификат (Extended Validation, EV)
Сертификат с повышенным уровнем проверки издателя. Для его получения требуется пройти более строгую верификацию юридического лица, включая подтверждение физического адреса, телефонного номера и полномочий подписанта. EV-сертификат даёт ряд преимуществ:
- Мгновенное доверие: операционная система (например, Windows) доверяет EV-подписи сразу, без необходимости накопления репутации.
- Уменьшение предупреждений: программы, подписанные EV-сертификатом, реже блокируются антивирусами и системами SmartScreen.
- Защита от отзыва: EV-сертификаты сложнее отозвать мошенническим путём.
¶Сертификат для драйверов (Driver Signing Certificate)
Специализированный сертификат, используемый для подписи драйверов устройств. В операционных системах Windows, начиная с Vista, установка неподписанных драйверов (особенно 64-разрядных) затруднена или невозможна. Сертификаты для драйверов часто требуют дополнительных проверок и могут быть выпущены только для организаций, а не для физических лиц.
¶Сертификат для подписи приложений для мобильных платформ
Используется для подписи приложений для Android (APK-файлы) и iOS (IPA-файлы). В отличие от сертификатов для Windows, они часто выдаются не на имя разработчика, а на имя платформы (например, Apple) или магазина приложений. Разработчики используют собственные сертификаты для публикации в магазинах, но их проверка осуществляется через инфраструктуру магазина.
¶Процесс получения сертификата издателя
Получение сертификата издателя включает несколько этапов:
- Выбор удостоверяющего центра (УЦ): Сертификаты выпускают аккредитованные УЦ, такие как DigiCert, Sectigo, GlobalSign, Let's Encrypt (только для веб-серверов, не для кода) и другие. В России сертификаты издателя выпускают, в частности, Национальный УЦ (Минцифры) и коммерческие УЦ, аккредитованные Минцифры.
- Подготовка документов: Для юридического лица — выписка из ЕГРЮЛ/ЕГРИП, ИНН, заявление на подпись. Для физического лица — паспорт и ИНН. Для EV-сертификата — дополнительные документы, подтверждающие полномочия руководителя и адрес.
- Генерация ключевой пары: На компьютере заявителя генерируется пара ключей (закрытый и открытый). Закрытый ключ должен храниться в защищённом месте (например, на токене или в аппаратном модуле безопасности).
- Проверка УЦ: УЦ проверяет предоставленные документы и, в случае EV-сертификата, может связаться с заявителем по телефону или электронной почте для подтверждения.
- Выпуск сертификата: После успешной проверки УЦ подписывает открытый ключ заявителя своим корневым сертификатом и выдаёт готовый сертификат издателя. Срок действия обычно составляет 1–3 года.
- Установка и использование: Сертификат устанавливается в хранилище сертификатов операционной системы. Затем разработчик использует специальные утилиты (например,
signtool.exeдля Windows) для подписи файлов.
¶Использование и проверка
Подписанный файл содержит цифровую подпись, которая включает в себя серийный номер сертификата, имя издателя, хеш-сумму файла и метку времени. При проверке операционная система:
- Проверяет, действителен ли сертификат (не истёк, не отозван).
- Проверяет, что сертификат подписан доверенным корневым УЦ (корневые сертификаты УЦ предустановлены в системе).
- Вычисляет хеш-сумму файла и сравнивает её с той, что указана в подписи. Если они совпадают, файл не изменён.
- Отображает имя издателя пользователю.
Если подпись недействительна (например, сертификат отозван, истёк или файл изменён), система выдаёт предупреждение. В Windows это может быть сообщение «Издатель не проверен» или «Неизвестный издатель».
¶Правовые аспекты в России
В Российской Федерации использование сертификатов издателя регулируется Федеральным законом № 63-ФЗ «Об электронной подписи». Сертификаты, выпущенные аккредитованными УЦ (например, Национальным УЦ), признаются юридически значимыми. Для подписи ПО, распространяемого через государственные информационные системы (например, Единый портал государственных и муниципальных услуг), требуется использование сертификатов, соответствующих требованиям Минцифры.
С 2022 года, в связи с уходом ряда зарубежных УЦ (DigiCert, Sectigo) из России, российские разработчики активно переходят на сертификаты, выпущенные Национальным УЦ и другими аккредитованными центрами. Эти сертификаты имеют те же функциональные возможности, но их корневые сертификаты не предустановлены в операционных системах зарубежных производителей (например, Microsoft Windows), что может вызывать предупреждения безопасности при установке ПО на компьютеры, не имеющие соответствующих обновлений.
¶Критика и ограничения
- Стоимость: Сертификаты издателя, особенно EV, являются платными. Для небольших разработчиков это может быть существенным барьером.
- Сложность получения: Процесс верификации, особенно для EV-сертификатов, требует времени и сбора документов.
- Уязвимость к краже: Закрытый ключ сертификата может быть украден злоумышленниками. В этом случае они могут подписывать вредоносное ПО от имени доверенного издателя. Для защиты используются аппаратные токены и HSM.
- Отзыв сертификата: Если сертификат скомпрометирован, его необходимо отозвать. Однако процесс отзыва может быть медленным, и старые подписи остаются действительными до момента проверки.
- Зависимость от УЦ: Доверие к сертификату полностью зависит от доверия к удостоверяющему центру. Компрометация корневого сертификата УЦ может привести к подрыву доверия ко всем выпущенным им сертификатам.
¶Интересные факты
- Первые сертификаты для подписи кода появились в середине 1990-х годов вместе с развитием цифровых подписей и операционной системы Windows 95.
- В 2020 году Microsoft объявила, что с 2021 года для подписи драйверов для Windows 10 и 11 требуется обязательное использование EV-сертификатов, что значительно повысило требования к разработчикам.
- В 2023 году Национальный УЦ России начал выпуск сертификатов издателя, совместимых с российской операционной системой Astra Linux, что позволило подписывать ПО для государственных нужд.
¶Источники
- Федеральный закон № 63-ФЗ «Об электронной подписи» (с изменениями).
- Документация Microsoft по подписи кода (Code Signing) и контролю учётных записей (UAC).
- Материалы удостоверяющих центров DigiCert, Sectigo, GlobalSign, Национального УЦ (Минцифры России).
- Статьи и руководства по информационной безопасности, опубликованные на ресурсах «Хабр», «SecurityLab», «Anti-Malware.ru».
