精讀加密媒體擴展(Encrypted Media Extensions,EME)
首圖來自 https://www.cablelabs.com/meet-connectivity-enabler-alberto-campos
本期精讀的文章是: W3C發布加密媒體擴展(Encrypted Media Extensions,EME)正式推薦標準
感謝 xekri 提供 hacker news 上的熱門討論帖:https://news.ycombinator.com/item?id=15278883
1 引言
制定 Web 標準的行業組織 W3C 發表了加密媒體擴展(Encrypted Media Extensions,EME)的推薦規格,使得受爭議的 HTML5 DRM 成為 Web 的正式標準。W3C 的新聞稿稱,「EME 是一個應用編程介面(API),允許無插件播放 Web 瀏覽器中受保護(加密的)內容,它可以無縫地作用於所有主要的平台。W3C 的媒體資源擴展標準(Media Source Extensions, MSE)提供傳送媒體視頻的 API,而 EME 提供了處理加密內容的 API。MSE 和 EME 的組合是當今最常見的做法,允許 Web 開發人員在不使用插件的情況下也可以通過 Web 提供商業品質的視頻。」在 W3C 成員批准該規格的最終投票中,58.4% 支持,30.8% 反對,10.8% 棄權。電子前哨基金會(EFF)隨後發表了致 W3C 的公開信,譴責 W3C 放棄了共識,宣布辭職抗議。
—— 摘自《HTML5 DRM 正式成為 Web 標準,EFF 辭職抗議》
以上,是我17年9月19日晚收到的一條推送消息。我當時在寫《關於 React 系前端技術的思考》,可是它,讓我意識到,該關注下 <video /> 背後的故事了。
17年下半年發生了兩件有趣的撕 X 事件:Facebook 將部分開源項目的防專利流氓證書 「BSD + Pattern」 重新授權為 「MIT」 和 W3C 發布 HTML5 版權保護的 EME 推薦標準。一時,似乎著作權、版權和開源、分享,甚至普世、網路中立性,這些聲音開始在不少人耳邊盤繞。
「無論如何,在當前的現實中,法律是保護著作權的。」 那麼,我以 EME 為切入點,和大家聊聊 HTML 5 中如何保護知識產權吧。
2 內容概要
接下來,我將為大家分享一些基本概念、背景和 EME 對利益相關方的影響。
在精讀部分,將重點匯總瀏覽器對 MSE 和 EME 的支持情況;分享現代播放器的技術原理, MSE 和 EME 組合的播放器示例,加深大家對現代播放器的相關技術的理解。最後,推薦一些較實用、成熟的開源技術。
基本概念
- DRM:數字版權管理(Digital Rights Management)是以一定的計算方法,實現對數字內容的保護, 也可以解釋為, 內容數字版權加密保護技術。
- EME:加密媒體擴展(Encrypted Media Extensions)是 W3C 提出的一種規範,用於在 Web 瀏覽器和 DRM 代理軟體之間提供通信通道。
- MSE:媒體源擴展(Media Source Extensions)是一項 W3C 規範,它擴展了HTMLMediaElement,允許 JavaScript 生成媒體流以支持回放。這可以用於自適應流(adaptive streaming)及隨時間變化的視頻直播流(live streaming)等應用場景。
- CDM:內容解密模塊(Content Decryption Module),客戶端或者使用端軟體或硬體提供的一個機制,可以播放加密內容。
背景
長期以來,「多方利益」模式的 W3C ,以或標準化引領、或被各方優良實踐推動再制定標準的方式,來影響著互聯網的發展。
2011年時 Silverlight 、HTML5 及 Flash 還是最受熱捧的 RIA (富互聯網應用) 技術。當時,Silverlight 的PlayReady DRM、 Flash 的 Flash Media Rights Management(FMRM),在版權保護上已十分成熟。而 HTML5 還處於 <video> 未指明編碼標準的萌芽狀態、更談不上版權保護。
隨著移動互聯網、視頻直播、智能家電等等互聯網快速發展,瀏覽器插件一度成為網路惡意攻擊的重災區,給網路用戶安全性帶來很大隱患。微軟和許多企業都鼓勵用戶、開發者使用 HTML5 的通信協議,標準化通信可以極大增加網路安全性。其中包括 W3C 的 Media Source Extensions (MSE)、 Encrypted Media Extensions (EME),MPEG的 MPEG-DASH 和 Common Encryption (CENC)。
終於,內容提供商(如 Netflix、Adobe、CableLabs 等)從 Flash、Silverlight 插件播放器過渡到統一的 HTML5 視頻播放;各大瀏覽器公司(如 Google, Microsoft, Apple)也逐步拋棄了過時的媒體插件。
EME 作為 HTML 5 DRM 版權保護方案中的一員,雖然從2012年提案開始就頗多爭議,但是事實上已被各瀏覽器以捆綁閉源的 CDM 的沙箱化方式「悄悄」分發。現在,W3C 只是給了它應有的名分罷了。
EME 對 Web 產生的影響
W3C理事長 Tim Berners-Lee 在《W3C Blog: 關於HTML5標準中的加密媒體擴展(EME)》中闡述了 EME 對內容分發商、媒體、用戶、開發者、安全技術研究人員的影響。
對多數人的影響大概是,可以提供一個相對安全的在線環境使用戶可以獲取高品質商業級的 Web 音視頻等內容,並便捷的就此進行在線互動。
下圖是內容提供商分發他們電影的選擇渠道和優缺點。
圖 1. 取自《ON EME IN HTML5》
值得注意的是,安全技術研究人員還是有些影響的。中國雖然沒有所謂的「數字千年著作權法案」,可是畢竟還是保護網路安全和著作權的。
精讀
瀏覽器支持情況
以下是截取 caniuse 網站統計的 EME 和 ESM 的支持情況(點擊圖片可放大):
瀏覽器對 EME 支持情況
瀏覽器對 MSE 支持情況
現代播放器的技術原理
《視頻直播技術詳解——現代播放器原理》中,將典型的播放器分解為:UI、多媒體引擎和解碼器。如下圖:
- UI:含皮膚、自定義特性(如播放列表、分享等)和業務邏輯部分(廣告、設備兼容性邏輯和認證管理等);
- 多媒體引擎:處理所有播放控制相關邏輯,如描述文件解析、視頻片段拉取、自適應碼率規則設定和切換等。它擁有非常多的不同組件和特性,從字幕到截圖到廣告插入等等。
- 解碼器和 DEM 管理器:解碼器解碼並渲染視頻內容;DRM 則通過解密過程來控制是否有權播放。解碼器和 DRM 管理器與操作系統平台密切綁定。
圖 :解碼器、渲染器和 DRM 工作流程圖
圖 DRM 管理器
今天,在傳輸工作室生產的付費內容的時候,DRM 是必要的。這些內容必須防止被盜,因此 DRM 的代碼和工作過程都向終端用戶和開發者屏蔽了。解密過的內容不會離開解碼層,因此也不會被攔截。
為了標準化 DRM 以及為各平台的實現提供一定的互通性,幾個 Web 巨頭一起創建了通用加密標準Common Encryption (CENC) 和通用的多媒體加密擴展Encrypted Media Extensions,以便為多個 DRM 提供商(例如,EME 可用於 Edge 平台上的 Playready 和 Chrome 平台上的 Widewine)構建一套通用的 API,這些 API 能夠從 DRM 授權模塊讀取視頻內容加密密鑰用於解密。
CENC 聲明了一套標準的加密和密鑰映射方法,它可用於在多個 DRM 系統上解密相同的內容,只需要提供相同的密鑰即可。
在瀏覽器內部,基於視頻內容的元信息,EME 可以通過識別它使用了哪個 DRM 系統加密,並調用相應的解密模塊(Content Decryption Module, CDM)解密 CENC 加密過的內容。解密模塊 CDM 則會去處理內容授權相關的工作,獲得密鑰並解密視頻內容。
CENC 沒有規定授權的發放、授權的格式、授權的存儲、以及使用規則和許可權的映射關係等細節,這些細節的處理都由 DRM 提供商負責。
MSE 和 EME 組合的播放器示例
結合 cpearce/mse-eme 做簡要說明,代碼可參見對應的 Github 倉庫。
- index.html:模擬內容服務商視頻播放網頁,獲取 EME 設置(本例中 eme.js),通過調用 MSE 模塊(本例中 mse.js) 逐塊載入視頻片段並控制播放。
- resources.js:模擬 License(Key) server,與 CDM 模塊交互並提供解密媒體資源所需的 key;
- media:模擬Key System 和 Packaging service。主要功能是提供一種內容保護(DRM)機制,實際應用中常見的 Key System 有 Clear Key、Playready、Widevine 等;另外,作為 Packaging Service,提供編碼並加密媒體資源以供發布和播放使用。
- eme.js: 模擬 EME 通信模塊。主要包括監聽 MediaKeys 的 message 和 keystatuseschange 變化;發起證書請求;最後,通過 License(key) 解密 video/audio 流;
- mse.js:模擬媒體源擴展模塊,通過調用瀏覽器提供的 MSE API,來控制視頻流播放邏輯。
成熟的開源技術
開源的視頻播放器和個人點評
- video.js 和其插件:設備檢測與配置邏輯的 videojs-contrib-hls 、廣告 videojs-contrib-ads免費開源的 HTML5 和 Flash 播放器,通過強大的插件應用於 400,000 網站。採用 Apache License, Version 2.0 授權
- JW Player:號稱世界上最流行的嵌入播放器,應用於200萬網站、每月13億播放次數。採用 Creative Commons license 授權
- Shaka Player:Google 開源的基於 MSE + EME 的 JavaScript 庫,支持 DASH、HLS 等。採用 Apache License 2.0 授權
- dash.js:一個支持 MPEG DASH 的參考實現,適合研究學習。採用 BSD 授權
總結
目前來看,DRM 市場還是分散狀態。只有考慮到各瀏覽器廠商的 DRM 系統,才能讓所有瀏覽器來支持 DRM 播放。
期待隨著標準的發布,注重著作權、版權的互聯網能夠很快地向有序方向發展。
討論地址是:精讀《W3C發布加密媒體擴展(Encrypted Media Extensions,EME)正式推薦標準》 · Issue #37 · dt-fe/weekly如果你想參與討論,請點擊這裡,每周都有新的主題,每周五發布。
推薦閱讀:
※Spotify Running 的使用體驗如何?
※求一款OS X平台的音樂播放軟體?
※開博爾K9 Plus、海美迪Q10四代、XBOX ONE S三款藍光播放器如何挑選?
※存在能聽出DSD硬解和軟解的金耳朵嗎?
※為什麼國產HIFI播放器和音箱上市好幾年了,價格都不下降?