FairPlay — это проприетарная технология DRM, разработанная Apple для защиты видеоконтента в экосистеме iOS, tvOS и macOS. Система использует Secure Enclave и аппаратное шифрование для безопасного хранения ключей, что позволяет стриминговым сервисам предоставлять контент в качестве 4K HDR. Согласно документации Apple Developer (2025), FairPlay Streaming поддерживается на всех устройствах Apple с чипом A8 и новее.
Главное
FairPlay — это технология DRM, созданная Apple и внедрённая в операционные системы iOS, tvOS, iPadOS и macOS для защиты аудио- и видеоконтента от неавторизованного использования. Первоначально разработанная для iTunes и iPod, она эволюционировала в полноценную систему защиты стримингового контента через протокол FairPlay Streaming.
В отличие от других DRM-решений, FairPlay полностью интегрирована в аппаратную архитектуру устройств Apple. Ключи дешифровки хранятся в Secure Enclave — защищённом сопроцессоре, изолированном от основной ОС, что делает извлечение ключей практически невозможным даже при наличии джейлбрейка.
История FairPlay началась в 2003 году с магазина iTunes Store, где применялось шифрование файлов AAC с использованием проприетарного формата M4P. В 2009 году Apple представила FairPlay Streaming — протокол защиты потокового видео на основе HLS, который впоследствии стал обязательным для Apple TV и приложений iOS.
Начиная с iOS 10 и tvOS 10, Apple открыла доступ к FairPlay Streaming для сторонних разработчиков через фреймворк AVFoundation. Сегодня Netflix, Amazon Prime Video и Disney+ используют FairPlay для защиты контента на устройствах Apple вплоть до разрешения 4K HDR с Dolby Vision.
Работа FairPlay основана на трёхэтапном процессе: упаковка контента, распространение через CDN и дешифровка на устройстве. На этапе упаковки видеошифруется с использованием AES-128 или AES-256, а ключи шифрования связываются с конкретным устройством через механизм Key Envelope.
При запросе контента плеер инициирует сессию FairPlay через AVContentKeySession, который отправляет запрос на сервер лицензий контент-провайдера. Сервер проверяет права доступа и возвращает ключ дешифровки, зашифрованный открытым ключом сертификата устройства.
Клиент создаёт экземпляр AVContentKeySession и добавляет к нему трек контента. Система формирует запрос SPC (Server Playback Context), который содержит идентификатор устройства и сертификат приложения, заверенный Apple. Этот запрос отправляется на сервер лицензий по HTTPS.
Сервер лицензий валидирует SPC, извлекает ключ контента из своей базы и шифрует его открытым ключом устройства, формируя CKC (Content Key Context). CKC возвращается клиенту, где AVContentKeySession расшифровывает его с использованием закрытого ключа Secure Enclave.
let contentKeySession = AVContentKeySession(keySystem: .fairPlayStreaming)
contentKeySession.setDelegate(self, queue: .main)
let asset = AVURLAsset(url: streamURL)
asset.resourceLoader.setDelegate(self, queue: .main)
contentKeySession.addContentKeyRecipient(asset)
let playerItem = AVPlayerItem(asset: asset)
let player = AVPlayer(playerItem: playerItem)
Архитектура FairPlay включает несколько взаимосвязанных компонентов: сертификат приложения, Key Envelope, Secure Enclave и модуль дешифровки контента. Каждый компонент выполняет свою роль в цепочке защиты от сервера до экрана пользователя.
| Компонент | Функция | Где выполняется |
|---|---|---|
| Сертификат приложения | Идентификация приложения перед сервером лицензий | Хранится в бандле приложения |
| SPC | Server Playback Context — запрос лицензии | Формируется AVContentKeySession |
| CKC | Content Key Context — ответ с ключом | Обрабатывается Secure Enclave |
| Secure Enclave | Аппаратное хранение и расшифровка ключей | Аппаратный сопроцессор SoC |
| Key Envelope | Контейнер для ключа с метаданными лицензии | Формируется сервером лицензий |
Для работы с FairPlay разработчик должен получить сертификат FPS от Apple через программу Apple Developer. Сертификат включает открытый ключ асимметричной пары, закрытая часть которой используется Secure Enclave для расшифровки CKC.
Сертификат приложения добавляется в бандл проекта и автоматически подписывается при сборке через Xcode. При первом воспроизведении защищённого контента система проверяет валидность сертификата и запрашивает лицензию.
Secure Enclave — это выделенный сопроцессор на чипах Apple A-серии и M-серии, работающий на изолированной ОС L4. Он отвечает за генерацию и хранение закрытых ключей, расшифровку CKC и передачу ключа контента модулю дешифровки видео.
Все криптографические операции выполняются исключительно внутри Secure Enclave, и ключи никогда не покидают защищённую область. Атаки по сторонним каналам на шину передачи данных между Secure Enclave и основным процессором блокируются аппаратным мониторингом целостности.
Интеграция FairPlay в приложения iOS и tvOS выполняется через AVFoundation и требует реализации протоколов AVContentKeySessionDelegate и AVAssetResourceLoaderDelegate. Разработчику необходимо обрабатывать четыре ключевых события: получение SPC, отправку на сервер, получение CKC и передачу плееру.
func contentKeySession(
_ session: AVContentKeySession,
didProvide keyRequest: AVContentKeyRequest
) {
guard let identifier = keyRequest.identifier
else { return }
let spc: Data = keyRequest.makeStreamingContentKeyRequestData(
appCertificate: certificate,
contentIdentifier: identifier,
options: nil
)
licenseService.requestCKC(spc) { ckc in
keyRequest.processContentKeyResponse(
AVContentKeyResponse(fairPlayStreamingKeyResponseData: ckc)
)
}
}
Перед началом воспроизведения необходимо загрузить сертификат приложения из бандла и подготовить идентификатор контента (чаще всего URL потока или идентификатор фильма). Сертификат должен быть действителен как минимум на срок аренды контента, иначе лицензирование завершится ошибкой.
Идентификатор контента передаётся в систему лицензирования на этапе формирования SPC. Сервер лицензий использует этот идентификатор для поиска соответствующего ключа и политик воспроизведения, включая ограничения по времени и устройствам.
В процессе лицензирования могут возникать ошибки: истечение сертификата, неверный идентификатор контента, отсутствие прав доступа у пользователя. Ошибки FairPlay возвращаются через делегат contentKeySession:didFailWithError и должны обрабатываться с показом соответствующего UI пользователю.
Типовые коды ошибок включают FP_NO_ENTITLEMENT при отсутствии подписки и FP_REQUEST_TIMEOUT при проблемах с сетью. Рекомендуется реализовать логику повторных попыток с экспоненциальной задержкой для временных сетевых сбоев.
FairPlay Streaming — это протокол защиты потокового видео на базе HLS, который использует шифрование сегментов и механизм ключей с ограниченным сроком действия. Провайдер контента разворачивает собственный сервер лицензий, который интегрируется с системой аутентификации пользователей.
Сервер лицензий получает от клиента SPC-запрос, извлекает из него идентификатор устройства и контента, проверяет права пользователя в бэкенде и формирует CKC-ответ. Ключ контента шифруется открытым ключом устройства из сертификата FPS.
Лицензия FairPlay может содержать ограничения по времени (аренда на 48 часов), количеству устройств (максимум 5 авторизованных) и качеству воспроизведения (ограничение до 1080p для базового тарифа). Политики задаются на стороне сервера и упаковываются в Key Envelope.
Важно отметить, что политики FairPlay применяются на уровне Secure Enclave, и их невозможно обойти программными методами на уровне ОС. Даже при наличии джейлбрейка аппаратная защита предотвращает извлечение ключа или изменение параметров лицензии.
| Параметр | FairPlay | Widevine | PlayReady |
|---|---|---|---|
| Экосистема | Apple (iOS, tvOS, macOS) | Google (Android, Chrome) | Microsoft (Windows, Xbox) |
| Максимальное качество | 4K HDR Dolby Vision | 4K UHD | 4K UHD |
| Аппаратная защита | Secure Enclave | TEE | TPM + TEE |
| Требования к разработчику | FPS сертификат Apple | Не требуется | Лицензия Microsoft |
Поддержка FairPlay Streaming зависит от версии операционной системы и типа устройства. Начиная с iOS 10 и tvOS 10, API AVContentKeySession доступен для всех приложений, но аппаратное ускорение через Secure Enclave требуется только для контента в качестве 4K HDR. На устройствах с чипом A8–A10 доступно только максимальное разрешение 1080p.
В iOS 14 Apple добавила поддержку нескольких сессий FairPlay, что позволяет приложению воспроизводить несколько защищённых потоков одновременно — например, картинка в картинке с разными лицензиями. iOS 15 расширила протокол поддержкой фонового обновления ключей для длительного просмотра.
Для кросс-платформенных стриминговых сервисов FairPlay используется как часть мульти-DRM архитектуры вместе с Widevine и PlayReady. Агрегаторы лицензий, такие как Axinom и EZDRM, предоставляют единый API, который транслирует запросы в формат SPC для FairPlay и в формат MediaDrm для Widevine, упрощая интеграцию на всех платформах.
Часто задаваемые вопросы
FairPlay — это технология DRM от Apple, встроенная в iOS, tvOS и macOS для защиты видеоконтента. Она использует аппаратное шифрование через Secure Enclave и протокол FairPlay Streaming для безопасной передачи ключей дешифровки на устройствах Apple.
Для получения сертификата FPS необходимо зарегистрироваться в программе Apple Developer, создать сертификат в разделе Certificates, Identifiers & Profiles и скачать его в формате DER. Сертификат добавляется в бандл Xcode-проекта и подписывается при сборке.
Нет, FairPlay недоступен на Android, так как это проприетарная технология Apple, привязанная к аппаратной архитектуре Secure Enclave на чипах A-серии и M-серии. Для Android-устройств используется Widevine DRM от Google.
FairPlay — общее название технологии DRM Apple, а FairPlay Streaming (FPS) — конкретный протокол для защиты HLS-потоков. FPS использует механизмы FairPlay для шифрования сегментов видео и управления лицензиями через AVContentKeySession.
Лицензия FairPlay может задавать ограничения по времени просмотра, максимальному качеству видео (720p, 1080p, 4K), количеству устройств и сроку действия ключа. Все политики выполняются аппаратно в Secure Enclave и не могут быть обойдены.
Итоги
Мы разработаем мобильное приложение под ключ
IT Sectr создаёт приложения для iOS и Android для стартапов и бизнеса с 2017 года. Мы проконсультируем вас и предложим наилучшее решение.
Читайте также