Widevine — teknologi DRM yang dikembangkan oleh Google untuk melindungi konten video dari penyalinan tidak sah di perangkat seluler, Smart TV, dan platform web. Enkripsi konten dilakukan melalui modul CDM, yang didukung di 4 miliar perangkat di seluruh dunia. Teknologi Widevine memastikan kompatibilitas dengan Android, iOS, Chrome, dan Smart TV, memungkinkan layanan streaming melindungi konten premium di platform mana pun.
Poin Penting
Widevine — teknologi DRM hak milik yang diakuisisi oleh Google pada tahun 2010 dan menjadi standar de facto untuk perlindungan konten video di ekosistem Android. Ini digunakan oleh layanan streaming terbesar, termasuk Netflix, Amazon Prime Video, Disney+, dan Hulu, untuk mencegah penyalinan dan distribusi konten tidak sah.
Widevine mendukung enkripsi sesuai standar AES-128 CBC menggunakan kunci konten yang hanya dikirim ke perangkat resmi melalui saluran lisensi yang aman. Sistem ini menyediakan perlindungan ujung-ke-ujung dari saat enkripsi di server hingga dekoding di perangkat pengguna.
Perusahaan Widevine Technologies didirikan pada tahun 1999 dan awalnya mengembangkan solusi untuk perlindungan konten di platform televisi kabel. Setelah diakuisisi oleh Google pada tahun 2010, teknologi ini diadaptasi untuk platform seluler dan diintegrasikan ke dalam OS Android mulai versi 4.4 KitKat. Sejak 2015, Widevine menjadi komponen wajib sertifikasi Google Mobile Services.
Pada tahun 2018, Google memperkenalkan Widevine Modular DRM, yang memungkinkan produsen perangkat mengimplementasikan tingkat perlindungan yang berbeda secara perangkat keras tanpa mengubah kode OS. Saat ini, Widevine Modular didukung di lebih dari 4 miliar perangkat dan merupakan mekanisme DRM utama di Android.
Arsitektur Widevine terdiri dari tiga komponen kunci: Content Decryption Module (CDM), server lisensi, dan alat enkripsi konten. CDM melakukan dekripsi di sisi klien dan berinteraksi dengan Trusted Execution Environment (TEE) perangkat keras untuk penyimpanan kunci yang aman.
Server lisensi Google mengelola penerbitan kunci berdasarkan kebijakan penyedia konten, yang menentukan batasan waktu, jumlah perangkat, dan kualitas pemutaran. Alat enkripsi menyiapkan konten di sisi penyedia, mengemasnya dalam format MPEG-DASH atau HLS dengan enkripsi CENC.
Proses perlindungan dimulai dengan tahap pengemasan konten, ketika file media dienkripsi menggunakan kunci konten di server penyedia. Stream terenkripsi dikirim ke perangkat pengguna melalui CDN, di mana CDM meminta lisensi dari server lisensi.
Server lisensi memverifikasi keaslian perangkat dan hak akses ke konten. Jika verifikasi berhasil, server mengeluarkan lisensi dengan kunci yang digunakan CDM untuk dekripsi. Lisensi dapat berisi batasan waktu tontonan dan resolusi.
Pertukaran lisensi di Widevine diimplementasikan melalui protokol EME (Encrypted Media Extensions) di browser atau melalui SDK di platform seluler. Permintaan lisensi dibentuk oleh CDM dan dikirim ke server lisensi melalui HTTPS, yang memastikan perlindungan terhadap penyadapan kunci saat transit.
Server memproses permintaan dan mengembalikan lisensi yang juga dienkripsi dan hanya dapat didekripsi oleh CDM perangkat. Pengikatan perangkat keras kunci ke perangkat tertentu mencegah pemindahannya ke platform lain.
Widevine menggunakan standar Common Encryption (CENC) yang ditentukan dalam ISO/IEC 23001-7, yang memastikan kompatibilitas dengan format MPEG-DASH dan HLS. Enkripsi AES-128 dalam mode CTR atau CBC diterapkan untuk melindungi stream media.
Untuk derivasi kunci digunakan HKDF (HMAC-based Key Derivation Function), yang memungkinkan pembuatan kunci unik untuk setiap segmen konten. Dukungan HLS di Widevine ditambahkan sejak versi Modular 2.0, yang memperluas kompatibilitas dengan platform 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 mendefinisikan tiga tingkat keamanan yang berbeda dalam cara pelaksanaan operasi kriptografi dan pemrosesan konten. Tingkat L1 memberikan perlindungan maksimal, L3 — minimal, L2 menempati posisi menengah.
| Tingkat | Jenis perlindungan | Persyaratan perangkat | Resolusi maksimal |
|---|---|---|---|
| L1 | Perangkat keras | TEE di tingkat SoC | 4K Ultra HD |
| L2 | Hibrida | TEE untuk kunci, perangkat lunak untuk video | 1080p |
| L3 | Perangkat lunak | Hanya CDM perangkat lunak | 720p |
Tingkat L1 memerlukan keberadaan Trusted Execution Environment (TEE) di tingkat perangkat keras, tempat semua operasi kriptografi dijalankan. Kunci konten tidak pernah meninggalkan TEE, yang mengecualikan ekstraksinya bahkan jika OS utama dikompromikan.
Perangkat dengan sertifikasi L1 dapat memutar konten dalam kualitas 4K dan HDR, karena stream video yang didekripsi dikirim langsung ke output video yang dilindungi tanpa akses dari proses pengguna.
Tingkat L3 menjalankan semua operasi kriptografi secara perangkat lunak di ruang pengguna biasa. Ini adalah mode yang paling tidak aman, di mana kunci dapat diekstraksi dari RAM perangkat.
Widevine L3 membatasi kualitas pemutaran hingga 720p, membuatnya cocok untuk menonton di perangkat kelas bawah atau browser desktop tanpa perlindungan perangkat keras.
fun getSecurityLevel(): String {
val mediaDrm = MediaDrm(UUID.fromString(
"edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"
))
val level = mediaDrm.getPropertyString(
"securityLevel"
)
return level.ifEmpty { "L3" }
}
Integrasi Widevine dalam aplikasi seluler dilakukan melalui API standar MediaDrm (Android) dan AVContentKeySession (iOS). Dalam kebanyakan kasus, pengembang tidak perlu bekerja langsung dengan DRM — pustaka pemutar seperti ExoPlayer dan AVPlayer menangani lisensi secara otomatis.
Di Android, Widevine diintegrasikan melalui kelas MediaDrm yang menyediakan akses langsung ke CDM. Untuk aplikasi streaming, disarankan menggunakan ExoPlayer dengan modul DrmSessionManager yang secara otomatis mengelola permintaan lisensi.
Saat menginisialisasi pemutar, UUID skema Widevine (`edef8ba9-79d6-4ace-a3c8-27dcd51d21ed`) dan URL server lisensi yang disediakan oleh penyedia konten harus ditentukan. ExoPlayer secara otomatis menangani siklus permintaan dan pembaruan lisensi.
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()
Di platform web, Widevine bekerja melalui Media Source Extensions (MSE) dan Encrypted Media Extensions (EME). Browser berbasis Chromium mendukung Widevine CDM secara bawaan, dan pengembang cukup menginisialisasi sesi EME dengan konfigurasi yang benar.
Untuk bekerja dengan Widevine di browser, penginisiasi lisensi dengan tipe keySystem `com.widevine.alpha` harus ditentukan. Setelah membuat instance MediaKeys, browser secara otomatis menangani permintaan lisensi.
Saat mengintegrasikan Widevine, penting untuk menangani kesalahan lisensi dengan benar yang terjadi ketika hak akses tidak ada, langganan kedaluwarsa, atau ketidakcocokan perangkat. Kesalahan TYPE_EXPIRED_LICENSE memerlukan pembaruan lisensi melalui permintaan ulang ke server, dan TYPE_OUTPUT_NOT_ALLOWED menunjukkan ketidakcocokan output video dengan kebijakan DRM.
Disarankan untuk mengimplementasikan mekanisme percobaan ulang dengan penundaan eksponensial untuk kesalahan jaringan sementara dan menampilkan pesan yang dapat dipahami kepada pengguna saat penolakan lisensi permanen. Pencatatan kesalahan sesi DRM membantu penyedia konten mengidentifikasi masalah dengan perangkat dan mengoptimalkan kebijakan.
Widevine bersaing dengan FairPlay dari Apple dan PlayReady dari Microsoft, membentuk tiga solusi DRM utama di pasar platform seluler. Setiap teknologi memiliki kelebihan dan keterbatasan terkait ekosistem platform.
| Karakteristik | Widevine | FairPlay | PlayReady |
|---|---|---|---|
| Pengembang | Apple | Microsoft | |
| Platform utama | Android, Chrome | iOS, tvOS, Safari | Windows, Xbox, UWP |
| Tingkat maksimal | L1 (4K) | Setara L1 (4K) | SL3000 (4K) |
| Perlindungan perangkat keras | TEE | Secure Enclave | TPM + TEE |
Pemilihan DRM tergantung pada platform target aplikasi. Untuk proyek Android-first, Widevine adalah pilihan alami karena sudah terinstal di semua perangkat bersertifikat dengan Google Mobile Services dan tidak memerlukan biaya lisensi tambahan.
Untuk proyek lintas platform, sering digunakan pendekatan multi-DRM dengan agregator lisensi seperti Axinom, EZDRM, dan Vualto, yang menyediakan API terpadu untuk bekerja dengan ketiga sistem DRM. Ini mengurangi kompleksitas integrasi dan memusatkan manajemen lisensi.
Pertanyaan Umum
Widevine — teknologi DRM dari Google, dirancang untuk melindungi konten video digital dari penyalinan tidak sah. Ini digunakan oleh layanan streaming untuk mengenkripsi video dan mengelola akses ke sana melalui sistem lisensi.
Widevine mendukung tiga tingkat keamanan: L1 dengan enkripsi perangkat keras di TEE, L2 dengan pendekatan hibrida, dan L3 dengan implementasi perangkat lunak penuh. L1 memungkinkan pemutaran konten dalam 4K, L3 terbatas pada kualitas 720p.
Tingkat Widevine di Android dapat diperiksa melalui kelas MediaDrm dengan meminta properti securityLevel. Untuk ini, instance MediaDrm dengan UUID Widevine dibuat dan getPropertyString dipanggil, atau aplikasi pihak ketiga seperti DRM Info digunakan.
Widevine dikembangkan oleh Google untuk Android dan Chrome, sedangkan FairPlay untuk iOS, tvOS, dan Safari. Keduanya mendukung enkripsi perangkat keras dan 4K, tetapi Widevine lebih luas di perangkat Android, sementara FairPlay adalah standar de facto di ekosistem Apple.
Untuk menggunakan Widevine di aplikasi seluler lisensi terpisah tidak diperlukan — teknologi ini tertanam di perangkat Android bersertifikat dan Chrome. Biaya hanya dikenakan kepada penyedia konten untuk penggunaan server lisensi.
Ringkasan
Kami akan mengembangkan aplikasi seluler turnkey
IT Sectr membuat aplikasi iOS dan Android untuk startup dan bisnis sejak 2017. Kami akan memberi saran dan mengusulkan solusi terbaik.
Baca juga