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