Widevine — Google tomonidan mobil qurilmalar, Smart TV va veb-platformalarda video kontentni ruxsatsiz nusxalashdan himoya qilish uchun ishlab chiqilgan DRM texnologiyasi. Kontentni shifrlash dunyo bo'ylab 4 milliard qurilmada qo'llab-quvvatlanadigan CDM moduli orqali amalga oshiriladi. Widevine texnologiyasi Android, iOS, Chrome va Smart TV bilan moslikni ta'minlab, striming xizmatlariga premium kontentni istalgan platformada himoya qilish imkonini beradi.
Asosiy nuqtalar
Widevine — 2010-yilda Google tomonidan sotib olingan va Android ekotizimida video kontentni himoya qilish uchun de-fakto standartga aylangan xususiy DRM texnologiyasi. U Netflix, Amazon Prime Video, Disney+ va Hulu kabi eng yirik striming xizmatlari tomonidan kontentni ruxsatsiz nusxalash va tarqatishning oldini olish uchun ishlatiladi.
Widevine faqat vakolatli qurilmalarga xavfsiz litsenziyalash kanali orqali uzatiladigan kontent kalitlari yordamida AES-128 CBC standarti bo'yicha shifrlashni qo'llab-quvvatlaydi. Tizim serverda shifrlash paytidan foydalanuvchi qurilmasida dekodlashgacha bo'lgan yakuniy himoyani ta'minlaydi.
Widevine Technologies kompaniyasi 1999-yilda tashkil etilgan va dastlab kabel televidenie platformalarida kontentni himoya qilish uchun yechimlar ishlab chiqqan. 2010-yilda Google tomonidan sotib olingandan so'ng, texnologiya mobil platformalar uchun moslashtirilgan va Android 4.4 KitKat versiyasidan boshlab operatsion tizimga integratsiya qilingan. 2015-yildan boshlab Widevine Google Mobile Services sertifikatsiyasining majburiy komponentiga aylandi.
2018-yilda Google Widevine Modular DRM-ni taqdim etdi, bu qurilma ishlab chiqaruvchilariga operatsion tizim kodini o'zgartirmasdan turli xil himoya darajalarini apparat darajasida amalga oshirish imkonini berdi. Bugungi kunda Widevine Modular 4 milliarddan ortiq qurilmada qo'llab-quvvatlanadi va Android-da asosiy DRM mexanizmi hisoblanadi.
Widevine arxitekturasi uchta asosiy komponentdan iborat: Content Decryption Module (CDM), litsenziya serveri va kontentni shifrlash vositasi. CDM mijoz tomonida shifrni ochishni amalga oshiradi va kalitlarni xavfsiz saqlash uchun apparat Trusted Execution Environment (TEE) bilan o'zaro aloqada bo'ladi.
Google litsenziya serveri kontent provayderining siyosatlari asosida kalitlarni berishni boshqaradi, bu siyosatlar vaqt cheklovlari, qurilmalar soni va ijro sifatini belgilaydi. Shifrlash vositasi provayder tomonida kontentni tayyorlaydi, uni CENC shifrlashi bilan MPEG-DASH yoki HLS formatida paketlaydi.
Himoya jarayoni kontentni paketlash bosqichidan boshlanadi, media fayl provayder serverida kontent kaliti yordamida shifrlanadi. Shifrlangan oqim CDN orqali foydalanuvchi qurilmasiga uzatiladi, bu yerda CDM litsenziya serveridan litsenziya so'raydi.
Litsenziya serveri qurilmaning haqiqiyligini va kontentga kirish huquqini tekshiradi. Tekshirish muvaffaqiyatli bo'lsa, server CDM shifrni ochish uchun foydalanadigan kalit bilan litsenziya beradi. Litsenziya tomosha vaqti va rezolyutsiya bo'yicha cheklovlarni o'z ichiga olishi mumkin.
Widevine-da litsenziya almashinuvi brauzerlarda EME (Encrypted Media Extensions) protokoli yoki mobil platformalarda SDK orqali amalga oshiriladi. Litsenziya so'rovi CDM tomonidan shakllantiriladi va HTTPS orqali litsenziya serveriga yuboriladi, bu kalitlarni uzatish paytida tutib qolishdan himoya qiladi.
Server so'rovni qayta ishlaydi va faqat qurilma CDM tomonidan shifrni ochish mumkin bo'lgan litsenziyani qaytaradi. Apparat bog'lanishi kalitning ma'lum bir qurilmaga bog'lanishini ta'minlab, uni boshqa platformalarga ko'chirishning oldini oladi.
Widevine ISO/IEC 23001-7 da belgilangan Common Encryption (CENC) standartlaridan foydalanadi, bu MPEG-DASH va HLS formatlari bilan moslikni ta'minlaydi. AES-128 shifrlashi CTR yoki CBC rejimida media oqimlarini himoya qilish uchun qo'llaniladi.
Kalit chiqarish uchun HKDF (HMAC-based Key Derivation Function) ishlatiladi, bu kontentning har bir segmenti uchun noyob kalitlarni yaratish imkonini beradi. HLS qo'llab-quvvatlashi Widevine-ga Modular 2.0 versiyasidan qo'shilgan, bu Apple platformalari bilan moslikni kengaytirdi.
@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 uchta xavfsizlik darajasini belgilaydi, ular kriptografik operatsiyalarni bajarish usuli va kontentni qayta ishlash bilan farqlanadi. L1 darajasi maksimal himoyani ta'minlaydi, L3 — minimal, L2 esa oraliq o'rinni egallaydi.
| Daraja | Himoya turi | Qurilma talablari | Maksimal rezolyutsiya |
|---|---|---|---|
| L1 | Apparat | SoC darajasida TEE | 4K Ultra HD |
| L2 | Gibrid | Kalitlar uchun TEE, video uchun dasturiy | 1080p |
| L3 | Dasturiy | Faqat dasturiy CDM | 720p |
L1 darajasi barcha kriptografik operatsiyalar bajariladigan apparat darajasida Trusted Execution Environment (TEE) mavjudligini talab qiladi. Kontent kalitlari hech qachon TEE-ni tark etmaydi, bu asosiy operatsion tizim buzilgan taqdirda ham ularni chiqarib olishni istisno qiladi.
L1 sertifikatiga ega qurilmalar kontentni 4K va HDR sifatida ijro etishi mumkin, chunki shifrdan ochilgan video oqimi foydalanuvchi jarayonlari kirishisiz to'g'ridan-to'g'ri himoyalangan video chiqishiga uzatiladi.
L3 darajasi barcha kriptografik operatsiyalarni oddiy foydalanuvchi fazosida dasturiy ravishda bajaradi. Bu kalitlar qurilmaning operativ xotirasidan chiqarib olinishi mumkin bo'lgan eng kam xavfsiz rejimdir.
Widevine L3 ijro sifatini 720p bilan cheklaydi, bu uni past darajali qurilmalarda yoki apparat himoyasisiz ish stoli brauzerlarida tomosha qilish uchun mos qiladi.
fun getSecurityLevel(): String {
val mediaDrm = MediaDrm(UUID.fromString(
"edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"
))
val level = mediaDrm.getPropertyString(
"securityLevel"
)
return level.ifEmpty { "L3" }
}
Widevine integratsiyasi mobil ilovalarda standart MediaDrm (Android) va AVContentKeySession (iOS) API-lari orqali amalga oshiriladi. Ko'p hollarda dasturchi to'g'ridan-to'g'ri DRM bilan ishlashi shart emas — ExoPlayer va AVPlayer kabi pleer kutubxonalari litsenziyalashni avtomatik boshqaradi.
Android-da Widevine CDM-ga to'g'ridan-to'g'ri kirishni ta'minlovchi MediaDrm sinfi orqali integratsiya qilinadi. Striming ilovalari uchun litsenziya so'rovlarini avtomatik boshqaradigan DrmSessionManager moduli bilan ExoPlayer-dan foydalanish tavsiya etiladi.
Pleerni ishga tushirishda Widevine sxemasining UUID-si (`edef8ba9-79d6-4ace-a3c8-27dcd51d21ed`) va kontent provayderi tomonidan taqdim etilgan litsenziya serveri URL-i ko'rsatilishi kerak. ExoPlayer litsenziya so'rovi va yangilash siklini mustaqil boshqaradi.
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()
Veb-platformalarda Widevine Media Source Extensions (MSE) va Encrypted Media Extensions (EME) orqali ishlaydi. Chromium asosidagi brauzerlar Widevine CDM-ni ichki qo'llab-quvvatlaydi va dasturchi faqat to'g'ri konfiguratsiya bilan EME sessiyasini ishga tushirishi kerak.
Brauzerda Widevine bilan ishlash uchun keySystem turi `com.widevine.alpha` bo'lgan litsenziya boshlovchisi ko'rsatilishi kerak. MediaKeys namunasi yaratilgandan so'ng, brauzer litsenziya so'rovlarini avtomatik boshqaradi.
Widevine integratsiyasida kirish huquqlarining yo'qligi, obuna muddati tugashi yoki qurilma nomuvofiqligi sababli yuzaga keladigan litsenziyalash xatolarini to'g'ri qayta ishlash muhimdir. TYPE_EXPIRED_LICENSE xatosi serverga qayta so'rov orqali litsenziyani yangilashni talab qiladi, TYPE_OUTPUT_NOT_ALLOWED esa video chiqishining DRM siyosatlariga nomuvofiqligini ko'rsatadi.
Vaqtinchalik tarmoq xatolari uchun eksponensial kechikish bilan qayta urinish mexanizmini amalga oshirish va doimiy litsenziyalash rad etilishida foydalanuvchiga tushunarli xabarni ko'rsatish tavsiya etiladi. DRM sessiyalari xato jurnali kontent provayderlariga qurilma muammolarini aniqlash va siyosatlarni optimallashtirishda yordam beradi.
Widevine raqobatlashadi Apple-dan FairPlay va Microsoft-dan PlayReady bilan, mobil platformalar bozorida uchta asosiy DRM yechimini shakllantirib. Har bir texnologiya platforma ekotizimi bilan bog'liq o'z afzalliklari va cheklovlariga ega.
| Xususiyat | Widevine | FairPlay | PlayReady |
|---|---|---|---|
| Ishlab chiqaruvchi | Apple | Microsoft | |
| Asosiy platforma | Android, Chrome | iOS, tvOS, Safari | Windows, Xbox, UWP |
| Maksimal daraja | L1 (4K) | L1 ekvivalenti (4K) | SL3000 (4K) |
| Apparat himoyasi | TEE | Secure Enclave | TPM + TEE |
DRM tanlovi ilovaning maqsadli platformalariga bog'liq. Android-first loyihalari uchun Widevine tabiiy tanlovdir, chunki u Google Mobile Services bilan sertifikatlangan barcha qurilmalarda oldindan o'rnatilgan va qo'shimcha litsenziya to'lovini talab qilmaydi.
Ko'p platformali loyihalar uchun ko'pincha Axinom, EZDRM va Vualto kabi litsenziya agregatorlari yordamida multi-DRM yondashuvi qo'llaniladi, ular har uch DRM tizimi bilan ishlash uchun yagona API taqdim etadi. Bu integratsiya murakkabligini kamaytiradi va litsenziya boshqaruvini markazlashtiradi.
Tez-tez so'raladigan savollar
Widevine — raqamli video kontentni ruxsatsiz nusxalashdan himoya qilish uchun Google-dan DRM texnologiyasi. Striming xizmatlari tomonidan videoni shifrlash va litsenziyalash tizimi orqali unga kirishni boshqarish uchun ishlatiladi.
Widevine uch daraja xavfsizlikni qo'llab-quvvatlaydi: TEE-da apparat shifrlashi bilan L1, gibrid yondashuv bilan L2 va to'liq dasturiy ta'minot bilan L3. L1 4K da kontent ijro etishga imkon beradi, L3 720p sifati bilan cheklangan.
Android-da Widevine darajasini MediaDrm sinfi orqali securityLevel xususiyatini so'rab tekshirish mumkin. Buning uchun Widevine UUID-si bilan MediaDrm namunasi yaratiladi va getPropertyString chaqiriladi yoki DRM Info kabi uchinchi tomon ilovalaridan foydalaniladi.
Widevine Google tomonidan Android va Chrome uchun, FairPlay esa iOS, tvOS va Safari uchun ishlab chiqilgan. Ikkalasi ham apparat shifrlashi va 4K-ni qo'llab-quvvatlaydi, lekin Widevine Android qurilmalarida kengroq tarqalgan, FairPlay esa Apple ekotizimida de-fakto standartdir.
Mobil ilovada Widevine-dan foydalanish uchun alohida litsenziya talab qilinmaydi — texnologiya sertifikatlangan Android qurilmalari va Chrome-ga o'rnatilgan. To'lov faqat litsenziya serveridan foydalanadigan kontent provayderlaridan olinadi.
Xulosa
Biz kalit topshirig'i bilan mobil ilovani ishlab chiqamiz
IT Sectr 2017-yildan beri startaplar va korxonalar uchun iOS va Android ilovalarini yaratadi. Biz sizga maslahat beramiz va eng yaxshi yechimni taklif qilamiz.