FairPlay è una tecnologia DRM proprietaria sviluppata da Apple per proteggere i contenuti video nell’ecosistema iOS, tvOS e macOS. Il sistema utilizza Secure Enclave e crittografia hardware per l’archiviazione sicura delle chiavi, consentendo ai servizi di streaming di fornire contenuti in qualità 4K HDR. Secondo la documentazione Apple Developer (2025), FairPlay Streaming è supportato su tutti i dispositivi Apple con chip A8 e successivi.
Punti chiave
FairPlay è una tecnologia DRM creata da Apple e integrata nei sistemi operativi iOS, tvOS, iPadOS e macOS per proteggere i contenuti audio e video da utilizzi non autorizzati. Originariamente sviluppata per iTunes e iPod, si è evoluta in un sistema completo di protezione dei contenuti in streaming attraverso il protocollo FairPlay Streaming.
A differenza di altre soluzioni DRM, FairPlay è completamente integrata nell’architettura hardware dei dispositivi Apple. Le chiavi di decrittografia sono memorizzate in Secure Enclave — un coprocessore protetto isolato dal sistema operativo principale, rendendo l’estrazione delle chiavi praticamente impossibile anche con jailbreak.
La storia di FairPlay è iniziata nel 2003 con l’iTunes Store, dove la crittografia dei file AAC veniva applicata nel formato proprietario M4P. Nel 2009, Apple ha presentato FairPlay Streaming — un protocollo di protezione video in streaming basato su HLS, che in seguito è diventato obbligatorio per Apple TV e app iOS.
A partire da iOS 10 e tvOS 10, Apple ha aperto FairPlay Streaming agli sviluppatori terzi attraverso il framework AVFoundation. Oggi, Netflix, Amazon Prime Video e Disney+ utilizzano FairPlay per proteggere i contenuti sui dispositivi Apple fino alla risoluzione 4K HDR con Dolby Vision.
Il funzionamento di FairPlay si basa su un processo in tre fasi: packaging dei contenuti, distribuzione tramite CDN e decrittografia sul dispositivo. Nella fase di packaging, il video viene crittografato con AES-128 o AES-256 e le chiavi di crittografia vengono legate a un dispositivo specifico attraverso il meccanismo Key Envelope.
Quando si richiede un contenuto, il lettore avvia una sessione FairPlay tramite AVContentKeySession, che invia una richiesta al server di licenze del fornitore di contenuti. Il server verifica i diritti di accesso e restituisce la chiave di decrittografia crittografata con la chiave pubblica del certificato del dispositivo.
Il client crea un’istanza di AVContentKeySession e vi aggiunge la traccia del contenuto. Il sistema genera una richiesta SPC (Server Playback Context) contenente l’identificatore del dispositivo e il certificato dell’applicazione firmato da Apple. Questa richiesta viene inviata al server di licenze via HTTPS.
Il server di licenze convalida la SPC, recupera la chiave del contenuto dal suo database e la crittografa con la chiave pubblica del dispositivo, formando un CKC (Content Key Context). Il CKC viene restituito al client, dove AVContentKeySession lo decrittografa utilizzando la chiave privata di 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)
L’architettura di FairPlay include diversi componenti interconnessi: certificato dell’applicazione, Key Envelope, Secure Enclave e modulo di decrittografia dei contenuti. Ogni componente svolge il suo ruolo nella catena di protezione dal server allo schermo dell’utente.
| Componente | Funzione | Dove viene eseguito |
|---|---|---|
| Certificato dell’applicazione | Identifica l’app presso il server di licenze | Archiviato nel bundle dell’app |
| SPC | Server Playback Context — richiesta di licenza | Generato da AVContentKeySession |
| CKC | Content Key Context — risposta con chiave | Elaborato da Secure Enclave |
| Secure Enclave | Archiviazione e decrittografia hardware delle chiavi | Coprocessore hardware sul SoC |
| Key Envelope | Contenitore di chiavi con metadati della licenza | Generato dal server di licenze |
Per lavorare con FairPlay, lo sviluppatore deve ottenere un certificato FPS da Apple tramite il programma Apple Developer. Il certificato include la chiave pubblica di una coppia asimmetrica, la cui parte privata viene utilizzata da Secure Enclave per decrittografare il CKC.
Il certificato dell’applicazione viene aggiunto al bundle del progetto e firmato automaticamente durante la compilazione tramite Xcode. Alla prima riproduzione di contenuti protetti, il sistema verifica la validità del certificato e richiede una licenza.
Secure Enclave è un coprocessore dedicato sui chip Apple delle serie A e M, che esegue il sistema operativo isolato L4. È responsabile della generazione e dell’archiviazione delle chiavi private, della decrittografia del CKC e del trasferimento della chiave del contenuto al modulo di decrittografia video.
Tutte le operazioni crittografiche vengono eseguite esclusivamente all’interno di Secure Enclave e le chiavi non lasciano mai l’area protetta. Gli attacchi side-channel sul bus dati tra Secure Enclave e il processore principale vengono bloccati dal monitoraggio dell’integrità hardware.
L’integrazione di FairPlay nelle app iOS e tvOS avviene tramite AVFoundation e richiede l’implementazione dei protocolli AVContentKeySessionDelegate e AVAssetResourceLoaderDelegate. Lo sviluppatore deve gestire quattro eventi chiave: ricevere SPC, inviarlo al server, ricevere CKC e passarlo al lettore.
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)
)
}
}
Prima di iniziare la riproduzione, è necessario caricare il certificato dell’applicazione dal bundle e preparare l’identificatore del contenuto (di solito l’URL del flusso o l’ID del film). Il certificato deve essere valido almeno per la durata del noleggio del contenuto, altrimenti la licenza fallirà.
L’identificatore del contenuto viene passato al sistema di licenze nella fase di formazione della SPC. Il server di licenze utilizza questo identificatore per trovare la chiave corrispondente e le politiche di riproduzione, incluse le restrizioni di tempo e dispositivi.
Durante la licenza possono verificarsi errori: scadenza del certificato, identificatore del contenuto non valido, mancanza di diritti di accesso dell’utente. Gli errori di FairPlay vengono restituiti tramite il delegato contentKeySession:didFailWithError e devono essere gestiti mostrando l’interfaccia utente appropriata.
I codici di errore tipici includono FP_NO_ENTITLEMENT in assenza di abbonamento e FP_REQUEST_TIMEOUT per problemi di rete. Si raccomanda di implementare la logica di ripetizione con backoff esponenziale per i guasti di rete temporanei.
FairPlay Streaming è un protocollo di protezione video in streaming basato su HLS che utilizza la crittografia dei segmenti e un meccanismo di chiavi con durata limitata. Il fornitore di contenuti implementa il proprio server di licenze, integrato con il sistema di autenticazione degli utenti.
Il server di licenze riceve una richiesta SPC dal client, estrae gli identificatori del dispositivo e del contenuto, verifica i diritti dell’utente nel backend e forma una risposta CKC. La chiave del contenuto viene crittografata con la chiave pubblica del dispositivo dal certificato FPS.
Una licenza FairPlay può contenere restrizioni di tempo (noleggio di 48 ore), limiti di dispositivi (massimo 5 autorizzati) e restrizioni sulla qualità di riproduzione (limitata a 1080p per il piano base). Le politiche sono impostate lato server e impacchettate in Key Envelope.
È importante notare che le politiche FairPlay vengono applicate a livello di Secure Enclave e non possono essere aggirate con metodi software a livello di sistema operativo. Anche con jailbreak, la protezione hardware impedisce l’estrazione della chiave o la modifica dei parametri della licenza.
| Parametro | FairPlay | Widevine | PlayReady |
|---|---|---|---|
| Ecosistema | Apple (iOS, tvOS, macOS) | Google (Android, Chrome) | Microsoft (Windows, Xbox) |
| Qualità massima | 4K HDR Dolby Vision | 4K UHD | 4K UHD |
| Protezione hardware | Secure Enclave | TEE | TPM + TEE |
| Requisiti per lo sviluppatore | Certificato FPS Apple | Non richiesto | Licenza Microsoft |
Il supporto di FairPlay Streaming dipende dalla versione del sistema operativo e dal tipo di dispositivo. Da iOS 10 e tvOS 10, l’API AVContentKeySession è disponibile per tutte le app, ma l’accelerazione hardware tramite Secure Enclave è necessaria solo per i contenuti in qualità 4K HDR. Sui dispositivi con chip A8–A10, la risoluzione massima è limitata a 1080p.
In iOS 14, Apple ha aggiunto il supporto per più sessioni FairPlay, consentendo a un’app di riprodurre più flussi protetti contemporaneamente — ad esempio, picture-in-picture con licenze diverse. iOS 15 ha esteso il protocollo con il supporto del rinnovo delle chiavi in background per la visione prolungata.
Per i servizi di streaming multipiattaforma, FairPlay viene utilizzato come parte di un’architettura multi-DRM insieme a Widevine e PlayReady. Gli aggregatori di licenze, come Axinom ed EZDRM, forniscono un’API unificata che traduce le richieste nel formato SPC per FairPlay e nel formato MediaDrm per Widevine, semplificando l’integrazione su tutte le piattaforme.
Domande frequenti
FairPlay è una tecnologia DRM di Apple integrata in iOS, tvOS e macOS per proteggere i contenuti video. Utilizza la crittografia hardware tramite Secure Enclave e il protocollo FairPlay Streaming per il trasferimento sicuro delle chiavi di decrittografia sui dispositivi Apple.
Per ottenere un certificato FPS, è necessario registrarsi al programma Apple Developer, creare un certificato nella sezione Certificates, Identifiers & Profiles e scaricarlo in formato DER. Il certificato viene aggiunto al bundle del progetto Xcode e firmato durante la compilazione.
No, FairPlay non è disponibile su Android, poiché è una tecnologia proprietaria di Apple legata all’architettura hardware Secure Enclave sui chip delle serie A e M. I dispositivi Android utilizzano Widevine DRM di Google.
FairPlay è il nome generale della tecnologia DRM di Apple, mentre FairPlay Streaming (FPS) è un protocollo specifico per proteggere i flussi HLS. FPS utilizza i meccanismi di FairPlay per crittografare i segmenti video e gestire le licenze tramite AVContentKeySession.
Una licenza FairPlay può impostare restrizioni sul tempo di visione, sulla qualità video massima (720p, 1080p, 4K), sul numero di dispositivi e sulla durata della chiave. Tutte le politiche vengono eseguite dall’hardware in Secure Enclave e non possono essere aggirate.
Riepilogo
Svilupperemo un'applicazione mobile chiavi in mano
IT Sectr crea applicazioni iOS e Android per startup e aziende dal 2017. Ti consulteremo e ti proporremo la soluzione migliore.
Leggi anche