FairPlay — какво е това, DRM от Apple и принципи на работа

Автор: IT Sectr Публикувано: 2026-05-24 Време за четене: 8 мин

FairPlay — проприетарна DRM технология, разработена от Apple за защита на видео съдържание в екосистемата iOS, tvOS и macOS. Системата използва Secure Enclave и хардуерно криптиране за сигурно съхранение на ключовете, което позволява на стрийминг услугите да предоставят съдържание в качество 4K HDR. Според документацията на Apple Developer (2025) FairPlay Streaming се поддържа на всички устройства на Apple с чип A8 и по-нови.

Основното

  • FairPlay — DRM решение на Apple за защита на видео в приложения за iOS, tvOS и macOS.
  • Secure Enclave осигурява хардуерно съхранение на ключовете за дешифриране на ниво чип.
  • FairPlay Streaming (FPS) — протокол за защита на HLS потоци в реално време.
  • SCM (Server Certificate Module) — модул за проверка на автентичността на лицензния сървър.
  • Интеграцията изисква регистрация в програмата Apple Developer и получаване на сертификат FPS.

Какво е FairPlay?

FairPlay — DRM технология, създадена от Apple и внедрена в операционните системи iOS, tvOS, iPadOS и macOS за защита на аудио и видео съдържание от неоторизирано използване. Първоначално разработена за iTunes и iPod, тя се разви в пълноценна система за защита на стрийминг съдържание чрез протокола FairPlay Streaming.

За разлика от други DRM решения, FairPlay е напълно интегрирана в хардуерната архитектура на устройствата на Apple. Ключовете за дешифриране се съхраняват в Secure Enclave — защитен съпроцесор, изолиран от основната ОС, което прави извличането на ключовете практически невъзможно дори при джейлбрейк.

Еволюция на FairPlay

Историята на 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 DRM?

Работата на 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.

Схема на работа на FairPlay Streaming

swift
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

Архитектурата на FairPlay включва няколко взаимосвързани компонента: сертификат на приложението, Key Envelope, Secure Enclave и модул за дешифриране на съдържанието. Всеки компонент играе своята роля във веригата за защита от сървъра до екрана на потребителя.

КомпонентФункцияКъде се изпълнява
Сертификат на приложениетоИдентификация на приложението пред лицензния сървърСъхранява се в пакета на приложението
SPCServer Playback Context — заявка за лицензФормира се от AVContentKeySession
CKCContent Key Context — отговор с ключОбработва се от Secure Enclave
Secure EnclaveХардуерно съхранение и дешифриране на ключовеХардуерен съпроцесор на SoC
Key EnvelopeКонтейнер за ключа с метаданни на лицензаФормира се от лицензния сървър

Сертификат на приложението FairPlay

За работа с FairPlay разработчикът трябва да получи сертификат FPS от Apple чрез програмата Apple Developer. Сертификатът включва публичния ключ на асиметричната двойка, чиято частна част се използва от Secure Enclave за дешифриране на CKC.

Сертификатът на приложението се добавя в пакета на проекта и автоматично се подписва при изграждането чрез Xcode. При първото възпроизвеждане на защитено съдържание системата проверява валидността на сертификата и изисква лиценз.

Secure Enclave и хардуерна защита

Secure Enclave — това е специален съпроцесор в чиповете от серия A и M на Apple, работещ върху изолирана ОС L4. Той отговаря за генерирането и съхранението на частните ключове, дешифрирането на CKC и предаването на ключа на съдържанието на модула за дешифриране на видео.

Всички криптографски операции се извършват изключително вътре в Secure Enclave, а ключовете никога не напускат защитената зона. Атаки по странични канали срещу шината за предаване на данни между Secure Enclave и основния процесор се блокират от хардуерен мониторинг на целостта.

Интеграция на FairPlay в iOS и tvOS

Интеграцията на FairPlay в приложения за iOS и tvOS се извършва чрез AVFoundation и изисква реализация на протоколите AVContentKeySessionDelegate и AVAssetResourceLoaderDelegate. Разработчикът трябва да обработва четири ключови събития: получаване на SPC, изпращане до сървъра, получаване на CKC и предаване на плейъра.

Реализация на делегата AVContentKeySession

swift
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 и трябва да се обработват с показване на съответния потребителски интерфейс.

Типичните кодове за грешки включват FP_NO_ENTITLEMENT при липса на абонамент и FP_REQUEST_TIMEOUT при проблеми с мрежата. Препоръчва се да се реализира логика за повторни опити с експоненциално закъснение за временни мрежови проблеми.

FairPlay Streaming и лицензиране

FairPlay Streaming — това е протокол за защита на стрийминг видео на база HLS, който използва криптиране на сегментите и механизъм с ключове с ограничен срок на валидност. Доставчикът на съдържание разгръща собствен лицензен сървър, който се интегрира със системата за удостоверяване на потребителите.

Лицензният сървър получава от клиента заявка SPC, извлича от нея идентификаторите на устройството и съдържанието, проверява правата на потребителя в backend и формира отговор CKC. Ключът на съдържанието се криптира с публичния ключ на устройството от сертификата FPS.

Политики за лицензиране на FairPlay

Лицензът на FairPlay може да съдържа ограничения по време (наем за 48 часа), брой устройства (максимум 5 оторизирани) и качество на възпроизвеждането (ограничение до 1080p за базовия тариф). Политиките се задават на страната на сървъра и се опаковат в Key Envelope.

Важно е да се отбележи, че политиките на FairPlay се прилагат на ниво Secure Enclave и не могат да бъдат заобиколени със софтуерни методи на ниво ОС. Дори при джейлбрейк хардуерната защита предотвратява извличането на ключа или промяната на параметрите на лиценза.

Сравнение на FairPlay с други DRM

ПараметърFairPlayWidevinePlayReady
ЕкосистемаApple (iOS, tvOS, macOS)Google (Android, Chrome)Microsoft (Windows, Xbox)
Максимално качество4K HDR Dolby Vision4K UHD4K UHD
Хардуерна защитаSecure EnclaveTEETPM + TEE
Изисквания към разработчикаСертификат FPS от AppleНе се изискваЛиценз от Microsoft

Особености на работата на FairPlay в различните версии на iOS

Поддръжката на FairPlay Streaming зависи от версията на операционната система и типа устройство. От iOS 10 и tvOS 10 API на AVContentKeySession е достъпен за всички приложения, но хардуерното ускорение чрез Secure Enclave се изисква само за съдържание в качество 4K HDR. На устройства с чип A8–A10 е достъпна само максимална разделителна способност 1080p.

В iOS 14 Apple добави поддръжка на няколко сесии на FairPlay, което позволява на приложението да възпроизвежда няколко защитени потока едновременно — например картина в картина с различни лицензи. iOS 15 разшири протокола с поддръжка на фонова актуализация на ключовете за дългосрочно гледане.

FairPlay в архитектурата мулти-DRM

За крос-платформени стрийминг услуги FairPlay се използва като част от мулти-DRM архитектурата заедно с Widevine и PlayReady. Агрегатори на лицензи, като Axinom и EZDRM, предоставят единен API, който транслира заявките във формат SPC за FairPlay и във формат MediaDrm за Widevine, опростявайки интеграцията на всички платформи.

Често задавани въпроси

Какво е FairPlay DRM в iOS?

FairPlay — това е DRM технология на Apple, вградена в iOS, tvOS и macOS за защита на видео съдържание. Тя използва хардуерно криптиране чрез Secure Enclave и протокола FairPlay Streaming за сигурно предаване на ключовете за дешифриране на устройствата на Apple.

Как да получа сертификат за FairPlay Streaming?

За получаване на сертификат FPS е необходимо да се регистрирате в програмата Apple Developer, да създадете сертификат в секцията Certificates, Identifiers & Profiles и да го изтеглите във формат DER. Сертификатът се добавя към пакета на проекта Xcode и се подписва при изграждането.

Може ли FairPlay да се използва на Android?

Не, FairPlay не е достъпен на Android, тъй като това е проприетарна технология на Apple, обвързана с хардуерната архитектура на Secure Enclave в чиповете от серия A и M. За устройства с Android се използва Widevine DRM на Google.

С какво FairPlay се различава от FairPlay Streaming?

FairPlay е общото наименование на DRM технологията на Apple, а FairPlay Streaming (FPS) е конкретен протокол за защита на HLS потоци. FPS използва механизмите на FairPlay за криптиране на сегментите на видеото и управление на лицензите чрез AVContentKeySession.

Какви ограничения налага лицензът на FairPlay?

Лицензът на FairPlay може да задава ограничения за времето на гледане, максималното качество на видеото (720p, 1080p, 4K), броя устройства и срока на валидност на ключа. Всички политики се изпълняват хардуерно в Secure Enclave и не могат да бъдат заобиколени.

Изводи

  • FairPlay — проприетарен DRM на Apple с хардуерна защита чрез Secure Enclave и протокола FairPlay Streaming за HLS.
  • SPC и CKC — ключовите съобщения на протокола: заявка за лиценз от клиента и отговор с ключ от сървъра.
  • Сертификатът FPS е задължителен за разработчиците и се получава чрез програмата Apple Developer.
  • Интеграцията се извършва чрез AVContentKeySession и AVAssetResourceLoaderDelegate в AVFoundation.
  • Secure Enclave осигурява изолирано съхранение и обработка на ключовете на хардуерно ниво.
  • Ограниченията на лиценза включват времеви рамки, качество и брой устройства.
  • Мулти-DRM подходът с FairPlay, Widevine и PlayReady е необходим за крос-платформени стрийминг приложения.

Ще разработим мобилно приложение под ключ

IT Sectr създава iOS и Android приложения за стартъпи и бизнеси от 2017 г. Ще ви консултираме и ще предложим най-доброто решение.

Обсъдете проекта

Прочетете също