Widevine, mobil cihazlarda, Smart TV'lerde ve web platformlarında video içeriğini yetkisiz kopyalamaya karşı korumak için Google tarafından geliştirilen bir DRM teknolojisidir. İçerik şifreleme, dünya çapında 4 milyar cihazda desteklenen CDM modülü aracılığıyla gerçekleştirilir. Widevine teknolojisi, Android, iOS, Chrome ve Smart TV ile uyumluluk sağlayarak akış hizmetlerinin herhangi bir platformda premium içeriği korumasına olanak tanır.
Önemli Noktalar
Widevine, Google tarafından 2010 yılında satın alınan ve Android ekosisteminde video içeriğini korumak için fiili standart haline gelen tescilli bir DRM teknolojisidir. Netflix, Amazon Prime Video, Disney+ ve Hulu dahil olmak üzere büyük akış hizmetleri tarafından içeriğin yetkisiz kopyalanmasını ve dağıtılmasını önlemek için kullanılır.
Widevine, güvenli bir lisanslama kanalı aracılığıyla yalnızca yetkili cihazlara iletilen içerik anahtarlarını kullanarak AES-128 CBC şifrelemesini destekler. Sistem, sunucudaki şifrelemeden kullanıcının cihazındaki kod çözmeye kadar uçtan uca koruma sağlar.
Widevine Technologies 1999 yılında kuruldu ve başlangıçta kablolu televizyon platformlarında içerik koruması için çözümler geliştirdi. 2010 yılında Google tarafından satın alındıktan sonra teknoloji, mobil platformlar için uyarlandı ve Android işletim sistemine 4.4 KitKat sürümünden itibaren entegre edildi. 2015'ten bu yana Widevine, Google Mobile Services sertifikasyonunun zorunlu bir bileşeni haline gelmiştir.
2018'de Google, cihaz üreticilerinin işletim sistemi kodunu değiştirmeden donanımda farklı koruma seviyeleri uygulamasına olanak tanıyan Widevine Modular DRM'yi tanıttı. Bugün, Widevine Modular 4 milyardan fazla cihazda desteklenmektedir ve Android'deki birincil DRM mekanizmasıdır.
Widevine mimarisi üç temel bileşenden oluşur: Content Decryption Module (CDM), lisans sunucusu ve içerik şifreleme aracı. CDM, istemci tarafında şifre çözmeyi gerçekleştirir ve güvenli anahtar depolama için donanım Trusted Execution Environment (TEE) ile etkileşime girer.
Google lisans sunucusu, zaman, cihaz sayısı ve oynatma kalitesi konusunda kısıtlamalar tanımlayan içerik sağlayıcı politikalarına dayalı olarak anahtar yayınlamayı yönetir. Şifreleme aracı, içeriği sağlayıcı tarafında hazırlayarak CENC şifrelemesi ile MPEG-DASH veya HLS formatında paketler.
Koruma süreci, medya dosyasının sağlayıcının sunucusunda bir içerik anahtarı kullanılarak şifrelendiği içerik paketleme aşamasında başlar. Şifrelenmiş akış, CDN aracılığıyla kullanıcının cihazına iletilir ve burada CDM, lisans sunucusundan bir lisans talep eder.
Lisans sunucusu, cihazın kimliğini ve içeriğe erişim hakkını doğrular. Doğrulama başarılı olursa, sunucu CDM'nin şifre çözmek için kullandığı anahtar içeren bir lisans yayınlar. Lisans, izleme süresi ve çözünürlük konusunda kısıtlamalar içerebilir.
Widevine'de lisans değişimi, tarayıcılarda EME (Encrypted Media Extensions) protokolü veya mobil platformlarda SDK aracılığıyla uygulanır. Lisans talebi CDM tarafından oluşturulur ve HTTPS üzerinden lisans sunucusuna gönderilir, bu da aktarım sırasında anahtarların ele geçirilmesine karşı koruma sağlar.
Sunucu talebi işler ve yalnızca cihazın CDM'si tarafından şifresi çözülebilen şifrelenmiş bir lisans döndürür. Anahtarın belirli bir cihaza donanım bağlaması, diğer platformlara aktarılmasını önler.
Widevine, ISO/IEC 23001-7'de tanımlanan Common Encryption (CENC) standartlarını kullanarak MPEG-DASH ve HLS formatlarıyla uyumluluk sağlar. Medya akışlarını korumak için CTR veya CBC modunda AES-128 şifrelemesi kullanılır.
Anahtar türetme için HKDF (HMAC-based Key Derivation Function) kullanılır ve içeriğin her bir bölümü için benzersiz anahtarlar oluşturulmasına olanak tanır. Widevine'de HLS desteği, Modular sürüm 2.0 ile eklenmiş ve Apple platformlarıyla uyumluluğu genişletmiştir.
@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, kriptografik işlemlerin gerçekleştirilme ve içeriğin işlenme şekline göre farklılık gösteren üç güvenlik seviyesi tanımlar. L1 seviyesi maksimum koruma sağlar, L3 minimum koruma sağlar ve L2 orta konumdadır.
| Seviye | Koruma türü | Cihaz gereksinimleri | Maksimum çözünürlük |
|---|---|---|---|
| L1 | Donanım | SoC düzeyinde TEE | 4K Ultra HD |
| L2 | Hibrit | Anahtarlar için TEE, video için yazılım | 1080p |
| L3 | Yazılım | Yalnızca yazılım CDM | 720p |
L1 seviyesi, tüm kriptografik işlemlerin gerçekleştirildiği donanım düzeyinde bir Trusted Execution Environment (TEE) gerektirir. İçerik anahtarları TEE'den asla ayrılmaz, ana işletim sistemi tehlikeye girse bile bunların çıkarılmasını önler.
L1 sertifikasına sahip cihazlar, şifresi çözülmüş video akışı kullanıcı işlemlerinin erişimi olmadan doğrudan korumalı bir video çıkışına gönderildiğinden 4K kalitesinde ve HDR'de içerik oynatabilir.
L3 seviyesi, tüm kriptografik işlemleri normal kullanıcı alanında yazılımla gerçekleştirir. Bu, anahtarların cihazın RAM'inden çıkarılabildiği en az güvenli moddur.
Widevine L3, oynatma kalitesini 720p ile sınırlar ve bu da onu düşük seviyeli cihazlarda veya donanım koruması olmayan masaüstü tarayıcılarda izlemek için uygun hale getirir.
fun getSecurityLevel(): String {
val mediaDrm = MediaDrm(UUID.fromString(
"edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"
))
val level = mediaDrm.getPropertyString(
"securityLevel"
)
return level.ifEmpty { "L3" }
}
Widevine'in mobil uygulamalara entegrasyonu, standart MediaDrm (Android) ve AVContentKeySession (iOS) API'leri aracılığıyla gerçekleştirilir. Çoğu durumda, geliştiricinin doğrudan DRM ile çalışması gerekmez — ExoPlayer ve AVPlayer gibi oynatıcı kitaplıkları lisanslamayı otomatik olarak halleder.
Android'de Widevine, CDM'ye doğrudan erişim sağlayan MediaDrm sınıfı aracılığıyla entegre edilir. Akış uygulamaları için, lisans taleplerini otomatik olarak yöneten DrmSessionManager modülü ile ExoPlayer kullanılması önerilir.
Oynatıcı başlatılırken Widevine şeması UUID'si (`edef8ba9-79d6-4ace-a3c8-27dcd51d21ed`) ve içerik sağlayıcı tarafından sağlanan lisans sunucusu URL'si belirtilmelidir. ExoPlayer, lisans talep ve yenileme döngüsünü otomatik olarak yönetir.
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()
Web platformlarında Widevine, Media Source Extensions (MSE) ve Encrypted Media Extensions (EME) aracılığıyla çalışır. Chromium tabanlı tarayıcılarda Widevine CDM yerleşiktir ve geliştiricinin yalnızca doğru yapılandırmayla bir EME oturumu başlatması gerekir.
Bir tarayıcıda Widevine kullanmak için keySystem türü `com.widevine.alpha` ile bir lisans başlatıcı belirtilmelidir. Bir MediaKeys örneği oluşturulduktan sonra tarayıcı, lisans taleplerini otomatik olarak yönetir.
Widevine entegre edilirken, erişim haklarının olmaması, aboneliğin sona ermesi veya cihaz uyumsuzluğu nedeniyle oluşan lisanslama hatalarının doğru şekilde yönetilmesi önemlidir. TYPE_EXPIRED_LICENSE hatası, sunucuya yeniden talep yoluyla lisansın güncellenmesini gerektirirken, TYPE_OUTPUT_NOT_ALLOWED video çıkışının DRM politikalarıyla uyumsuzluğunu gösterir.
Geçici ağ hataları için üstel geri alma ile yeniden deneme mekanizması uygulanması ve kalıcı lisanslama başarısızlıklarında kullanıcıya net bir mesaj gösterilmesi önerilir. DRM oturum hatalarının günlüğe kaydedilmesi, içerik sağlayıcılarının cihaz sorunlarını belirlemesine ve politikaları optimize etmesine yardımcı olur.
Widevine, Apple'ın FairPlay'i ve Microsoft'un PlayReady'si ile rekabet ederek mobil platform pazarındaki üç ana DRM çözümünü oluşturur. Her teknolojinin platform ekosistemiyle ilgili kendi avantajları ve sınırlamaları vardır.
| Özellik | Widevine | FairPlay | PlayReady |
|---|---|---|---|
| Geliştirici | Apple | Microsoft | |
| Birincil platform | Android, Chrome | iOS, tvOS, Safari | Windows, Xbox, UWP |
| Maksimum seviye | L1 (4K) | L1'e eşdeğer (4K) | SL3000 (4K) |
| Donanım koruması | TEE | Secure Enclave | TPM + TEE |
DRM seçimi, uygulamanın hedef platformlarına bağlıdır. Android öncelikli projeler için Widevine doğal seçimdir çünkü Google Mobile Services ile tüm sertifikalı cihazlarda önceden yüklenmiş olarak gelir ve ek lisans ücreti gerektirmez.
Platformlar arası projeler için, üç DRM sistemiyle de çalışmak için birleşik bir API sağlayan Axinom, EZDRM ve Vualto gibi lisans toplayıcılarla çoklu DRM yaklaşımı sıklıkla kullanılır. Bu, entegrasyon karmaşıklığını azaltır ve lisans yönetimini merkezileştirir.
Sıkça Sorulan Sorular
Widevine, dijital video içeriğini yetkisiz kopyalamaya karşı korumak için tasarlanmış bir Google DRM teknolojisidir. Akış hizmetleri tarafından videoları şifrelemek ve bir lisanslama sistemi aracılığıyla erişimi yönetmek için kullanılır.
Widevine üç güvenlik seviyesini destekler: TEE'de donanım şifrelemesi ile L1, hibrit yaklaşımla L2 ve tamamen yazılım uygulamasıyla L3. L1, 4K içerik oynatmaya izin verir, L3, 720p kalitesiyle sınırlıdır.
Android'de Widevine seviyesini MediaDrm sınıfı aracılığıyla securityLevel özelliğini isteyerek kontrol edebilirsiniz. Bunun için Widevine UUID'si ile bir MediaDrm örneği oluşturun ve getPropertyString çağırın veya DRM Info gibi üçüncü taraf uygulamaları kullanın.
Widevine Google tarafından Android ve Chrome için geliştirilirken, FairPlay iOS, tvOS ve Safari içindir. Her ikisi de donanım şifrelemesini ve 4K'yı destekler, ancak Widevine Android cihazlarda daha yaygınken, FairPlay Apple ekosisteminde fiili standarttır.
Mobil uygulamada Widevine kullanmak için ayrı bir lisans gerekli değildir — teknoloji sertifikalı Android cihazlara ve Chrome'a yerleşiktir. Ücretler yalnızca lisans sunucusunu kullanan içerik sağlayıcılardan alınır.
Özet
Anahtar teslim bir mobil uygulama geliştireceğiz
IT Sectr, 2017'den beri girişimler ve işletmeler için iOS ve Android uygulamaları oluşturmaktadır. Size danışmanlık yapacak ve en iyi çözümü önereceğiz.
Ayrıca okuyun