Widevine هي تقنية DRM طورتها Google لحماية محتوى الفيديو من النسخ غير المصرح به على الأجهزة المحمولة وأجهزة التلفاز الذكية والمنصات الويب. يتم تشفير المحتوى من خلال وحدة CDM، المدعومة على 4 مليارات جهاز حول العالم. تقنية Widevine تضمن التوافق مع Android و iOS و Chrome و Smart TV، مما يسمح لخدمات البث بحماية المحتوى المتميز على أي منصة.
أهم النقاط
Widevine هي تقنية DRM مملوكة استحوذت عليها Google في عام 2010 وأصبحت المعيار الفعلي لحماية محتوى الفيديو في نظام Android البيئي. تُستخدم من قبل كبرى خدمات البث، بما في ذلك Netflix و Amazon Prime Video و Disney+ و Hulu، لمنع النسخ والتوزيع غير المصرح به للمحتوى.
تدعم Widevine تشفير AES-128 CBC باستخدام مفاتيح المحتوى التي تُنقل فقط إلى الأجهزة المصرح بها عبر قناة ترخيص آمنة. يوفر النظام حماية شاملة من التشفير على الخادم إلى فك التشفير على جهاز المستخدم.
تأسست Widevine Technologies في عام 1999 وطورت في البداية حلولاً لحماية المحتوى على منصات التلفاز الكبلي. بعد الاستحواذ من قبل Google في عام 2010، تم تكييف التقنية لـ المنصات المحمولة ودمجها في نظام Android بدءاً من الإصدار 4.4 KitKat. منذ عام 2015، أصبحت Widevine مكوناً إلزامياً لشهادة Google Mobile Services.
في عام 2018، قدمت Google Widevine Modular DRM، التي سمحت لمصنعي الأجهزة بتنفيذ مستويات حماية مختلفة عتادياً دون تعديل كود النظام. اليوم، Widevine Modular مدعومة على أكثر من 4 مليارات جهاز وهي آلية DRM الرئيسية على Android.
تتكون بنية Widevine من ثلاثة مكونات رئيسية: وحدة فك تشفير المحتوى (CDM)، وخادم التراخيص، وأداة تشفير المحتوى. CDM تقوم بفك التشفير من جانب العميل وتتفاعل مع بيئة التنفيذ الموثوقة (TEE) العتادية للتخزين الآمن للمفاتيح.
يدير خادم تراخيص Google إصدار المفاتيح بناءً على سياسات مزود المحتوى، والتي تحدد قيوداً على الوقت وعدد الأجهزة وجودة التشغيل. أداة التشفير تحضر المحتوى من جانب المزود، وتعبئته بتنسيق MPEG-DASH أو HLS مع تشفير CENC.
عملية الحماية تبدأ في مرحلة تعبئة المحتوى، عندما يتم تشفير ملف الوسائط باستخدام مفتاح محتوى على خادم المزود. يُنقل التدفق المشفر إلى جهاز المستخدم عبر CDN، حيث تطلب CDM ترخيصاً من خادم التراخيص.
يتحقق خادم التراخيص من صحة الجهاز وحق الوصول إلى المحتوى. إذا نجح التحقق، يصدر الخادم ترخيصاً بمفتاح تستخدمه CDM لفك التشفير. قد يحتوي الترخيص على قيود على وقت المشاهدة والدقة.
يتم تبادل التراخيص في Widevine عبر بروتوكول EME (Encrypted Media Extensions) في المتصفحات أو عبر SDK على المنصات المحمولة. طلب الترخيص يتم إنشاؤه بواسطة CDM وإرساله إلى خادم التراخيص عبر HTTPS، مما يضمن الحماية ضد اعتراض المفاتيح أثناء النقل.
يعالج الخادم الطلب ويعيد ترخيصاً مشفراً أيضاً لا يمكن فك تشفيره إلا بواسطة CDM الجهاز. الربط العتادي للمفتاح بجهاز معين يمنع نقله إلى منصات أخرى.
تستخدم Widevine معايير التشفير المشترك (CENC) المحددة في ISO/IEC 23001-7، مما يضمن التوافق مع تنسيقي MPEG-DASH و HLS. تشفير AES-128 في وضع CTR أو CBC يُستخدم لحماية تدفقات الوسائط.
لاستخلاص المفاتيح، تُستخدم HKDF (HMAC-based Key Derivation Function)، مما يسمح بتوليد مفاتيح فريدة لكل جزء من المحتوى. دعم HLS في Widevine أُضيف مع الإصدار Modular 2.0، مما وسع التوافق مع منصات 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)
}
تحدد Widevine ثلاثة مستويات أمان تختلف في طريقة تنفيذ العمليات التشفيرية ومعالجة المحتوى. المستوى L1 يوفر أقصى حماية، L3 أدنى حماية، و L2 في موقع وسط.
| المستوى | نوع الحماية | متطلبات الجهاز | الدقة القصوى |
|---|---|---|---|
| L1 | عتادية | TEE على مستوى SoC | 4K Ultra HD |
| L2 | هجينة | TEE للمفاتيح، برمجي للفيديو | 1080p |
| L3 | برمجية | CDM برمجي فقط | 720p |
المستوى L1 يتطلب بيئة تنفيذ موثوقة (TEE) على المستوى العتادي، حيث تتم جميع العمليات التشفيرية. مفاتيح المحتوى لا تغادر TEE أبداً، مما يمنع استخراجها حتى في حال اختراق نظام التشغيل الرئيسي.
الأجهزة الحاصلة على شهادة L1 يمكنها تشغيل المحتوى بجودة 4K و HDR، حيث يُرسل تدفق الفيديو المفكوك التشفير مباشرة إلى مخرج فيديو محمي دون وصول من عمليات المستخدم.
المستوى L3 ينفذ جميع العمليات التشفيرية برمجياً داخل مساحة المستخدم العادية. هذا هو الوضع الأقل أماناً، حيث يمكن استخراج المفاتيح من ذاكرة RAM للجهاز.
Widevine L3 يحدد جودة التشغيل إلى 720p، مما يجعله مناسباً للمشاهدة على الأجهزة منخفضة المواصفات أو متصفحات سطح المكتب دون حماية عتادية.
fun getSecurityLevel(): String {
val mediaDrm = MediaDrm(UUID.fromString(
"edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"
))
val level = mediaDrm.getPropertyString(
"securityLevel"
)
return level.ifEmpty { "L3" }
}
دمج Widevine في تطبيقات الجوال يتم عبر واجهات API القياسية MediaDrm (Android) و AVContentKeySession (iOS). في معظم الحالات، لا يحتاج المطور للعمل مباشرة مع DRM — مكتبات المشغلات مثل ExoPlayer و AVPlayer تعالج التراخيص تلقائياً.
على Android، يتم دمج Widevine عبر فئة MediaDrm التي توفر وصولاً مباشراً إلى CDM. لتطبيقات البث، يُوصى باستخدام ExoPlayer مع وحدة DrmSessionManager التي تدير طلبات التراخيص تلقائياً.
عند تهيئة المشغل، يجب تحديد UUID لنظام Widevine (`edef8ba9-79d6-4ace-a3c8-27dcd51d21ed`) و URL خادم التراخيص الذي يوفره مزود المحتوى. ExoPlayer يعالج دورة طلب وتجديد التراخيص تلقائياً.
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()
على منصات الويب، يعمل Widevine عبر Media Source Extensions (MSE) و Encrypted Media Extensions (EME). المتصفحات المبنية على Chromium تحتوي على Widevine CDM مدمجاً، ويحتاج المطور فقط إلى تهيئة جلسة EME بالتكوين الصحيح.
لاستخدام Widevine في المتصفح، يجب تحديد بادئ ترخيص بنوع keySystem `com.widevine.alpha`. بعد إنشاء مثيل MediaKeys، يعالج المتصفح طلبات التراخيص تلقائياً.
عند دمج Widevine، من المهم معالجة أخطاء التراخيص التي تحدث بسبب عدم وجود حقوق وصول أو انتهاء الاشتراك أو عدم توافق الجهاز. خطأ TYPE_EXPIRED_LICENSE يتطلب تحديث الترخيص عبر إعادة طلب إلى الخادم، بينما TYPE_OUTPUT_NOT_ALLOWED يشير إلى عدم توافق مخرج الفيديو مع سياسات DRM.
يُوصى بتنفيذ آلية إعادة محاولة مع تأخير تصاعدي للأخطاء الشبكية المؤقتة وعرض رسالة واضحة للمستخدم عند فشل التراخيص الدائم. تسجيل أخطاء جلسات DRM يساعد مزودي المحتوى على تحديد مشاكل الأجهزة وتحسين السياسات.
Widevine تنافس FairPlay من Apple و PlayReady من Microsoft، مشكلة حلول DRM الثلاثة الرئيسية في سوق المنصات المحمولة. لكل تقنية مزاياها وقيودها المرتبطة بالنظام البيئي للمنصة.
| الخاصية | Widevine | FairPlay | PlayReady |
|---|---|---|---|
| المطور | Apple | Microsoft | |
| المنصة الرئيسية | Android, Chrome | iOS, tvOS, Safari | Windows, Xbox, UWP |
| المستوى الأقصى | L1 (4K) | معادل L1 (4K) | SL3000 (4K) |
| حماية عتادية | TEE | Secure Enclave | TPM + TEE |
اختيار DRM يعتمد على المنصات المستهدفة للتطبيق. للمشاريع التي تركز على Android، Widevine هو الخيار الطبيعي لأنه مثبت مسبقاً على جميع الأجهزة المعتمدة مع Google Mobile Services ولا يتطلب رسوم ترخيص إضافية.
للمشاريع عبر المنصات، غالباً ما يُستخدم نهج multi-DRM مع مجمعي تراخيص مثل Axinom و EZDRM و Vualto، التي توفر API موحد للعمل مع جميع أنظمة DRM الثلاثة. هذا يقلل تعقيد التكامل ويتمركز إدارة التراخيص.
الأسئلة الشائعة
Widevine هي تقنية DRM من Google مصممة لحماية محتوى الفيديو الرقمي من النسخ غير المصرح به. تستخدمها خدمات البث لتشفير الفيديو وإدارة الوصول عبر نظام تراخيص.
يدعم Widevine ثلاثة مستويات أمان: L1 مع تشفير عتادي في TEE، L2 بنهج هجين، و L3 بتنفيذ برمجي بالكامل. L1 يسمح بتشغيل محتوى 4K، L3 محدود بجودة 720p.
يمكنك التحقق من مستوى Widevine على Android عبر فئة MediaDrm بطلب خاصية securityLevel. للقيام بذلك، أنشئ مثيل MediaDrm مع UUID الخاص بـ Widevine واستدع getPropertyString، أو استخدم تطبيقات طرف ثالث مثل DRM Info.
Widevine طورته Google لـ Android و Chrome، بينما FairPlay لـ iOS و tvOS و Safari. كلاهما يدعم التشفير العتادي و 4K، لكن Widevine أكثر انتشاراً على أجهزة Android، بينما FairPlay هو المعيار الفعلي في نظام Apple البيئي.
لاستخدام Widevine في تطبيق جوال، لا حاجة لترخيص منفصل — التقنية مدمجة في أجهزة Android المعتمدة و Chrome. تُفرض الرسوم فقط على مزودي المحتوى لاستخدام خادم التراخيص.
الخلاصة
سنقوم بتطوير تطبيق جوال جاهز
تقدم IT Sectr تطبيقات iOS وAndroid للشركات الناشئة والشركات منذ عام 2017. سوف نقدم لك النصح ونقترح أفضل حل.