DRM (Digital Rights Management) — kumpulan teknologi perlindungan konten digital dari penyalinan dan distribusi tidak sah. Dalam aplikasi seluler, DRM digunakan untuk mengenkripsi video, audio, dan buku elektronik, memastikan kepatuhan terhadap perjanjian lisensi antara pemilik hak dan konsumen. Menurut Google Widevine Documentation, 2026, DRM tertanam di sebagian besar layanan streaming — Netflix, Spotify, Apple TV+ — dan wajib untuk distribusi legal konten premium.
Poin Utama
DRM — adalah kumpulan metode kriptografi dan perangkat lunak yang mengontrol akses ke konten digital. Berbeda dengan enkripsi sederhana, DRM mencakup sistem lisensi: konten dienkripsi, dan untuk melihatnya diperlukan kunci yang diberikan hanya setelah pemeriksaan hak pengguna.
Tugas utama DRM adalah mencegah pembajakan dan memastikan kepatuhan terhadap pembatasan regional. Tanpa DRM, pemilik konten (studio film, label rekaman) tidak memberikan lisensi konten mereka ke platform streaming. Menurut Motion Picture Association (2025), penggunaan DRM telah mengurangi distribusi ilegal film dalam streaming sebesar 62% dibandingkan dengan era rip DVD.
Dalam pengembangan seluler, DRM tertanam di tingkat pemutar media: pengembang menggunakan ExoPlayer (Android), AVPlayer (iOS), atau Shaka Player (Web), yang mendukung dekripsi bawaan aliran terenkripsi. Pengembang tidak perlu mengimplementasikan kriptografi — cukup mengintegrasikan SDK untuk lisensi.
Standar CENC (Common Encryption — ISO/IEC 23001-7) memungkinkan penggunaan satu file media terenkripsi untuk semua sistem DRM. Konten dienkripsi sekali, dan kunci didistribusikan melalui server lisensi yang berbeda. Ini sangat penting untuk layanan multi-platform: Netflix mengenkripsi film sekali dan mengirimkannya ke Android (Widevine), iOS (FairPlay), dan Windows (PlayReady) tanpa pengkodean ulang.
CENC menggunakan enkripsi CBC dengan kunci berbeda untuk trek audio dan video. Setiap kunci disimpan dalam bentuk terenkripsi di manifes MPD (MPEG-DASH) atau M3U8 (HLS). Pengidentifikasi konten (KID) menghubungkan aliran terenkripsi dengan lisensi di server — tanpa lisensi yang valid, kunci tidak didekripsi.
Proses pemutaran DRM terdiri dari empat tahap: memuat manifes, mendapatkan lisensi, mendekripsi konten, dan menampilkan. Setiap tahap dilakukan oleh komponen sistem yang berbeda — pemutar media, modul CDM, dan server lisensi.
CDM — adalah modul perangkat lunak atau perangkat keras yang diamankan yang melakukan dekripsi konten. Di Android, CDM diimplementasikan di tingkat API MediaDrm, di iOS — tertanam di AVFoundation melalui AVContentKeySession. CDM tidak pernah mengungkapkan kunci ke aplikasi — semua operasi kriptografi dilakukan di dalam lingkungan yang aman (TEE — Trusted Execution Environment).
Pada perangkat dengan dukungan perangkat keras (Secure Level 1), CDM bekerja di dalam TEE — kunci tidak pernah masuk ke memori utama perangkat. Ini adalah persyaratan studio untuk pemutaran konten dalam 4K HDR. Pada perangkat tanpa TEE, kunci didekripsi secara perangkat lunak (L3), yang mengurangi perlindungan dan membatasi kualitas maksimum hingga 540p.
Di platform seluler, tiga sistem DRM mendominasi. Masing-masing eksklusif untuk ekosistemnya, tetapi mendukung CENC, yang memungkinkan penggunaan satu konten terenkripsi di semua platform.
| DRM | Pengembang | Platform | Kualitas Maks. | Perlindungan Perangkat Keras |
|---|---|---|---|---|
| Widevine | Android, Chrome, Android TV | 4K HDR (L1) | TEE (L1) | |
| FairPlay | Apple | iOS, iPadOS, macOS, tvOS | 4K HDR (iOS) | Secure Enclave |
| PlayReady | Microsoft | Windows, Xbox, Windows Phone | 4K (SL3000) | TPM + TEE |
Untuk layanan streaming yang berfungsi di semua platform, diperlukan dukungan untuk ketiga DRM. Solusi praktis — menggunakan CDN dengan dukungan multi-DRM (Muvi, Vualto, Axinom), yang secara otomatis mengarahkan permintaan lisensi ke server yang sesuai berdasarkan perangkat pengguna. Menurut Streaming Learning Center (2025), 78% layanan streaming menggunakan pendekatan Multi-DRM.
Standar MPEG-DASH dengan CENC menyederhanakan arsitektur: konten dienkripsi sekali dengan kunci bersama, dan sistem DRM dipilih di sisi klien. Server lisensi menerima permintaan dengan pengidentifikasi perangkat dan mengembalikan kunci yang dienkripsi untuk CDM tertentu. Tidak ada perbedaan konten untuk platform yang berbeda — hanya server lisensi yang berbeda.
Widevine — sistem DRM Google, yang merupakan standar de facto di Android. Ini mendukung tiga tingkat keamanan yang menentukan di mana dan bagaimana dekripsi konten dilakukan. Tingkat keamanan tergantung pada kemampuan perangkat keras perangkat dan menentukan resolusi maksimum konten.
Widevine L1 (perangkat keras) — tingkat paling aman. Semua operasi kriptografi dilakukan di dalam Trusted Execution Environment (TEE). Kunci tidak pernah meninggalkan area yang aman. Perangkat dengan L1 dapat memutar konten hingga 4K HDR. Diperlukan sertifikasi Google — prosedur yang dilalui perangkat flagship.
Widevine L3 (perangkat lunak) — dekripsi terjadi di memori utama perangkat. Kunci dapat diekstraksi oleh penyerang yang mahir secara teknis. Resolusi dibatasi hingga 540p (960x540) untuk konten premium. Semua perangkat dengan Android mendukung L3, bahkan jika tidak bersertifikat untuk L1.
Widevine L2 — tingkat antara yang jarang, di mana dekripsi dilakukan di TEE, tetapi rendering melalui jalur yang tidak dilindungi. Digunakan di beberapa Smart TV. Pada perangkat seluler praktis tidak ditemukan.
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 — perlindungan perangkat keras"
"L3" -> "Widevine L3 — perlindungan perangkat lunak"
else -> "Widevine $securityLevel"
}
}
Metode meminta dari CDM properti securityLevel melalui UUID Widevine. Nilai yang dikembalikan — string L1, L2, atau L3 — menunjukkan tingkat perlindungan perangkat saat ini. Informasi ini sangat penting untuk layanan streaming: jika perangkat hanya memiliki L3, konten 4K tidak dapat ditampilkan.
FairPlay — sistem DRM Apple, tertanam di semua platform ekosistem: iOS, iPadOS, macOS, tvOS, dan watchOS. Tidak seperti Widevine, FairPlay tidak memiliki tingkat keamanan — perlindungan ditentukan oleh perangkat. Di iOS dengan Secure Enclave, FairPlay memberikan tingkat perlindungan yang sebanding dengan Widevine L1.
FairPlay bekerja secara eksklusif dengan protokol HLS (HTTP Live Streaming). Konten dikemas dalam segmen .ts (MPEG-TS) atau fragmen .m4s (fMP4). Manifes M3U8 berisi tag #EXT-X-KEY dengan URI server lisensi (KSM — Key Server Module) dan IV inisialisasi. Saat memulai pemutaran, AVPlayer membaca manifes dan melalui AVContentKeySession meminta kunci.
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)
)
}
}
Delegasi AVContentKeySession menerima permintaan kunci dengan pengidentifikasi konten (assetId). Aplikasi mengirim ID ini ke server lisensinya sendiri (KSM), yang mengembalikan kunci terenkripsi. Panggilan processContentKeyResponse meneruskan kunci ke CDM untuk dekripsi. Jika lisensi tidak valid (kedaluwarsa, tidak dibayar), server mengembalikan kesalahan 403, dan AVPlayer tidak memulai pemutaran.
FairPlay mendukung persistent keys — menyimpan lisensi di perangkat untuk tampilan offline. Setelah mendapatkan kunci, aplikasi memanggil processContentKeyResponse dengan flag allowsPersistableKey. Kunci disimpan di Keychain dan dapat digunakan tanpa menghubungi server saat menonton ulang. Namun, masa berlaku lisensi offline terbatas — biasanya 7–30 hari, setelah itu diperlukan pembaruan.
Lisensi offline disimpan di penyimpanan aman iOS — Keychain. Saat percobaan peretasan (jalibreak, ekstraksi dump memori), Secure Enclave menghancurkan kunci. Menurut Apple (2025), teknologi persistent keys digunakan di Apple TV+, Netflix, dan Disney+ untuk mengunduh konten ke iPad sebelum perjalanan.
PlayReady — DRM dari Microsoft, digunakan di Windows, Xbox, dan Windows Phone yang sudah usang. Meskipun PlayReady pada perangkat seluler lebih jarang daripada Widevine dan FairPlay, ini penting untuk solusi streaming universal yang berfungsi di semua platform Microsoft. PlayReady mendukung perlindungan perangkat lunak dan perangkat keras melalui TPM.
PlayReady menggunakan arsitektur SL (Security Level): SL2000 (perangkat lunak, analog Widevine L3), SL3000 (perangkat keras, analog L1). Di Xbox Series X, PlayReady SL3000 bekerja melalui TEE+TPM — kunci hanya diekstraksi di lingkungan yang aman. Ini memungkinkan pemutaran 4K Blu-ray di konsol tanpa risiko penyalinan.
Menurut Microsoft Docs (2026), PlayReady mendukung CENC dan dapat bekerja dengan MPEG-DASH melalui Media Source Extensions (MSE) di browser Edge. Untuk aplikasi seluler di Android dan iOS, PlayReady tersedia melalui SDK, tetapi jarang digunakan — terutama untuk aplikasi perusahaan dan layanan media Microsoft.
Microsoft menyediakan PlayReady Native SDK untuk Android dan iOS. Integrasi dilakukan melalui ExoPlayer dengan ekstensi PlayReady: pengembang menambahkan PlayReadyRenderer, yang tertanam dalam rantai decoding. ExoPlayer secara otomatis beralih antara Widevine dan PlayReady tergantung pada DRM mana yang ditentukan dalam manifes MPD.
Meskipun PlayReady jarang ditemukan di aplikasi seluler, dukungannya wajib untuk layanan yang merupakan bagian dari ekosistem Microsoft — misalnya, platform pelatihan perusahaan di SharePoint dan Stream. Menurut Microsoft (2025), PlayReady digunakan dalam 23% solusi media perusahaan dibandingkan dengan 62% untuk Widevine.
Integrasi DRM dalam aplikasi seluler tidak memerlukan penulisan kode kriptografi — pengembang bekerja dengan pemutar yang mendukung DRM sejak awal. Mari kita lihat integrasi di Android melalui ExoPlayer dengan ekstensi DRM.
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 mengelola sesi DRM: membuat sesi MediaDrm, memproses permintaan lisensi, dan meneruskan kunci ke decoder. Parameter setMultiSession(true) memungkinkan dekripsi simultan beberapa aliran (audio + video) dalam sesi yang berbeda. MediaDrmCallback mengimplementasikan permintaan HTTP ke server lisensi — biasanya POST dengan badan permintaan dalam format SignedRequest.
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 mengirim permintaan POST ke server lisensi dengan UUID Widevine di badan. Server memeriksa otentikasi pengguna (token di header) dan mengembalikan kunci terenkripsi. Jika pengguna tidak memiliki langganan aktif, server mengembalikan 403 Forbidden — ExoPlayer menghasilkan kesalahan DRM yang harus ditangani melalui onPlayerError.
Kesalahan DRM terjadi ketika lisensi tidak valid, kedaluwarsa, atau perangkat tidak mendukung tingkat perlindungan yang diperlukan. ExoPlayer meneruskan kesalahan melalui Player.Listener.onPlayerError dengan kode TYPE_DRM_LICENSE_EXPIRED, TYPE_DRM_UNSUPPORTED, atau TYPE_SOURCE. Disarankan untuk menampilkan pesan informatif kepada pengguna: „Konten tidak tersedia untuk perangkat ini” atau „Perpanjang langganan untuk menonton”.
Menurut analitik layanan streaming (2025), hingga 8% dari awal pemutaran yang gagal terkait dengan kesalahan DRM. Dari jumlah tersebut, 60% adalah lisensi kedaluwarsa, 25% — ketidakcocokan perangkat, dan 15% — kesalahan jaringan saat permintaan kunci. Percobaan ulang otomatis setelah 5 detik menyelesaikan 40% kasus kesalahan jaringan.
Pertanyaan yang Sering Diajukan
Secara teknis dimungkinkan pada perangkat dengan Widevine L3 (perlindungan perangkat lunak), di mana kunci dapat diekstraksi dari memori. Pada L1 dan FairPlay dengan Secure Enclave, pelewatan sangat sulit — diperlukan akses fisik ke TEE. Studio konten menargetkan perangkat L1 untuk konten premium.
Kemungkinan besar, perangkat tidak bersertifikat untuk Widevine L1 dan menggunakan L3. Netflix membatasi kualitas hingga 540p pada perangkat L3. Periksa tingkat Widevine melalui aplikasi DRM Info dari Google Play. Perangkat flagship Samsung, Pixel, dan OnePlus biasanya memiliki L1.
Gunakan Multi-DRM: Widevine untuk Android, FairPlay untuk Apple, PlayReady untuk Windows. Layanan seperti Axinom atau Vualto menyediakan API terpadu untuk ketiga DRM. Konten dienkripsi sekali melalui CENC, dan pemilihan DRM terjadi secara otomatis di sisi klien.
Di iOS, gunakan persistent keys FairPlay melalui AVContentKeySession. Di Android — Widevine Offline License melalui ExoPlayer OfflineLicenseHelper. Kunci disimpan secara lokal di Keychain (iOS) atau KeyStore (Android) dengan masa berlaku terbatas — biasanya 7 hingga 30 hari.
KID (Key ID) — pengidentifikasi unik 16-byte dari kunci enkripsi di manifes CENC. Setiap KID terikat pada segmen konten tertentu (misalnya, segmen film 10 menit). Server lisensi menggunakan KID untuk menemukan kunci yang sesuai di basis datanya. Satu film dapat berisi hingga 20 KID berbeda untuk bagian yang berbeda.
Kesimpulan
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