Widevine — μια τεχνολογία DRM που αναπτύχθηκε από την Google για την προστασία περιεχομένου βίντεο από μη εξουσιοδοτημένη αντιγραφή σε κινητές συσκευές, Smart TV και διαδικτυακές πλατφόρμες. Η κρυπτογράφηση περιεχομένου πραγματοποιείται μέσω της μονάδας CDM, η οποία υποστηρίζεται σε 4 δισεκατομμύρια συσκευές παγκοσμίως. Η τεχνολογία Widevine εξασφαλίζει συμβατότητα με Android, iOS, Chrome και Smart TV, επιτρέποντας στις υπηρεσίες ροής να προστατεύουν περιεχόμενο premium σε οποιαδήποτε πλατφόρμα.
Κύρια σημεία
Widevine — μια ιδιόκτητη τεχνολογία DRM που εξαγοράστηκε από την Google το 2010 και έγινε το de facto πρότυπο για την προστασία περιεχομένου βίντεο στο οικοσύστημα Android. Χρησιμοποιείται από τις μεγαλύτερες υπηρεσίες ροής, συμπεριλαμβανομένων των Netflix, Amazon Prime Video, Disney+ και Hulu, για την αποτροπή μη εξουσιοδοτημένης αντιγραφής και διανομής περιεχομένου.
Το Widevine υποστηρίζει κρυπτογράφηση σύμφωνα με το πρότυπο AES-128 CBC χρησιμοποιώντας κλειδιά περιεχομένου που μεταδίδονται μόνο σε εξουσιοδοτημένες συσκευές μέσω ασφαλούς καναλιού αδειοδότησης. Το σύστημα παρέχει προστασία από άκρο σε άκρο από τη στιγμή της κρυπτογράφησης στον διακομιστή έως την αποκωδικοποίηση στη συσκευή του χρήστη.
Η εταιρεία Widevine Technologies ιδρύθηκε το 1999 και αρχικά ανέπτυσσε λύσεις για προστασία περιεχομένου σε πλατφόρμες καλωδιακής τηλεόρασης. Μετά την εξαγορά από την Google το 2010, η τεχνολογία προσαρμόστηκε για κινητές πλατφόρμες και ενσωματώθηκε στο λειτουργικό σύστημα Android ξεκινώντας από την έκδοση 4.4 KitKat. Από το 2015, το Widevine έγινε υποχρεωτικό στοιχείο της πιστοποίησης Google Mobile Services.
Το 2018, η Google παρουσίασε το Widevine Modular DRM, το οποίο επέτρεψε στους κατασκευαστές συσκευών να υλοποιούν διαφορετικά επίπεδα προστασίας υλικού χωρίς αλλαγή του κώδικα του λειτουργικού συστήματος. Σήμερα, το Widevine Modular υποστηρίζεται σε περισσότερες από 4 δισεκατομμύρια συσκευές και αποτελεί τον κύριο μηχανισμό DRM στο Android.
Η αρχιτεκτονική Widevine αποτελείται από τρία βασικά στοιχεία: Content Decryption Module (CDM), διακομιστή αδειών και εργαλείο κρυπτογράφησης περιεχομένου. Το CDM εκτελεί αποκρυπτογράφηση στην πλευρά του πελάτη και αλληλεπιδρά με το υλικό Trusted Execution Environment (TEE) για ασφαλή αποθήκευση κλειδιών.
Ο διακομιστής αδειών Google διαχειρίζεται την έκδοση κλειδιών βάσει πολιτικών του παρόχου περιεχομένου, που καθορίζουν χρονικούς περιορισμούς, αριθμό συσκευών και ποιότητα αναπαραγωγής. Το εργαλείο κρυπτογράφησης προετοιμάζει το περιεχόμενο στην πλευρά του παρόχου, συσκευάζοντάς το σε μορφή MPEG-DASH ή HLS με κρυπτογράφηση CENC.
Η διαδικασία προστασίας ξεκινά με το στάδιο συσκευασίας περιεχομένου, όταν το αρχείο πολυμέσων κρυπτογραφείται χρησιμοποιώντας το κλειδί περιεχομένου στον διακομιστή του παρόχου. Η κρυπτογραφημένη ροή μεταδίδεται στη συσκευή του χρήστη μέσω CDN, όπου το CDM ζητά άδεια από τον διακομιστή αδειών.
Ο διακομιστής αδειών επαληθεύει την αυθεντικότητα της συσκευής και το δικαίωμα πρόσβασης στο περιεχόμενο. Εάν η επαλήθευση είναι επιτυχής, ο διακομιστής εκδίδει άδεια με κλειδί που χρησιμοποιεί το CDM για αποκρυπτογράφηση. Η άδεια μπορεί να περιέχει περιορισμούς χρόνου προβολής και ανάλυσης.
Η ανταλλαγή αδειών στο Widevine υλοποιείται μέσω του πρωτοκόλλου EME (Encrypted Media Extensions) σε προγράμματα περιήγησης ή μέσω SDK σε κινητές πλατφόρμες. Το αίτημα άδειας δημιουργείται από το CDM και αποστέλλεται στον διακομιστή αδειών μέσω HTTPS, εξασφαλίζοντας προστασία από υποκλοπή κλειδιών κατά τη μεταφορά.
Ο διακομιστής επεξεργάζεται το αίτημα και επιστρέφει μια άδεια που είναι επίσης κρυπτογραφημένη και μπορεί να αποκρυπτογραφηθεί μόνο από το CDM της συσκευής. Η σύνδεση υλικού του κλειδιού με μια συγκεκριμένη συσκευή αποτρέπει τη μεταφορά του σε άλλες πλατφόρμες.
Το Widevine χρησιμοποιεί τα πρότυπα Common Encryption (CENC) που ορίζονται στο ISO/IEC 23001-7, εξασφαλίζοντας συμβατότητα με μορφές MPEG-DASH και HLS. Η κρυπτογράφηση AES-128 σε λειτουργία CTR ή CBC εφαρμόζεται για την προστασία ροών πολυμέσων.
Για παραγωγή κλειδιών χρησιμοποιείται HKDF (HMAC-based Key Derivation Function), που επιτρέπει τη δημιουργία μοναδικών κλειδιών για κάθε τμήμα περιεχομένου. Η υποστήριξη HLS στο Widevine προστέθηκε από την έκδοση Modular 2.0, επεκτείνοντας τη συμβατότητα με πλατφόρμες Apple.
@Throws
fun requestLicense(): ByteArray {
val drmSessionManager = mediaDrm.createSession(
sessionId,
List("keyRequestType", "init")
)
val request = mediaDrm.getKeyRequest(
sessionId,
schemeData.get("mimeType"),
KeyType.STREAMING,
mutableMapOf()
)
return licenseService.acquire(request.data)
}
Το Widevine ορίζει τρία επίπεδα ασφαλείας που διαφέρουν ως προς τον τρόπο εκτέλεσης κρυπτογραφικών λειτουργιών και επεξεργασίας περιεχομένου. Το επίπεδο L1 παρέχει μέγιστη προστασία, το L3 — ελάχιστη, το L2 καταλαμβάνει ενδιάμεση θέση.
| Επίπεδο | Τύπος προστασίας | Απαιτήσεις συσκευής | Μέγιστη ανάλυση |
|---|---|---|---|
| L1 | Υλικού | TEE σε επίπεδο SoC | 4K Ultra HD |
| L2 | Υβριδικό | TEE για κλειδιά, λογισμικό για βίντεο | 1080p |
| L3 | Λογισμικού | Μόνο λογισμικό CDM | 720p |
Το επίπεδο L1 απαιτεί την παρουσία Trusted Execution Environment (TEE) σε επίπεδο υλικού, όπου εκτελούνται όλες οι κρυπτογραφικές λειτουργίες. Τα κλειδιά περιεχομένου δεν εγκαταλείπουν ποτέ το TEE, αποκλείοντας την εξαγωγή τους ακόμη και σε περίπτωση παραβίασης του κύριου λειτουργικού συστήματος.
Συσκευές με πιστοποίηση L1 μπορούν να αναπαράγουν περιεχόμενο σε ποιότητα 4K και HDR, καθώς η αποκρυπτογραφημένη ροή βίντεο μεταδίδεται απευθείας στην προστατευμένη έξοδο βίντεο χωρίς πρόσβαση από διεργασίες χρήστη.
Το επίπεδο L3 εκτελεί όλες τις κρυπτογραφικές λειτουργίες μέσω λογισμικού στον συνηθισμένο χώρο χρήστη. Είναι η λιγότερο ασφαλής λειτουργία, όπου τα κλειδιά μπορούν να εξαχθούν από τη μνήμη RAM της συσκευής.
Το Widevine L3 περιορίζει την ποιότητα αναπαραγωγής σε 720p, καθιστώντας το κατάλληλο για παρακολούθηση σε συσκευές χαμηλού επιπέδου ή προγράμματα περιήγησης επιτραπέζιων υπολογιστών χωρίς προστασία υλικού.
fun getSecurityLevel(): String {
val mediaDrm = MediaDrm(UUID.fromString(
"edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"
))
val level = mediaDrm.getPropertyString(
"securityLevel"
)
return level.ifEmpty { "L3" }
}
Η ενσωμάτωση Widevine σε εφαρμογές κινητών πραγματοποιείται μέσω τυπικών API MediaDrm (Android) και AVContentKeySession (iOS). Στις περισσότερες περιπτώσεις, ο προγραμματιστής δεν χρειάζεται να εργαστεί άμεσα με DRM — οι βιβλιοθήκες αναπαραγωγής όπως το ExoPlayer και το AVPlayer χειρίζονται αυτόματα την αδειοδότηση.
Στο Android, το Widevine ενσωματώνεται μέσω της κλάσης MediaDrm που παρέχει άμεση πρόσβαση στο CDM. Για εφαρμογές ροής, συνιστάται η χρήση του ExoPlayer με τη μονάδα DrmSessionManager που διαχειρίζεται αυτόματα αιτήματα αδειών.
Κατά την αρχικοποίηση του προγράμματος αναπαραγωγής, πρέπει να καθοριστεί το UUID του σχήματος Widevine (`edef8ba9-79d6-4ace-a3c8-27dcd51d21ed`) και το URL του διακομιστή αδειών που παρέχεται από τον πάροχο περιεχομένου. Το ExoPlayer χειρίζεται αυτόματα τον κύκλο αιτήματος και ανανέωσης αδειών.
val drmLicenseUrl = "https://license.service.com/wv"
val mediaItem = MediaItem.Builder()
.setUri(Uri.parse(streamUrl))
.setDrmKeyRequestUrl(drmLicenseUrl)
.setDrmKeyRequestHeaders(
mapOf("Authorization" to token)
)
.build()
val exoPlayer = ExoPlayer.Builder(context)
.build()
exoPlayer.setMediaItem(mediaItem)
exoPlayer.prepare()
Σε διαδικτυακές πλατφόρμες, το Widevine λειτουργεί μέσω Media Source Extensions (MSE) και Encrypted Media Extensions (EME). Τα προγράμματα περιήγησης που βασίζονται σε Chromium υποστηρίζουν ενσωματωμένο το Widevine CDM, και ο προγραμματιστής χρειάζεται μόνο να αρχικοποιήσει μια συνεδρία EME με τη σωστή διαμόρφωση.
Για εργασία με Widevine στο πρόγραμμα περιήγησης, πρέπει να καθοριστεί ο εκκινητής άδειας με τύπο keySystem `com.widevine.alpha`. Μετά τη δημιουργία της παρουσίας MediaKeys, το πρόγραμμα περιήγησης χειρίζεται αυτόματα τα αιτήματα αδειών.
Κατά την ενσωμάτωση Widevine, είναι σημαντικό να γίνεται σωστή διαχείριση των σφαλμάτων αδειοδότησης που προκύπτουν όταν δεν υπάρχουν δικαιώματα πρόσβασης, λήξει η συνδρομή ή υπάρχει ασυμβατότητα συσκευής. Το σφάλμα TYPE_EXPIRED_LICENSE απαιτεί ανανέωση της άδειας μέσω νέου αιτήματος στον διακομιστή, ενώ το TYPE_OUTPUT_NOT_ALLOWED υποδηλώνει ασυμβατότητα της εξόδου βίντεο με πολιτικές DRM.
Συνιστάται η υλοποίηση μηχανισμού επανάληψης με εκθετική καθυστέρηση για προσωρινά σφάλματα δικτύου και η εμφάνιση κατανοητού μηνύματος στον χρήστη για μόνιμες απορρίψεις αδειοδότησης. Η καταγραφή σφαλμάτων των συνεδριών DRM βοηθά τους παρόχους περιεχομένου να εντοπίζουν προβλήματα με συσκευές και να βελτιστοποιούν πολιτικές.
Το Widevine ανταγωνίζεται τα FairPlay από την Apple και PlayReady από τη Microsoft, σχηματίζοντας τις τρεις κύριες λύσεις DRM στην αγορά κινητών πλατφορμών. Κάθε τεχνολογία έχει τα πλεονεκτήματα και τους περιορισμούς της που σχετίζονται με το οικοσύστημα της πλατφόρμας.
| Χαρακτηριστικό | Widevine | FairPlay | PlayReady |
|---|---|---|---|
| Προγραμματιστής | Apple | Microsoft | |
| Κύρια πλατφόρμα | Android, Chrome | iOS, tvOS, Safari | Windows, Xbox, UWP |
| Μέγιστο επίπεδο | L1 (4K) | Ισοδύναμο L1 (4K) | SL3000 (4K) |
| Προστασία υλικού | TEE | Secure Enclave | TPM + TEE |
Η επιλογή DRM εξαρτάται από τις πλατφόρμες-στόχους της εφαρμογής. Για έργα Android-first, το Widevine είναι η φυσική επιλογή, καθώς είναι προεγκατεστημένο σε όλες τις πιστοποιημένες συσκευές με Google Mobile Services και δεν απαιτεί πρόσθετο τέλος άδειας.
Για έργα πολλαπλών πλατφορμών, χρησιμοποιείται συχνά προσέγγιση multi-DRM με συγκεντρωτές αδειών όπως Axinom, EZDRM και Vualto, που παρέχουν ενοποιημένο API για εργασία και με τα τρία συστήματα DRM. Αυτό μειώνει την πολυπλοκότητα ενσωμάτωσης και συγκεντροποιεί τη διαχείριση αδειών.
Συχνές Ερωτήσεις
Widevine — μια τεχνολογία DRM από την Google, σχεδιασμένη για την προστασία ψηφιακού περιεχομένου βίντεο από μη εξουσιοδοτημένη αντιγραφή. Χρησιμοποιείται από υπηρεσίες ροής για κρυπτογράφηση βίντεο και διαχείριση πρόσβασης μέσω συστήματος αδειοδότησης.
Το Widevine υποστηρίζει τρία επίπεδα ασφαλείας: L1 με κρυπτογράφηση υλικού σε TEE, L2 με υβριδική προσέγγιση και L3 με πλήρως υλοποίηση λογισμικού. Το L1 επιτρέπει αναπαραγωγή περιεχομένου σε 4K, το L3 περιορίζεται σε ποιότητα 720p.
Το επίπεδο Widevine σε Android μπορεί να ελεγχθεί μέσω της κλάσης MediaDrm, ζητώντας την ιδιότητα securityLevel. Για αυτό, δημιουργείται μια παρουσία MediaDrm με το UUID Widevine και καλείται η getPropertyString, ή χρησιμοποιούνται εφαρμογές τρίτων όπως το DRM Info.
Το Widevine αναπτύχθηκε από την Google για Android και Chrome, ενώ το FairPlay για iOS, tvOS και Safari. Και τα δύο υποστηρίζουν κρυπτογράφηση υλικού και 4K, αλλά το Widevine είναι πιο διαδεδομένο σε συσκευές Android, ενώ το FairPlay αποτελεί το de facto πρότυπο στο οικοσύστημα Apple.
Για τη χρήση Widevine σε εφαρμογή κινητού δεν απαιτείται ξεχωριστή άδεια — η τεχνολογία είναι ενσωματωμένη σε πιστοποιημένες συσκευές Android και Chrome. Χρέωση επιβάλλεται μόνο σε παρόχους περιεχομένου για τη χρήση του διακομιστή αδειών.
Περίληψη
Θα αναπτύξουμε μια εφαρμογή για κινητά έτοιμη για χρήση
Η IT Sectr δημιουργεί εφαρμογές iOS και Android για νεοφυείς επιχειρήσεις και επιχειρήσεις από το 2017. Θα σας συμβουλεύσουμε και θα προτείνουμε την καλύτερη λύση.
Διαβάστε επίσης