Открыть сервис

Developer ID

Developer ID — это программа цифровой подписи, разработанная компанией Apple Inc. для операционной системы macOS, позволяющая разработчикам подписывать своё программное обеспечение, распространяемое вне официального магазина приложений Mac App Store. Основная цель программы — обеспечить безопасность пользователей, гарантируя, что приложение не было изменено после подписания и что его издатель прошёл верификацию в Apple. Developer ID является частью более широкой системы защиты macOS, известной как Gatekeeper, которая по умолчанию блокирует запуск неподписанных приложений или приложений от непроверенных разработчиков.

История

Программа Developer ID была впервые представлена на Всемирной конференции разработчиков Apple (WWDC) в 2011 году, одновременно с анонсом операционной системы Mac OS X Lion (версия 10.7). Внедрение этой системы было ответом на растущую угрозу вредоносного программного обеспечения для macOS, особенно после появления таких угроз, как троян Flashback, который заразил сотни тысяч компьютеров Mac в 2011–2012 годах. До появления Developer ID пользователи могли устанавливать приложения из любых источников без какой-либо проверки, что делало систему уязвимой.

В 2012 году, с выходом OS X Mountain Lion (10.8), Apple включила Gatekeeper, который по умолчанию разрешал запуск только приложений, загруженных из Mac App Store или подписанных с использованием Developer ID. Это стало значительным изменением в политике безопасности macOS. В последующих версиях системы, особенно в macOS Catalina (10.15) и более поздних, Apple ужесточила требования: все приложения, распространяемые вне Mac App Store, должны быть нотариально заверены (notarized) компанией Apple, что является дополнительным шагом проверки поверх подписи Developer ID.

Принцип работы

Сертификаты и идентификация

Для использования Developer ID разработчик должен быть зарегистрирован в программе Apple Developer Program (платная подписка, стоимость которой на 2024 год составляет 99 долларов США в год). После регистрации разработчик получает доступ к генерации сертификатов Developer ID через портал Apple Developer. Сертификат представляет собой электронную подпись, привязанную к учётной записи разработчика. Он содержит информацию об организации или физическом лице, включая уникальный идентификатор, и подтверждается цепочкой доверия до корневого сертификата Apple.

Процесс подписания

Подписание приложения происходит с помощью утилиты командной строки codesign, входящей в состав инструментов разработчика Xcode, или через графический интерфейс Xcode. Разработчик указывает сертификат Developer ID, и утилита создаёт криптографическую подпись для всех исполняемых файлов, библиотек и ресурсов приложения. Подпись включает хеш-суммы (SHA-256 или SHA-1) каждого компонента, что позволяет впоследствии проверить целостность приложения.

Нотариальное заверение (Notarization)

С 2019 года, с выходом macOS Catalina, Apple ввела обязательное нотариальное заверение для всех приложений, подписанных с помощью Developer ID. Процесс включает следующие шаги:

  1. Разработчик загружает собранное и подписанное приложение на серверы Apple через утилиту xcrun altool или через Xcode.
  2. Apple автоматически сканирует приложение на наличие известных вредоносных программ, проверяет соответствие требованиям безопасности (например, отсутствие прав на выполнение кода в неразрешённых областях) и проверяет, что приложение не содержит уязвимостей, таких как неправильная обработка прав доступа.
  3. Если проверка пройдена, Apple выдаёт билет нотариального заверения (ticket), который разработчик прикрепляет к приложению. Билет содержит метку времени и подпись Apple.
  4. После этого приложение может быть распространено. При первом запуске на компьютере пользователя macOS проверяет наличие билета и подпись Developer ID. Если всё корректно, приложение запускается без предупреждений.

Gatekeeper

Gatekeeper — это компонент macOS, который контролирует, какие приложения могут быть запущены. Он проверяет три уровня:

  • Mac App Store: приложения, загруженные из официального магазина, проходят полную проверку Apple.
  • Подписанные Developer ID: приложения, подписанные и нотариально заверенные, могут быть запущены, если они соответствуют требованиям.
  • Любые источники: пользователь может вручную отключить Gatekeeper в настройках безопасности, что позволяет запускать неподписанные приложения, но это не рекомендуется из соображений безопасности.

Классификация сертификатов Developer ID

Apple предоставляет три типа сертификатов Developer ID:

  1. Developer ID Application — для подписания приложений (файлы с расширением .app).
  2. Developer ID Installer — для подписания установочных пакетов (файлы .pkg), которые используются для распространения приложений через сторонние инсталляторы.
  3. Developer ID Kext — для подписания расширений ядра (kernel extensions), которые требуются для драйверов устройств. Этот тип сертификата используется реже, так как начиная с macOS Big Sur (11.0) Apple рекомендует заменять расширения ядра на системные расширения (system extensions), которые подписываются обычным Developer ID Application.

Преимущества и ограничения

Преимущества

  • Безопасность: гарантирует, что приложение не было изменено злоумышленниками после подписания.
  • Доверие пользователей: пользователи могут быть уверены, что приложение создано проверенным разработчиком, а не неизвестным лицом.
  • Удобство: подписанные приложения не требуют от пользователя ручного разрешения в настройках безопасности (за исключением случаев, когда приложение не прошло нотариальное заверение).
  • Интеграция с macOS: подписанные приложения получают доступ к расширенным функциям, таким как iCloud, Push-уведомления и другие сервисы Apple.

Ограничения

  • Стоимость: для получения сертификата необходимо платить ежегодную подписку Apple Developer Program.
  • Сложность: процесс подписания и нотариального заверения требует от разработчика понимания криптографии и инструментов командной строки.
  • Зависимость от Apple: разработчик полностью зависит от решений Apple — если компания отзывает сертификат (например, за нарушение правил), приложение перестаёт запускаться на устройствах пользователей.
  • Приватность: при нотариальном заверении Apple получает метаданные о приложении, включая его хеш и информацию о разработчике, что может вызывать опасения у сторонников конфиденциальности.

Критика и инциденты

Программа Developer ID неоднократно подвергалась критике со стороны разработчиков и экспертов по безопасности. Основные претензии включают:

  • Централизация контроля: Apple может в одностороннем порядке отозвать сертификат разработчика, что делает приложение неработоспособным на всех устройствах пользователей. Это произошло, например, в 2021 году, когда Apple отозвала сертификаты у нескольких разработчиков, чьи приложения были признаны вредоносными, включая некоторые инструменты для удалённого администрирования.
  • Ложные срабатывания: нотариальное заверение иногда блокирует легитимные приложения из-за ложных срабатываний антивирусного сканера Apple. Например, в 2020 году были случаи, когда Apple ошибочно помечала как вредоносные программы для разработки игр (такие как Unity) или инструменты для работы с сетью.
  • Приватность: нотариальное заверение требует отправки приложения на серверы Apple, что раскрывает Apple информацию о коде, который разработчик, возможно, хотел бы сохранить в тайне. В ответ на критику Apple ввела возможность отправлять только хеш приложения, а не полный бинарный файл, но это не решает проблему полностью.

Применение в России

В России программа Developer ID используется разработчиками для распространения приложений вне Mac App Store, особенно в корпоративной среде, где требуется установка специализированного ПО. Однако в связи с санкционными ограничениями, введёнными против России после 2022 года, некоторые российские разработчики столкнулись с трудностями при регистрации в Apple Developer Program и получении сертификатов. Apple ограничила продажи своих продуктов и услуг в России, что затруднило оплату подписки. Кроме того, в 2023 году были сообщения о том, что Apple отзывала сертификаты у российских разработчиков, чьи приложения были связаны с государственными структурами, что вызвало критику в российском IT-сообществе.

Альтернативы

Для пользователей, которые не хотят использовать Developer ID, существуют альтернативные способы установки приложений на macOS:

  • Mac App Store: официальный магазин приложений Apple, где все приложения проходят строгую проверку.
  • Homebrew: менеджер пакетов для macOS, который позволяет устанавливать приложения из командной строки, часто без подписи.
  • Ручная установка: пользователь может отключить Gatekeeper в настройках безопасности и запускать неподписанные приложения, но это сопряжено с риском заражения вредоносным ПО.

Источники

  • Apple Inc. «Code Signing Guide» (документация для разработчиков).
  • Apple Inc. «Notarizing macOS Software Before Distribution» (официальное руководство).
  • WWDC 2011 Session Videos: «Introducing Developer ID and Gatekeeper».
  • Статья «How Gatekeeper Works» на сайте Apple Support.
  • Отчёты о безопасности macOS за 2012–2024 годы (Apple Security Updates).
  • Материалы конференций по безопасности (Black Hat, DEF CON) о методах обхода Gatekeeper.

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →