Widevine — egy Google által kifejlesztett DRM-technológia a videótartalmak védelmére az engedély nélküli másolástól mobileszközökön, Smart TV-ken és webplatformokon. A tartalom titkosítása a CDM modulon keresztül történik, amely világszerte 4 milliárd eszközön támogatott. A Widevine technológia biztosítja a kompatibilitást Android, iOS, Chrome és Smart TV rendszerekkel, lehetővé téve a streaming szolgáltatások számára a prémium tartalmak védelmét bármely platformon.
Főbb pontok
Widevine — egy szabadalmaztatott DRM-technológia, amelyet a Google 2010-ben vásárolt fel, és amely az Android ökoszisztémában a videótartalmak védelmének de facto szabványává vált. A legnagyobb streaming szolgáltatások, köztük a Netflix, Amazon Prime Video, Disney+ és a Hulu használják a tartalmak engedély nélküli másolásának és terjesztésének megakadályozására.
A Widevine támogatja az AES-128 CBC szabvány szerinti titkosítást tartalomkulcsok segítségével, amelyek csak hitelesített eszközökre kerülnek továbbításra egy biztonságos licencelési csatornán keresztül. A rendszer végpontok közötti védelmet biztosít a szerveren történő titkosítástól a felhasználó eszközén történő dekódolásig.
A Widevine Technologies céget 1999-ben alapították, és eredetileg kábeltelevíziós platformokon történő tartalomvédelemre fejlesztett megoldásokat. Miután a Google 2010-ben felvásárolta, a technológiát mobil platformokhoz igazították és integrálták az Android operációs rendszerbe a 4.4 KitKat verziótól kezdődően. 2015-től a Widevine a Google Mobile Services tanúsítás kötelező összetevőjévé vált.
2018-ban a Google bemutatta a Widevine Modular DRM-et, amely lehetővé tette az eszközgyártók számára, hogy az operációs rendszer kódjának módosítása nélkül hardveresen implementáljanak különböző védelmi szinteket. Napjainkban a Widevine Modular több mint 4 milliárd eszközön támogatott, és ez a fő DRM mechanizmus Androidon.
A Widevine architektúrája három kulcsfontosságú összetevőből áll: Content Decryption Module (CDM), licenckiszolgáló és tartalomtitkosító eszköz. A CDM végzi a visszafejtést a kliens oldalon, és együttműködik a hardveres Trusted Execution Environment (TEE) környezettel a kulcsok biztonságos tárolása érdekében.
A Google licenckiszolgálója a tartalomszolgáltató által meghatározott irányelvek alapján kezeli a kulcsok kibocsátását, amelyek időbeli korlátozásokat, eszközszámot és lejátszási minőséget határoznak meg. A titkosító eszköz a szolgáltató oldalán készíti elő a tartalmat, MPEG-DASH vagy HLS formátumba csomagolva CENC titkosítással.
A védelmi folyamat a tartalom csomagolási szakaszával kezdődik, amikor a médiafájlt a tartalomkulcs segítségével titkosítják a szolgáltató szerverén. A titkosított adatfolyam CDN-en keresztül kerül a felhasználó eszközére, ahol a CDM licencet kér a licenckiszolgálótól.
A licenckiszolgáló ellenőrzi az eszköz hitelességét és a tartalomhoz való hozzáférés jogát. Ha az ellenőrzés sikeres, a kiszolgáló kiad egy licencet a kulccsal, amelyet a CDM használ a visszafejtéshez. A licenc tartalmazhat korlátozásokat a megtekintési időre és felbontásra vonatkozóan.
A licenc csere a Widevine-ben az EME (Encrypted Media Extensions) protokollon keresztül valósul meg böngészőkben, vagy SDK-n keresztül mobil platformokon. A licenckérést a CDM képezi és HTTPS-en keresztül küldi a licenckiszolgálónak, ami biztosítja a kulcsok védelmét az átvitel során történő elfogás ellen.
A kiszolgáló feldolgozza a kérést és visszaad egy licencet, amely szintén titkosítva van, és csak az eszköz CDM-je tudja visszafejteni. A kulcs hardveres kötése egy adott eszközhöz megakadályozza annak más platformokra történő átvitelét.
A Widevine az ISO/IEC 23001-7-ben meghatározott Common Encryption (CENC) szabványokat használja, ami biztosítja a kompatibilitást az MPEG-DASH és HLS formátumokkal. Az AES-128 titkosítás CTR vagy CBC módban kerül alkalmazásra a médiafolyamok védelmére.
A kulcsszármaztatáshoz HKDF (HMAC-based Key Derivation Function) kerül használatra, amely lehetővé teszi egyedi kulcsok generálását a tartalom minden szegmenséhez. A HLS támogatás a Widevine-ben a Modular 2.0 verziótól került hozzáadásra, ami kiterjesztette a kompatibilitást az Apple platformokkal.
@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)
}
A Widevine három biztonsági szintet határoz meg, amelyek a kriptográfiai műveletek végrehajtási módjában és a tartalom feldolgozásában különböznek. Az L1 szint maximális védelmet nyújt, az L3 minimálisat, az L2 pedig középső pozíciót foglal el.
| Szint | Védelem típusa | Eszközkövetelmények | Maximális felbontás |
|---|---|---|---|
| L1 | Hardveres | TEE SoC szinten | 4K Ultra HD |
| L2 | Hibrid | TEE kulcsokhoz, szoftver videóhoz | 1080p |
| L3 | Szoftveres | Csak szoftveres CDM | 720p |
Az L1 szint megköveteli a Trusted Execution Environment (TEE) jelenlétét hardver szinten, ahol az összes kriptográfiai művelet végrehajtásra kerül. A tartalomkulcsok soha nem hagyják el a TEE-t, ami kizárja azok kinyerését még a fő operációs rendszer kompromittálása esetén is.
Az L1 tanúsítvánnyal rendelkező eszközök 4K minőségben és HDR-ben játszhatnak le tartalmat, mivel a visszafejtett videó adatfolyam közvetlenül a védett video kimenetre kerül, a felhasználói folyamatok hozzáférése nélkül.
Az L3 szint az összes kriptográfiai műveletet szoftveresen hajtja végre a szokásos felhasználói térben. Ez a legkevésbé biztonságos mód, amelyben a kulcsok kinyerhetők az eszköz RAM-jából.
A Widevine L3 a lejátszási minőséget 720p-re korlátozza, ami alkalmassá teszi alacsony kategóriás eszközökön vagy hardveres védelem nélküli asztali böngészőkben történő nézésre.
fun getSecurityLevel(): String {
val mediaDrm = MediaDrm(UUID.fromString(
"edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"
))
val level = mediaDrm.getPropertyString(
"securityLevel"
)
return level.ifEmpty { "L3" }
}
A Widevine integrálása mobilalkalmazásokba a szabványos MediaDrm (Android) és AVContentKeySession (iOS) API-kon keresztül történik. A legtöbb esetben a fejlesztőnek nem kell közvetlenül DRM-mel dolgoznia — a lejátszókönyvtárak, mint az ExoPlayer és az AVPlayer, automatikusan kezelik a licencelést.
Androidon a Widevine a MediaDrm osztályon keresztül integrálható, amely közvetlen hozzáférést biztosít a CDM-hez. Streaming alkalmazásokhoz ajánlott az ExoPlayer használata a DrmSessionManager modullal, amely automatikusan kezeli a licenckéréseket.
A lejátszó inicializálásakor meg kell adni a Widevine séma UUID-jét (`edef8ba9-79d6-4ace-a3c8-27dcd51d21ed`) és a licenckiszolgáló URL-jét, amelyet a tartalomszolgáltató biztosít. Az ExoPlayer automatikusan kezeli a licenc kérésének és megújításának ciklusát.
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()
Webes platformokon a Widevine a Media Source Extensions (MSE) és az Encrypted Media Extensions (EME) segítségével működik. A Chromium-alapú böngészők beépítve támogatják a Widevine CDM-et, és a fejlesztőnek csak egy EME-munkamenetet kell inicializálnia a megfelelő konfigurációval.
A Widevine böngészőben történő használatához meg kell adni a licenc inicializálót keySystem típussal `com.widevine.alpha`. A MediaKeys példány létrehozása után a böngésző automatikusan kezeli a licenckéréseket.
A Widevine integrálásakor fontos a licencelési hibák helyes kezelése, amelyek hozzáférési jogok hiánya, előfizetés lejárata vagy eszköz inkompatibilitása esetén fordulnak elő. A TYPE_EXPIRED_LICENSE hiba a licenc megújítását igényli a kiszolgálóhoz intézett ismételt kéréssel, a TYPE_OUTPUT_NOT_ALLOWED pedig a video kimenet DRM-irányelvekkel való összeférhetetlenségét jelzi.
Ajánlott egy exponenciális késleltetésű újrapróbálkozási mechanizmus implementálása átmeneti hálózati hibák esetén, és egy érthető üzenet megjelenítése a felhasználó számára állandó licencelési elutasítások esetén. A DRM-munkamenetek hibanaplózása segít a tartalomszolgáltatóknak az eszközproblémák azonosításában és az irányelvek optimalizálásában.
A Widevine versenyez az Apple FairPlay-jével és a Microsoft PlayReady-jével, amelyek a három fő DRM-megoldást alkotják a mobil platformok piacán. Minden technológiának megvannak a maga előnyei és korlátai a platform ökoszisztémájával összefüggésben.
| Jellemző | Widevine | FairPlay | PlayReady |
|---|---|---|---|
| Fejlesztő | Apple | Microsoft | |
| Fő platform | Android, Chrome | iOS, tvOS, Safari | Windows, Xbox, UWP |
| Maximális szint | L1 (4K) | L1 megfelelő (4K) | SL3000 (4K) |
| Hardveres védelem | TEE | Secure Enclave | TPM + TEE |
A DRM kiválasztása az alkalmazás célplatformjaitól függ. Android-first projektekhez a Widevine a természetes választás, mivel előre telepítve van az összes Google Mobile Services tanúsítvánnyal rendelkező eszközön, és nem igényel további licencdíjat.
Multiplatform projektekhez gyakran multi-DRM megközelítést alkalmaznak olyan licenc aggregátorokkal, mint az Axinom, EZDRM és Vualto, amelyek egységes API-t biztosítanak mindhárom DRM-rendszerrel való munkához. Ez csökkenti az integráció összetettségét és központosítja a licenckezelést.
Gyakran Ismételt Kérdések
Widevine — egy DRM technológia a Google-tól, amely a digitális videótartalmak engedély nélküli másolás elleni védelmére szolgál. A streaming szolgáltatások használják a videók titkosítására és a hozzáférés kezelésére egy licencrendszeren keresztül.
A Widevine három szintet támogat: L1 hardveres titkosítással a TEE-ben, L2 hibrid megközelítéssel és L3 teljesen szoftveres implementációval. Az L1 lehetővé teszi a tartalom lejátszását 4K-ban, az L3 720p minőségre korlátozódik.
A Widevine szint Androidon a MediaDrm osztályon keresztül ellenőrizhető a securityLevel tulajdonság lekérdezésével. Ehhez létre kell hozni egy MediaDrm példányt a Widevine UUID-vel és meg kell hívni a getPropertyString metódust, vagy harmadik féltől származó alkalmazások, mint a DRM Info használhatók.
A Widevine-t a Google fejlesztette Androidra és Chrome-ra, míg a FairPlay-t az Apple iOS-re, tvOS-re és Safari-ra. Mindkettő támogatja a hardveres titkosítást és a 4K-t, de a Widevine szélesebb körben elterjedt Android-eszközökön, míg a FairPlay az Apple ökoszisztémában számít de facto szabványnak.
A Widevine mobilalkalmazásban történő használatához nincs szükség külön licencre — a technológia be van építve a tanúsított Android-eszközökbe és a Chrome-ba. A díjat csak a tartalomszolgáltatóknak számítják fel a licenckiszolgáló használatáért.
Összefoglaló
Kulcsrakész mobilalkalmazást fejlesztünk
Az IT Sectr 2017 óta készít iOS és Android alkalmazásokat induló vállalkozásoknak és vállalkozásoknak. Tanácsot adunk, és a legjobb megoldást javasoljuk.
Olvassa el is