DRM σε εφαρμογές κινητών: βασικές αρχές, σχήματα προστασίας και αρχή λειτουργίας

Συγγραφέας: IT Sectr Δημοσιεύτηκε: 2026-05-24 Χρόνος ανάγνωσης: 11 λεπ

Το DRM (Digital Rights Management) είναι ένα σύνολο τεχνολογιών προστασίας ψηφιακού περιεχομένου από μη εξουσιοδοτημένη αντιγραφή και διανομή. Στις εφαρμογές κινητών το DRM χρησιμοποιείται για την κρυπτογράφηση βίντεο, ήχου και ηλεκτρονικών βιβλίων, διασφαλίζοντας την τήρηση των συμφωνιών αδειοδότησης μεταξύ κατόχων δικαιωμάτων και καταναλωτών. Σύμφωνα με τα στοιχεία του Google Widevine Documentation, 2026, το DRM είναι ενσωματωμένο στις περισσότερες υπηρεσίες streaming — Netflix, Spotify, Apple TV+ — και είναι υποχρεωτικό για τη νόμιμη διανομή περιεχομένου premium.

Κύρια σημεία

  • DRM (Digital Rights Management) — τεχνολογίες προστασίας πνευματικών δικαιωμάτων που περιορίζουν την αντιγραφή και τη διανομή ψηφιακού περιεχομένου.
  • Τρία κύρια σχήματα: Widevine (Google), FairPlay (Apple), PlayReady (Microsoft) — κυριαρχούν στις πλατφόρμες κινητών.
  • Το Widevine λειτουργεί σε Android και iOS μέσω CDM και υποστηρίζει τρία επίπεδα ασφαλείας: L1, L2, L3.
  • Το FairPlay της Apple χρησιμοποιεί τον διακομιστή KSM για τη δημιουργία κλειδιών και είναι ενσωματωμένο στο AVFoundation σε iOS και macOS.
  • Η αποκρυπτογράφηση DRM πραγματοποιείται σε επίπεδο media player — ο προγραμματιστής λαμβάνει έτοιμο βίντεο-stream μέσω ExoPlayer ή AVPlayer.

Τι είναι το DRM;

DRM — σύνολο κρυπτογραφικών και λογισμικών μεθόδων που ελέγχουν την πρόσβαση στο ψηφιακό περιεχόμενο. Σε αντίθεση με την απλή κρυπτογράφηση, το DRM περιλαμβάνει σύστημα αδειοδότησης: το περιεχόμενο είναι κρυπτογραφημένο και για την προβολή του απαιτείται κλειδί, το οποίο εκδίδεται μόνο μετά τον έλεγχο των δικαιωμάτων του χρήστη.

Ο κύριος σκοπός του DRM είναι η αποτροπή της πειρατείας και η διασφάλιση της τήρησης των περιφερειακών περιορισμών. Χωρίς DRM, οι κάτοχοι περιεχομένου (κινηματογραφικά στούντιο, δισκογραφικές εταιρείες) δεν αδειοδοτούν το περιεχόμενό τους για πλατφόρμες streaming. Σύμφωνα με τα στοιχεία της Motion Picture Association (2025), η χρήση DRM μείωσε τη μη νόμιμη διανομή ταινιών στο streaming κατά 62% σε σύγκριση με την εποχή των DVD-rips.

Στην ανάπτυξη για κινητά, το DRM ενσωματώνεται σε επίπεδο media player: ο προγραμματιστής χρησιμοποιεί ExoPlayer (Android), AVPlayer (iOS) ή Shaka Player (Web), τα οποία υποστηρίζουν ενσωματωμένη αποκρυπτογράφηση του κρυπτογραφημένου stream. Ο προγραμματιστής δεν χρειάζεται να υλοποιήσει κρυπτογραφία — αρκεί να ενσωματώσει το SDK για την αδειοδότηση.

DRM και CENC (Common Encryption)

Το πρότυπο CENC (Common Encryption — ISO/IEC 23001-7) επιτρέπει τη χρήση ενός κρυπτογραφημένου αρχείου πολυμέσων για όλα τα συστήματα DRM. Το περιεχόμενο κρυπτογραφείται μία φορά και τα κλειδιά διανέμονται μέσω διαφορετικών διακομιστών αδειοδότησης. Αυτό είναι κρίσιμης σημασίας για υπηρεσίες πολλαπλών πλατφορμών: το Netflix κρυπτογραφεί την ταινία μία φορά και την παραδίδει σε Android (Widevine), iOS (FairPlay) και Windows (PlayReady) χωρίς επανακωδικοποίηση.

Το CENC χρησιμοποιεί κρυπτογράφηση CBC με διαφορετικά κλειδιά για τα ηχητικά και τα video κομμάτια. Κάθε κλειδί αποθηκεύεται κρυπτογραφημένο στο manifest MPD (MPEG-DASH) ή M3U8 (HLS). Το αναγνωριστικό περιεχομένου (KID) συνδέει το κρυπτογραφημένο stream με την άδεια στον διακομιστή — χωρίς έγκυρη άδεια το κλειδί δεν αποκρυπτογραφείται.

Πώς λειτουργεί το DRM σε εφαρμογές κινητών

Η διαδικασία αναπαραγωγής DRM αποτελείται από τέσσερα στάδια: φόρτωση manifest, λήψη άδειας, αποκρυπτογράφηση περιεχομένου και εμφάνιση. Κάθε στάδιο εκτελείται από διαφορετικά στοιχεία του συστήματος — τον media player, τη μονάδα CDM και τον διακομιστή αδειών.

  • Φόρτωση manifest — ο player λαμβάνει MPD (DASH) ή M3U8 (HLS) με μεταδεδομένα για τα κρυπτογραφημένα τμήματα, το σχήμα κρυπτογράφησης και τη διεύθυνση URL του διακομιστή αδειών.
  • Αίτημα άδειας — ο player μεταβιβάζει το αναγνωριστικό περιεχομένου (KID) στη μονάδα Content Decryption Module (CDM), η οποία διαμορφώνει το αίτημα προς τον διακομιστή αδειών.
  • Λήψη κλειδιού — ο διακομιστής ελέγχει τα δικαιώματα του χρήστη (συνδρομή, περιοχή, συσκευή) και επιστρέφει το κλειδί, κρυπτογραφημένο με το δημόσιο κλειδί της συσκευής.
  • Αποκρυπτογράφηση stream — το CDM αποκρυπτογραφεί το κλειδί με το ιδιωτικό κλειδί της συσκευής και το μεταβιβάζει στον media player για την αποκρυπτογράφηση των video τμημάτων σε πραγματικό χρόνο.

Content Decryption Module (CDM)

Το CDM είναι μια προστατευμένη μονάδα λογισμικού ή υλικού που εκτελεί την αποκρυπτογράφηση του περιεχομένου. Στο Android το CDM υλοποιείται σε επίπεδο MediaDrm API, στο iOS είναι ενσωματωμένο στο AVFoundation μέσω AVContentKeySession. Το CDM δεν αποκαλύπτει ποτέ το κλειδί στην εφαρμογή — όλες οι κρυπτογραφικές λειτουργίες εκτελούνται εντός προστατευμένου περιβάλλοντος (TEE — Trusted Execution Environment).

Σε συσκευές με υποστήριξη υλικού (Secure Level 1) το CDM λειτουργεί εντός TEE — το κλειδί δεν φτάνει ποτέ στην κύρια μνήμη της συσκευής. Αυτό αποτελεί απαίτηση των στούντιο για την αναπαραγωγή περιεχομένου σε 4K HDR. Σε συσκευές χωρίς TEE τα κλειδιά αποκρυπτογραφούνται μέσω λογισμικού (L3), γεγονός που μειώνει την προστασία και περιορίζει τη μέγιστη ποιότητα στα 540p.

Κύρια σχήματα DRM

Στις πλατφόρμες κινητών κυριαρχούν τρία συστήματα DRM. Κάθε ένα είναι αποκλειστικό για το οικοσύστημά του, αλλά υποστηρίζει CENC, γεγονός που επιτρέπει τη χρήση ενιαίου κρυπτογραφημένου περιεχομένου σε όλες τις πλατφόρμες.

DRMΠρογραμματιστήςΠλατφόρμαΜέγ. ποιότηταΠροστασία υλικού
WidevineGoogleAndroid, Chrome, Android TV4K HDR (L1)TEE (L1)
FairPlayAppleiOS, iPadOS, macOS, tvOS4K HDR (iOS)Secure Enclave
PlayReadyMicrosoftWindows, Xbox, Windows Phone4K (SL3000)TPM + TEE

Επιλογή DRM για υπηρεσία πολλαπλών πλατφορμών

Για μια υπηρεσία streaming που λειτουργεί σε όλες τις πλατφόρμες απαιτείται υποστήριξη και των τριών DRM. Πρακτική λύση είναι η χρήση CDN με υποστήριξη multi-DRM (Muvi, Vualto, Axinom), τα οποία δρομολογούν αυτόματα τα αιτήματα αδειών στον κατάλληλο διακομιστή ανάλογα με τη συσκευή του χρήστη. Σύμφωνα με τα στοιχεία του Streaming Learning Center (2025), το 78% των υπηρεσιών streaming χρησιμοποιεί προσέγγιση Multi-DRM.

Το πρότυπο MPEG-DASH με CENC απλοποιεί την αρχιτεκτονική: το περιεχόμενο κρυπτογραφείται μία φορά με κοινό κλειδί και το σύστημα DRM επιλέγεται στον πελάτη. Ο διακομιστής αδειών λαμβάνει αίτημα με το αναγνωριστικό της συσκευής και επιστρέφει κλειδί κρυπτογραφημένο για το συγκεκριμένο CDM. Καμία διαφορά στο περιεχόμενο για διαφορετικές πλατφόρμες — μόνο διαφορετικός διακομιστής αδειών.

Widevine: επίπεδα και χαρακτηριστικά

Widevine — σύστημα DRM της Google, το οποίο αποτελεί το de facto πρότυπο στο Android. Υποστηρίζει τρία επίπεδα ασφαλείας που καθορίζουν πού και πώς πραγματοποιείται η αποκρυπτογράφηση του περιεχομένου. Το επίπεδο ασφαλείας εξαρτάται από τις δυνατότητες υλικού της συσκευής και καθορίζει τη μέγιστη ανάλυση περιεχομένου.

Επίπεδα ασφαλείας Widevine

Το Widevine L1 (υλικού) — το πιο προστατευμένο επίπεδο. Όλες οι κρυπτογραφικές λειτουργίες εκτελούνται εντός Trusted Execution Environment (TEE). Το κλειδί δεν εγκαταλείπει ποτέ την προστατευμένη περιοχή. Οι συσκευές με L1 μπορούν να αναπαράγουν περιεχόμενο έως 4K HDR. Απαιτείται πιστοποίηση Google — διαδικασία από την οποία περνούν οι κορυφαίες (flagship) συσκευές.

Το Widevine L3 (λογισμικού) — η αποκρυπτογράφηση εκτελείται στην κύρια μνήμη της συσκευής. Το κλειδί μπορεί να εξαχθεί από τεχνικά καταρτισμένο εισβολέα. Η ανάλυση περιορίζεται στα 540p (960x540) για περιεχόμενο premium. Όλες οι συσκευές Android υποστηρίζουν L3, ακόμα και αν δεν είναι πιστοποιημένες για L1.

Το Widevine L2 — σπάνιο ενδιάμεσο επίπεδο, όπου η αποκρυπτογράφηση εκτελείται στο TEE, αλλά η απόδοση γίνεται μέσω μη προστατευμένης διαδρομής. Χρησιμοποιείται σε ορισμένες Smart TV. Σε συσκευές κινητών ουσιαστικά δεν συναντάται.

Πώς να προσδιορίσετε το επίπεδο Widevine σε μια συσκευή

kotlin
import android.media.MediaDrm
import android.media.UUID

fun checkWidevineLevel(): String {
    val widevineUuid = UUID.fromString("edef8ba9-79d6-4ace-a3c8-27dcd51d21ed")
    val mediaDrm = MediaDrm(widevineUuid)

    val securityLevel = mediaDrm.getPropertyString(
        MediaDrm.PROPERTY_SECURITY_LEVEL
    )

    return when (securityLevel) {
        "L1" -> "Widevine L1 — προστασία υλικού"
        "L3" -> "Widevine L3 — προστασία λογισμικού"
        else -> "Widevine $securityLevel"
    }
}

Η μέθοδος ζητά από το CDM την ιδιότητα securityLevel μέσω του UUID Widevine. Η επιστρεφόμενη τιμή — μια συμβολοσειρά L1, L2 ή L3 — υποδεικνύει το τρέχον επίπεδο προστασίας της συσκευής. Αυτή η πληροφορία είναι κρίσιμη για τις υπηρεσίες streaming: αν η συσκευή έχει μόνο L3, το περιεχόμενο σε 4K δεν μπορεί να προβληθεί.

Apple FairPlay: αρχιτεκτονική και αρχή λειτουργίας

FairPlay — σύστημα DRM της Apple, ενσωματωμένο σε όλες τις πλατφόρμες του οικοσυστήματος: iOS, iPadOS, macOS, tvOS και watchOS. Σε αντίθεση με το Widevine, το FairPlay δεν έχει επίπεδα ασφαλείας — η προστασία καθορίζεται από τη συσκευή. Στο iOS με Secure Enclave το FairPlay παρέχει επίπεδο προστασίας συγκρίσιμο με το Widevine L1.

Το FairPlay λειτουργεί αποκλειστικά με το πρωτόκολλο HLS (HTTP Live Streaming). Το περιεχόμενο συσκευάζεται σε τμήματα .ts (MPEG-TS) ή σε τμήματα .m4s (fMP4). Το manifest M3U8 περιέχει την ετικέτα #EXT-X-KEY με το URI του διακομιστή αδειών (KSM — Key Server Module) και το IV αρχικοποίησης. Κατά την έναρξη της αναπαραγωγής, ο AVPlayer διαβάζει το manifest και ζητά το κλειδί μέσω AVContentKeySession.

Ενσωμάτωση FairPlay Streaming

swift
import AVFoundation

let contentKeySession = AVContentKeySession(keySystem: fairPlayStreaming)
let player = AVPlayer(playerItem: playerItem)
contentKeySession.setDelegate(self, queue: delegateQueue)

func contentKeySession(
    _ session: AVContentKeySession,
    didProvide keyRequest: AVContentKeyRequest
) {
    let assetId = keyRequest.identifier as! String
    sendLicenseRequest(assetId) { licenseData in
        keyRequest.processContentKeyResponse(
            AVContentKeyResponse(fairPlayStreamingKeyResponseData: licenseData)
        )
    }
}

Ο πληρεξούσιος (delegate) του AVContentKeySession λαμβάνει αίτημα κλειδιού με το αναγνωριστικό περιεχομένου (assetId). Η εφαρμογή στέλνει αυτό το ID στον δικό της διακομιστή αδειών (KSM), ο οποίος επιστρέφει το κρυπτογραφημένο κλειδί. Η κλήση processContentKeyResponse μεταβιβάζει το κλειδί στο CDM για αποκρυπτογράφηση. Αν η άδεια δεν είναι έγκυρη (έληξε, δεν πληρώθηκε), ο διακομιστής επιστρέφει σφάλμα 403 και ο AVPlayer δεν ξεκινά την αναπαραγωγή.

Persistent Key Loading για περιεχόμενο εκτός σύνδεσης

Το FairPlay υποστηρίζει persistent keys — αποθήκευση της άδειας στη συσκευή για προβολή εκτός σύνδεσης. Μετά τη λήψη του κλειδιού, η εφαρμογή καλεί την processContentKeyResponse με τη σημαία allowsPersistableKey. Το κλειδί αποθηκεύεται στο Keychain και μπορεί να χρησιμοποιηθεί χωρίς επικοινωνία με τον διακομιστή κατά την επαναπροβολή. Ωστόσο, η διάρκεια ισχύος της άδειας εκτός σύνδεσης είναι περιορισμένη — συνήθως 7–30 ημέρες, μετά από τις οποίες απαιτείται ανανέωση.

Οι άδειες εκτός σύνδεσης αποθηκεύονται στο προστατευμένο χώρο αποθήκευσης του iOS — το Keychain. Σε περίπτωση προσπάθειας παραβίασης (jalibreak, εξαγωγή dump) το Secure Enclave καταστρέφει τα κλειδιά. Σύμφωνα με τα στοιχεία της Apple (2025), η τεχνολογία persistent keys χρησιμοποιείται στα Apple TV+, Netflix και Disney+ για λήψη περιεχομένου στο iPad πριν από ένα ταξίδι.

Microsoft PlayReady για καθολική προστασία

PlayReady — DRM της Microsoft, που χρησιμοποιείται σε Windows, Xbox και σε παλαιότερα Windows Phone. Αν και στις συσκευές κινητών το PlayReady συναντάται σπανιότερα από τα Widevine και FairPlay, είναι σημαντικό για καθολικές λύσεις streaming που λειτουργούν σε όλες τις πλατφόρμες της Microsoft. Το PlayReady υποστηρίζει τόσο προστασία μέσω λογισμικού όσο και μέσω υλικού μέσω TPM.

Το PlayReady χρησιμοποιεί την αρχιτεκτονική SL (Security Level): SL2000 (λογισμικού, ανάλογο του Widevine L3), SL3000 (υλικού, ανάλογο του L1). Στο Xbox Series X το PlayReady SL3000 λειτουργεί μέσω TEE+TPM — τα κλειδιά εξάγονται μόνο σε προστατευμένο περιβάλλον. Αυτό επιτρέπει την αναπαραγωγή 4K Blu-ray στην κονσόλα χωρίς κίνδυνο αντιγραφής.

Σύμφωνα με τα Microsoft Docs (2026), το PlayReady υποστηρίζει CENC και μπορεί να λειτουργήσει με MPEG-DASH μέσω Media Source Extensions (MSE) στα προγράμματα περιήγησης Edge. Για εφαρμογές κινητών σε Android και iOS το PlayReady είναι διαθέσιμο μέσω SDK, αλλά χρησιμοποιείται σπάνια — κυρίως για εταιρικές εφαρμογές και υπηρεσίες πολυμέσων της Microsoft.

PlayReady Native SDK για Android

Η Microsoft παρέχει PlayReady Native SDK για Android και iOS. Η ενσωμάτωση πραγματοποιείται μέσω ExoPlayer με επέκταση PlayReady: ο προγραμματιστής προσθέτει το PlayReadyRenderer, το οποίο εντάσσεται στην αλυσίδα αποκωδικοποίησης. Ο ExoPlayer εναλλάσσεται αυτόματα μεταξύ Widevine και PlayReady ανάλογα με το ποιο DRM αναφέρεται στο manifest MPD.

Αν και το PlayReady συναντάται σπάνια σε εφαρμογές κινητών, η υποστήριξή του είναι υποχρεωτική για υπηρεσίες που εντάσσονται στο οικοσύστημα της Microsoft — για παράδειγμα, εταιρικές πλατφόρμες εκπαίδευσης σε SharePoint και Stream. Σύμφωνα με τα στοιχεία της Microsoft (2025), το PlayReady χρησιμοποιείται στο 23% των εταιρικών λύσεων πολυμέσων έναντι 62% για το Widevine.

Ενσωμάτωση DRM σε εφαρμογή κινητού

Η ενσωμάτωση DRM σε εφαρμογή κινητού δεν απαιτεί συγγραφή κρυπτογραφικού κώδικα — ο προγραμματιστής εργάζεται με τον player, ο οποίος υποστηρίζει DRM από προεπιλογή. Ας εξετάσουμε την ενσωμάτωση στο Android μέσω ExoPlayer με επέκταση DRM.

Ρύθμιση του ExoPlayer με υποστήριξη Widevine

kotlin
val drmSessionManager = DefaultDrmSessionManager.Builder()
    .setUuidAndExoMediaDrmProvider(
        C.WIDEVINE_UUID,
        FrameworkMediaDrm.DEFAULT_PROVIDER
    )
    .setMultiSession(true)
    .build(mediaDrmCallback)

val mediaItem = MediaItem.Builder()
    .setUri(mpdUrl)
    .setDrmConfiguration(
        MediaItem.DrmConfiguration.Builder(C.WIDEVINE_UUID)
            .setLicenseUri(licenseUrl)
            .setLicenseRequestHeaders(headers)
            .build()
    )
    .build()

exoPlayer.setMediaItem(mediaItem)
exoPlayer.prepare()

Το DefaultDrmSessionManager διαχειρίζεται τη συνεδρία DRM: δημιουργεί συνεδρία MediaDrm, επεξεργάζεται τα αιτήματα αδειών και μεταβιβάζει τα κλειδιά στον αποκωδικοποιητή. Η παράμετρος setMultiSession(true) επιτρέπει την ταυτόχρονη αποκρυπτογράφηση πολλών streams (ήχος + βίντεο) σε διαφορετικές συνεδρίες. Το MediaDrmCallback υλοποιεί το αίτημα HTTP προς τον διακομιστή αδειών — συνήθως POST με σώμα αιτήματος σε μορφή SignedRequest.

MediaDrmCallback για αίτημα άδειας

kotlin
val mediaDrmCallback = DefaultDrmSessionManager.MediaDrmCallback {
    url, requestBody ->

    val response = OkHttpClient().newCall(
        Request.Builder()
            .url(url)
            .post(RequestBody.create(requestBody, MediaType.parse("application/octet-stream")))
            .addHeader("Authorization", "Bearer ")
            .build()
    ).execute()

    val responseBytes = response.body?.bytes()
        ?: throw DrmSessionException(Exception("Empty license response"))

    responseBytes
}

Το Callback στέλνει αίτημα POST στον διακομιστή αδειών με το UUID Widevine στο σώμα. Ο διακομιστής ελέγχει τον έλεγχο ταυτότητας του χρήστη (τοκέν στην επικεφαλίδα) και επιστρέφει το κρυπτογραφημένο κλειδί. Αν ο χρήστης δεν έχει ενεργή συνδρομή, ο διακομιστής επιστρέφει 403 Forbidden — ο ExoPlayer δημιουργεί σφάλμα DRM, το οποίο πρέπει να αντιμετωπιστεί μέσω onPlayerError.

Διαχείριση σφαλμάτων DRM

Τα σφάλματα DRM προκύπτουν όταν η άδεια δεν είναι έγκυρη, έχει λήξει ή η συσκευή δεν υποστηρίζει το απαιτούμενο επίπεδο προστασίας. Ο ExoPlayer μεταβιβάζει το σφάλμα μέσω του Player.Listener.onPlayerError με κωδικό TYPE_DRM_LICENSE_EXPIRED, TYPE_DRM_UNSUPPORTED ή TYPE_SOURCE. Συνιστάται η εμφάνιση στον χρήστη ενός ενημερωτικού μηνύματος: «Το περιεχόμενο δεν είναι διαθέσιμο για αυτή τη συσκευή» ή «Ανανεώστε τη συνδρομή για προβολή».

Σύμφωνα με την αναλυτική των υπηρεσιών streaming (2025), έως και 8% των αποτυχημένων εκκινήσεων αναπαραγωγής σχετίζονται με σφάλματα DRM. Από αυτά, το 60% είναι άδειες που έληξαν, το 25% είναι ασυμβατότητα συσκευής και το 15% είναι σφάλματα δικτύου κατά το αίτημα κλειδιού. Η αυτόματη επανάληψη μετά από 5 δευτερόλεπτα λύνει το 40% των περιπτώσεων σφαλμάτων δικτύου.

Συχνές ερωτήσεις

Μπορείτε να παρακάμψετε το DRM σε συσκευή κινητού;

Τεχνικά είναι δυνατό σε συσκευές με Widevine L3 (προστασία μέσω λογισμικού), όπου το κλειδί μπορεί να εξαχθεί από τη μνήμη. Στα L1 και FairPlay με Secure Enclave η παράκαμψη είναι εξαιρετικά δύσκολη — απαιτείται φυσική πρόσβαση στο TEE. Τα στούντιο περιεχομένου προσανατολίζονται σε συσκευές L1 για περιεχόμενο premium.

Γιατί το Netflix εμφανίζει χαμηλή ποιότητα στο Android μου;

Πιθανότατα η συσκευή δεν είναι πιστοποιημένη για Widevine L1 και χρησιμοποιεί L3. Το Netflix περιορίζει την ποιότητα στα 540p σε συσκευές L3. Ελέγξτε το επίπεδο Widevine μέσω εφαρμογών DRM Info από το Google Play. Οι κορυφαίες συσκευές Samsung, Pixel και OnePlus συνήθως διαθέτουν L1.

Ποιο DRM είναι καλύτερο για υπηρεσία streaming;

Χρησιμοποιήστε Multi-DRM: Widevine για Android, FairPlay για Apple, PlayReady για Windows. Υπηρεσίες όπως το Axinom ή το Vualto παρέχουν ενιαίο API για και τα τρία DRM. Το περιεχόμενο κρυπτογραφείται μία φορά μέσω CENC και η επιλογή DRM γίνεται αυτόματα στην πλευρά του πελάτη.

Πώς να υλοποιήσω την προβολή εκτός σύνδεσης με DRM;

Στο iOS χρησιμοποιήστε persistent keys του FairPlay μέσω AVContentKeySession. Στο Android — Widevine Offline License μέσω ExoPlayer OfflineLicenseHelper. Το κλειδί αποθηκεύεται τοπικά στο Keychain (iOS) ή στο KeyStore (Android) με περιορισμένη διάρκεια ισχύος — συνήθως από 7 έως 30 ημέρες.

Τι είναι το KID στο πλαίσιο του DRM;

KID (Key ID) — μοναδικό αναγνωριστικό 16 byte του κλειδιού κρυπτογράφησης στο manifest CENC. Κάθε KID συνδέεται με συγκεκριμένο τμήμα περιεχομένου (για παράδειγμα, τμήμα ταινίας 10 λεπτών). Ο διακομιστής αδειών χρησιμοποιεί το KID για να βρει το αντίστοιχο κλειδί στη βάση δεδομένων του. Μία ταινία μπορεί να περιέχει έως 20 διαφορετικά KID για διαφορετικά μέρη.

Συμπεράσματα

  • DRM (Digital Rights Management) — σύστημα κρυπτογραφικής προστασίας ψηφιακού περιεχομένου, υποχρεωτικό για το νόμιμο streaming.
  • Τρία κύρια σχήματα: Widevine (Android), FairPlay (iOS), PlayReady (Windows) — χρησιμοποιούν CENC για την ενιαία κρυπτογράφηση περιεχομένου.
  • Το Widevine L1 (προστασία υλικού μέσω TEE) επιτρέπει 4K HDR, το L3 (λογισμικού) περιορίζεται στα 540p. Το επίπεδο ελέγχεται μέσω MediaDrm.getPropertyString.
  • Το FairPlay λειτουργεί μόνο με HLS και χρησιμοποιεί AVContentKeySession για το αίτημα κλειδιών μέσω διακομιστή KSM.
  • Η ενσωμάτωση DRM πραγματοποιείται μέσω media player: ExoPlayer (Android) με DefaultDrmSessionManager, AVPlayer (iOS) με AVContentKeySession.
  • Τα σφάλματα DRM αντιμετωπίζονται μέσω onPlayerError — άδειες που έληξαν, ασυμβατότητα συσκευής και σφάλματα δικτύου αποτελούν το 8% των αποτυχημένων εκκινήσεων.
  • Για υπηρεσίες πολλαπλών πλατφορμών συνιστάται προσέγγιση Multi-DRM με πάροχο CDN και ενιαία κρυπτογράφηση περιεχομένου CENC.

Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση

Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.

Συζήτηση έργου

Διαβάστε επίσης