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 — заштићеном копроцесору, изолованом од главног оперативног система, што чини екстракцију кључева практично немогућом чак и при jailbreak-у.
Историја 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 и модул за дешифровање садржаја. Свака компонента игра своју улогу у ланцу заштите од сервера до екрана корисника.
| Компонента | Функција | Где се извршава |
|---|---|---|
| Сертификат апликације | Идентификација апликације пред сервером лиценци | Чува се у bundle-у апликације |
| SPC | Server Playback Context — захтев за лиценцу | Формира га AVContentKeySession |
| CKC | Content Key Context — одговор са кључем | Обрађује га Secure Enclave |
| Secure Enclave | Хардверско чување и дешифровање кључева | Хардверски копроцесор SoC-а |
| Key Envelope | Контејнер за кључ са метаподацима лиценце | Формира га сервер лиценци |
За рад са FairPlay-ом, програмер мора да добије FPS сертификат од Apple-а путем програма Apple Developer. Сертификат укључује јавни кључ асиметричног пара, чији приватни део користи Secure Enclave за дешифровање CKC-а.
Сертификат апликације се додаје у bundle пројекта и аутоматски се потписује при компајлирању путем 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)
)
}
}
Пре почетка репродукције, потребно је учитати сертификат апликације из bundle-а и припремити идентификатор садржаја (обично URL тока или идентификатор филма). Сертификат мора да важи најмање за период изнајмљивања садржаја, иначе ће лиценцирање завршити грешком.
Идентификатор садржаја се прослеђује систему за лиценцирање у фази формирања 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-а и не могу се заобићи софтверским методама на нивоу оперативног система. Чак и при jailbreak-у, хардверска заштита спречава екстракцију кључа или измену параметара лиценце.
| Параметар | 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 |
| Захтеви за програмера | Apple FPS сертификат | Није потребно | 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 формату. Сертификат се додаје у bundle Xcode пројекта и потписује при компајлирању.
Не, FairPlay није доступан на Android-у, јер је то власничка технологија компаније Apple везана за хардверску архитектуру Secure Enclave-а на чиповима A-серије и M-серије. За Android уређаје користи се Widevine DRM компаније Google.
FairPlay је општи назив за Apple DRM технологију, а FairPlay Streaming (FPS) је конкретан протокол за заштиту HLS токова. FPS користи FairPlay механизме за шифровање видео сегмената и управљање лиценцама путем AVContentKeySession-а.
FairPlay лиценца може да постави ограничења времена гледања, максималног квалитета видеа (720p, 1080p, 4K), броја уређаја и рока важења кључа. Све политике се извршавају хардверски у Secure Enclave-у и не могу се заобићи.
Резиме
Развићемо мобилну апликацију под кључ
IT Sectr креира iOS и Android апликације за стартапе и предузећа од 2017. године. Саветоваћемо вас и предложити најбоље решење.
Прочитајте такође