基于DVD-ROM應(yīng)用的內(nèi)容加擾系統(tǒng)的VLSI設(shè)計
引 言
本文引用地址:http://www.butianyuan.cn/article/80915.htmDVD -ROM的視頻和音頻數(shù)據(jù)是經(jīng)過加密編碼的,加擾的源是標題密鑰(Tittle Key),同時標題密鑰被光盤密鑰(光盤密鑰)加密,主機在播放影碟的時候必須拿到這兩個密鑰才能順利播放。在密鑰從DVD驅(qū)動器傳送到主機的過程中,為了保證數(shù)據(jù)傳輸通道的安全性,即保證光盤密鑰和標題密鑰能夠被安全地傳輸,CSS建立了一道認證機制(AuthentICation Mechanism),通過總線密鑰(BUSKEY)對光盤密鑰和標題密鑰進行加擾。由于能夠有效地防止對DVD光盤的非法拷貝,CSS幾乎被所有的商業(yè) DVD設(shè)備所使用。
當DVD播放機讀取數(shù)據(jù)時,伺服控制芯片中的CSS將進行復雜的密碼校驗。如果密碼校驗成功,數(shù)據(jù)才可以還原成MPEG-2格式和轉(zhuǎn)換為視頻信號和音頻信號。本文介紹了一種完成認證過程、光盤密鑰和標題密鑰的加擾和傳輸?shù)腃SS的設(shè)計,它用于DVD伺服控制芯片中。
CSS 的原理及系統(tǒng)分析
根據(jù)DVD標準以及CSS的相關(guān)的規(guī)范,CSS主要包含兩部分:
(1)DVD驅(qū)動器和主機之間的授權(quán)認證。
其認證流程為:主機發(fā)送一個隨機碼流到驅(qū)動器,驅(qū)動器對其加密后返回主機,主機解密后確認是否和原碼流相同,如果相同則驅(qū)動器被授權(quán)。主機的授權(quán)過程與驅(qū)動器的授權(quán)過程相同。交互授權(quán)的結(jié)果是產(chǎn)生總線密鑰用于對在主機和驅(qū)動器之間傳輸?shù)臄?shù)據(jù)進行加密。只有主機和驅(qū)動器可以產(chǎn)生用于解密的密鑰。
(2)光盤密鑰和標題密鑰的加擾。加擾過程為:
?、?驅(qū)動器用總線密鑰對光盤密鑰和標題密鑰加擾。CSS對密鑰的加擾開始于伺服控制芯片從DVD 光盤讀取包含光盤密鑰和標題密鑰的扇區(qū)數(shù)據(jù)。數(shù)據(jù)先讀入UPI(微處理器接口)寄存器然后傳送到存儲區(qū)管理模塊(BM-Buffer Manager)并生成CSS內(nèi)存指針以用于CSS讀取數(shù)據(jù)。CSS 從BM 中一次讀取一個字節(jié)的密鑰,加擾后儲存到BM 中由微處理器內(nèi)存指針所指向的區(qū)域。密鑰加擾完成后,CSS發(fā)出CSS DONE中斷。
②通過微處理器內(nèi)存指針,UPI寄存器讀取加擾后的密鑰并傳送至主機。
?、壑鳈C接收到加擾后的光盤密鑰和標題密鑰用其進行解擾。采用正確的光盤密鑰和標題密鑰主機可對光盤上的音頻、視頻數(shù)據(jù)解擾。

圖1 CSS結(jié)構(gòu)圖
CSS的系統(tǒng)結(jié)構(gòu)及主要模塊硬件實現(xiàn)
圖1表示CSS系統(tǒng)結(jié)構(gòu)圖,它由四個模塊組成:
?、?CSS_PROC:處理CSS數(shù)據(jù)輸入輸出,它是CSS與DVD伺服控制芯片中BM和UPI的接口;
?、?CSS_RAND_GEN :產(chǎn)生80-bit偽隨機數(shù)用于DVD驅(qū)動器對主機的認證,偽隨機數(shù)的產(chǎn)生用到了42位線性反饋移位寄存器(LFSR-LinearFeedback Shift Register);
?、?CSS_AUTH:CSS中最為關(guān)鍵的認證運算模塊;
④CSS_SM:控制CSS_AUTH模塊的認證過程,并且在CSS_PROC中開啟密鑰傳輸。
由以上這些模塊構(gòu)成的CSS系統(tǒng)實現(xiàn)DVD驅(qū)動器和主機之間的交互授權(quán)認證以及 光盤密鑰和標題密鑰的加擾兩大功能,系統(tǒng)時鐘為100MHZ 。
數(shù)據(jù)通路設(shè)計
CSS最關(guān)鍵的地方在于主機和DVD驅(qū)動器之間的認證,因而認證運算模塊CSS_AUTH成為設(shè)計重點。根據(jù)圖1的認證過程,它由5個子模塊來完成,如圖2所示:

圖2 CSS_AUTH結(jié)構(gòu)圖
在圖2中,DRV_AUTH得到驅(qū)動器對主機的響應(yīng)值DRV_RES,返回到主機以完成主機對驅(qū)動器的認證并產(chǎn)生總線密鑰,而DEC_AUTH則和 KEY_SHARE 共同完成驅(qū)動器對主機的認證;DEC_AUTH 取回主機對驅(qū)動器的響應(yīng)值以后,通過和主機相反的過程得到一個參考值,將它和DEC_RES比較后驗證主機,驗證成功產(chǎn)生連接數(shù),送給KEY_SHARE 最終產(chǎn)生用以加密的總線密鑰。為了使CSS_AUTH的面積最優(yōu),如圖2所示,將CSS_DRV_AUTH、CSS_DEC_AUTH和 CSS_KEY_SHARE 三個模塊中共同包含的邏輯部分抽出形成一個單獨的模塊CSS_AUTH_COMMON ,同時設(shè)計一個多路選擇模塊AUTH_MUX_COMMON 來選擇到AUTH_COMMON的數(shù)據(jù)源。這種模塊多路復用結(jié)構(gòu)很好的節(jié)省了電路面積,提高了運算速度。在這些模塊中,被復用的模塊AUTH_COMMON 包含著最復雜的數(shù)據(jù)路徑,設(shè)計時劃分為四個子模塊,如圖3所示:

圖3 AUTH_COMMON結(jié)構(gòu)圖
在圖3中,KEY模塊中存放通過L ICENSE 得到的AK,通過XOR 模塊與PCD[79:40] (對于DRV_AUTH)來說PCD為從主機發(fā)送過來的80bit 隨機碼流;對于DEC_AUTH 來說PCD為驅(qū)動器自身產(chǎn)生的用以對主機進行認證的80_bit 隨機數(shù);而對于KEY_SHARE PCD來說則為DEC_AUTH模塊的運算結(jié)果,即驅(qū)動器對主機認證過程產(chǎn)生的中間連接數(shù))進行異或,然后經(jīng)過SCHEDULER模塊(由兩個LFSR、一個一位全加器和一些XOR門及寄存器組成)得到IAK,最后送到SUBSTITU TOR模塊得到AUTH三個子模塊各自的運算結(jié)果。
設(shè)計中最困難的部分在于SUBSTITUTOR的設(shè)計,其硬件結(jié)構(gòu)如圖4所示,由30個SBOX、10個TBOX 和一系列XOR門組成。它是基于CSS加擾算法的,采用5X6運算陣列實現(xiàn)。整個運算按列進行,即先在第0列從第0行開始一直算到第4行,再在第1列從第 0行開始一直算到第4行,這樣一直運算到第5列。運算時SBOX的行列地址由專門的控制電路來選擇。

圖4 SUBSTITUTOR硬件結(jié)構(gòu)圖
其中,T代表T_BOX ,只在5X6結(jié)構(gòu)的第三四列出現(xiàn),主要對輸入數(shù)據(jù)進行XOR 運算及相應(yīng)的置位;SBOX硬件結(jié)構(gòu)如圖5所示:

圖5 SBOX硬件結(jié)構(gòu)圖
其中,PRE_TABLE 和POST_TABLE 均為查找表,用8X8ROM 實現(xiàn),這樣完成整個認證過程需要32 個這樣的ROM。從圖中可以看到,ROM地址由輸入數(shù)據(jù)決定,按址查找后即得到輸出結(jié)果。查找表和AK一樣需向DVD協(xié)會申請許可證才能得到具體數(shù)據(jù)。
狀態(tài)機設(shè)計
根據(jù)系統(tǒng)分析,CSS有6種工作模式,分別為:
?、儆嬎鉊VD驅(qū)動器的響應(yīng)值DRV_RES ;
?、诋a(chǎn)生對主機認證的呼叫DEC_CHAL 用于對主機的認證;
③產(chǎn)生主機的參考值DEC_REF,并與主機的響應(yīng)值DEC_RES作比較,若相同則主機通過DVD驅(qū)動器認證并產(chǎn)生連接數(shù);
?、墚a(chǎn)生總線密鑰:
?、萦每偩€密鑰對光盤密鑰進行加擾;
⑥用總線密鑰對標題密鑰進行加擾。

圖6 狀態(tài)轉(zhuǎn)換圖
CSS中采用MOORE類型的狀態(tài)機,圍繞這些工作模式進行狀態(tài)轉(zhuǎn)換。其狀態(tài)轉(zhuǎn)換圖如圖6所示。
功能仿真和FPGA 驗證
按照上述設(shè)計思想,用Verilog HDL對CSS進行RTL描述。使用Synopsys VCS對其6種模式進行仿真,通過Debussy的PLI接口生成波形文件(.fsdb),在Debussy中對波形進行分析。光盤密鑰共有2048 個字節(jié),DVD 扇區(qū)中包含光盤密鑰的數(shù)據(jù)區(qū)在第13個到2060個字節(jié)。在測試腳本里預先設(shè)定總線密鑰的值并導入2352個字節(jié)的DVD扇區(qū)數(shù)據(jù)到BM以便對CSS進行功能測試。在這里只針對光盤密鑰加擾模式的仿真波形進行說明。
其中,CSS_BM_RD_REQ_CNT為CSS向BM 發(fā)出的讀請求信號,DISC_KEY_XFER_EN為光盤密鑰傳輸使能信號,均為高電平有效。BM_CSS_DATA[7:0]為光盤密鑰數(shù)據(jù),存儲于 BM的FIFO中。當上述兩個使能信號都為“1”時,光盤密鑰就從BM傳輸至CSS中,每個時鐘周期傳送一個字節(jié)。TOTAL_OFFSET_CNT是從 BM傳輸來的數(shù)據(jù)的總的字節(jié)偏移量,當TOTAL_OFFSET_CNT=11時DISC_KEY_STARTLOC置位,標志著開始加擾光盤密鑰。每傳送一個字節(jié)數(shù)據(jù)的光盤密鑰,就用總線密鑰對其進行異或運算,并在下一個時鐘周期將加擾的結(jié)果送出并產(chǎn)生數(shù)據(jù)有效標志。分析CSS_BM_DATA_OUT [7:0]可知,總線密鑰對光盤密鑰進行了正確的加擾及傳輸。
為了保證CSS系統(tǒng)設(shè)計的正確性,我們選用Xilinx Spartan2的XC2S50器件做FPGA驗證。我們在Synplify中生成網(wǎng)表文件(.edf),然后通過XilinxISE生成單元網(wǎng)表文件 (.v)和線延時文件(.sdf)以用于VCS 進行后仿真,最后生成FPGA下載文件(bit)。XC2S50硬件占用情況如表1所示:
表1 FPGA資源分配表
結(jié)束語
本文介紹了一種內(nèi)容干擾系統(tǒng)(CSS)的設(shè)計和實現(xiàn)。在分析了其工作原理和系統(tǒng)結(jié)構(gòu)后我們給出了數(shù)據(jù)通路和狀態(tài)機的設(shè)計方法,重點說明了SUBSTITU TOR的設(shè)計,這是整個系統(tǒng)設(shè)計中的難點。該系統(tǒng)在DVD伺服控制電路中的應(yīng)用表明,它確保了DVD驅(qū)動器到主機的光盤數(shù)據(jù)傳輸通道的安全性,可以有效防止對DVD盤片的非法拷貝,達到了設(shè)計要求。
評論