DRM (Digital Rights Management) — rəqəmsal məzmunun icazəsiz kopyalanması və yayılmasının qarşısını alan texnologiyalar toplusu. Mobil tətbiqlərdə DRM video, audio və elektron kitabları şifrələmək üçün istifadə olunur, hüquq sahibləri ilə istehlakçılar arasında lisenziya müqavilələrinə riayət olunmasını təmin edir. Google Widevine Documentation, 2026 məlumatlarına görə, DRM əksər striminq servislərinə — Netflix, Spotify, Apple TV+ — daxil edilib və premium məzmunun qanuni yayılması üçün məcburidir.
Başlıca
DRM — rəqəmsal məzmuna girişi idarə edən kriptoqrafik və proqram metodlarının məcmusudur. Sadə şifrələmədən fərqli olaraq, DRM lisenziyalaşdırma sistemini əhatə edir: məzmun şifrələnir və onu izləmək üçün istifadəçinin hüquqları yoxlanıldıqdan sonra verilən açar tələb olunur.
DRM-in əsas vəzifəsi piratçılığın qarşısını almaq və regional məhdudiyyətlərə riayəti təmin etməkdir. DRM olmadan məzmun sahibləri (kino studiyaları, səs yazısı leyblları) öz məzmunlarını striminq platformalarına lisenziyalaşdırmırlar. Motion Picture Association (2025) məlumatlarına görə, DRM istifadəsi filmlərin striminqdə qeyri-qanuni yayılmasını DVD ripləri dövrüylə müqayisədə 62% azaldıb.
Mobil inkişafda DRM media pleyer səviyyəsində quraşdırılır: tərtibatçı şifrələnmiş axının daxili şifrəsini açan ExoPlayer (Android), AVPlayer (iOS) və ya Shaka Player (Web) istifadə edir. Tərtibatçı kriptoqrafiyanı tətbiq etməli deyil — lisenziyalaşdırma üçün SDK inteqrasiya etmək kifayətdir.
CENC (Common Encryption — ISO/IEC 23001-7) standartı bütün DRM sistemləri üçün bir şifrələnmiş media faylının istifadəsinə imkan verir. Məzmun bir dəfə şifrələnir, açarlar isə müxtəlif lisenziya serverləri vasitəsilə yayılır. Bu, çoxplatformalı servislər üçün kritik əhəmiyyət daşıyır: Netflix filmi bir dəfə şifrələyir və onu Android (Widevine), iOS (FairPlay) və Windows (PlayReady) üçün yenidən kodlaşdırmadan çatdırır.
CENC audio və video yolları üçün müxtəlif açarlarla CBC şifrələməsindən istifadə edir. Hər açar MPD (MPEG-DASH) və ya M3U8 (HLS) manifestində şifrələnmiş formada saxlanılır. Məzmun identifikatoru (KID) şifrələnmiş axını serverdəki lisenziya ilə əlaqələndirir — etibarlı lisenziya olmadan açar şifrədən çıxmır.
DRM çoxaldılması prosesi dörd mərhələdən ibarətdir: manifestin yüklənməsi, lisenziyanın alınması, məzmunun şifrəsinin açılması və göstərilməsi. Hər mərhələ sistemin müxtəlif komponentləri — media pleyer, CDM modulu və lisenziya serveri tərəfindən yerinə yetirilir.
CDM — məzmunun şifrəsini açan qorunan proqram və ya aparat moduludur. Android-də CDM MediaDrm API səviyyəsində, iOS-da isə AVContentKeySession vasitəsilə AVFoundation-a daxil edilib. CDM heç vaxt açarı tətbiqə açıqlamır — bütün kriptoqrafik əməliyyatlar qorunan mühit daxilində (TEE — Trusted Execution Environment) yerinə yetirilir.
Aparet dəstəyi olan cihazlarda (Secure Level 1) CDM TEE daxilində işləyir — açar heç vaxt cihazın əsas yaddaşına düşmür. Bu, 4K HDR-də məzmunu çoxaltmaq üçün studiyaların tələbidir. TEE olmayan cihazlarda açarlar proqram vasitəsilə şifrədən çıxarılır (L3), bu qorumanı azaldır və maksimum keyfiyyəti 540p ilə məhdudlaşdırır.
Mobil platformalarda üç DRM sistemi üstünlük təşkil edir. Hər biri öz ekosistemi üçün eksklüzivdir, lakin CENC-i dəstəkləyir ki, bu da bütün platformalarda vahid şifrələnmiş məzmundan istifadəyə imkan verir.
| DRM | Tərtibatçı | Platforma | Maks. keyfiyyət | Aparet qoruma |
|---|---|---|---|---|
| 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 |
Bütün platformalarda işləyən striminq servisi üçün hər üç DRM-in dəstəyi tələb olunur. Praktik həll — istifadəçinin cihazından asılı olaraq lisenziya sorğularını avtomatik olaraq müvafiq serverə yönləndirən multi-DRM dəstəyi olan CDN (Muvi, Vualto, Axinom) istifadə etməkdir. Streaming Learning Center (2025) məlumatlarına görə, striminq servislərinin 78%-i Multi-DRM yanaşmasından istifadə edir.
CENC ilə MPEG-DASH standartı arxitekturanı sadələşdirir: məzmun ümumi açarla bir dəfə şifrələnir, DRM sistemi isə müştəri tərəfində seçilir. Lisenziya serveri cihaz identifikatoru ilə sorğu alır və konkret CDM üçün şifrələnmiş açarı qaytarır. Müxtəlif platformalar üçün məzmun fərqi yoxdur — yalnız fərqli lisenziya serveri.
Widevine — Android-də de-facto standart olan Google DRM sistemidir. Məzmunun şifrəsinin harada və necə açıldığını müyyənləşdirən üç təhlükəsizlik səviyyəsini dəstəkləyir. Təhlükəsizlik səviyyəsi cihazın aparat imkanlarından asılıdır və məzmunun maksimum təsvir ölçüsünü müyyənləşdirir.
Widevine L1 (aparet) — ən qorunan səviyyə. Bütün kriptoqrafik əməliyyatlar Trusted Execution Environment (TEE) daxilində yerinə yetirilir. Açar heç vaxt qorunan sahəni tərk etmir. L1 olan cihazlar 4K HDR-dək məzmunu çoxaltmağa qadirdir. Google sertifikatı tələb olunur — flagman cihazların keçdiyi prosedur.
Widevine L3 (proqram) — şifrənin açılması cihazın əsas yaddaşında baş verir. Açar texniki bilikli hücumçu tərəfindən çıxarıla bilər. Premium məzmun üçün təsvir ölçüsü 540p (960x540) ilə məhdudlaşdırılır. L1 üçün sertifikatlaşdırılmasa belə, Android olan bütün cihazlar L3-ü dəstəkləyir.
Widevine L2 — nadir aralıq səviyyə, burada şifrənin açılması TEE-də, lakin renderinq qorunmayan yolda aparılır. Bəzi Smart TV-lərdə istifadə olunur. Mobil cihazlarda praktiki olaraq rast gəlinmir.
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 — aparat qoruma"
"L3" -> "Widevine L3 — proqram qoruma"
else -> "Widevine $securityLevel"
}
}
Metod CDM-dən Widevine UUID vasitəsilə securityLevel xüsusiyyətini sorğuş edir. Qaytarılan dəyər — L1, L2 və ya L3 sətri — cihazın cari qoruma səviyyəsini göstərir. Bu məlumat striminq servisləri üçün kritikdir: cihaz yalnız L3-ə malikdirsə, 4K məzmunu göstərmək olmaz.
FairPlay — ekosistemin bütün platformalarına daxil edilmiş Apple DRM sistemidir: iOS, iPadOS, macOS, tvOS və watchOS. Widevine-dən fərqli olaraq, FairPlay-in təhlükəsizlik səviyyələri yoxdur — qoruma cihaz tərəfindən müyyənləşdirilir. Secure Enclave ilə iOS-da FairPlay Widevine L1 ilə müqayisə edilə bilən qoruma səviyyəsi təmin edir.
FairPlay yalnız HLS (HTTP Live Streaming) protokolu ilə işləyir. Məzmun .ts (MPEG-TS) seqmentlərinə və ya .m4s (fMP4) fraqmentlərinə paketlənir. M3U8 manifesti lisenziya serverinin URI-i (KSM — Key Server Module) və IV başlatma ilə #EXT-X-KEY teqini ehtiva edir. Çoxaldılmaya başlayanda AVPlayer manifesti oxuyur və AVContentKeySession vasitəsilə açarı sorğuş edir.
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)
)
}
}
AVContentKeySession delegatı məzmun identifikatoru (assetId) ilə açar sorğu alır. Tətbiq bu ID-ni öz lisenziya serverinə (KSM) göndərir, o da şifrələnmiş açarı qaytarır. processContentKeyResponse çağırışı açarı şifrənin açılması üçün CDM-ə ötürür. Lisenziya etibarsızdırsa (müddəti bitib, ödənilməyib), server 403 xətası qaytarır və AVPlayer çoxaldılmaya başlamır.
FairPlay persistent keys — offline baxış üçün lisenziyanın cihazda saxlanmasını dəstəkləyir. Açarı aldıqdan sonra tətbiq allowsPersistableKey bayrağı ilə processContentKeyResponse çağırır. Açar Keychain-də saxlanılır və təkrari baxış zamanı serverə müraciət etmədən istifadə edilə bilər. Lakin offline lisenziyanın müddəti məhduddur — adətən 7–30 gün, sonra yenilənmə tələb olunur.
Offline lisenziyalar iOS-un qorunan anbarında — Keychain-də saxlanılır. Sındırma cəhdi (jalibreak, yaddaş dumpinin çıxarılması) zamanı Secure Enclave açarları məhv edir. Apple (2025) məlumatlarına görə, persistent keys texnologiyası səyahətdən əvvəl iPad-ə məzmun yükləmək üçün Apple TV+, Netflix və Disney+-də istifadə olunur.
PlayReady — Windows, Xbox və köhnəlmiş Windows Phone-da istifadə olunan Microsoft DRM-i. Mobil cihazlarda PlayReady Widevine və FairPlay-dən daha az rast gəlinsə də, Microsoft-un bütün platformalarında işləyən universal striminq həlləri üçün vacibdir. PlayReady TPM vasitəsilə həm proqram, həm də aparat qorumasını dəstəkləyir.
PlayReady SL (Security Level) arxitekturasından istifadə edir: SL2000 (proqram, Widevine L3 analoqu), SL3000 (aparat, L1 analoqu). Xbox Series X-də PlayReady SL3000 TEE+TPM vasitəsilə işləyir — açarlar yalnız qorunan mühitdə çıxarılır. Bu, konsolda kopyalama riski olmadan 4K Blu-ray çoxaltmağa imkan verir.
Microsoft Docs (2026) məlumatlarına görə, PlayReady CENC-i dəstəkləyir və Edge brauzerlərində Media Source Extensions (MSE) vasitəsilə MPEG-DASH ilə işləyə bilər. Android və iOS üçün mobil tətbiqlərdə PlayReady SDK vasitəsilə mövcuddur, lakin nadir hallarda istifadə olunur — əsasən korporativ tətbiqlər və Microsoft media servisləri üçün.
Microsoft Android və iOS üçün PlayReady Native SDK təqdim edir. İnteqrasiya PlayReady genişləndirilməsi ilə ExoPlayer vasitəsilə həyata keçirilir: tərtibatçı dekodlaşdırma zəncirinə daxil edilən PlayReadyRenderer əlavə edir. ExoPlayer MPD manifestində hansı DRM göstərildiyindən asılı olaraq Widevine və PlayReady arasında avtomatik keçid edir.
PlayReady mobil tətbiqlərdə nadir hallarda rast gəlinsə də, onun dəstəyi Microsoft ekosisteminə daxil olan servislər — məsələn, SharePoint və Stream-də korporativ təhsil platformaları üçün məcburidir. Microsoft (2025) məlumatlarına görə, PlayReady korporativ media həllərinin 23%-də istifadə olunur, Widevine isə 62%-də.
DRM-in mobil tətbiqə inteqrasiyası kriptoqrafik kodun yazılmasını tələb etmir — tərtibatçı DRM-i \u0259vvəldən dəstəkləyən pleyerlə işləyir. Android-də DRM genişləndirilməsi ilə ExoPlayer vasitəsilə inteqrasiyanı nəzərdən keçirək.
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 sessiyasını idarə edir: MediaDrm sessiyası yaradır, lisenziya sorğularını emal edir və açarları dekoderə ötürür. setMultiSession(true) parametri müxtəlif sessiyalarda eyni anda bir neçə axının (audio + video) şifrəsini açmağa imkan verir. MediaDrmCallback lisenziya serverinə HTTP sorğunu həyata keçirir — adətən SignedRequest formatında sorğu gövdəsi ilə POST.
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 lisenziya serverinə gövdədə Widevine UUID ilə POST sorğu göndərir. Server istifadəçinin autentifikasiyasını (başlıqdakı token) yoxlayır və şifrələnmiş açarı qaytarır. İstifadəçinin aktiv abunəsi yoxdursa, server 403 Forbidden qaytarır — ExoPlayer onPlayerError vasitəsilə idarə edilməli olan DRM xətası yaradır.
DRM xətaları lisenziya etibarsız olduqdada, müddəti bitdikdə və ya cihaz tələb olunan qoruma səviyyəsini dəstəkləmədikdə baş verir. ExoPlayer TYPE_DRM_LICENSE_EXPIRED, TYPE_DRM_UNSUPPORTED və ya TYPE_SOURCE kodu ilə Player.Listener.onPlayerError vasitəsilə xətanı ötürür. İstifadəçiyə məlumatlandırıcı mesaj göstərmək tövsiyə olunur: „Məzmun bu cihaz üçün mövcud deyil” və ya „Baxış üçün abunəni uzadın”.
Striminq servislərinin analitikasına (2025) görə, uğursuz çoxaldılma başlantılarının 8%-i DRM xətaları ilə bağlıdır. Bunların 60%-i müddəti bitmiş lisenziyalar, 25%-i cihaz uyğunsuzluğu və 15%-i açar sorğu zamanı şəbəkə xətalarıdır. 5 saniyədən sonra avtomatik təkrarlı cəhd şəbəkə xətalarının 40% hallarını həll edir.
Tez-tez verilən suallar
Texniki cəhətdən Widevine L3 (proqram qoruma) olan cihazlarda mümkündür, burada açar yaddaşdan çıxarıla bilər. L1 və Secure Enclave ilə FairPlay-də yan keçmə son dərəcə çətindir — TEE-yə fiziki giriş tələb olunur. Məzmun studiyaları premium məzmun üçün L1 cihazlarına yönəlir.
Çox gümanki, cihaz Widevine L1 üçün sertifikatlaşdırılmayıb və L3 istifadə edir. Netflix L3 cihazlarında keyfiyyəti 540p ilə məhdudlaşdırır. Google Play-dən DRM Info tətbiqi vasitəsilə Widevine səviyyəsini yoxlayın. Samsung, Pixel və OnePlus flaqman cihazları adətən L1-ə malikdir.
Multi-DRM istifadə edin: Android üçün Widevine, Apple üçün FairPlay, Windows üçün PlayReady. Axinom və ya Vualto kimi servislər hər üç DRM üçün vahid API təqdim edir. Məzmun CENC vasitəsilə bir dəfə şifrələnir, DRM seçimi isə müştəri tərəfində avtomatik baş verir.
iOS-da AVContentKeySession vasitəsilə FairPlay persistent keys istifadə edin. Android-də — ExoPlayer OfflineLicenseHelper vasitəsilə Widevine Offline License. Açar məhdud müddətlə — adətən 7 ilə 30 gün arası — Keychain (iOS) və ya KeyStore (Android)-də lokal saxlanılır.
KID (Key ID) — CENC manifestində şifrələmə açarının unikal 16 baytlıq identifikatoru. Hər KID məzmunun müəyyən hissəsinə (məsələn, filmin 10 dəqiqəlik seqmentinə) bağlıdır. Lisenziya serveri öz verilənlər bazasında müvafiq açarı tapmaq üçün KID-dən istifadə edir. Bir film müxtəlif hissələr üçün 20-dək fərqli KID ehtiva edə bilər.
Nəticə
Açar təslim mobil tətbiq hazırlayacağıq
IT Sectr 2017-ci ildən startaplar və bizneslər üçün iOS və Android tətbiqləri yaradır. Sizə məsləhət verəcəyik və ən yaxşı həlli təklif edəcəyik.
Həm də oxuyun