基于DisplayPort接口的HDCP軟件實現(xiàn)及應用
DisplayPort接口標準是由視頻電子標準協(xié)會(VESA)批準的,一個開放的、可擴展的標準。其為降低PC平臺和元件的成本及推動通用數(shù)字接口而開發(fā)。DisplayPort實現(xiàn)了顯示設備用一條電纜與數(shù)字視頻信號連通的高清數(shù)字音頻,并實現(xiàn)真正即插即用的強大的互操作性,這些使現(xiàn)有的數(shù)字顯示互連非常具有成本效益。為了提高其與現(xiàn)有數(shù)字接口的互通性,DisplayPort的1.1版本增加了兼容支持高帶寬數(shù)字內(nèi)容保護(HDCP)來支持HDMI和DVI采用的HDCP技術(shù)。
本文引用地址:http://butianyuan.cn/article/90107.htm
圖1 DisplayPort數(shù)據(jù)傳輸通道
DisplayPort
1 DisplayPort接口
DisplayPort體積小,傳輸結(jié)構(gòu)利用了類似PCI Express的電氣層,采用“Micro-Packet Architecture(微封包架構(gòu))”傳輸架構(gòu),使視頻內(nèi)容以封包方式傳送。傳輸數(shù)據(jù)最高可支持10.8Gb/s的傳輸帶寬。
2 DisplayPort鏈路
DisplayPort鏈路由一個主鏈路、一個輔助通道(AUX CH)、一個熱插拔檢測(HPD)信號線組成。如圖1所示,主鏈路是一條單向、高帶寬并且低延時的通道,用于傳輸未經(jīng)壓縮的視頻和音頻等同步數(shù)據(jù)流。輔助通道是一條用于鏈路管理和設備控制的、半雙工的雙向通道。HPD信號用作終端設備的中斷請求信號。
HDCP技術(shù)由好萊塢與Intel合作開發(fā),保護未經(jīng)壓縮的數(shù)字音視頻內(nèi)容,適用于高速的數(shù)字視頻接口(DisplayPort、HDMI、DVI),其最新版本HDCP 1.3已經(jīng)支持DisplayPort接口采用源設備和顯示設備間直接認證,內(nèi)容加擾實現(xiàn)保護。HDCP設計為內(nèi)容消費鏈中的最后一個環(huán)節(jié),從內(nèi)容源設備到顯示設備,HDCP不允許完全內(nèi)容拷貝行為,即拷貝控制信息CCI 只有禁止拷貝狀態(tài)。在系統(tǒng)更新方面,HDCP采用吊銷列表來屏蔽已經(jīng)被竊取的設備私鑰。
HDCP與DisplayPort
1 HDCP在DisplayPort上應用機制
HDCP應用于DisplayPort接口的保護機制包括以下三個元素。
①HDCP發(fā)送器,能立即識別下游接收器的拓撲連接結(jié)構(gòu),認證協(xié)議會確保HDCP發(fā)送器發(fā)出的信號是HDCP接收器所授權(quán)接受的。
?、贒CP LLC會撤銷授權(quán)無效的HDCP接收器的授權(quán)。
?、墼谟蠬DCP保護的信號下發(fā)送與接收的同時,不斷對加密視頻傳輸?shù)耐暾赃M行驗證。
2 HDCP結(jié)構(gòu)以及算法實現(xiàn)
①HDCP結(jié)構(gòu)
HDCP在DisplayPort接口內(nèi)容保護中采用了樹狀的拓撲結(jié)構(gòu),為了使得完成認證的時間在容許范圍之內(nèi),HDCP規(guī)定了一個拓撲結(jié)構(gòu)最多允許有7層結(jié)點、128個接收設備。圖2顯示了一個設備深度為2、設備數(shù)為4的拓撲結(jié)構(gòu)。
圖2 HDCP拓撲結(jié)構(gòu)圖
②結(jié)合硬件采用軟件實現(xiàn)HDCP
軟件實現(xiàn)HDCP過程中,需要芯片內(nèi)部硬件加密系統(tǒng)的支持,如偽隨機數(shù)的產(chǎn)生等。硬件加密系統(tǒng)結(jié)構(gòu)如圖3所示。
圖3 硬件加密系統(tǒng)結(jié)構(gòu)
● BKSV檢驗
HDCP由發(fā)送端(Tx)發(fā)起,Tx系統(tǒng)初始化時內(nèi)部首先產(chǎn)生偽隨機數(shù)An,并將其與自身的KSV一并發(fā)給接收端(Rx),同時Tx讀取Rx的BKSV,BKSV存儲在接收端的DPCD(DisplayPort Configuration Data)地址0x68000~0x68004內(nèi),共40比特。HDCP采用了嚴密的校驗方式,每一步都有必要的驗證協(xié)議。當讀取到BKSV后,先對BKSV進行完整性驗證和黑名單檢測。
HDCP的“撤銷密鑰”機制用來應對密鑰泄漏。每個設備的密鑰集KSV值都是唯一的,HDCP系統(tǒng)會在收到KSV值后在撤銷列表中進行比較和查找,出現(xiàn)在列表中的KSV將被認做非法,導致認證過程的失敗。這里的撤銷密鑰列表將包含在HDCP對應的多媒體數(shù)據(jù)中并將自動更新。
● 協(xié)議第一步:R0(R0’)驗證
當KSV檢測和驗證成功后,系統(tǒng)將進入算法認證的第一步。其認證協(xié)議結(jié)構(gòu)如圖4所示。
圖4 密鑰交換認證協(xié)議圖
其中Km=∑Akeys over Bksv和Km’=∑Bkeys over Aksv 是一種密鑰選擇機制。接收端的KSV被認為合法后,發(fā)送端和接收端都會通過自己的私鑰和相應的KSV計算出一個56比特的公鑰Km,這里把接收端計算出的公鑰記為Km’。制造商從HDCP認證組織Digital Content Protection LLC獲得私鑰和相應的KSV后,會在每一個支持該功能設備中存儲這些數(shù)據(jù),Km(Km’)的計算就是通過對這些數(shù)據(jù)進行處理后得到的。
Km(Km’)是給后續(xù)計算的準備,在Km和Km’計算完成后,HDCP的加密系統(tǒng)就會根據(jù)產(chǎn)生的Km(Km’)和An以及REPEATER位來計算KS(KS’)、M0(M0’)和R0(R0’)。KS(KS’)是一個56比特的HDCP私鑰,M0(M0’)是64比特的私鑰,在HDCP認證協(xié)議的第二步的初始化中需要該參數(shù),R0則是作為HDCP認證協(xié)議的計算結(jié)果,發(fā)送端通過讀取接收端計算出的R0’并且與本地計算的R0比較,如果相同則意味著第一步認證協(xié)議的成功。
● 協(xié)議第二步:中繼器認證
在第一部分的認證過程中,發(fā)送器在讀取接收器的BKSV同時,也讀取了DPCD中的一個REPEATER位,HDCP的第二部分是否執(zhí)行取決于該位。這一位標志著該接收端是否為中繼器。如果接收端沒有中繼功能,HDCP會跳過該驗證部分,直接執(zhí)行認證的第三部分鏈路完整性檢測。第二部分的認證協(xié)議框圖如圖5所示。
圖5 中繼器認證協(xié)議圖
當發(fā)送端檢測到下游是中繼器設備時,立即設立起5s的超時定時器。源端設備可以通過抽樣或者等待中斷的方式來獲取中繼器的狀態(tài),而在這5s之內(nèi),中繼器就會建立自己的設備KSV列表并且計算V’(哈希算法)。如果5s之內(nèi)沒有完成這些操作,上游設備會認為該次認證失敗。
在中繼器內(nèi)部計算V’可以通過兩種方式來完成,由設計在芯片內(nèi)部的邏輯電路或者驅(qū)動部分軟件計算來完成。硬件計算優(yōu)點在于速度快,驅(qū)動程序設計簡單。但是犧牲了一定的硬件電路空間和芯片功耗,不同的客戶對此需求不同,所以芯片的驅(qū)動內(nèi)也需要采用軟件計算哈希算法。
安全哈希算法(Secure Hash Algorithm)是主要應用于數(shù)字簽名標準領(lǐng)域定義的數(shù)字簽名算法。SHA1有如下特性:不能從消息摘要中復原信息;兩個不同的消息不會產(chǎn)生同樣的消息摘要。HDCP協(xié)議中V(V’)計算如下:V(V’)=SHA1(ksv_list||binfo||M0(M0’))。
KSV list存儲于中繼器DPCD地址0x6802C~0x6803A的FIFO中,F(xiàn)IFO中有15字節(jié),每個設備的KSV是40比特,也就是5字節(jié),所以FIFO中每次讀取出來的是3個設備KSV。DisplayPort的中繼器最多支持下游有127個設備,也就是說FIFO最多需要讀取127/3次。每次讀取完后硬件會自動清掉被讀走的數(shù)據(jù),同時用下一組KSV填滿。Binfo是存儲下游設備拓撲結(jié)構(gòu)的16比特數(shù)據(jù),包括拓撲深度等。M0(M0’)是64比特的私鑰。也就是說計算V(V’)時,系統(tǒng)傳輸給SHA1的消息長度最大為127×40+16+64=5160(0x1428H)比特,對于長度小于2^64(0x40000000000000H)位的消息,SHA1會產(chǎn)生一個160位的消息摘要。當接收到消息的時候,這個消息摘要可以用來驗證數(shù)據(jù)的完整性。在傳輸?shù)倪^程中,數(shù)據(jù)很可能會發(fā)生變化,這時候就會產(chǎn)生不同的消息摘要。 SHA1算法只接受位輸入。字符串“KSV list||Binf||M0”消息摘要需轉(zhuǎn)換成位字符串如下:01100001 01100010 01100011……010011010(5160位),SHA1根據(jù)這個消息來計算MD5。
(a)補位
SHA1對輸入的消息必須進行補位以使其長度在對512取模以后的余數(shù)是448。如果長度已經(jīng)滿足對512取模后余數(shù)是448,同樣需要補位。先補一個1,然后再補0,直到長度滿足對512取模后余數(shù)是448。至少補一位,最多補512位。
(b) 補長度
將原始數(shù)據(jù)的長度補到已經(jīng)進行了補位操作的消息后面,用一個64位的數(shù)據(jù)來表示原始消息的長度。由于HDCP中的消息程度最大可達到5160位,所以需要對過長的消息進行分塊,SHA1算法中將長度超過512位的原始消息補成512的倍數(shù)。然后將整個消息分成一個一個512位的數(shù)據(jù)塊,分別處理每一個數(shù)據(jù)塊,從而得到消息摘要。
(c)常量定義
計算中需要定義一系列的常量字M0, M1, ... , M79,如果以十六進制給出,定義如下。
(d)函數(shù)定義
在SHA1中需要一系列的函數(shù)。每個函數(shù)ft(0≤t≤79)都操作32位字B,C,D(B,C,D為32位的函數(shù)形參)并且產(chǎn)生32位字作為輸出。ft(B,C,D)定義如下。
(e) 計算消息摘要
SHA1使用補位和補長度后的消息來計算消息摘要。計算需要兩個緩沖區(qū),每個都由5個32位的字組成,還需要一個80個32位字的緩沖區(qū)。第一個5個字的緩沖區(qū)被標識為A,B,C,D,E。第一個5個字的緩沖區(qū)被標記為H0, H1, H2, H3, H4。80個字的緩沖區(qū)被標記為W0,W1,..., W79,另外還需要一個字的TEMP緩沖區(qū)。
為了產(chǎn)生消息摘要,首先處理前面定義的16個字的數(shù)據(jù)塊M1, M2,..., Mn,處理每個數(shù)據(jù)塊Mi包含80個步驟。在處理每個數(shù)據(jù)塊之前,緩沖區(qū)被初始化為下面的值(十六進制):
處理Mi包括以下步驟:
(I)將 Mi分成16個字W0,W1,…, W15,W0是最左邊的字。
(II)對于t=16~79令
。
(III)令A=H0, B=H1, C=H2, D =H3, E=H4。
(IV)對于t=0~79,執(zhí)行下面的循環(huán)
;
E=D; D=C; C=S30(B); B=A; A=TEMP;
(V)令H0=H0+A,H1=H1+B, H2=H2+C, H3=H3+D, H4=H4+E
在處理完所有的Mn后,得到一個160位的字符串,也就是最后得到的V(V’)。中繼器會將V’發(fā)送給發(fā)送端,發(fā)送端通過比較本地計算的V與接收到的V’是否相等來判斷認證結(jié)果。
● 協(xié)議第三步:加密完整性檢測
在解密過程中,HDCP在HDMI與DisplayPort中的應用所不同。在HDMI的解密過程中,HDCP系統(tǒng)會每2s中進行一次連接確認,同時每128幀畫面進行一次發(fā)送端和接受端同步識別碼,確保連接的同步,所有這些都是由發(fā)送端發(fā)起。而在DisplayPort的解密過程中, DisplayPort的Link Layer負責確認兩臺設備之間的連結(jié)效能與正確的溝通,以其參數(shù)值(0=完整、1=不完整)作為溝通的語言,該參數(shù)是發(fā)送端通過輔助通道讀取接收端的DPCD的某一位的值來獲取,也就是說,解密的完整性驗證完全是由接收端來執(zhí)行的。
DisplayPort實現(xiàn)軟件HDCP的實例
ANX9805是硅谷數(shù)模半導體公司設計的DisplayPort發(fā)送芯片,其完全符合DisplayPort 1.1a標準,支持HDCP1.3標準和NVIDIA Upstream Protocol。
接收端使用目前市場上唯一的一款帶有DisplayPort接口的Dell顯示器3008WFP,其DP接口支持HDCP。支持HDCP的源端設備ANX9805可以通過黑屏、藍屏或者低畫質(zhì)圖像的方式使不支持HDCP或者HDCP不合法的設備無法播放音視頻數(shù)據(jù),這里采用完全藍屏的方式,如圖6、圖7所示。
圖6 軟件HDCP認證成功的圖像
圖7 軟件HDCP認證失敗圖像
實際測試證明通過軟件實現(xiàn)的HDCP占用時間與硬件HDCP在相鄰的數(shù)量級,在HDCP規(guī)范中規(guī)定所有認證時間容許范圍內(nèi),所以其對硬件時序無任何影響。
結(jié)論
軟件實現(xiàn)認證的優(yōu)勢在于其節(jié)省芯片內(nèi)部資源,從而使芯片有更高的集成度。現(xiàn)今對IC設計集成度的要求越來越高,所以多數(shù)廠商都希望芯片提供商能給出軟件代替硬件認證的方案。本文在充分利用硬件加密系統(tǒng)的基礎(chǔ)上實現(xiàn)了軟件對數(shù)字內(nèi)容的加密協(xié)議,使HDCP在實際應用中有更高的靈活性和選擇性,可以根據(jù)不同要求來規(guī)劃芯片驅(qū)動結(jié)構(gòu)。實際測試表明其易于實現(xiàn),可代替部分硬件認證模塊,整個軟件認證過程對芯片工作流程無時序影響,具有較高的實際應用價值。
芯片內(nèi)部的硬件認證速度高于外部MCU通過控制寄存器來認證的速度,所以需要通過提高MCU與芯片之間的I2C總線速度和MCU的工作頻率來減少其時序差別,這也是有待于進一步研究的工作。
評論