FairPlay är en proprietär DRM-teknik utvecklad av Apple för att skydda videoinnehåll i ekosystemet iOS, tvOS och macOS. Systemet använder Secure Enclave och hårdvarukryptering för säker lagring av nycklar, vilket gör att streamingtjänster kan leverera innehåll i 4K HDR-kvalitet. Enligt Apples utvecklardokumentation (2025) stöds FairPlay Streaming på alla Apple-enheter med A8-chip och nyare.
Huvudpunkter
FairPlay — är en DRM-teknik skapad av Apple och integrerad i operativsystemen iOS, tvOS, iPadOS och macOS för att skydda ljud- och videoinnehåll från obehörig användning. Ursprungligen utvecklad för iTunes och iPod, har den utvecklats till ett komplett system för streaming av innehållsskydd via FairPlay Streaming-protokollet.
Till skillnad från andra DRM-lösningar är FairPlay fullt integrerad i hårdvaruarkitekturen hos Apple-enheter. Dekrypteringsnycklar lagras i Secure Enclave — en skyddad samprocessor isolerad från huvudoperativsystemet, vilket gör nyckelutvinning nästan omöjlig även med jailbreak.
FairPlays historia började 2003 med iTunes Store, där kryptering av AAC-filer med det proprietära M4P-formatet användes. 2009 introducerade Apple FairPlay Streaming — ett protokoll för videoströmningsskydd baserat på HLS, som senare blev obligatoriskt för Apple TV och iOS-appar.
Från och med iOS 10 och tvOS 10 öppnade Apple upp åtkomst till FairPlay Streaming för tredjepartsutvecklare via AVFoundation-ramverket. Idag använder Netflix, Amazon Prime Video och Disney+ FairPlay för att skydda innehåll på Apple-enheter upp till 4K HDR-upplösning med Dolby Vision.
FairPlays funktion bygger på en trestegsprocess: paketering av innehåll, distribution via CDN och dekryptering på enheten. I paketeringsfasen krypteras video med AES-128 eller AES-256, och krypteringsnycklar kopplas till en specifik enhet via Key Envelope-mekanismen.
Vid begäran av innehåll initierar spelaren en FairPlay-session via AVContentKeySession, som skickar en begäran till innehållsleverantörens licen server. Servern kontrollerar åtkomsträttigheter och returnerar dekrypteringsnyckeln, krypterad med enhetens certifikats publika nyckel.
Klienten skapar en AVContentKeySession-instans och lägger till innehållsspåret. Systemet bildar en SPC-begäran (Server Playback Context) som innehåller enhetsidentifieraren och applikationscertifikatet signerat av Apple. Denna begäran skickas till licen servern via HTTPS.
Licen servern validerar SPC, extraherar innehållsnyckeln från sin databas och krypterar den med enhetens publika nyckel, vilket bildar en CKC (Content Key Context). CKC returneras till klienten där AVContentKeySession dekrypterar den med Secure Enclaves privata nyckel.
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)
FairPlays arkitektur omfattar flera sammankopplade komponenter: applikationscertifikatet, Key Envelope, Secure Enclave och innehållsdekrypteringsmodulen. Varje komponent har sin roll i skyddskedjan från server till användarens skärm.
| Komponent | Funktion | Var utförs |
|---|---|---|
| Applikationscertifikat | Identifiering av appen hos licen servern | Lagras i appens bundle |
| SPC | Server Playback Context — licensbegäran | Bildas av AVContentKeySession |
| CKC | Content Key Context — svar med nyckel | Bearbetas av Secure Enclave |
| Secure Enclave | Hårdvarulagring och dekryptering av nycklar | Hårdvarusamm processor i SoC |
| Key Envelope | Container för nyckel med licensmetadata | Bildas av licen servern |
För att arbeta med FairPlay måste utvecklaren skaffa ett FPS-certifikat från Apple via Apples utvecklarprogram. Certifikatet innehåller den publika nyckeln från ett asymmetriskt par, vars privata del används av Secure Enclave för att dekryptera CKC.
Applikationscertifikatet läggs till i projektets bundle och signeras automatiskt vid kompilering via Xcode. Vid första uppspelning av skyddat innehåll kontrollerar systemet certifikatets giltighet och begär en licens.
Secure Enclave — är en dedikerad samprocessor på Apples A-serie och M-serie chips, som körs på ett isolerat L4-operativsystem. Den ansvarar för generering och lagring av privata nycklar, dekryptering av CKC och överföring av innehållsnyckeln till videodekrypteringsmodulen.
Alla kryptografiska operationer utförs uteslutande inuti Secure Enclave, och nycklar lämnar aldrig det skyddade området. Sidokanalsattacker på databussen mellan Secure Enclave och huvudprocessorn blockeras av hårdvarubaserad integritetsövervakning.
Integration av FairPlay i iOS- och tvOS-appar görs via AVFoundation och kräver implementering av protokollen AVContentKeySessionDelegate och AVAssetResourceLoaderDelegate. Utvecklaren måste hantera fyra nyckelhändelser: inhämtning av SPC, sändning till server, mottagning av CKC och överlämning till spelaren.
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)
)
}
}
Innan uppspelning påbörjas måste applikationscertifikatet laddas från bundle och innehållsidentifieraren (vanligtvis strömmens URL eller film-ID) förberedas. Certifikatet måste vara giltigt under minst hela hyresperioden för innehållet, annars misslyckas licensieringen.
Innehållsidentifieraren skickas till licensieringssystemet vid bildandet av SPC. Licen servern använder denna identifierare för att hitta motsvarande nyckel och uppspelningspolicy, inklusive tids- och enhetsbegränsningar.
Under licensieringsprocessen kan fel uppstå: utgånget certifikat, felaktig innehållsidentifierare, bristande åtkomsträttigheter för användaren. FairPlay-fel returneras via delegaten contentKeySession:didFailWithError och måste hanteras med lämpligt användargränssnitt.
Typiska felkoder inkluderar FP_NO_ENTITLEMENT vid saknat abonnemang och FP_REQUEST_TIMEOUT vid nätverksproblem. Det rekommenderas att implementera återförsökslogik med exponentiell fördröjning för tillfälliga nätverksfel.
FairPlay Streaming är ett protokoll för skydd av videoströmning baserat på HLS, som använder segmentkryptering och en nyckelmekanism med begränsad livslängd. Innehållsleverantören distribuerar en egen licen server som är integrerad med användarautentiseringssystemet.
Licen servern tar emot från klienten en SPC-begäran, extraherar enhets- och innehållsidentifieraren, kontrollerar användarens rättigheter i backend och bildar ett CKC-svar. Innehållsnyckeln krypteras med enhetens publika nyckel från FPS-certifikatet.
En FairPlay-licens kan innehålla tidsbegränsningar (48-timmars hyra), antal enheter (max 5 auktoriserade) och uppspelningskvalitet (begränsning till 1080p för basabonnemang). Policyn ställs in på serversidan och paketeras i Key Envelope.
Det är viktigt att notera att FairPlays policy tillämpas på Secure Enclave-nivå och inte kan kringgås med programvarubaserade metoder på OS-nivå. Även med jailbreak förhindrar hårdvaruskydd utvinning av nyckeln eller ändring av licensparametrar.
| Parameter | FairPlay | Widevine | PlayReady |
|---|---|---|---|
| Ekosystem | Apple (iOS, tvOS, macOS) | Google (Android, Chrome) | Microsoft (Windows, Xbox) |
| Maximal kvalitet | 4K HDR Dolby Vision | 4K UHD | 4K UHD |
| Hårdvaruskydd | Secure Enclave | TEE | TPM + TEE |
| Krav på utvecklare | Apple FPS-certifikat | Krävs inte | Microsoft-licens |
Stöd för FairPlay Streaming beror på operativsystemets version och enhetstyp. Från och med iOS 10 och tvOS 10 är AVContentKeySession API tillgängligt för alla appar, men hårdvaruacceleration via Secure Enclave krävs endast för innehåll i 4K HDR-kvalitet. På enheter med A8–A10-chips är maximal upplösning 1080p.
I iOS 14 lade Apple till stöd för flera FairPlay-sessioner, vilket gör att en app kan spela upp flera skyddade strömmar samtidigt — till exempel bild-i-bild med olika licenser. iOS 15 utökade protokollet med stöd för bakgrundsförnyelse av nycklar för långvarig tittning.
För plattformsoberoende streamingtjänster används FairPlay som en del av en multi-DRM-arkitektur tillsammans med Widevine och PlayReady. Licensaggregatorer, såsom Axinom och EZDRM, tillhandahåller ett enhetligt API som översätter begäranden till SPC-format för FairPlay och MediaDrm-format för Widevine, vilket förenklar integration på alla plattformar.
Vanliga frågor
FairPlay — är en DRM-teknik från Apple, inbyggd i iOS, tvOS och macOS för att skydda videoinnehåll. Den använder hårdvarukryptering via Secure Enclave och FairPlay Streaming-protokollet för säker överföring av dekrypteringsnycklar på Apple-enheter.
För att få ett FPS-certifikat måste du registrera dig i Apple Developer-programmet, skapa ett certifikat under Certificates, Identifiers & Profiles och ladda ner det i DER-format. Certifikatet läggs till i Xcode-projektets bundle och signeras vid kompilering.
Nej, FairPlay är inte tillgängligt på Android eftersom det är Apples proprietära teknik som är kopplad till Secure Enclave-hårdvaruarkitekturen på A-serie och M-serie chips. För Android-enheter används Widevine DRM från Google.
FairPlay är det allmänna namnet på Apples DRM-teknik, medan FairPlay Streaming (FPS) är det specifika protokollet för att skydda HLS-strömmar. FPS använder FairPlay-mekanismer för kryptering av videosegment och licenshantering via AVContentKeySession.
En FairPlay-licens kan sätta begränsningar på visningstid, maximal videokvalitet (720p, 1080p, 4K), antal enheter och nyckelns giltighetstid. All policy utförs på hårdvarunivå i Secure Enclave och kan inte kringgås.
Sammanfattning
Vi utvecklar en mobil applikation nyckelfärdigt
IT Sectr skapar iOS- och Android-applikationer för startups och företag sedan 2017. Vi ger dig råd och föreslår den bästa lösningen.
Läs också