基于DVD-ROM應(yīng)用的內(nèi)容加擾系統(tǒng)的VLSI設(shè)計(jì)
引 言
本文引用地址:http://www.ex-cimer.com/article/80915.htmDVD -ROM的視頻和音頻數(shù)據(jù)是經(jīng)過加密編碼的,加擾的源是標(biāo)題密鑰(Tittle Key),同時(shí)標(biāo)題密鑰被光盤密鑰(光盤密鑰)加密,主機(jī)在播放影碟的時(shí)候必須拿到這兩個(gè)密鑰才能順利播放。在密鑰從DVD驅(qū)動(dòng)器傳送到主機(jī)的過程中,為了保證數(shù)據(jù)傳輸通道的安全性,即保證光盤密鑰和標(biāo)題密鑰能夠被安全地傳輸,CSS建立了一道認(rèn)證機(jī)制(AuthentICation Mechanism),通過總線密鑰(BUSKEY)對(duì)光盤密鑰和標(biāo)題密鑰進(jìn)行加擾。由于能夠有效地防止對(duì)DVD光盤的非法拷貝,CSS幾乎被所有的商業(yè) DVD設(shè)備所使用。
當(dāng)DVD播放機(jī)讀取數(shù)據(jù)時(shí),伺服控制芯片中的CSS將進(jìn)行復(fù)雜的密碼校驗(yàn)。如果密碼校驗(yàn)成功,數(shù)據(jù)才可以還原成MPEG-2格式和轉(zhuǎn)換為視頻信號(hào)和音頻信號(hào)。本文介紹了一種完成認(rèn)證過程、光盤密鑰和標(biāo)題密鑰的加擾和傳輸?shù)腃SS的設(shè)計(jì),它用于DVD伺服控制芯片中。
CSS 的原理及系統(tǒng)分析
根據(jù)DVD標(biāo)準(zhǔn)以及CSS的相關(guān)的規(guī)范,CSS主要包含兩部分:
(1)DVD驅(qū)動(dòng)器和主機(jī)之間的授權(quán)認(rèn)證。
其認(rèn)證流程為:主機(jī)發(fā)送一個(gè)隨機(jī)碼流到驅(qū)動(dòng)器,驅(qū)動(dòng)器對(duì)其加密后返回主機(jī),主機(jī)解密后確認(rèn)是否和原碼流相同,如果相同則驅(qū)動(dòng)器被授權(quán)。主機(jī)的授權(quán)過程與驅(qū)動(dòng)器的授權(quán)過程相同。交互授權(quán)的結(jié)果是產(chǎn)生總線密鑰用于對(duì)在主機(jī)和驅(qū)動(dòng)器之間傳輸?shù)臄?shù)據(jù)進(jìn)行加密。只有主機(jī)和驅(qū)動(dòng)器可以產(chǎn)生用于解密的密鑰。
(2)光盤密鑰和標(biāo)題密鑰的加擾。加擾過程為:
?、?驅(qū)動(dòng)器用總線密鑰對(duì)光盤密鑰和標(biāo)題密鑰加擾。CSS對(duì)密鑰的加擾開始于伺服控制芯片從DVD 光盤讀取包含光盤密鑰和標(biāo)題密鑰的扇區(qū)數(shù)據(jù)。數(shù)據(jù)先讀入U(xiǎn)PI(微處理器接口)寄存器然后傳送到存儲(chǔ)區(qū)管理模塊(BM-Buffer Manager)并生成CSS內(nèi)存指針以用于CSS讀取數(shù)據(jù)。CSS 從BM 中一次讀取一個(gè)字節(jié)的密鑰,加擾后儲(chǔ)存到BM 中由微處理器內(nèi)存指針?biāo)赶虻膮^(qū)域。密鑰加擾完成后,CSS發(fā)出CSS DONE中斷。
?、谕ㄟ^微處理器內(nèi)存指針,UPI寄存器讀取加擾后的密鑰并傳送至主機(jī)。
?、壑鳈C(jī)接收到加擾后的光盤密鑰和標(biāo)題密鑰用其進(jìn)行解擾。采用正確的光盤密鑰和標(biāo)題密鑰主機(jī)可對(duì)光盤上的音頻、視頻數(shù)據(jù)解擾。
圖1 CSS結(jié)構(gòu)圖
CSS的系統(tǒng)結(jié)構(gòu)及主要模塊硬件實(shí)現(xiàn)
圖1表示CSS系統(tǒng)結(jié)構(gòu)圖,它由四個(gè)模塊組成:
?、?CSS_PROC:處理CSS數(shù)據(jù)輸入輸出,它是CSS與DVD伺服控制芯片中BM和UPI的接口;
?、?CSS_RAND_GEN :產(chǎn)生80-bit偽隨機(jī)數(shù)用于DVD驅(qū)動(dòng)器對(duì)主機(jī)的認(rèn)證,偽隨機(jī)數(shù)的產(chǎn)生用到了42位線性反饋移位寄存器(LFSR-LinearFeedback Shift Register);
?、?CSS_AUTH:CSS中最為關(guān)鍵的認(rèn)證運(yùn)算模塊;
④CSS_SM:控制CSS_AUTH模塊的認(rèn)證過程,并且在CSS_PROC中開啟密鑰傳輸。
由以上這些模塊構(gòu)成的CSS系統(tǒng)實(shí)現(xiàn)DVD驅(qū)動(dòng)器和主機(jī)之間的交互授權(quán)認(rèn)證以及 光盤密鑰和標(biāo)題密鑰的加擾兩大功能,系統(tǒng)時(shí)鐘為100MHZ 。
數(shù)據(jù)通路設(shè)計(jì)
CSS最關(guān)鍵的地方在于主機(jī)和DVD驅(qū)動(dòng)器之間的認(rèn)證,因而認(rèn)證運(yùn)算模塊CSS_AUTH成為設(shè)計(jì)重點(diǎn)。根據(jù)圖1的認(rèn)證過程,它由5個(gè)子模塊來完成,如圖2所示:
圖2 CSS_AUTH結(jié)構(gòu)圖
在圖2中,DRV_AUTH得到驅(qū)動(dòng)器對(duì)主機(jī)的響應(yīng)值DRV_RES,返回到主機(jī)以完成主機(jī)對(duì)驅(qū)動(dòng)器的認(rèn)證并產(chǎn)生總線密鑰,而DEC_AUTH則和 KEY_SHARE 共同完成驅(qū)動(dòng)器對(duì)主機(jī)的認(rèn)證;DEC_AUTH 取回主機(jī)對(duì)驅(qū)動(dòng)器的響應(yīng)值以后,通過和主機(jī)相反的過程得到一個(gè)參考值,將它和DEC_RES比較后驗(yàn)證主機(jī),驗(yàn)證成功產(chǎn)生連接數(shù),送給KEY_SHARE 最終產(chǎn)生用以加密的總線密鑰。為了使CSS_AUTH的面積最優(yōu),如圖2所示,將CSS_DRV_AUTH、CSS_DEC_AUTH和 CSS_KEY_SHARE 三個(gè)模塊中共同包含的邏輯部分抽出形成一個(gè)單獨(dú)的模塊CSS_AUTH_COMMON ,同時(shí)設(shè)計(jì)一個(gè)多路選擇模塊AUTH_MUX_COMMON 來選擇到AUTH_COMMON的數(shù)據(jù)源。這種模塊多路復(fù)用結(jié)構(gòu)很好的節(jié)省了電路面積,提高了運(yùn)算速度。在這些模塊中,被復(fù)用的模塊AUTH_COMMON 包含著最復(fù)雜的數(shù)據(jù)路徑,設(shè)計(jì)時(shí)劃分為四個(gè)子模塊,如圖3所示:
圖3 AUTH_COMMON結(jié)構(gòu)圖
在圖3中,KEY模塊中存放通過L ICENSE 得到的AK,通過XOR 模塊與PCD[79:40] (對(duì)于DRV_AUTH)來說PCD為從主機(jī)發(fā)送過來的80bit 隨機(jī)碼流;對(duì)于DEC_AUTH 來說PCD為驅(qū)動(dòng)器自身產(chǎn)生的用以對(duì)主機(jī)進(jìn)行認(rèn)證的80_bit 隨機(jī)數(shù);而對(duì)于KEY_SHARE PCD來說則為DEC_AUTH模塊的運(yùn)算結(jié)果,即驅(qū)動(dòng)器對(duì)主機(jī)認(rèn)證過程產(chǎn)生的中間連接數(shù))進(jìn)行異或,然后經(jīng)過SCHEDULER模塊(由兩個(gè)LFSR、一個(gè)一位全加器和一些XOR門及寄存器組成)得到IAK,最后送到SUBSTITU TOR模塊得到AUTH三個(gè)子模塊各自的運(yùn)算結(jié)果。
設(shè)計(jì)中最困難的部分在于SUBSTITUTOR的設(shè)計(jì),其硬件結(jié)構(gòu)如圖4所示,由30個(gè)SBOX、10個(gè)TBOX 和一系列XOR門組成。它是基于CSS加擾算法的,采用5X6運(yùn)算陣列實(shí)現(xiàn)。整個(gè)運(yùn)算按列進(jìn)行,即先在第0列從第0行開始一直算到第4行,再在第1列從第 0行開始一直算到第4行,這樣一直運(yùn)算到第5列。運(yùn)算時(shí)SBOX的行列地址由專門的控制電路來選擇。
圖4 SUBSTITUTOR硬件結(jié)構(gòu)圖
其中,T代表T_BOX ,只在5X6結(jié)構(gòu)的第三四列出現(xiàn),主要對(duì)輸入數(shù)據(jù)進(jìn)行XOR 運(yùn)算及相應(yīng)的置位;SBOX硬件結(jié)構(gòu)如圖5所示:
圖5 SBOX硬件結(jié)構(gòu)圖
其中,PRE_TABLE 和POST_TABLE 均為查找表,用8X8ROM 實(shí)現(xiàn),這樣完成整個(gè)認(rèn)證過程需要32 個(gè)這樣的ROM。從圖中可以看到,ROM地址由輸入數(shù)據(jù)決定,按址查找后即得到輸出結(jié)果。查找表和AK一樣需向DVD協(xié)會(huì)申請(qǐng)?jiān)S可證才能得到具體數(shù)據(jù)。
狀態(tài)機(jī)設(shè)計(jì)
根據(jù)系統(tǒng)分析,CSS有6種工作模式,分別為:
①計(jì)算DVD驅(qū)動(dòng)器的響應(yīng)值DRV_RES ;
?、诋a(chǎn)生對(duì)主機(jī)認(rèn)證的呼叫DEC_CHAL 用于對(duì)主機(jī)的認(rèn)證;
③產(chǎn)生主機(jī)的參考值DEC_REF,并與主機(jī)的響應(yīng)值DEC_RES作比較,若相同則主機(jī)通過DVD驅(qū)動(dòng)器認(rèn)證并產(chǎn)生連接數(shù);
?、墚a(chǎn)生總線密鑰:
?、萦每偩€密鑰對(duì)光盤密鑰進(jìn)行加擾;
?、抻每偩€密鑰對(duì)標(biāo)題密鑰進(jìn)行加擾。
圖6 狀態(tài)轉(zhuǎn)換圖
CSS中采用MOORE類型的狀態(tài)機(jī),圍繞這些工作模式進(jìn)行狀態(tài)轉(zhuǎn)換。其狀態(tài)轉(zhuǎn)換圖如圖6所示。
功能仿真和FPGA 驗(yàn)證
按照上述設(shè)計(jì)思想,用Verilog HDL對(duì)CSS進(jìn)行RTL描述。使用Synopsys VCS對(duì)其6種模式進(jìn)行仿真,通過Debussy的PLI接口生成波形文件(.fsdb),在Debussy中對(duì)波形進(jìn)行分析。光盤密鑰共有2048 個(gè)字節(jié),DVD 扇區(qū)中包含光盤密鑰的數(shù)據(jù)區(qū)在第13個(gè)到2060個(gè)字節(jié)。在測(cè)試腳本里預(yù)先設(shè)定總線密鑰的值并導(dǎo)入2352個(gè)字節(jié)的DVD扇區(qū)數(shù)據(jù)到BM以便對(duì)CSS進(jìn)行功能測(cè)試。在這里只針對(duì)光盤密鑰加擾模式的仿真波形進(jìn)行說明。
其中,CSS_BM_RD_REQ_CNT為CSS向BM 發(fā)出的讀請(qǐng)求信號(hào),DISC_KEY_XFER_EN為光盤密鑰傳輸使能信號(hào),均為高電平有效。BM_CSS_DATA[7:0]為光盤密鑰數(shù)據(jù),存儲(chǔ)于 BM的FIFO中。當(dāng)上述兩個(gè)使能信號(hào)都為“1”時(shí),光盤密鑰就從BM傳輸至CSS中,每個(gè)時(shí)鐘周期傳送一個(gè)字節(jié)。TOTAL_OFFSET_CNT是從 BM傳輸來的數(shù)據(jù)的總的字節(jié)偏移量,當(dāng)TOTAL_OFFSET_CNT=11時(shí)DISC_KEY_STARTLOC置位,標(biāo)志著開始加擾光盤密鑰。每傳送一個(gè)字節(jié)數(shù)據(jù)的光盤密鑰,就用總線密鑰對(duì)其進(jìn)行異或運(yùn)算,并在下一個(gè)時(shí)鐘周期將加擾的結(jié)果送出并產(chǎn)生數(shù)據(jù)有效標(biāo)志。分析CSS_BM_DATA_OUT [7:0]可知,總線密鑰對(duì)光盤密鑰進(jìn)行了正確的加擾及傳輸。
為了保證CSS系統(tǒng)設(shè)計(jì)的正確性,我們選用Xilinx Spartan2的XC2S50器件做FPGA驗(yàn)證。我們?cè)赟ynplify中生成網(wǎng)表文件(.edf),然后通過XilinxISE生成單元網(wǎng)表文件 (.v)和線延時(shí)文件(.sdf)以用于VCS 進(jìn)行后仿真,最后生成FPGA下載文件(bit)。XC2S50硬件占用情況如表1所示:
表1 FPGA資源分配表
結(jié)束語(yǔ)
本文介紹了一種內(nèi)容干擾系統(tǒng)(CSS)的設(shè)計(jì)和實(shí)現(xiàn)。在分析了其工作原理和系統(tǒng)結(jié)構(gòu)后我們給出了數(shù)據(jù)通路和狀態(tài)機(jī)的設(shè)計(jì)方法,重點(diǎn)說明了SUBSTITU TOR的設(shè)計(jì),這是整個(gè)系統(tǒng)設(shè)計(jì)中的難點(diǎn)。該系統(tǒng)在DVD伺服控制電路中的應(yīng)用表明,它確保了DVD驅(qū)動(dòng)器到主機(jī)的光盤數(shù)據(jù)傳輸通道的安全性,可以有效防止對(duì)DVD盤片的非法拷貝,達(dá)到了設(shè)計(jì)要求。
評(píng)論