- +1
Apple FairPlay DRM及其工作原理
翻譯、編輯:Alex
技術(shù)審校:劉姍
本文來自O(shè)TTVerse,作者為Krishna Rao Vijayanagar。

▲掃描圖中二維碼了解音視頻技術(shù)大會(huì)更多信息▲
Easy-Tech #020# —— Apple FairPlay
在本篇文章中,我們將了解Apple推出的FairPlay DRM解決方案(主要用于在iOS、tvOS和macOS設(shè)備上安全分發(fā)內(nèi)容)。讓我們一起來看下FairPlay DRM的重要構(gòu)成、基本工作流和一些有趣的功能。
什么是Apple FairPlay?
FairPlay是Apple公司的DRM解決方案,它使用HLS協(xié)議安全地傳輸流媒體。iOS, tvOS和macOS原生支持FairPlay DRM。
Apple的FairPlay DRM向內(nèi)容提供商提供技術(shù)和指導(dǎo),包括:
對(duì)內(nèi)容編碼
安全地存儲(chǔ)密鑰和對(duì)應(yīng)的密鑰ID
使用播放器端的技術(shù),安全地與播放器交換密鑰,以及請(qǐng)求DRM密鑰、解密視頻、解碼以及顯示內(nèi)容。
在本篇文章中,我們將聚焦FairPlay DRM,以下是我們將要了解的內(nèi)容。
FairPlay支持的算法
FairPlay的重要構(gòu)成
FairPlay的工作原理
FairPlay DRM的重要構(gòu)成
在深入了解FairPlay以前,讓我們先看看在FairPlay DRM討論中反復(fù)提到的主要模塊。
1. HLS打包器
在加密視頻之前,必須先使用HLS協(xié)議打包視頻。HLS是Apple公司開發(fā)的流媒體協(xié)議,用于ABR轉(zhuǎn)碼技術(shù),并且支持MPEG-TS(ts)或者分段mp4(fmp4)容器格式的文件存儲(chǔ)。
2. 使用SAMPLE-AES和AES-128加密
在打包后,必須使用AES-128 CBC模式加密內(nèi)容(CBC代表Cipher Block Chaining,即密文分組鏈接)。
CBC模式通過上一個(gè)分組加密輸出影響當(dāng)前分組。
使用初始化向量(Initialization Vector或IV),可以確保即使同一明文(輸入)用同一密鑰被獨(dú)立加密數(shù)次,也能生成不同的密文(加密過程中的輸出)。
IV是隨機(jī)的,這樣可以阻止黑客通過觀察密文,識(shí)別重復(fù)模式并獲取密鑰。
通過Apple FairPlay,你可以使用SAMPLE-AES或AES-128加密視頻。
在我們了解SAMPLE-AES和AES-128的區(qū)別之前,請(qǐng)記住這兩種技術(shù)都使用了AES-128(請(qǐng)閱讀構(gòu)建DRM系統(tǒng)的重要基石——EME、CDM、AES、CENC和密鑰)加密,只是應(yīng)用在視頻上的方式不同。讓我們看看它們是如何實(shí)現(xiàn)的。
2.1. SAMPLE-AES
在SAMPLE-AES技術(shù)中,你無需加密整個(gè)視頻,只需使用AES-128的CBC模式加密音頻數(shù)據(jù)包和視頻幀的sample,這樣一來,就可以節(jié)省加密和解密過程中的功耗(尤其在視頻分辨率增加的情況下)。
比如,F(xiàn)airPlay協(xié)議規(guī)定,在H.264/AVC碼流中,如果NAL單元類型是1或5,那么NAL就會(huì)被加密;其他情況則不會(huì)被加密。
為什么?因?yàn)閱卧愋蜑?和5的時(shí)候,NAL包含了非IDR和IDR幀信息。在視頻編解碼器的碼流中,IDR幀代表了新的視頻切片的開始。沒有IDR幀,其他幀就無法被解碼(直到下一個(gè)IDR或者I幀到達(dá))。
這說明了SAMPLE-AES的目標(biāo)是加密一小部分有價(jià)值的音視頻內(nèi)容,以節(jié)省處理資源和電池電量。
想要了解更多細(xì)節(jié),請(qǐng)參考Apple的_MPEG-2 Stream Encryption Format for HTTP Live Streaming_規(guī)范:https://developer.apple.com/library/archive/documentation/AudioVideo/Conceptual/HLS_Sample_Encryption/Intro/Intro.html#//apple_ref/doc/uid/TP40012862-CH5-SW1
下面是m3u8播放清單中SAMPLE-AES的表示方式:
EXT-X-KEY顯示:SAMPLE-AES
后接內(nèi)容密鑰(Content Key)的URI
IV(初始化向量)和密鑰一起使用
#EXTM3U #EXT-X-TARGETDURATION:10 #EXT-X-VERSION:3 #EXT-X-MEDIA-SEQUENCE:0 #EXT-X-PLAYLIST-TYPE:VOD #EXTINF:9.96, #EXT-X-KEY:METHOD=SAMPLE-AES,URI="https://dummyurl/test.key",IV=0x73fbe3277bdf0bfc5217125bde4ca589 test_0.ts #EXTINF:10, test_1.ts #EXTINF:10,
注意: 給不了解m3u8的朋友科普一下,m3u8用于HLS視頻流,描述了可用碼率-分辨率組合數(shù)量、視頻切片數(shù)量、每個(gè)切片長(zhǎng)度以及切片播放順序、加密細(xì)節(jié)、廣告插入點(diǎn)等。請(qǐng)查看
https://datatracker.ietf.org/doc/html/rfc8216 了解更多細(xì)節(jié)。
2.2. AES-128
在AES-128技術(shù)中,切片(包括音頻和視頻)通過AES-128、CBC模式和PKCS7填充(Public-Key Cryptography Standards,公鑰密碼標(biāo)準(zhǔn))完全加密。通過IV或者媒體序列號(hào)(代替IV),CBC在每個(gè)切片邊界處重新啟動(dòng)。
下面是AES-128在m3u8文件中的表示方式:
EXT-X-KEY顯示:AES-128
后接內(nèi)容密鑰的URI
IV(初始化向量)和密鑰一起使用
#EXTM3U #EXT-X-TARGETDURATION:10 #EXT-X-VERSION:3 #EXT-X-MEDIA-SEQUENCE:0 #EXT-X-PLAYLIST-TYPE:VOD #EXTINF:9.96, #EXT-X-KEY:METHOD=AES-128,URI="https://dummyurl/test.key",IV=0x73fbe3277bdf0bfc5217125bde4ca589 test_0.ts #EXTINF:10, test_1.ts #EXTINF:10,
3. 客戶端應(yīng)用
客戶端應(yīng)用是指用來在Apple操作系統(tǒng)(比如iOS、tvOS和macOS)上播放視頻的應(yīng)用或者播放器。
它負(fù)責(zé)向許可證服務(wù)器發(fā)送請(qǐng)求信息以獲取解密密鑰。
內(nèi)容服務(wù)提供商可以使用Apple的示例代碼開發(fā)自己的FairPlay客戶端應(yīng)用或者使用由DRM解決方案供應(yīng)商提供FairPlay SDK。
4. AVFoundation
AVFoundation的最佳定義來自Apple:
AVFoundation是一個(gè)全功能框架,用于處理iOS、macOS、watchOS和tvOS上基于時(shí)間的音視頻媒體。通過AVFoundation,你可以輕松播放、創(chuàng)建和編輯QuickTime電影以及MPEG-4文件、播放HLS視頻流并為你的App構(gòu)建強(qiáng)大的媒體功能。
5. App Delegate
App Delegate是應(yīng)用的根對(duì)象,充當(dāng)應(yīng)用程序的“控制器”。當(dāng)其連接的對(duì)象達(dá)到某種狀態(tài)或者發(fā)生某個(gè)事件時(shí),App Delegate會(huì)獲得通知。在FairPlay中,App Delegate負(fù)責(zé)播放器、AVFoundation框架和密鑰服務(wù)器之間的協(xié)調(diào)和通信。
6. 密鑰服務(wù)器和密鑰安全模塊
密鑰服務(wù)器管理用于加密和解密FairPlay所保護(hù)內(nèi)容的密鑰。
密鑰安全模塊(Key Security Module,KSM):
接收和解密來自播放器的許可證請(qǐng)求。來自播放器的請(qǐng)求被稱為SPC(Server Playback Context,服務(wù)器播放上下文)。
將內(nèi)容密鑰(由密鑰服務(wù)器返回)裝入CKC(Content Key Context,內(nèi)容密鑰上下文)信息中,發(fā)送回給播放器。
Apple允許你使用它們的示例參考代碼實(shí)現(xiàn)自己的KSM
Apple同時(shí)提供測(cè)試向量來測(cè)試KSM實(shí)現(xiàn)。你可以使用這些測(cè)試向量檢查你的KSM實(shí)現(xiàn)是否能夠:
妥善處理到來的SPC信息,然后
將其正確格式化并返回給播放器有效的CKC信息。
FairPlay DRM工作原理
讓我們來看下Fairplay的重要組成部分如何相互交互,從而實(shí)現(xiàn)FairPlay加密內(nèi)容的播放。

第1步: 用戶打開內(nèi)容提供商的App,然后按下“播放鍵”,開始觀看某部電影。
第2步: 應(yīng)用通知AVFoundation它需要播放視頻,并向HLS視頻流提供m3u8播放列表的詳細(xì)信息。
第3步: AVFoundation下載并解析m3u8文件。
第4步: AVFoundation在m3u8中搜索#EXT-X-KEY,以檢查視頻是否被加密。如果內(nèi)容已被加密,AVFoundation將向AVFoundation App Delegate請(qǐng)求內(nèi)容密鑰并解密內(nèi)容。
第5步: 作為回應(yīng),App Delegate向AVFoundation框架請(qǐng)求生成SPC信息。
第6步: 收到來自AVFoundation的SPC后,App Delegate將其發(fā)送給密鑰服務(wù)器。
密鑰服務(wù)器中的KSM打開SPC
密鑰服務(wù)器使用SPC中的信息查找內(nèi)容密鑰
發(fā)送內(nèi)容密鑰至KSM,KSM將其放入CKC(內(nèi)容密鑰上下文)中
第7步: KSM向AVFoundation App Delegate發(fā)送CKC。App Delegate將CKC推送至AVFoundation中。
第8步: AVFoundation使用CKC中的內(nèi)容密鑰解密、解碼,然后向用戶安全地播放內(nèi)容。
以上就是FairPlay DRM的基本工作流程。接下來,我們一起來了解FairPlay中幾個(gè)有趣的功能。
獲取加密密鑰的AVContentKeySession
AVContentKeySession是AVFoundation中處理解密密鑰的工具,于WWDC 2017宣布推出。它提供了對(duì)內(nèi)容密鑰加載和生命周期的更多控制,目標(biāo)是將密鑰加載與媒體播放生命周期解耦。
為什么AVContentKeySession如此重要?
在基本的FairPlay工作流中,播放開始后才加載內(nèi)容密鑰。在用戶體驗(yàn)方面,這意味著用戶需要等待SPC-CKC工作流完成之后才開始播放視頻。這種等待增加了“首屏延遲(Startup Delay)”和 “延遲(Latency)”,對(duì)終端用戶很不友好。
然而,使用AVContentKeySession,,應(yīng)用程序就可以在用戶按下播放鍵之前請(qǐng)求內(nèi)容密鑰(被稱為“密鑰預(yù)加載”)。
通過預(yù)加載密鑰,內(nèi)容提供商可以減少首屏延遲(延遲)并提升用戶體驗(yàn)。
視頻租賃的雙到期時(shí)間窗口
Apple FairPlay還擁有“雙到期時(shí)間窗口(Dual Expiry Windows)”,這一功能可以和持久密鑰(Persistent Key)結(jié)合使用實(shí)現(xiàn)離線播放。持久密鑰是指密鑰可以:
安全地存儲(chǔ)在設(shè)備上。
在預(yù)定義時(shí)間段播放租賃內(nèi)容,而無需聯(lián)系許可證服務(wù)器(離線播放)。
在租賃商業(yè)模式中,需要這樣定義兩個(gè)到期窗口:
第一個(gè)窗口: 當(dāng)用戶租借電影時(shí),電影可以在30天的時(shí)間窗口內(nèi)觀看(舉例)。
第二個(gè)窗口: 用戶一按下播放鍵,電影必須在48小時(shí)內(nèi)觀看。第二個(gè)時(shí)間窗口到期后,30天的時(shí)間窗口也會(huì)到期。
為了說明這種租賃模式,F(xiàn)airPlay推出了“雙到期時(shí)間窗口”這一功能,其中:
來自許可證服務(wù)器中的第一個(gè)密鑰確立了更長(zhǎng)的租賃期(存儲(chǔ)期)。
第二個(gè)密鑰在用戶開始播放視頻時(shí)獲得,它取代了第一個(gè)密鑰(播放期)。當(dāng)超過第二個(gè)密鑰的過期窗口,用戶就無法訪問或者播放視頻內(nèi)容了。
假設(shè)用戶在租賃電影后,從來沒有觀看過。在這種情況下,電影的第一個(gè)密鑰成為系統(tǒng)上的唯一密鑰,超過有效期后它會(huì)自動(dòng)失效。
哪些平臺(tái)支持FairPlay?
以下平臺(tái)都支持FairPlay:
使用EME(加密媒體擴(kuò)展,Encrypted Media Extensions)的Safari瀏覽器
iOS設(shè)備
Apple TV
Airplay(Apple的無線內(nèi)容傳輸協(xié)議)
結(jié)語
我希望本篇對(duì)FairPlay的介紹能夠?qū)δ阌袔椭?。Apple開發(fā)者網(wǎng)頁(https://developer.apple.com/)上有大量信息(開發(fā)指南和示例代碼等)可以幫助你實(shí)現(xiàn)FairPlay DRM。
我們很快就會(huì)再見,保重!
致謝:
本文已獲得作者Krishna Rao Vijayanagar授權(quán)翻譯和發(fā)布,特此感謝。
原文鏈接:
https://ottverse.com/apple-fairplay-drm-how-does-it-work/
延伸閱讀:
構(gòu)建DRM系統(tǒng)的重要基石——EME、CDM、AES、CENC和密鑰
中學(xué)生也能看懂的DRM
Google Widevine及其工作原理

本文為澎湃號(hào)作者或機(jī)構(gòu)在澎湃新聞上傳并發(fā)布,僅代表該作者或機(jī)構(gòu)觀點(diǎn),不代表澎湃新聞的觀點(diǎn)或立場(chǎng),澎湃新聞僅提供信息發(fā)布平臺(tái)。申請(qǐng)澎湃號(hào)請(qǐng)用電腦訪問http://renzheng.thepaper.cn。





- 報(bào)料熱線: 021-962866
- 報(bào)料郵箱: news@thepaper.cn
滬公網(wǎng)安備31010602000299號(hào)
互聯(lián)網(wǎng)新聞信息服務(wù)許可證:31120170006
增值電信業(yè)務(wù)經(jīng)營(yíng)許可證:滬B2-2017116
? 2014-2026 上海東方報(bào)業(yè)有限公司




