DRM之Widevine學習入門(一)

Android設計了一個通用的DRM軟件框架,不同的DRM解決方案可通過Plugin的方式集成到Android系統中。DRM Framework API模塊通過Binder機制和DRMserver進程中的DRM Manager模塊通信,DRM Framework API模塊是Framework層暴露給App的接口,其中最主要的類是DrmManagerClient。DRM Manager加載並管理系統中所有的DRM插件。手機可能會集成多個DRM Plugin。因爲媒體文件如採用不同DRM解決方案進行加密,手機播放時,DRM Manager需找到對應的DRM Plugin進行解密。

Android中的DRM軟件架構:

Widevine是google推出的一種DRM數字版權管理功能,支持從google指定的服務器上,下載經google加密的版權文件,如視頻、應用等。現在Widevine已經成爲GMS(Google Mobile Service)中必備的內容,所有想要得到GMS的手機廠商,都需要根據GMS的要求搭載Widevine。

Widevine DRM解決方案結合以下行業標準,提供強大的多平臺內容保護:

基於HTTP的動態自適應流技術(DASH) 
DASH能夠使高質量媒體內容通過互聯網進行無縫傳輸。DASH所採用的是標準HTTP 協議,因而廠商可在現有的網絡基礎設施上便利地利用DASH技術。這些網絡基礎設施包括網絡服務器、內容分發網絡、防火牆等。

數據通信常用安全加密技術(CENC)
CENC是一種基於行業標準的內容加密技術。CENC能夠識別單個或多個DRM系統上的標準加密範式和關鍵映射機制,這就使廠商能夠使用不同的DRM系統對同樣的文件進行解密。CENC技術還能使內容提供者僅通過一次加密就將內容傳輸至衆多用戶設備及其DRM系統。

加密媒體擴展協議(EME)
EME是W3C提出的標準,該協議提供的一整套通用API不僅能夠用來與DRM系統進行互動,還能管理許可證祕鑰交換。EMC允許內容提供者爲所有設備設計單一的解決方案。

Widevine Classic是Google專有的DRM方案,用於直播,點播和下載內容。 它要求內容以Google自己的特定格式打包。在現代消費設備和平臺中,Widevine Classic已被Widevine Modular取代。與Widevine Classic一起使用的視頻內容格式爲:Widevine(.WVM)。Widevine Modular支持MPEG-DASH,CMAF,HLS和Smooth Streaming ABR視頻格式,以及公共加密(CENC)等開放標準。


Widevine 測試APK有兩個:

WidevineSamplePlayer.apk 測試Widevine Classic

ExoPlayerDemo.apk 測試Widevine Modular

Widevine安全級別

安全級別

安全Bootloader

Widevine密鑰配置

安全硬件或ARM Trust Zone

Widevine密鑰箱和視頻密鑰處理

硬件視頻路徑

1級

工廠提供Widevine Keys

密鑰永遠不會暴露給主機CPU

硬件保護的視頻路徑

2級

工廠提供Widevine Keys

密鑰永遠不會暴露給主機CPU

硬件保護的視頻路徑

3級

是*

現場提供Widevine Keys

沒有

清除暴露給主機CPU的密鑰

清晰的視頻流傳送到視頻解碼器

手機廠商可以通過Google的授權以獲取Widevine DRM對應的軟件包從而將Widevine DRM集成到自己的產品中。

Widevine DRM代碼結構大體可分爲三部分:

1、Android中的基本框架。包括WVMExtractor等。這部分代碼在AOSP(Android 開放源代碼項目)中可以看到。主要功能實現封裝在Widevine專利代碼包。

2、Widevine專利代碼包。需要得到Google授權才能得到。該包提供了很多Widevine專用庫用於完成Widevine DRM權限檢查、解密。它還提供了一些簡單App用於測試。

3、手機廠商自身的安全認證。Widevine支持在硬件層與廠商的安全機制綁定,在boot等底層中加入自主研發的安全機制,只有通過可信賴的boot loader才能使用具有正常權限的手機軟件,並支持Widevine機制。

Android系統中的Widevine Crypto插件:

 

安全加密技術概念拓展:

ARM TrustZone® 技術是系統範圍的安全方法,此係統方法意味着可以保護安全內存、加密塊、鍵盤和屏幕等外設,從而可確保它們免遭軟件攻擊。處理器架構上,TrustZone將每個物理核虛擬爲兩個核,一個非安全核(Non-secure Core, NS Core)安全核(Secure Core)。兩個虛擬的核以基於時間片的方式運行,根據需要實時佔用物理核,並通過Monitor Mode在安全世界和非安全世界之間切換,Trustzone下的Monitor Mode實現了同一CPU上兩個操作系統間的切換。邏輯上,安全世界中,安全系統的OS提供統一的服務,針對不同的安全需求加載不同的安全應用TA(Trusted Application)。

系統上電覆位後,先從安全世界開始執行。安全世界會對非安全世界的bootloader進行驗證,確保非安全世界執行的代碼經過授權而沒有被篡改過。然後非安全世界的bootloader會加載非安全世界的OS,完成整個系統的啓動。在非安全系統的bootloader加載OS時,仍然需要安全世界對OS的代碼進行驗證,確保沒有被篡改。基於安全考慮,各家TrustZone都實行閉源。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章