Το FairPlay είναι μια ιδιόκτητη τεχνολογία DRM που αναπτύχθηκε από την Apple για την προστασία περιεχομένου βίντεο στο οικοσύστημα iOS, tvOS και macOS. Το σύστημα χρησιμοποιεί το Secure Enclave και κρυπτογράφηση υλικού για ασφαλή αποθήκευση κλειδιών, επιτρέποντας στις υπηρεσίες ροής να παρέχουν περιεχόμενο σε ποιότητα 4K HDR. Σύμφωνα με την τεκμηρίωση του Apple Developer (2025), το FairPlay Streaming υποστηρίζεται σε όλες τις συσκευές Apple με τσιπ A8 και νεότερο.
Βασικά σημεία
FairPlay — Είναι μια τεχνολογία DRM που δημιουργήθηκε από την Apple και ενσωματώθηκε στα λειτουργικά συστήματα iOS, tvOS, iPadOS και macOS για την προστασία περιεχομένου ήχου και βίντεο από μη εξουσιοδοτημένη χρήση. Αρχικά σχεδιασμένο για το iTunes και το iPod, εξελίχθηκε σε ένα πλήρες σύστημα προστασίας περιεχομένου ροής μέσω του πρωτοκόλλου FairPlay Streaming.
Σε αντίθεση με άλλες λύσεις DRM, το FairPlay είναι πλήρως ενσωματωμένο στην αρχιτεκτονική υλικού των συσκευών Apple. Τα κλειδιά αποκρυπτογράφησης αποθηκεύονται στο Secure Enclave — έναν προστατευμένο συνεπεξεργαστή, απομονωμένο από το κύριο λειτουργικό σύστημα, καθιστώντας την εξαγωγή κλειδιών σχεδόν αδύνατη ακόμα και με jailbreak.
Η ιστορία του FairPlay ξεκίνησε το 2003 με το κατάστημα iTunes Store, όπου εφαρμόστηκε κρυπτογράφηση αρχείων AAC με χρήση ιδιόκτητου φορμά M4P. Το 2009 η Apple παρουσίασε το FairPlay Streaming — ένα πρωτόκολλο προστασίας ροής βίντεο βασισμένο στο HLS, το οποίο αργότερα έγινε υποχρεωτικό για το Apple TV και τις εφαρμογές iOS.
Από τα iOS 10 και tvOS 10, η Apple άνοιξε την πρόσβαση στο FairPlay Streaming για τρίτους προγραμματιστές μέσω του πλαισίου AVFoundation. Σήμερα, οι Netflix, Amazon Prime Video και Disney+ χρησιμοποιούν το FairPlay για την προστασία περιεχομένου σε συσκευές Apple έως και ανάλυση 4K HDR με Dolby Vision.
Η λειτουργία του FairPlay βασίζεται σε μια τρισταδιακή διαδικασία: συσκευασία περιεχομένου, διανομή μέσω CDN και αποκρυπτογράφηση στη συσκευή. Στο στάδιο της συσκευασίας, το βίντεο κρυπτογραφείται με AES-128 ή AES-256, και τα κλειδιά κρυπτογράφησης συνδέονται με μια συγκεκριμένη συσκευή μέσω του μηχανισμού Key Envelope.
Κατά την αίτηση περιεχομένου, η συσκευή αναπαραγωγής εκκινεί μια περίοδο λειτουργίας FairPlay μέσω του AVContentKeySession, το οποίο στέλνει αίτημα στον διακομιστή αδειών του παρόχου περιεχομένου. Ο διακομιστής ελέγχει τα δικαιώματα πρόσβασης και επιστρέφει το κλειδί αποκρυπτογράφησης, κρυπτογραφημένο με το δημόσιο κλειδί του πιστοποιητικού της συσκευής.
Ο πελάτης δημιουργεί ένα στιγμιότυπο του AVContentKeySession και προσθέτει το κομμάτι περιεχομένου. Το σύστημα δημιουργεί ένα αίτημα SPC (Server Playback Context) που περιέχει το αναγνωριστικό συσκευής και το πιστοποιητικό εφαρμογής, υπογεγραμμένο από την Apple. Αυτό το αίτημα αποστέλλεται στον διακομιστή αδειών μέσω HTTPS.
Ο διακομιστής αδειών επικυρώνει το SPC, εξάγει το κλειδί περιεχομένου από τη βάση δεδομένων του και το κρυπτογραφεί με το δημόσιο κλειδί της συσκευής, δημιουργώντας ένα CKC (Content Key Context). Το CKC επιστρέφεται στον πελάτη, όπου το AVContentKeySession το αποκρυπτογραφεί χρησιμοποιώντας το ιδιωτικό κλειδί του 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)
Η αρχιτεκτονική του FairPlay περιλαμβάνει πολλά διασυνδεδεμένα στοιχεία: το πιστοποιητικό εφαρμογής, το Key Envelope, το Secure Enclave και τη μονάδα αποκρυπτογράφησης περιεχομένου. Κάθε στοιχείο έχει τον ρόλο του στην αλυσίδα προστασίας από τον διακομιστή έως την οθόνη του χρήστη.
| Στοιχείο | Λειτουργία | Πού εκτελείται |
|---|---|---|
| Πιστοποιητικό εφαρμογής | Αναγνώριση εφαρμογής στον διακομιστή αδειών | Αποθηκεύεται στο πακέτο της εφαρμογής |
| SPC | Server Playback Context — αίτημα άδειας | Δημιουργείται από το AVContentKeySession |
| CKC | Content Key Context — απάντηση με κλειδί | Επεξεργάζεται από το Secure Enclave |
| Secure Enclave | Αποθήκευση και αποκρυπτογράφηση κλειδιών σε επίπεδο υλικού | Συνεπεξεργαστής υλικού SoC |
| Key Envelope | Κοντέινερ για κλειδί με μεταδεδομένα άδειας | Δημιουργείται από τον διακομιστή αδειών |
Για να εργαστεί με το FairPlay, ο προγραμματιστής πρέπει να αποκτήσει ένα πιστοποιητικό FPS από την Apple μέσω του προγράμματος Apple Developer. Το πιστοποιητικό περιλαμβάνει το δημόσιο κλειδί ενός ασύμμετρου ζεύγους, του οποίου το ιδιωτικό μέρος χρησιμοποιείται από το Secure Enclave για την αποκρυπτογράφηση του CKC.
Το πιστοποιητικό εφαρμογής προστίθεται στο πακέτο του έργου και υπογράφεται αυτόματα κατά τη μεταγλώττιση μέσω του Xcode. Κατά την πρώτη αναπαραγωγή προστατευμένου περιεχομένου, το σύστημα ελέγχει την εγκυρότητα του πιστοποιητικού και ζητά άδεια.
Secure Enclave — Είναι ένας αποκλειστικός συνεπεξεργαστής στα τσιπ της σειράς A και M της Apple, που λειτουργεί με απομονωμένο λειτουργικό σύστημα L4. Είναι υπεύθυνο για τη δημιουργία και αποθήκευση ιδιωτικών κλειδιών, την αποκρυπτογράφηση του CKC και τη μεταφορά του κλειδιού περιεχομένου στη μονάδα αποκρυπτογράφησης βίντεο.
Όλες οι κρυπτογραφικές λειτουργίες εκτελούνται αποκλειστικά εντός του Secure Enclave, και τα κλειδιά δεν εγκαταλείπουν ποτέ την προστατευμένη περιοχή. Επιθέσεις μέσω πλευρικών καναλιών στον δίαυλο δεδομένων μεταξύ Secure Enclave και κύριου επεξεργαστή αποκλείονται από την παρακολούθηση ακεραιότητας υλικού.
Η ενσωμάτωση του FairPlay σε εφαρμογές iOS και tvOS γίνεται μέσω του AVFoundation και απαιτεί υλοποίηση των πρωτοκόλλων AVContentKeySessionDelegate και AVAssetResourceLoaderDelegate. Ο προγραμματιστής πρέπει να χειριστεί τέσσερα βασικά συμβάντα: λήψη SPC, αποστολή στον διακομιστή, λήψη CKC και μεταφορά στη συσκευή αναπαραγωγής.
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)
)
}
}
Πριν από την έναρξη της αναπαραγωγής, πρέπει να φορτωθεί το πιστοποιητικό εφαρμογής από το πακέτο και να προετοιμαστεί το αναγνωριστικό περιεχομένου (συνήθως η διεύθυνση URL της ροής ή το αναγνωριστικό ταινίας). Το πιστοποιητικό πρέπει να είναι έγκυρο τουλάχιστον για τη διάρκεια ενοικίασης του περιεχομένου, διαφορετικά η αδειοδότηση θα αποτύχει.
Το αναγνωριστικό περιεχομένου μεταφέρεται στο σύστημα αδειοδότησης κατά τον σχηματισμό του SPC. Ο διακομιστής αδειών χρησιμοποιεί αυτό το αναγνωριστικό για να εντοπίσει το αντίστοιχο κλειδί και τις πολιτικές αναπαραγωγής, συμπεριλαμβανομένων χρονικών περιορισμών και περιορισμών συσκευών.
Κατά τη διαδικασία αδειοδότησης μπορεί να προκύψουν σφάλματα: λήξη πιστοποιητικού, εσφαλμένο αναγνωριστικό περιεχομένου, έλλειψη δικαιωμάτων πρόσβασης χρήστη. Τα σφάλματα FairPlay επιστρέφονται μέσω του delegate contentKeySession:didFailWithError και πρέπει να αντιμετωπίζονται με εμφάνιση κατάλληλου UI στον χρήστη.
Τυπικοί κωδικοί σφαλμάτων περιλαμβάνουν FP_NO_ENTITLEMENT όταν απουσιάζει η συνδρομή και FP_REQUEST_TIMEOUT για προβλήματα δικτύου. Συνιστάται η υλοποίηση λογικής επαναπροσπαθειών με εκθετική καθυστέρηση για προσωρινές δικτυακές βλάβες.
Το FairPlay Streaming είναι ένα πρωτόκολλο προστασίας ροής βίντεο βασισμένο στο HLS, το οποίο χρησιμοποιεί κρυπτογράφηση τμημάτων και μηχανισμό κλειδιών περιορισμένης διάρκειας. Ο πάροχος περιεχομένου αναπτύσσει τον δικό του διακομιστή αδειών, ο οποίος ενσωματώνεται με το σύστημα πιστοποίησης χρηστών.
Ο διακομιστής αδειών λαμβάνει από τον πελάτη αίτημα SPC, εξάγει από αυτό το αναγνωριστικό συσκευής και περιεχομένου, ελέγχει τα δικαιώματα χρήστη στο παρασκήνιο και δημιουργεί την απάντηση CKC. Το κλειδί περιεχομένου κρυπτογραφείται με το δημόσιο κλειδί της συσκευής από το πιστοποιητικό FPS.
Η άδεια FairPlay μπορεί να περιέχει χρονικούς περιορισμούς (ενοικίαση 48 ωρών), αριθμό συσκευών (μέγιστο 5 εξουσιοδοτημένες) και ποιότητα αναπαραγωγής (περιορισμός σε 1080p για βασικό πρόγραμμα). Οι πολιτικές ορίζονται από τον διακομιστή και συσκευάζονται στο Key Envelope.
Είναι σημαντικό να σημειωθεί ότι οι πολιτικές FairPlay εφαρμόζονται σε επίπεδο Secure Enclave και δεν μπορούν να παρακαμφθούν με λογισμικό σε επίπεδο λειτουργικού συστήματος. Ακόμα και με jailbreak, η προστασία υλικού αποτρέπει την εξαγωγή κλειδιού ή την τροποποίηση των παραμέτρων της άδειας.
| Παράμετρος | FairPlay | Widevine | PlayReady |
|---|---|---|---|
| Οικοσύστημα | Apple (iOS, tvOS, macOS) | Google (Android, Chrome) | Microsoft (Windows, Xbox) |
| Μέγιστη ποιότητα | 4K HDR Dolby Vision | 4K UHD | 4K UHD |
| Προστασία υλικού | Secure Enclave | TEE | TPM + TEE |
| Απαιτήσεις προγραμματιστή | Πιστοποιητικό FPS Apple | Δεν απαιτείται | Άδεια Microsoft |
Η υποστήριξη FairPlay Streaming εξαρτάται από την έκδοση λειτουργικού συστήματος και τον τύπο συσκευής. Από τα iOS 10 και tvOS 10, το API AVContentKeySession είναι διαθέσιμο για όλες τις εφαρμογές, αλλά η επιτάχυνση υλικού μέσω Secure Enclave απαιτείται μόνο για περιεχόμενο σε ποιότητα 4K HDR. Σε συσκευές με τσιπ A8–A10, η μέγιστη ανάλυση είναι 1080p.
Στο iOS 14, η Apple πρόσθεσε υποστήριξη για πολλαπλές περιόδους λειτουργίας FairPlay, επιτρέποντας στην εφαρμογή να αναπαράγει πολλές προστατευμένες ροές ταυτόχρονα — για παράδειγμα, εικόνα σε εικόνα με διαφορετικές άδειες. Το iOS 15 επέκτεινε το πρωτόκολλο με υποστήριξη φόντο ανανέωσης κλειδιών για μεγάλης διάρκειας παρακολούθηση.
Για διαπλατφορμικές υπηρεσίες ροής, το FairPlay χρησιμοποιείται ως μέρος μιας αρχιτεκτονικής multi-DRM μαζί με Widevine και PlayReady. Συγκεντρωτές αδειών, όπως οι Axinom και EZDRM, παρέχουν ένα ενιαίο API που μεταφράζει αιτήματα σε μορφή SPC για FairPlay και σε μορφή MediaDrm για Widevine, απλοποιώντας την ενσωμάτωση σε όλες τις πλατφόρμες.
Συχνές ερωτήσεις
FairPlay — Είναι μια τεχνολογία DRM της Apple, ενσωματωμένη σε iOS, tvOS και macOS για την προστασία περιεχομένου βίντεο. Χρησιμοποιεί κρυπτογράφηση υλικού μέσω Secure Enclave και το πρωτόκολλο FairPlay Streaming για ασφαλή μεταφορά κλειδιών αποκρυπτογράφησης σε συσκευές Apple.
Για να αποκτήσετε πιστοποιητικό FPS, πρέπει να εγγραφείτε στο πρόγραμμα Apple Developer, να δημιουργήσετε πιστοποιητικό στην ενότητα Certificates, Identifiers & Profiles και να το κατεβάσετε σε μορφή DER. Το πιστοποιητικό προστίθεται στο πακέτο του έργου Xcode και υπογράφεται κατά τη μεταγλώττιση.
Όχι, το FairPlay δεν είναι διαθέσιμο σε Android, καθώς είναι ιδιόκτητη τεχνολογία της Apple, συνδεδεμένη με την αρχιτεκτονική υλικού Secure Enclave στα τσιπ σειράς A και M. Για συσκευές Android χρησιμοποιείται το Widevine DRM της Google.
FairPlay είναι η γενική ονομασία της τεχνολογίας DRM της Apple, ενώ το FairPlay Streaming (FPS) είναι το συγκεκριμένο πρωτόκολλο για προστασία ροών HLS. Το FPS χρησιμοποιεί μηχανισμούς FairPlay για κρυπτογράφηση τμημάτων βίντεο και διαχείριση αδειών μέσω του AVContentKeySession.
Η άδεια FairPlay μπορεί να θέτει περιορισμούς στον χρόνο προβολής, τη μέγιστη ποιότητα βίντεο (720p, 1080p, 4K), τον αριθμό συσκευών και τη διάρκεια ισχύος του κλειδιού. Όλες οι πολιτικές εκτελούνται σε επίπεδο υλικού στο Secure Enclave και δεν μπορούν να παρακαμφθούν.
Σύνοψη
Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση
Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.
Διαβάστε επίσης