FairPlay is een propriëtaire DRM-technologie ontwikkeld door Apple voor de bescherming van video-inhoud in het iOS-, tvOS- en macOS-ecosysteem. Het systeem gebruikt Secure Enclave en hardwarematige encryptie voor veilige opslag van sleutels, waardoor streamingdiensten inhoud kunnen leveren in 4K HDR-kwaliteit. Volgens de Apple Developer-documentatie (2025) wordt FairPlay Streaming ondersteund op alle Apple-apparaten met een A8-chip en nieuwer.
Belangrijkste punten
FairPlay — is een DRM-technologie gemaakt door Apple en geïntegreerd in de besturingssystemen iOS, tvOS, iPadOS en macOS om audio- en video-inhoud te beschermen tegen ongeautoriseerd gebruik. Oorspronkelijk ontwikkeld voor iTunes en iPod, is het geëvolueerd tot een volledig systeem voor streaming contentbescherming via het FairPlay Streaming-protocol.
In tegenstelling tot andere DRM-oplossingen is FairPlay volledig geïntegreerd in de hardware-architectuur van Apple-apparaten. Decoderingssleutels worden opgeslagen in Secure Enclave — een beveiligde coprocessor die geïsoleerd is van het hoofd-OS, waardoor het extraheren van sleutels vrijwel onmogelijk is, zelfs met een jailbreak.
De geschiedenis van FairPlay begon in 2003 met de iTunes Store, waar encryptie van AAC-bestanden met het propriëtaire M4P-formaat werd toegepast. In 2009 introduceerde Apple FairPlay Streaming — een protocol voor videostreamingbescherming op basis van HLS, dat later verplicht werd voor Apple TV en iOS-apps.
Vanaf iOS 10 en tvOS 10 opende Apple de toegang tot FairPlay Streaming voor externe ontwikkelaars via het AVFoundation-framework. Tegenwoordig gebruiken Netflix, Amazon Prime Video en Disney+ FairPlay voor contentbescherming op Apple-apparaten tot 4K HDR-resolutie met Dolby Vision.
De werking van FairPlay is gebaseerd op een driefasenproces: verpakking van content, distributie via CDN en decodering op het apparaat. In de verpakkingsfase wordt video versleuteld met AES-128 of AES-256, en worden versleutelingssleutels gekoppeld aan een specifiek apparaat via het Key Envelope-mechanisme.
Bij het aanvragen van content initieert de speler een FairPlay-sessie via AVContentKeySession, die een verzoek naar de licentieserver van de contentprovider stuurt. De server controleert de toegangsrechten en retourneert de decoderingssleutel, versleuteld met de openbare sleutel van het apparaatcertificaat.
De client maakt een AVContentKeySession-instantie aan en voegt de contenttrack toe. Het systeem vormt een SPC-verzoek (Server Playback Context) dat de apparaatidentificatie en het door Apple ondertekende applicatiecertificaat bevat. Dit verzoek wordt via HTTPS naar de licentieserver gestuurd.
De licentieserver valideert de SPC, haalt de contentsleutel uit zijn database en versleutelt deze met de openbare sleutel van het apparaat, waarmee een CKC (Content Key Context) wordt gevormd. De CKC wordt teruggegeven aan de client, waar AVContentKeySession deze decodeert met de privésleutel van de 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)
De architectuur van FairPlay omvat verschillende onderling verbonden componenten: het applicatiecertificaat, Key Envelope, Secure Enclave en de contentdecoderingmodule. Elk onderdeel speelt zijn rol in de beveiligingsketen van server tot aan het scherm van de gebruiker.
| Component | Functie | Waar uitgevoerd |
|---|---|---|
| Applicatiecertificaat | Identificatie van de app bij de licentieserver | Opgeslagen in de app-bundle |
| SPC | Server Playback Context — licentieverzoek | Gevormd door AVContentKeySession |
| CKC | Content Key Context — antwoord met sleutel | Verwerkt door Secure Enclave |
| Secure Enclave | Hardwarematige opslag en decodering van sleutels | Hardware-coprocessor van SoC |
| Key Envelope | Container voor sleutel met licentiemetadata | Gevormd door licentieserver |
Om met FairPlay te werken moet de ontwikkelaar een FPS-certificaat van Apple verkrijgen via het Apple Developer-programma. Het certificaat bevat de openbare sleutel van een asymmetrisch paar, waarvan het privégedeelte door Secure Enclave wordt gebruikt om CKC te decoderen.
Het applicatiecertificaat wordt toegevoegd aan de projectbundel en automatisch ondertekend tijdens compilatie via Xcode. Bij de eerste weergave van beveiligde inhoud controleert het systeem de geldigheid van het certificaat en vraagt een licentie aan.
Secure Enclave — is een speciale coprocessor op Apple A-serie en M-serie chips, die draait op een geïsoleerd L4-besturingssysteem. Het is verantwoordelijk voor het genereren en opslaan van privésleutels, decodering van CKC en overdracht van de contentsleutel naar de videodecoderingsmodule.
Alle cryptografische bewerkingen worden uitsluitend binnen de Secure Enclave uitgevoerd en sleutels verlaten nooit het beveiligde gebied. Zijkanalaanvallen op de databus tussen Secure Enclave en de hoofdprocessor worden geblokkeerd door hardwarematige integriteitsbewaking.
Integratie van FairPlay in iOS- en tvOS-apps gebeurt via AVFoundation en vereist implementatie van de protocollen AVContentKeySessionDelegate en AVAssetResourceLoaderDelegate. De ontwikkelaar moet vier belangrijke gebeurtenissen afhandelen: verkrijgen van SPC, verzenden naar server, ontvangen van CKC en doorgeven aan de speler.
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)
)
}
}
Voordat het afspelen begint, moet het applicatiecertificaat uit de bundel worden geladen en de contentidentificatie (meestal de stream-URL of film-ID) worden voorbereid. Het certificaat moet geldig zijn gedurende ten minste de huurperiode van de content, anders mislukt de licentiëring.
De contentidentificatie wordt doorgegeven aan het licentiesysteem tijdens de vorming van SPC. De licentieserver gebruikt deze identificatie om de bijbehorende sleutel en afspeelbeleidsregels te vinden, inclusief tijds- en apparaatbeperkingen.
Tijdens het licentiëringsproces kunnen fouten optreden: verlopen certificaat, onjuiste contentidentificatie, ontbrekende toegangsrechten van de gebruiker. FairPlay-fouten worden geretourneerd via de delegate contentKeySession:didFailWithError en moeten worden afgehandeld met passende UI-meldingen aan de gebruiker.
Standaard foutcodes zijn onder andere FP_NO_ENTITLEMENT bij ontbrekend abonnement en FP_REQUEST_TIMEOUT bij netwerkproblemen. Het wordt aanbevolen om logica voor herhaalde pogingen met exponentiële vertraging te implementeren voor tijdelijke netwerkstoringen.
FairPlay Streaming is een protocol voor bescherming van videostreaming op basis van HLS, dat segmentencryptie en een sleutelmechanisme met beperkte geldigheidsduur gebruikt. De contentprovider implementeert een eigen licentieserver die is geïntegreerd met het gebruikersauthenticatiesysteem.
De licentieserver ontvangt van de client een SPC-verzoek, haalt daaruit de apparaat- en contentidentificatie, controleert de gebruikersrechten in de backend en vormt een CKC-antwoord. De contentsleutel wordt versleuteld met de openbare sleutel van het apparaat uit het FPS-certificaat.
Een FairPlay-licentie kan tijdsbeperkingen (48-uurs huur), aantal apparaten (maximaal 5 geautoriseerd) en afspeelkwaliteit (beperking tot 1080p voor basisabonnement) bevatten. Het beleid wordt aan de serverzijde ingesteld en verpakt in Key Envelope.
Het is belangrijk op te merken dat FairPlay-beleid op Secure Enclave-niveau wordt toegepast en niet kan worden omzeild met softwarematige methoden op OS-niveau. Zelfs met een jailbreak voorkomt hardwarebeveiliging het extraheren van de sleutel of het wijzigen van licentieparameters.
| Parameter | FairPlay | Widevine | PlayReady |
|---|---|---|---|
| Ecosysteem | Apple (iOS, tvOS, macOS) | Google (Android, Chrome) | Microsoft (Windows, Xbox) |
| Maximale kwaliteit | 4K HDR Dolby Vision | 4K UHD | 4K UHD |
| Hardwarebeveiliging | Secure Enclave | TEE | TPM + TEE |
| Vereisten voor ontwikkelaar | Apple FPS-certificaat | Niet vereist | Microsoft-licentie |
Ondersteuning voor FairPlay Streaming is afhankelijk van de versie van het besturingssysteem en het apparaattype. Vanaf iOS 10 en tvOS 10 is de AVContentKeySession API beschikbaar voor alle apps, maar hardwareversnelling via Secure Enclave is alleen vereist voor content in 4K HDR-kwaliteit. Op apparaten met A8–A10-chips is de maximale resolutie 1080p.
In iOS 14 voegde Apple ondersteuning voor meerdere FairPlay-sessies toe, waardoor een app meerdere beveiligde streams tegelijk kan afspelen — bijvoorbeeld picture-in-picture met verschillende licenties. iOS 15 breidde het protocol uit met ondersteuning voor achtergrondvernieuwing van sleutels voor langdurig kijken.
Voor cross-platform streamingdiensten wordt FairPlay gebruikt als onderdeel van een multi-DRM-architectuur samen met Widevine en PlayReady. Licentie-aggregators, zoals Axinom en EZDRM, bieden een uniforme API die verzoeken vertaalt naar SPC-formaat voor FairPlay en MediaDrm-formaat voor Widevine, waardoor integratie op alle platforms wordt vereenvoudigd.
Veelgestelde vragen
FairPlay — is een DRM-technologie van Apple, ingebouwd in iOS, tvOS en macOS voor de bescherming van video-inhoud. Het gebruikt hardwarematige encryptie via Secure Enclave en het FairPlay Streaming-protocol voor veilige overdracht van decoderingssleutels op Apple-apparaten.
Om een FPS-certificaat te verkrijgen, moet u zich registreren in het Apple Developer-programma, een certificaat aanmaken in de sectie Certificates, Identifiers & Profiles en dit downloaden in DER-formaat. Het certificaat wordt toegevoegd aan de Xcode-projectbundel en ondertekend tijdens compilatie.
Nee, FairPlay is niet beschikbaar op Android, omdat het een propriëtaire technologie van Apple is die is gekoppeld aan de Secure Enclave-hardwarearchitectuur op A-serie en M-serie chips. Voor Android-apparaten wordt Widevine DRM van Google gebruikt.
FairPlay is de algemene naam van Apple's DRM-technologie, terwijl FairPlay Streaming (FPS) het specifieke protocol is voor bescherming van HLS-streams. FPS gebruikt FairPlay-mechanismen voor encryptie van videosegmenten en licentiemanagement via AVContentKeySession.
Een FairPlay-licentie kan beperkingen opleggen aan kijktijd, maximale videokwaliteit (720p, 1080p, 4K), aantal apparaten en geldigheidsduur van de sleutel. Alle beleidsregels worden op hardwareniveau in Secure Enclave uitgevoerd en kunnen niet worden omzeild.
Samenvatting
We ontwikkelen een mobiele applicatie turnkey
IT Sectr creëert sinds 2017 iOS- en Android-applicaties voor startups en bedrijven. We adviseren u en stellen de beste oplossing voor.
Lees ook