DRM dalam Aplikasi Seluler: Dasar, Skema Perlindungan, dan Prinsip Kerja

Penulis: IT Sectr Diterbitkan: 2026-05-24 Waktu membaca: 11 mnt

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 (Digital Rights Management) — teknologi perlindungan hak cipta yang membatasi penyalinan dan distribusi konten digital.
  • Tiga skema utama: Widevine (Google), FairPlay (Apple), PlayReady (Microsoft) — mendominasi platform seluler.
  • Widevine bekerja di Android dan iOS melalui CDM, mendukung tiga tingkat keamanan: L1, L2, L3.
  • FairPlay dari Apple menggunakan server KSM untuk menghasilkan kunci dan tertanam di AVFoundation di iOS dan macOS.
  • Dekripsi DRM terjadi di tingkat pemutar media — pengembang mendapatkan aliran video siap pakai melalui ExoPlayer atau AVPlayer.

Apa itu DRM?

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.

DRM dan CENC (Common Encryption)

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.

Bagaimana DRM bekerja di aplikasi seluler

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.

  • Memuat manifes — pemutar menerima MPD (DASH) atau M3U8 (HLS) dengan metadata tentang segmen terenkripsi, skema enkripsi, dan URL server lisensi.
  • Permintaan lisensi — pemutar meneruskan pengidentifikasi konten (KID) ke Content Decryption Module (CDM), yang membentuk permintaan ke server lisensi.
  • Mendapatkan kunci — server memeriksa hak pengguna (langganan, wilayah, perangkat) dan mengembalikan kunci yang dienkripsi dengan kunci publik perangkat.
  • Dekripsi aliran — CDM mendekripsi kunci dengan kunci privat perangkat dan meneruskannya ke pemutar untuk dekripsi segmen video secara real-time.

Content Decryption Module (CDM)

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.

Skema DRM utama

Di platform seluler, tiga sistem DRM mendominasi. Masing-masing eksklusif untuk ekosistemnya, tetapi mendukung CENC, yang memungkinkan penggunaan satu konten terenkripsi di semua platform.

DRMPengembangPlatformKualitas Maks.Perlindungan Perangkat Keras
WidevineGoogleAndroid, Chrome, Android TV4K HDR (L1)TEE (L1)
FairPlayAppleiOS, iPadOS, macOS, tvOS4K HDR (iOS)Secure Enclave
PlayReadyMicrosoftWindows, Xbox, Windows Phone4K (SL3000)TPM + TEE

Memilih DRM untuk layanan multi-platform

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: tingkat dan fitur

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.

Tingkat keamanan Widevine

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.

Cara menentukan tingkat Widevine pada perangkat

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 — 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.

Apple FairPlay: arsitektur dan prinsip kerja

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.

Integrasi 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)
        )
    }
}

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.

Persistent Key Loading untuk konten offline

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.

Microsoft PlayReady untuk perlindungan universal

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.

PlayReady Native SDK untuk Android

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

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.

Konfigurasi ExoPlayer dengan dukungan 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 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.

MediaDrmCallback untuk permintaan lisensi

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 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.

Penanganan kesalahan DRM

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

Bisakah DRM dilewati di perangkat seluler?

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.

Mengapa Netflix menampilkan kualitas rendah di Android saya?

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.

DRM mana yang lebih baik untuk layanan streaming?

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.

Bagaimana cara mengimplementasikan tampilan offline dengan DRM?

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.

Apa itu KID dalam konteks DRM?

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

  • DRM (Digital Rights Management) — sistem perlindungan kriptografi konten digital, wajib untuk streaming legal.
  • Tiga skema utama: Widevine (Android), FairPlay (iOS), PlayReady (Windows) — menggunakan CENC untuk enkripsi konten terpadu.
  • Widevine L1 (perlindungan perangkat keras melalui TEE) memungkinkan 4K HDR, L3 (perangkat lunak) terbatas pada 540p. Tingkat diperiksa melalui MediaDrm.getPropertyString.
  • FairPlay hanya bekerja dengan HLS dan menggunakan AVContentKeySession untuk permintaan kunci melalui server KSM.
  • Integrasi DRM dilakukan melalui pemutar media: ExoPlayer (Android) dengan DefaultDrmSessionManager, AVPlayer (iOS) dengan AVContentKeySession.
  • Kesalahan DRM ditangani melalui onPlayerError — lisensi kedaluwarsa, ketidakcocokan perangkat, dan kesalahan jaringan merupakan 8% dari awal pemutaran yang gagal.
  • Untuk layanan multi-platform, pendekatan Multi-DRM dengan penyedia CDN dan enkripsi konten CENC terpadu direkomendasikan.

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.

Diskusikan proyek

Baca juga