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 — това е специален съпроцесор в чиповете от серия A и M на Apple, работещ върху изолирана ОС 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 и трябва да се обработват с показване на съответния потребителски интерфейс.
Типичните кодове за грешки включват FP_NO_ENTITLEMENT при липса на абонамент и FP_REQUEST_TIMEOUT при проблеми с мрежата. Препоръчва се да се реализира логика за повторни опити с експоненциално закъснение за временни мрежови проблеми.
FairPlay Streaming — това е протокол за защита на стрийминг видео на база HLS, който използва криптиране на сегментите и механизъм с ключове с ограничен срок на валидност. Доставчикът на съдържание разгръща собствен лицензен сървър, който се интегрира със системата за удостоверяване на потребителите.
Лицензният сървър получава от клиента заявка SPC, извлича от нея идентификаторите на устройството и съдържанието, проверява правата на потребителя в backend и формира отговор 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 г. Ще ви консултираме и ще предложим най-доброто решение.
Прочетете също