FairPlay — to zastrzeżona technologia DRM opracowana przez Apple do ochrony treści wideo w ekosystemie iOS, tvOS i macOS. System wykorzystuje Secure Enclave i sprzętowe szyfrowanie do bezpiecznego przechowywania kluczy, co pozwala serwisom streamingowym dostarczać treści w jakości 4K HDR. Zgodnie z dokumentacją Apple Developer (2025), FairPlay Streaming jest obsługiwane na wszystkich urządzeniach Apple z układem A8 i nowszym.
Najważniejsze
FairPlay — to technologia DRM stworzona przez Apple i wdrożona w systemach operacyjnych iOS, tvOS, iPadOS i macOS do ochrony treści audio i wideo przed nieautoryzowanym użyciem. Pierwotnie opracowana dla iTunes i iPod, ewoluowała w pełnoprawny system ochrony treści strumieniowych poprzez protokół FairPlay Streaming.
W przeciwieństwie do innych rozwiązań DRM, FairPlay jest w pełni zintegrowana z architekturą sprzętową urządzeń Apple. Klucze deszyfrujące są przechowywane w Secure Enclave — chronionym koprocesorze, odizolowanym od głównego systemu operacyjnego, co czyni ekstrakcję kluczy praktycznie niemożliwą nawet przy jailbreaku.
Historia FairPlay rozpoczęła się w 2003 roku wraz z sklepem iTunes Store, gdzie stosowano szyfrowanie plików AAC z wykorzystaniem zastrzeżonego formatu M4P. W 2009 roku Apple wprowadziło FairPlay Streaming — protokół ochrony strumieniowego wideo oparty na HLS, który później stał się obowiązkowy dla Apple TV i aplikacji iOS.
Począwszy od iOS 10 i tvOS 10, Apple udostępniło FairPlay Streaming zewnętrznym deweloperom poprzez framework AVFoundation. Obecnie Netflix, Amazon Prime Video i Disney+ używają FairPlay do ochrony treści na urządzeniach Apple w rozdzielczości do 4K HDR z Dolby Vision.
Działanie FairPlay opiera się na trzyetapowym procesie: pakowanie treści, dystrybucja przez CDN i deszyfrowanie na urządzeniu. Na etapie pakowania wideo jest szyfrowane przy użyciu AES-128 lub AES-256, a klucze szyfrowania są powiązane z konkretnym urządzeniem poprzez mechanizm Key Envelope.
Przy żądaniu treści odtwarzacz inicjuje sesję FairPlay poprzez AVContentKeySession, który wysyła żądanie do serwera licencji dostawcy treści. Serwer sprawdza prawa dostępu i zwraca klucz deszyfrujący, zaszyfrowany kluczem publicznym certyfikatu urządzenia.
Klient tworzy instancję AVContentKeySession i dodaje do niej ścieżkę treści. System tworzy żądanie SPC (Server Playback Context), które zawiera identyfikator urządzenia i certyfikat aplikacji, poświadczony przez Apple. To żądanie jest wysyłane na serwer licencji przez HTTPS.
Serwer licencji waliduje SPC, wyodrębnia klucz treści ze swojej bazy danych i szyfruje go kluczem publicznym urządzenia, tworząc CKC (Content Key Context). CKC jest zwracane do klienta, gdzie AVContentKeySession odszyfrowuje go przy użyciu klucza prywatnego 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 obejmuje kilka powiązanych ze sobą komponentów: certyfikat aplikacji, Key Envelope, Secure Enclave i moduł deszyfrowania treści. Każdy komponent pełni swoją rolę w łańcuchu ochrony od serwera do ekranu użytkownika.
| Komponent | Funkcja | Gdzie jest wykonywany |
|---|---|---|
| Certyfikat aplikacji | Identyfikacja aplikacji przed serwerem licencji | Przechowywany w bundle aplikacji |
| SPC | Server Playback Context — żądanie licencji | Tworzony przez AVContentKeySession |
| CKC | Content Key Context — odpowiedź z kluczem | Przetwarzany przez Secure Enclave |
| Secure Enclave | Sprzętowe przechowywanie i deszyfrowanie kluczy | Sprzętowy koprocesor SoC |
| Key Envelope | Kontener na klucz z metadanymi licencji | Tworzony przez serwer licencji |
Do pracy z FairPlay deweloper musi uzyskać certyfikat FPS od Apple poprzez program Apple Developer. Certyfikat zawiera klucz publiczny pary asymetrycznej, której część prywatna jest używana przez Secure Enclave do deszyfrowania CKC.
Certyfikat aplikacji jest dodawany do bundle projektu i automatycznie podpisywany przy kompilacji przez Xcode. Przy pierwszym odtworzeniu chronionej treści system sprawdza ważność certyfikatu i żąda licencji.
Secure Enclave — to dedykowany koprocesor w układach Apple A-serii i M-serii, działający na izolowanym systemie L4. Odpowiada za generowanie i przechowywanie kluczy prywatnych, deszyfrowanie CKC i przekazywanie klucza treści do modułu deszyfrowania wideo.
Wszystkie operacje kryptograficzne są wykonywane wyłącznie wewnątrz Secure Enclave, a klucze nigdy nie opuszczają chronionego obszaru. Ataki kanałami bocznymi na magistralę danych między Secure Enclave a głównym procesorem są blokowane przez sprzętowy monitoring integralności.
Integracja FairPlay w aplikacjach iOS i tvOS jest wykonywana poprzez AVFoundation i wymaga implementacji protokołów AVContentKeySessionDelegate i AVAssetResourceLoaderDelegate. Deweloper musi obsłużyć cztery kluczowe zdarzenia: otrzymanie SPC, wysłanie na serwer, otrzymanie CKC i przekazanie do odtwarzacza.
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)
)
}
}
Przed rozpoczęciem odtwarzania należy załadować certyfikat aplikacji z bundle i przygotować identyfikator treści (najczęściej URL strumienia lub identyfikator filmu). Certyfikat musi być ważny przynajmniej przez okres wynajmu treści, w przeciwnym razie licencjonowanie zakończy się błędem.
Identyfikator treści jest przekazywany do systemu licencjonowania na etapie tworzenia SPC. Serwer licencji używa tego identyfikatora do wyszukania odpowiedniego klucza i polityk odtwarzania, w tym ograniczeń czasowych i urządzeniowych.
W procesie licencjonowania mogą wystąpić błędy: wygaśnięcie certyfikatu, nieprawidłowy identyfikator treści, brak praw dostępu użytkownika. Błędy FairPlay są zwracane przez delegata contentKeySession:didFailWithError i powinny być obsługiwane z wyświetleniem odpowiedniego interfejsu użytkownikowi.
Typowe kody błędów obejmują FP_NO_ENTITLEMENT przy braku subskrypcji i FP_REQUEST_TIMEOUT przy problemach sieciowych. Zaleca się implementację logiki ponownych prób z wykładniczym opóźnieniem dla tymczasowych awarii sieci.
FairPlay Streaming — to protokół ochrony strumieniowego wideo oparty na HLS, który wykorzystuje szyfrowanie segmentów i mechanizm kluczy z ograniczonym okresem ważności. Dostawca treści wdraża własny serwer licencji, który integruje się z systemem uwierzytelniania użytkowników.
Serwer licencji otrzymuje od klienta żądanie SPC, wyodrębnia z niego identyfikator urządzenia i treści, sprawdza prawa użytkownika w backendzie i tworzy odpowiedź CKC. Klucz treści jest szyfrowany kluczem publicznym urządzenia z certyfikatu FPS.
Licencja FairPlay może zawierać ograniczenia czasowe (wynajem na 48 godzin), liczbę urządzeń (maksymalnie 5 autoryzowanych) i jakość odtwarzania (ograniczenie do 1080p dla podstawowego taryfu). Polityki są ustawiane po stronie serwera i pakowane w Key Envelope.
Ważne jest, że polityki FairPlay są stosowane na poziomie Secure Enclave i nie można ich ominąć programowymi metodami na poziomie systemu operacyjnego. Nawet przy jailbreaku ochrona sprzętowa zapobiega ekstrakcji klucza lub zmianie parametrów licencji.
| Parametr | FairPlay | Widevine | PlayReady |
|---|---|---|---|
| Ekologia | Apple (iOS, tvOS, macOS) | Google (Android, Chrome) | Microsoft (Windows, Xbox) |
| Maksymalna jakość | 4K HDR Dolby Vision | 4K UHD | 4K UHD |
| Ochrona sprzętowa | Secure Enclave | TEE | TPM + TEE |
| Wymagania dla dewelopera | Certyfikat FPS Apple | Niewymagane | Licencja Microsoft |
Wsparcie dla FairPlay Streaming zależy od wersji systemu operacyjnego i typu urządzenia. Począwszy od iOS 10 i tvOS 10, API AVContentKeySession jest dostępne dla wszystkich aplikacji, ale przyspieszenie sprzętowe przez Secure Enclave jest wymagane tylko dla treści w jakości 4K HDR. Na urządzeniach z układem A8–A10 dostępna jest tylko maksymalna rozdzielczość 1080p.
W iOS 14 Apple dodało obsługę wielu sesji FairPlay, co pozwala aplikacji na jednoczesne odtwarzanie kilku chronionych strumieni — na przykład obraz w obrazie z różnymi licencjami. iOS 15 rozszerzyło protokół o obsługę tła aktualizacji kluczy dla długotrwałego oglądania.
Dla międzyplatformowych serwisów streamingowych FairPlay jest używany jako część architektury multi-DRM wraz z Widevine i PlayReady. Agregatory licencji, takie jak Axinom i EZDRM, udostępniają jednolity API, który tłumaczy żądania na format SPC dla FairPlay i format MediaDrm dla Widevine, upraszczając integrację na wszystkich platformach.
Często zadawane pytania
FairPlay — to technologia DRM od Apple, wbudowana w iOS, tvOS i macOS do ochrony treści wideo. Wykorzystuje sprzętowe szyfrowanie przez Secure Enclave i protokół FairPlay Streaming do bezpiecznego przesyłania kluczy deszyfrujących na urządzeniach Apple.
Aby uzyskać certyfikat FPS, należy zarejestrować się w programie Apple Developer, utworzyć certyfikat w sekcji Certificates, Identifiers & Profiles i pobrać go w formacie DER. Certyfikat jest dodawany do bundle projektu Xcode i podpisywany przy kompilacji.
Nie, FairPlay jest niedostępny na Androidzie, ponieważ jest to zastrzeżona technologia Apple związana z architekturą sprzętową Secure Enclave w układach A-serii i M-serii. Dla urządzeń z Androidem używany jest Widevine DRM od Google.
FairPlay to ogólna nazwa technologii DRM Apple, a FairPlay Streaming (FPS) to konkretny protokół do ochrony strumieni HLS. FPS wykorzystuje mechanizmy FairPlay do szyfrowania segmentów wideo i zarządzania licencjami przez AVContentKeySession.
Licencja FairPlay może ustawiać ograniczenia czasu oglądania, maksymalnej jakości wideo (720p, 1080p, 4K), liczby urządzeń i okresu ważności klucza. Wszystkie polityki są wykonywane sprzętowo w Secure Enclave i nie mogą być ominięte.
Podsumowanie
Opracujemy aplikację mobilną pod klucz
IT Sectr tworzy aplikacje na iOS i Androida dla startupów i firm od 2017 roku. Doradzimy Ci i zaproponujemy najlepsze rozwiązanie.
Przeczytaj również