FairPlay — proprietární technologie DRM vyvinutá společností Apple pro ochranu videobsahu v ekosystému iOS, tvOS a macOS. Systém využívá Secure Enclave a hardwarové šifrování pro bezpečné ukládání klíčů, což streamingovým službám umožňuje poskytovat obsah v kvalitě 4K HDR. Podle dokumentace Apple Developer (2025) je FairPlay Streaming podporován na všech zařízeních Apple s čipem A8 a novějším.
To nejdůležitější
FairPlay — technologie DRM vytvořená společností Apple a začleněná do operačních systémů iOS, tvOS, iPadOS a macOS pro ochranu audio- a videobsahu před neoprávněným použitím. Původně vyvinutá pro iTunes a iPod se vyvinula v plnohodnotný systém ochrany streamovaného obsahu prostřednictvím protokolu FairPlay Streaming.
Na rozdíl od jiných řešení DRM je FairPlay plně integrován do hardwarové architektury zařízení Apple. Dešifrovací klíče jsou uloženy v Secure Enclave — chráněném koprocesoru izolovaném od hlavního operačního systému, což činí získání klíčů prakticky nemožným i při jailbreaku.
Historie FairPlay začala v roce 2003 v obchodě iTunes Store, kde se používalo šifrování souborů AAC s využitím proprietárního formátu M4P. V roce 2009 Apple představil FairPlay Streaming — protokol pro ochranu streamovaného videa na bázi HLS, který se později stal povinným pro Apple TV a aplikace pro iOS.
Od iOS 10 a tvOS 10 Apple zpřístupnil FairPlay Streaming externím vývojářům prostřednictvím frameworku AVFoundation. Dnes Netflix, Amazon Prime Video a Disney+ používají FairPlay pro ochranu obsahu na zařízeních Apple až do rozlišení 4K HDR s Dolby Vision.
Fungování FairPlay je založeno na třífázovém procesu: balení obsahu, distribuce přes CDN a dešifrování na zařízení. Ve fázi balení je video šifrováno pomocí AES-128 nebo AES-256 a šifrovací klíče jsou propojeny s konkrétním zařízením prostřednictvím mechanismu Key Envelope.
Při požadavku na obsah zahájí přehrávač relaci FairPlay prostřednictvím AVContentKeySession, která odešle požadavek na licenční server poskytovatele obsahu. Server ověří přístupová práva a vrátí dešifrovací klíč zašifrovaný veřejným klíčem certifikátu zařízení.
Klient vytvoří instanci AVContentKeySession a přidá k ní stopu obsahu. Systém sestaví požadavek SPC (Server Playback Context), který obsahuje identifikátor zařízení a certifikát aplikace ověřený Applem. Tento požadavek je odeslán na licenční server přes HTTPS.
Licenční server validuje SPC, vyjme klíč obsahu ze své databáze a zašifruje jej veřejným klíčem zařízení, čímž vytvoří CKC (Content Key Context). CKC se vrátí klientovi, kde jej AVContentKeySession dešifruje pomocí soukromého klíče 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)
Architektura FairPlay zahrnuje několik vzájemně propojených komponent: certifikát aplikace, Key Envelope, Secure Enclave a modul dešifrování obsahu. Každá komponenta hraje svou roli v ochranném řetězci od serveru až po obrazovku uživatele.
| Komponenta | Funkce | Kde se provádí |
|---|---|---|
| Certifikát aplikace | Identifikace aplikace vůči licenčnímu serveru | Uložen v balíčku aplikace |
| SPC | Server Playback Context — požadavek na licenci | Vytváří jej AVContentKeySession |
| CKC | Content Key Context — odpověď s klíčem | Zpracovává jej Secure Enclave |
| Secure Enclave | Hardwarové uložení a dešifrování klíčů | Hardwarový koprocesor SoC |
| Key Envelope | Kontejner pro klíč s metadaty licence | Vytváří jej licenční server |
Pro práci s FairPlay musí vývojář získat certifikát FPS od Applu prostřednictvím programu Apple Developer. Certifikát obsahuje veřejný klíč asymetrického páru, jehož soukromou část používá Secure Enclave pro dešifrování CKC.
Certifikát aplikace se přidá do balíčku projektu a při sestavení je automaticky podepsán prostřednictvím Xcode. Při prvním přehrávání chráněného obsahu systém ověří platnost certifikátu a vyžádá licenci.
Secure Enclave je vyhrazený koprocesor na čipech řady A a M od Applu, který běží na izolovaném operačním systému L4. Zodpovídá za generování a ukládání soukromých klíčů, dešifrování CKC a předání klíče obsahu modulu dešifrování videa.
Všechny kryptografické operace probíhají výhradně uvnitř Secure Enclave a klíče nikdy neopouštějí chráněnou oblast. Útoky postranními kanály na datovou sběrnici mezi Secure Enclave a hlavním procesorem jsou blokovány hardwarovým monitorováním integrity.
Integrace FairPlay do aplikací pro iOS a tvOS probíhá přes AVFoundation a vyžaduje implementaci protokolů AVContentKeySessionDelegate a AVAssetResourceLoaderDelegate. Vývojář musí zpracovat čtyři klíčové události: získání SPC, odeslání na server, přijetí CKC a předání přehrávači.
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)
)
}
}
Před zahájením přehrávání je nutné načíst certifikát aplikace z balíčku a připravit identifikátor obsahu (nejčastěji URL streamu nebo identifikátor filmu). Certifikát musí být platný alespoň po dobu výpůjčky obsahu, jinak licencování skončí chybou.
Identifikátor obsahu se předává licenčnímu systému ve fázi vytváření SPC. Licenční server tento identifikátor používá k vyhledání odpovídajícího klíče a pravidel přehrávání včetně časových omezení a omezení počtu zařízení.
Během licencování mohou nastat chyby: vypršení certifikátu, nesprávný identifikátor obsahu nebo chybějící přístupová práva uživatele. Chyby FairPlay jsou vraceny prostřednictvím delegáta contentKeySession:didFailWithError a měly by být zpracovány zobrazením odpovídajícího rozhraní uživateli.
Typické kódy chyb zahrnují FP_NO_ENTITLEMENT při chybějícím předplatném a FP_REQUEST_TIMEOUT při problémech se sítí. Doporučuje se implementovat logiku opakovaných pokusů s exponenciálním zpožděním pro dočasné síťové výpadky.
FairPlay Streaming je protokol pro ochranu streamovaného videa na bázi HLS, který využívá šifrování segmentů a mechanismus klíčů s omezenou dobou platnosti. Poskytovatel obsahu nasazuje vlastní licenční server, který se integruje se systémem autentizace uživatelů.
Licenční server obdrží od klienta požadavek SPC, vyjme z něj identifikátor zařízení a obsahu, ověří práva uživatele v backendu a vytvoří odpověď CKC. Klíč obsahu je šifrován veřejným klíčem zařízení z certifikátu FPS.
Licence FairPlay může obsahovat časová omezení (výpůjčka na 48 hodin), počet zařízení (maximálně 5 autorizovaných) a kvalitu přehrávání (omezení na 1080p u základního tarifu). Pravidla se nastavují na straně serveru a balí se do Key Envelope.
Je důležité poznamenat, že pravidla FairPlay se uplatňují na úrovni Secure Enclave a nelze je obejít softwarovými metodami na úrovni operačního systému. I při jailbreaku hardwarová ochrana zabraňuje získání klíče nebo změně parametrů licence.
| Parametr | FairPlay | Widevine | PlayReady |
|---|---|---|---|
| Ekosystém | Apple (iOS, tvOS, macOS) | Google (Android, Chrome) | Microsoft (Windows, Xbox) |
| Maximální kvalita | 4K HDR Dolby Vision | 4K UHD | 4K UHD |
| Hardwarová ochrana | Secure Enclave | TEE | TPM + TEE |
| Požadavky na vývojáře | Certifikát FPS od Applu | Nejsou nutné | Licence od Microsoftu |
Podpora FairPlay Streaming závisí na verzi operačního systému a typu zařízení. Od iOS 10 a tvOS 10 je API AVContentKeySession dostupné pro všechny aplikace, ale hardwarové urychlení přes Secure Enclave je vyžadováno pouze pro obsah v kvalitě 4K HDR. Na zařízeních s čipem A8–A10 je dostupné pouze maximální rozlišení 1080p.
V iOS 14 Apple přidal podporu více relací FairPlay, což aplikaci umožňuje přehrávat více chráněných streamů současně — například obraz v obraze s různými licencemi. iOS 15 rozšířil protokol o podporu aktualizace klíčů na pozadí pro dlouhodobé sledování.
Pro multiplatformní streamingové služby se FairPlay používá jako součást multi-DRM architektury spolu s Widevine a PlayReady. Agregátory licencí, jako jsou Axinom a EZDRM, poskytují jednotné API, které překládá požadavky do formátu SPC pro FairPlay a do formátu MediaDrm pro Widevine, čímž zjednodušují integraci na všech platformách.
Často kladené otázky
FairPlay — technologie DRM od Applu zabudovaná do iOS, tvOS a macOS pro ochranu videobsahu. Využívá hardwarové šifrování přes Secure Enclave a protokol FairPlay Streaming pro bezpečný přenos dešifrovacích klíčů na zařízeních Apple.
Pro získání certifikátu FPS je nutné zaregistrovat se v programu Apple Developer, vytvořit certifikát v sekci Certificates, Identifiers & Profiles a stáhnout jej ve formátu DER. Certifikát se přidá do balíčku projektu Xcode a při sestavení se podepíše.
Ne, FairPlay není na Androidu k dispozici, protože jde o proprietární technologii Applu vázanou na hardwarovou architekturu Secure Enclave v čipech řady A a M. Pro zařízení s Androidem se používá Widevine DRM od Googlu.
FairPlay je obecný název technologie DRM od Applu, zatímco FairPlay Streaming (FPS) je konkrétní protokol pro ochranu streamů HLS. FPS používá mechanismy FairPlay pro šifrování segmentů videa a správu licencí přes AVContentKeySession.
Licence FairPlay může nastavit omezení na dobu sledování, maximální kvalitu videa (720p, 1080p, 4K), počet zařízení a dobu platnosti klíče. Všechna pravidla se provádějí hardwarově v Secure Enclave a nelze je obejít.
Shrnutí
Vyvineme mobilní aplikaci na klíč
IT Sectr vytváří aplikace pro iOS a Android pro startupy a podniky od roku 2017. Poradíme vám a navrhneme nejlepší řešení.
Přečtěte si také