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 потоку або ID фільму). Сертифікат повинен бути чинним щонайменше протягом строку оренди контенту, інакше ліцензування завершиться невдачею.
Ідентифікатор контенту передається в систему ліцензування на етапі формування SPC. Сервер ліцензій використовує цей ідентифікатор для пошуку відповідного ключа та політик відтворення, включаючи обмеження за часом та кількістю пристроїв.
Під час ліцензування можуть виникати помилки: закінчення терміну дії сертифіката, недійсний ідентифікатор контенту, відсутність прав доступу користувача. Помилки FairPlay повертаються через делегат contentKeySession:didFailWithError та повинні оброблятися з відображенням відповідного інтерфейсу.
Типові коди помилок включають 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 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.
Читайте також