Widevine L3 является разработкой корпорации Google. Она используется для защиты авторского контента, распространяемого по сети. В частности, эта технология внедрена в сервисы Netflix, Disney, Amazon Video, BBC, HBO, Facebook, Hulu, Spotify и т.п.
Для декодирования защищенного контента используется CDM-модуль. Он работает, в частности, в браузерах Chrome, ChromeOS, Android и Firefox. Также его применяют Samsung, Intel, Sony и LG в ряде своих продуктов.
Стоит отметить, что Widevine L3 — самый слабый уровень защиты от Google. Чаще всего с ним работают для распространения медиаконтента низкого качества (ниже 1080р). Уже второй уровень защиты дает возможность выполнять криптографические операции на стороне аппаратно изолированного TEE-окружения (Trusted Execution Environment, например, Intel SGX, ARM TrustZone и AMD PSP).
Взлом был осуществлен благодаря ошибке в реализации алгоритма шифрования Whitebox AES-128. Как оказалось, алгоритм подвержен атаке DFA (Differential Fault Analysis). Она позволяет получить доступ к ключу шифрования, после чего аудио и видео-контент, зашифрованный при помощи Widevine L3, становится возможным сохранять без особых проблем.
Что касается Widevine второго и первого уровней, то их найденный метод не затрагивает.
Данных о том, поделился ли Бьюкенен информацией о найденной уязвимости с Google перед публикацией технических подробностей, нет. Также непонятно, будет ли Google менять что-либо в Widevine L3.
Комментарии (17)
TMC
07.01.2019 16:39+3Столько шума на ровном месте развели.
Давным давно существует плагин Widevine L3 для chrome. Его использовали все подряд, включая плагины для Kodi, чтоб Нетфликс смотреть (в 720p). Плагин на выходе давал расшированный поток, который можно было уже сразу на торренты выкладывать.
«Заслуга» этого товарища, что он, видимо, не только расшифровал поток, но и достал оригинальный ключ шифрования из обфусцированного кода. Что, в принципе, не сильно-то и нужно было.ValdikSS
08.01.2019 01:59+1Он выдает не сжатый битстрим, а расшифрованные и раскодированные сырые видеокадры, которые пригодны для вывода на экран, но которые для сохранения в файл нужно повторно кодировать видеокодеком, что медленно и ухудшает качество (ну, или просто сохранять, но размер будет огромный). А здесь же речь именно о взломе DRM, т.е. расшифровки файлов до состояния оригинальных.
TMC
08.01.2019 11:13Там есть decrypt и decryptAndDecode. Первый именно что просто расшифровывает. Иначе на том же chromeos не задействовать аппаратный декодер.
ValdikSS
08.01.2019 13:18Судя по документу, в ChromeOS дешифрование и декодирование видео происходит аппаратно, там Widevine L1, а не только L3. Подозреваю, что получить битстрим в таком случае не получится. У вас есть другая информация?
TMC
08.01.2019 13:36Как и в Андроид, там все зависит от конкретного устройства. Те, что постарше с L3.
Гуглите по "kodi widevine", а не офф доки. :-)ValdikSS
08.01.2019 14:01Я прочитал информацию о реализации плагина для Netflix, для компьютеров используется L3 и программное декодирование средствами Widevine. Только на Android возможно аппаратное ускорение и высокие разрешения, т.к. используется библиотека Widevine для Android, которая использует TEE (Widevine L1) на совместимых устройствах.
TMC
08.01.2019 19:58В плагине нетфликс нет вообще wv (ну в том, что я видел).
Они все используют плагин inputstream.adaptive. Вот код его реализации wv: github.com/peak3d/inputstream.adaptive/blob/master/wvdecrypter/wvdecrypter.cpp По нему можно делать выводы.ValdikSS
08.01.2019 21:47По ссылке находится обертка над функциями из библиотеки. См. readme:
wvdecrypter
This piece of software implements a CencSingleSampleDecrypter wich can be used with inputstream.mpd addon.
wvdecrypter is developed to decrypt widevine encrypted media content. On most operating systems it is necessary to provide third part software ([lib]w*devi*ecdm.dll/so).
…
Installation:
search your kodi addon folder for «inputstream.mpd.[dll / so]
go into this folder with the file named above
create a new folder „decrypter“
copy the shared library from the build step into this new folder „decrypter“
search your system for [lib]w*devi*ecdm.dll/so (asterix's must be replaced) and copy it also into the new decrypters folder.
Насколько я понимаю, расшифровка до первоначальных данных возможна только в случае отсутствующего флага SSD_SECURE_PATH в зашифрованном потоке. Если этот флаг установлен, то декодирование потока происходит в библиотеке widevine (без аппаратного ускорения), а wvdecrypter получает несжатую картинку. Могу ошибаться, поправьте, если я не прав, но я всегда именно так представлял работу Widevine и других похожих DRM-технологий. Этот флаг часто не устанавливают?
tangro
08.01.2019 18:30но которые для сохранения в файл нужно повторно кодировать видеокодеком, что медленно и ухудшает качество (ну, или просто сохранять, но размер будет огромный)
«Медленно» — аж 5% загрузки процессора i5 при кодировании «на лету» потока 720p в относительно неплохом качестве
«ухудшает качество» — если мы хотим записанный стрим крутить в кинотеатре, то формально да, ухудшает. Для типичного варианта использования вроде «записать файлик и посмотреть его потом на планшете» ничего вы там глазами не заметитеValdikSS
08.01.2019 18:40«Медленно» — аж 5% загрузки процессора i5 при кодировании «на лету» потока 720p в относительно неплохом качестве
Только если использовать аппаратное кодирование, которое не настолько эффективно, как программное.
«ухудшает качество» — если мы хотим записанный стрим крутить в кинотеатре, то формально да, ухудшает. Для типичного варианта использования вроде «записать файлик и посмотреть его потом на планшете» ничего вы там глазами не заметите
Звук можно тоже с выхода аудиокарты записывать, а затем кодировать в MP3, но так никто не делает. Это может быть приемлемо во многих случаях, но такой релиз не примут на серьезных торрент-трекерах.tangro
08.01.2019 20:55О божемой, да каждый первый релиз на «серьезных торрент-трекерах» именно так и сделан. В смысле не со звуком из выхода аудиокарты, а с видео из расшифрованого видивайном и снова пожатого кадра.
ValdikSS
08.01.2019 21:47Это замечание относилось только к аудио, в случае, если вы захотите откуда-то рипнуть музыкальный альбом, защищенный DRM.
amarao
Пикантность ситуации добавляет то, что в качестве «атакующей стороны» выступает легальный владелец устройства.
На криптоспике это звучит так:
Алиса хочет отправить Бобу сообщение так, чтобы Боб мог его прочитать, но не мог с ним ничего сделать. Боб берёт и сохраняет полученное сообщение.
Protos
В чем пикантность? Смысл как раз в том: сжечь после прочтения
amarao
Пикантность в том, что Боб не хочет ничего сжигать. Более того, Бобу очень не нравится, когда в его очки для чтения встраивают огнемёты с удалённым управлением.
Protos
Но ведь Боб вне зависимости от того, что хочет, он связан офертой с Алисой
amarao
В которой написано, что нельзя нарушать права Алисы. Право на цитирование записано в законе:
Лениво искать, но поверьте, что в американском праве fair use ещё больше развит.
А никакая офферта не может ограничивать законные права.