Widevine — isang teknolohiyang DRM na binuo ng Google upang protektahan ang video content mula sa hindi awtorisadong pagkopya sa mga mobile device, Smart TV at web platform. Ang pag-encrypt ng nilalaman ay isinasagawa sa pamamagitan ng CDM module, na sinusuportahan sa 4 bilyong device sa buong mundo. Ang teknolohiyang Widevine ay nagsisiguro ng compatibility sa Android, iOS, Chrome at Smart TV, na nagpapahintulot sa mga streaming service na protektahan ang premium content sa anumang platform.
Mga Pangunahing Punto
Widevine — isang pagmamay-aring teknolohiyang DRM na nakuha ng Google noong 2010 at naging de facto standard para sa proteksyon ng video content sa ecosystem ng Android. Ito ay ginagamit ng pinakamalalaking streaming service, kabilang ang Netflix, Amazon Prime Video, Disney+ at Hulu, upang maiwasan ang hindi awtorisadong pagkopya at pamamahagi ng nilalaman.
Sinusuportahan ng Widevine ang pag-encrypt ayon sa AES-128 CBC standard gamit ang mga susi ng nilalaman na ipinapadala lamang sa mga awtorisadong device sa pamamagitan ng isang secure na channel ng paglisensya. Ang sistema ay nagbibigay ng end-to-end na proteksyon mula sa sandali ng pag-encrypt sa server hanggang sa pag-decode sa device ng user.
Ang kumpanyang Widevine Technologies ay itinatag noong 1999 at orihinal na bumuo ng mga solusyon para sa proteksyon ng nilalaman sa mga cable television platform. Pagkatapos makuha ng Google noong 2010, ang teknolohiya ay inangkop para sa mga mobile platform at isinama sa OS Android simula sa bersyon 4.4 KitKat. Mula noong 2015, ang Widevine ay naging mandatoryong bahagi ng Google Mobile Services certification.
Noong 2018, ipinakilala ng Google ang Widevine Modular DRM, na nagbigay-daan sa mga manufacturer ng device na magpatupad ng iba't ibang antas ng proteksyon sa hardware nang hindi binabago ang code ng OS. Ngayon, ang Widevine Modular ay sinusuportahan sa mahigit 4 bilyong device at ito ang pangunahing DRM mechanism sa Android.
Ang arkitektura ng Widevine ay binubuo ng tatlong pangunahing bahagi: Content Decryption Module (CDM), lisensyang server, at tool sa pag-encrypt ng nilalaman. Ang CDM ay nagsasagawa ng decryption sa client side at nakikipag-ugnayan sa hardware Trusted Execution Environment (TEE) para sa secure na pag-iimbak ng mga susi.
Ang lisensyang server ng Google ay namamahala sa paglalabas ng mga susi batay sa mga patakaran ng content provider, na tumutukoy sa mga limitasyon sa oras, bilang ng device, at kalidad ng playback. Ang tool sa pag-encrypt ay naghahanda ng nilalaman sa provider side, na nagpe-pack nito sa MPEG-DASH o HLS format na may CENC encryption.
Ang proseso ng proteksyon ay nagsisimula sa yugto ng pag-iimpake ng nilalaman, kapag ang media file ay na-encrypt gamit ang susi ng nilalaman sa server ng provider. Ang naka-encrypt na stream ay ipinapadala sa device ng user sa pamamagitan ng CDN, kung saan humihiling ang CDM ng lisensya mula sa lisensyang server.
Bini-verify ng lisensyang server ang pagiging tunay ng device at ang karapatang ma-access ang nilalaman. Kung matagumpay ang pag-verify, ang server ay naglalabas ng lisensya na may susi na ginagamit ng CDM para sa decryption. Ang lisensya ay maaaring maglaman ng mga limitasyon sa oras ng panonood at resolution.
Ang pagpapalitan ng lisensya sa Widevine ay ipinatutupad sa pamamagitan ng EME protocol (Encrypted Media Extensions) sa mga browser o sa pamamagitan ng SDK sa mga mobile platform. Ang kahilingan ng lisensya ay nabubuo ng CDM at ipinapadala sa lisensyang server sa pamamagitan ng HTTPS, na nagsisiguro ng proteksyon laban sa panghihimasok ng mga susi habang nagbiyahe.
Pinoproseso ng server ang kahilingan at nagbabalik ng lisensya na naka-encrypt din at maaari lamang i-decrypt ng CDM ng device. Ang hardware binding ng susi sa isang partikular na device ay pumipigil sa paglipat nito sa ibang mga platform.
Gumagamit ang Widevine ng Common Encryption (CENC) standards na tinukoy sa ISO/IEC 23001-7, na nagsisiguro ng compatibility sa MPEG-DASH at HLS formats. Ang AES-128 encryption sa CTR o CBC mode ay inilalapat para sa proteksyon ng media streams.
Para sa key derivation, ginagamit ang HKDF (HMAC-based Key Derivation Function) na nagbibigay-daan sa pagbuo ng mga natatanging susi para sa bawat segment ng nilalaman. Ang suporta sa HLS sa Widevine ay idinagdag mula sa bersyon Modular 2.0, na nagpalawak ng compatibility sa mga platform ng 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)
}
Tatlong antas ng seguridad ang tinutukoy ng Widevine na nagkakaiba sa paraan ng pagsasagawa ng cryptographic operations at pagproseso ng nilalaman. Ang antas L1 ay nagbibigay ng maximum na proteksyon, L3 — minimal, L2 ay sumasakop sa gitnang posisyon.
| Antas | Uri ng proteksyon | Mga kinakailangan ng device | Maximum na resolution |
|---|---|---|---|
| L1 | Hardware | TEE sa antas ng SoC | 4K Ultra HD |
| L2 | Hybrid | TEE para sa mga susi, software para sa video | 1080p |
| L3 | Software | Tanging software CDM | 720p |
Ang antas L1 ay nangangailangan ng pagkakaroon ng Trusted Execution Environment (TEE) sa antas ng hardware, kung saan isinasagawa ang lahat ng cryptographic operations. Ang mga susi ng nilalaman ay hindi umaalis sa TEE, na pumipigil sa pagkuha ng mga ito kahit na makompromiso ang pangunahing OS.
Ang mga device na may L1 certification ay maaaring mag-play ng content sa 4K quality at HDR, dahil ang decrypted video stream ay direktang ipinapadala sa protektadong video output nang walang access mula sa mga proseso ng user.
Ang antas L3 ay nagsasagawa ng lahat ng cryptographic operations sa software sa ordinaryong user space. Ito ang pinaka-hindi ligtas na mode, kung saan ang mga susi ay maaaring makuha mula sa RAM ng device.
Nililimitahan ng Widevine L3 ang kalidad ng playback sa 720p, na ginagawang angkop para sa panonood sa mga entry-level na device o desktop browser na walang hardware protection.
fun getSecurityLevel(): String {
val mediaDrm = MediaDrm(UUID.fromString(
"edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"
))
val level = mediaDrm.getPropertyString(
"securityLevel"
)
return level.ifEmpty { "L3" }
}
Ang pagsasama ng Widevine sa mga mobile app ay isinasagawa sa pamamagitan ng standard APIs MediaDrm (Android) at AVContentKeySession (iOS). Sa karamihan ng mga kaso, hindi kailangang direktang magtrabaho ang developer sa DRM — ang mga library ng player tulad ng ExoPlayer at AVPlayer ay awtomatikong humahawak sa paglisensya.
Sa Android, ang Widevine ay isinama sa pamamagitan ng class MediaDrm na nagbibigay ng direktang access sa CDM. Para sa mga streaming app, inirerekomendang gamitin ang ExoPlayer na may DrmSessionManager module na awtomatikong namamahala ng mga kahilingan ng lisensya.
Kapag nag-i-initialize ng player, dapat tukuyin ang UUID ng Widevine scheme (`edef8ba9-79d6-4ace-a3c8-27dcd51d21ed`) at URL ng lisensyang server na ibinigay ng content provider. Awtomatikong pinangangasiwaan ng ExoPlayer ang cycle ng kahilingan at pag-renew ng lisensya.
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()
Sa mga web platform, gumagana ang Widevine sa pamamagitan ng Media Source Extensions (MSE) at Encrypted Media Extensions (EME). Ang mga browser na batay sa Chromium ay may built-in na suporta sa Widevine CDM, at kailangan lang ng developer na mag-initialize ng EME session na may tamang configuration.
Upang magtrabaho sa Widevine sa browser, dapat tukuyin ang lisensyang initiator na may keySystem type `com.widevine.alpha`. Pagkatapos lumikha ng MediaKeys instance, awtomatikong hinahawakan ng browser ang mga kahilingan ng lisensya.
Sa pagsasama ng Widevine, mahalagang wastong pangasiwaan ang mga error sa paglisensya na nagaganap kapag walang mga karapatan sa pag-access, nag-expire ang subscription, o hindi compatible ang device. Ang error na TYPE_EXPIRED_LICENSE ay nangangailangan ng pag-renew ng lisensya sa pamamagitan ng muling kahilingan sa server, at ang TYPE_OUTPUT_NOT_ALLOWED ay nagpapahiwatig ng hindi pagkakatugma ng video output sa mga DRM policy.
Inirerekomenda na magpatupad ng mekanismo ng pagsubok muli na may exponential delay para sa pansamantalang network error at magpakita ng naiintindihang mensahe sa user para sa permanenteng pagtanggi sa paglisensya. Ang pag-log ng error ng mga DRM session ay tumutulong sa mga content provider na matukoy ang mga problema sa device at i-optimize ang mga patakaran.
Ang Widevine ay nakikipagkumpitensya sa FairPlay mula sa Apple at PlayReady mula sa Microsoft, na bumubuo sa tatlong pangunahing DRM solution sa merkado ng mobile platform. Bawat teknolohiya ay may sariling mga pakinabang at limitasyon na nauugnay sa ecosystem ng platform.
| Katangian | Widevine | FairPlay | PlayReady |
|---|---|---|---|
| Developer | Apple | Microsoft | |
| Pangunahing platform | Android, Chrome | iOS, tvOS, Safari | Windows, Xbox, UWP |
| Maximum na antas | L1 (4K) | Katumbas ng L1 (4K) | SL3000 (4K) |
| Hardware protection | TEE | Secure Enclave | TPM + TEE |
Ang pagpili ng DRM ay nakadepende sa target na platform ng app. Para sa mga Android-first project, ang Widevine ay natural na pagpipilian dahil ito ay naka-preinstall sa lahat ng sertipikadong device na may Google Mobile Services at hindi nangangailangan ng karagdagang bayad sa lisensya.
Para sa mga cross-platform project, madalas ginagamit ang multi-DRM approach na may mga lisensyang aggregator tulad ng Axinom, EZDRM at Vualto, na nagbibigay ng unified API para sa pagtatrabaho sa lahat ng tatlong DRM system. Ito ay nagbabawas ng complexity ng integration at nagsasentralisa ng pamamahala ng lisensya.
Mga Madalas Itanong
Widevine — isang DRM technology mula sa Google, dinisenyo upang protektahan ang digital video content mula sa hindi awtorisadong pagkopya. Ito ay ginagamit ng mga streaming service upang i-encrypt ang video at pamahalaan ang access dito sa pamamagitan ng isang sistema ng paglisensya.
Sinusuportahan ng Widevine ang tatlong antas ng seguridad: L1 na may hardware encryption sa TEE, L2 na may hybrid approach, at L3 na may ganap na software implementation. Ang L1 ay nagbibigay-daan sa pag-play ng content sa 4K, ang L3 ay limitado sa 720p quality.
Ang antas ng Widevine sa Android ay maaaring suriin sa pamamagitan ng class MediaDrm sa pamamagitan ng paghingi ng property na securityLevel. Para dito, gumawa ng MediaDr instance na may Widevine UUID at tawagan ang getPropertyString, o gumamit ng third-party apps tulad ng DRM Info.
Ang Widevine ay binuo ng Google para sa Android at Chrome, habang ang FairPlay ay para sa iOS, tvOS at Safari. Pareho silang sumusuporta sa hardware encryption at 4K, ngunit ang Widevine ay mas malawak sa mga Android device, habang ang FairPlay ay de facto standard sa Apple ecosystem.
Para sa paggamit ng Widevine sa isang mobile app hindi kailangan ng hiwalay na lisensya — ang teknolohiya ay naka-embed sa mga sertipikadong Android device at Chrome. Ang bayad ay sinisingil lamang sa mga content provider para sa paggamit ng lisensyang server.
Buod
Gagawa kami ng mobile application na turnkey
Gumagawa ang IT Sectr ng mga iOS at Android application para sa mga startup at negosyo mula noong 2017. Magpapayo kami sa iyo at magmumungkahi ng pinakamahusay na solusyon.
Basahin din