Widevine:这是什么، DRM و سطوح امنیتی

نویسنده: IT Sectr منتشر شده: 2026-05-24 زمان مطالعه: 8 دقیقه

Widevine — یک فناوری DRM است که توسط Google برای محافظت از محتوای ویدیویی در برابر کپی‌برداری غیرمجاز در دستگاه‌های موبایل، Smart TV و پلتفرم‌های وب توسعه یافته است. رمزگذاری محتوا از طریق ماژول CDM انجام می‌شود که در ۴ میلیارد دستگاه در سراسر جهان پشتیبانی می‌شود. فناوری Widevine سازگاری با Android، iOS، Chrome و Smart TV را فراهم می‌کند و به سرویس‌های استریمینگ اجازه می‌دهد از محتوای ممتاز در هر پلتفرمی محافظت کنند.

نکات اصلی

  • Widevine — راه‌حل DRM از Google برای محافظت از ویدیو در برنامه‌های موبایل و وب.
  • سه سطح امنیت: L1 (رمزگذاری سخت‌افزاری)، L2 (نرم‌افزاری)، L3 (فقط در ابر امن).
  • CDM — ماژول رمزگشایی محتوا، مؤلفه کلیدی برای رمزگشایی محتوا.
  • مجوزدهی از طریق سرور مجوز Google مدیریت می‌شود که کلیدهای رمزگشایی را صادر می‌کند.
  • سازگاری با EME (Encrypted Media Extensions) امکان کار در هر مرورگری را فراهم می‌کند.

Widevine چیست؟

Widevine — یک فناوری اختصاصی DRM است که توسط Google در سال ۲۰۱۰ خریداری شد و به استاندارد دوفاکتو برای حفاظت از محتوای ویدیویی در اکوسیستم Android تبدیل شد. این فناوری توسط بزرگترین سرویس‌های استریمینگ از جمله Netflix، Amazon Prime Video، Disney+ و Hulu برای جلوگیری از کپی‌برداری و توزیع غیرمجاز محتوا استفاده می‌شود.

Widevine از رمزگذاری مطابق با استاندارد AES-128 CBC با استفاده از کلیدهای محتوا پشتیبانی می‌کند که فقط به دستگاه‌های مجاز از طریق یک کانال مجوزدهی امن منتقل می‌شوند. این سیستم حفاظت سرتاسری را از لحظه رمزگذاری روی سرور تا رمزگشایی روی دستگاه کاربر فراهم می‌کند.

تاریخچه و توسعه Widevine

شرکت Widevine Technologies در سال ۱۹۹۹ تأسیس شد و در ابتدا راه‌حل‌هایی برای حفاظت از محتوا در پلتفرم‌های تلویزیون کابلی توسعه می‌داد. پس از خرید توسط Google در سال ۲۰۱۰، این فناوری برای پلتفرم‌های موبایل تطبیق داده شد و از نسخه ۴.۴ KitKat در سیستم‌عامل Android ادغام شد. از سال ۲۰۱۵، Widevine به یک مؤلفه اجباری گواهی Google Mobile Services تبدیل شد.

در سال ۲۰۱۸، Google Widevine Modular DRM را معرفی کرد که به تولیدکنندگان دستگاه اجازه می‌داد سطوح مختلف حفاظت را بدون تغییر کد سیستم‌عامل به صورت سخت‌افزاری پیاده‌سازی کنند. امروزه Widevine Modular در بیش از ۴ میلیارد دستگاه پشتیبانی می‌شود و مکانیسم اصلی DRM در Android است.

معماری Widevine

معماری Widevine از سه مؤلفه کلیدی تشکیل شده است: ماژول رمزگشایی محتوا (CDM)، سرور مجوز و ابزار رمزگذاری محتوا. CDM رمزگشایی را در سمت کلient انجام می‌دهد و با Trusted Execution Environment (TEE) سخت‌افزاری برای ذخیره امن کلیدها تعامل دارد.

سرور مجوز Google صدور کلیدها را بر اساس سیاست‌های ارائه‌دهنده محتوا مدیریت می‌کند که محدودیت‌های زمانی، تعداد دستگاه‌ها و کیفیت پخش را تعیین می‌کنند. ابزار رمزگذاری محتوا را در سمت ارائه‌دهنده آماده می‌کند و آن را در قالب MPEG-DASH یا HLS با رمزگذاری CENC بسته‌بندی می‌کند.

Widevine DRM چگونه کار می‌کند؟

فرآیند حفاظت از مرحله بسته‌بندی محتوا شروع می‌شود، زمانی که فایل رسانه‌ای با استفاده از کلید محتوا روی سرور ارائه‌دهنده رمزگذاری می‌شود. جریان رمزگذاری‌شده از طریق CDN به دستگاه کاربر منتقل می‌شود، جایی که CDM از سرور مجوز درخواست مجوز می‌کند.

سرور مجوز اعتبار دستگاه و حق دسترسی به محتوا را بررسی می‌کند. اگر تأیید موفقیت‌آمیز باشد، سرور مجوز با کلید صادر می‌کند که CDM برای رمزگشایی از آن استفاده می‌کند. مجوز ممکن است شامل محدودیت‌هایی در زمان تماشا و وضوح باشد.

پروتکل تبادل مجوز

تبادل مجوز در Widevine از طریق پروتکل EME (Encrypted Media Extensions) در مرورگرها یا از طریق SDK در پلتفرم‌های موبایل پیاده‌سازی می‌شود. درخواست مجوز توسط CDM تشکیل و از طریق HTTPS به سرور مجوز ارسال می‌شود که حفاظت در برابر رهگیری کلیدها در حین انتقال را تضمین می‌کند.

سرور درخواست را پردازش کرده و مجوزی را برمی‌گرداند که همچنین رمزگذاری شده و فقط توسط CDM دستگاه قابل رمزگشایی است. اتصال سخت‌افزاری کلید به دستگاه خاص از انتقال آن به پلتفرم‌های دیگر جلوگیری می‌کند.

پشتیبانی از استانداردهای رمزگذاری

Widevine از استانداردهای Common Encryption (CENC) تعریف‌شده در ISO/IEC 23001-7 استفاده می‌کند که سازگاری با فرمت‌های MPEG-DASH و HLS را تضمین می‌کند. رمزگذاری AES-128 در حالت CTR یا CBC برای محافظت از جریان‌های رسانه‌ای اعمال می‌شود.

برای استخراج کلید از HKDF (HMAC-based Key Derivation Function) استفاده می‌شود که امکان تولید کلیدهای منحصر‌به‌فرد برای هر بخش از محتوا را فراهم می‌کند. پشتیبانی از HLS در Widevine از نسخه Modular 2.0 اضافه شده است که سازگاری با پلتفرم‌های Apple را گسترش داد.

نمونه درخواست مجوز در Android

kotlin
@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، L2، L3

Widevine سه سطح امنیت را تعریف می‌کند که در نحوه اجرای عملیات رمزنگاری و پردازش محتوا متفاوت هستند. سطح L1 حداکثر حفاظت را فراهم می‌کند، L3 حداقل و L2 در موقعیت میانی قرار دارد.

سطحنوع حفاظتنیازمندی‌های دستگاهحداکثر وضوح
L1سخت‌افزاریTEE در سطح SoC4K Ultra HD
L2ترکیبیTEE برای کلیدها، نرم‌افزار برای ویدیو1080p
L3نرم‌افزاریفقط CDM نرم‌افزاری720p

سطح L1 — رمزگذاری سخت‌افزاری

سطح L1 به وجود Trusted Execution Environment (TEE) در سطح سخت‌افزاری نیاز دارد که تمام عملیات رمزنگاری در آن اجرا می‌شود. کلیدهای محتوا هرگز TEE را ترک نمی‌کنند که استخراج آنها را حتی در صورت به خطر افتادن سیستم‌عامل اصلی غیرممکن می‌کند.

دستگاه‌های دارای گواهی L1 می‌توانند محتوا را با کیفیت 4K و HDR پخش کنند، زیرا جریان ویدیویی رمزگشایی‌شده مستقیماً به خروجی ویدیوی محافظت‌شده بدون دسترسی فرآیندهای کاربر منتقل می‌شود.

سطح L3 — رمزگذاری نرم‌افزاری

سطح L3 تمام عملیات رمزنگاری را به صورت نرم‌افزاری در فضای معمولی کاربر اجرا می‌کند. این کم‌امن‌ترین حالت است که در آن کلیدها می‌توانند از حافظه رم دستگاه استخراج شوند.

Widevine L3 کیفیت پخش را به 720p محدود می‌کند که آن را برای تماشا در دستگاه‌های پایین‌رده یا مرورگرهای رومیزی بدون حفاظت سخت‌افزاری مناسب می‌سازد.

بررسی سطح امنیت در دستگاه

kotlin
fun getSecurityLevel(): String {
    val mediaDrm = MediaDrm(UUID.fromString(
        "edef8ba9-79d6-4ace-a3c8-27dcd51d21ed"
    ))
    val level = mediaDrm.getPropertyString(
        "securityLevel"
    )
    return level.ifEmpty { "L3" }
}

ادغام Widevine در برنامه‌های موبایل

ادغام Widevine در برنامه‌های موبایل از طریق APIهای استاندارد MediaDrm (Android) و AVContentKeySession (iOS) انجام می‌شود. در بیشتر موارد، توسعه‌دهنده نیازی به کار مستقیم با DRM ندارد — کتابخانه‌های پخش مانند ExoPlayer و AVPlayer مجوزدهی را به صورت خودکار مدیریت می‌کنند.

ادغام در Android

در Android، Widevine از طریق کلاس MediaDrm ادغام می‌شود که دسترسی مستقیم به CDM فراهم می‌کند. برای برنامه‌های استریمینگ، توصیه می‌شود از ExoPlayer با ماژول DrmSessionManager استفاده کنید که به طور خودکار درخواست‌های مجوز را مدیریت می‌کند.

هنگام مقداردهی اولیه پخش‌کننده، باید UUID طرح Widevine (`edef8ba9-79d6-4ace-a3c8-27dcd51d21ed`) و URL سرور مجوز ارائه‌شده توسط ارائه‌دهنده محتوا را مشخص کنید. ExoPlayer چرخه درخواست و تمدید مجوز را به طور خودکار مدیریت می‌کند.

پیکربندی ExoPlayer برای Widevine

kotlin
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 و DRM جایگزین

Widevine رقابت می‌کند با FairPlay از Apple و PlayReady از Microsoft، سه راه‌حل اصلی DRM در بازار پلتفرم‌های موبایل را تشکیل می‌دهد. هر فناوری مزایا و محدودیت‌های خود را مرتبط با اکوسیستم پلتفرم دارد.

مقایسه راه‌حل‌های DRM

ویژگیWidevineFairPlayPlayReady
توسعه‌دهندهGoogleAppleMicrosoft
پلتفرم اصلیAndroid، ChromeiOS، tvOS، SafariWindows، Xbox، UWP
حداکثر سطحL1 (4K)معادل L1 (4K)SL3000 (4K)
حفاظت سخت‌افزاریTEESecure EnclaveTPM + TEE

انتخاب DRM برای پروژه

انتخاب DRM به پلتفرم‌های هدف برنامه بستگی دارد. برای پروژه‌های Android-first، Widevine انتخاب طبیعی است زیرا روی تمام دستگاه‌های گواهی‌شده با Google Mobile Services از پیش نصب شده است و هزینه مجوز اضافی ندارد.

برای پروژه‌های چندپلتفرمی، اغلب از رویکرد چند-DRM با استفاده از agregatorهای مجوز مانند Axinom، EZDRM و Vualto استفاده می‌شود که API یکپارچه برای کار با هر سه سیستم DRM فراهم می‌کنند. این کار پیچیدگی ادغام را کاهش داده و مدیریت مجوزها را متمرکز می‌کند.

سوالات متداول

Widevine DRM چیست؟

Widevine — یک فناوری DRM از Google است که برای محافظت از محتوای ویدیویی دیجیتال در برابر کپی‌برداری غیرمجاز طراحی شده است. سرویس‌های استریمینگ از آن برای رمزگذاری ویدیو و مدیریت دسترسی به آن از طریق سیستم مجوزدهی استفاده می‌کنند.

چه سطوح امنیتی Widevine وجود دارد؟

Widevine از سه سطح امنیت پشتیبانی می‌کند: L1 با رمزگذاری سخت‌افزاری در TEE، L2 با رویکرد ترکیبی و L3 با پیاده‌سازی کاملاً نرم‌افزاری. L1 امکان پخش محتوا در 4K را فراهم می‌کند، L3 به کیفیت 720p محدود است.

چگونه سطح Widevine را در Android بررسی کنیم؟

سطح Widevine در Android را می‌توان از طریق کلاس MediaDrm با درخواست ویژگی securityLevel بررسی کرد. برای این کار یک نمونه MediaDrm با UUID Widevine ایجاد کرده و getPropertyString فراخوانی می‌شود، یا از برنامه‌های شخص ثالث مانند DRM Info استفاده می‌شود.

Widevine چه تفاوتی با FairPlay دارد؟

Widevine توسط Google برای Android و Chrome توسعه یافته است، در حالی که FairPlay برای iOS، tvOS و Safari است. هر دو از رمزگذاری سخت‌افزاری و 4K پشتیبانی می‌کنند، اما Widevine در دستگاه‌های Android گسترده‌تر است و FairPlay استاندارد دوفاکتو در اکوسیستم Apple است.

آیا برای استفاده از Widevine به مجوز نیاز است؟

برای استفاده از Widevine در برنامه موبایل مجوز جداگانه لازم نیست — این فناوری در دستگاه‌های Android و Chrome گواهی‌شده تعبیه شده است. هزینه فقط از ارائه‌دهندگان محتوا برای استفاده از سرور مجوز دریافت می‌شود.

نتایج

  • Widevine — مکانیسم اصلی DRM در Android که حفاظت از محتوای ویدیویی را از طریق رمزگذاری سخت‌افزاری یا نرم‌افزاری فراهم می‌کند.
  • سه سطح امنیت L1، L2، L3 حداکثر کیفیت پخش و درجه حفاظت از کلیدها را تعیین می‌کنند.
  • CDM (ماژول رمزگشایی محتوا) رمزگشایی محتوا را در سمت کلient با استفاده از کلیدهای مجوز انجام می‌دهد.
  • ادغام از طریق ExoPlayer، MediaDrm در Android و EME در پلتفرم‌های وب انجام می‌شود.
  • برای iOS FairPlay مورد نیاز است که رویکرد چند-DRM را برای پروژه‌های چندپلتفرمی ضروری می‌کند.
  • Widevine Modular از رمزگذاری CENC پشتیبانی می‌کند و با فرمت‌های MPEG-DASH و HLS سازگار است.
  • سرور مجوز Google دسترسی به محتوا را بر اساس سیاست‌های تعیین‌شده توسط ارائه‌دهنده محتوا مدیریت می‌کند.

ما یک اپلیکیشن موبایل به صورت کلید در دست توسعه خواهیم داد

IT Sectr از سال 2017 برنامه‌های iOS و Android را برای استارتاپ‌ها و کسب‌وکارها ایجاد می‌کند. ما به شما مشاوره می‌دهیم و بهترین راه‌حل را پیشنهاد خواهیم کرد.

بحث درباره پروژه

همچنین بخوانید