Widevine: що це таке, DRM та рівні безпеки

Автор: IT Sectr Опубліковано: 2026-05-24 Час читання: 8 хв

Widevine — це технологія DRM, розроблена Google для захисту відеоконтенту від несанкціонованого копіювання на мобільних пристроях, Smart TV та веб-платформах. Шифрування контенту виконується через модуль CDM, який підтримується на 4 мільярдах пристроїв по всьому світу. Технологія Widevine забезпечує сумісність з Android, iOS, Chrome та Smart TV, дозволяючи сервісам стрімінгу захищати преміум-контент на будь-яких платформах.

Головне

  • Widevine — DRM-рішення від Google для захисту відео в мобільних додатках та вебі.
  • Три рівні безпеки: L1 (апаратне шифрування), L2 (програмне), L3 (безпечне лише в хмарі).
  • CDM — Content Decryption Module, ключовий компонент для розшифрування контенту.
  • Ліцензування керується через сервер ліцензій Google, який видає ключі для декодування.
  • Сумісність з EME (Encrypted Media Extensions) дозволяє працювати в будь-якому браузері.

Що таке Widevine?

Widevine — це пропрієтарна технологія DRM, придбана Google у 2010 році, яка стала стандартом де-факто для захисту відеоконтенту в екосистемі Android. Вона використовується найбільшими стрімінговими сервісами, включаючи Netflix, Amazon Prime Video, Disney+ та Hulu, для запобігання несанкціонованому копіюванню та розповсюдженню контенту.

Widevine підтримує шифрування AES-128 CBC з використанням ключів контенту, які передаються лише авторизованим пристроям через захищений канал ліцензування. Система забезпечує наскрізний захист від моменту шифрування на сервері до декодування на пристрої користувача.

Історія та розвиток Widevine

Компанія 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

Архітектура Widevine складається з трьох ключових компонентів: Content Decryption Module (CDM), сервера ліцензій та засобу шифрування контенту. CDM виконує дешифрування на стороні клієнта та взаємодіє з апаратним 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ПрограмнаЛише програмний CDM720p

Рівень 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 підхід з використанням агрегаторів ліцензій, таких як 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 (Content Decryption Module) виконує розшифрування контенту на стороні клієнта з використанням ліцензійних ключів.
  • Інтеграція виконується через ExoPlayer, MediaDrm на Android та EME на веб-платформах.
  • Для iOS потрібен FairPlay, що робить мульти-DRM підхід необхідним для крос-платформенних проєктів.
  • Widevine Modular підтримує шифрування CENC і сумісний з форматами MPEG-DASH та HLS.
  • Сервер ліцензій Google керує доступом до контенту на основі політик, заданих контент-провайдером.

Ми розробимо мобільний застосунок під ключ

IT Sectr створює застосунки для iOS та Android для стартапів і бізнесу з 2017 року. Ми проконсультуємо вас і запропонуємо найкраще рішення.

Обговорити проект

Читайте також