新聞中心

EEPW首頁 > 消費電子 > 設(shè)計應(yīng)用 > 基于DVD-ROM應(yīng)用的內(nèi)容加擾系統(tǒng)的VLSI設(shè)計

基于DVD-ROM應(yīng)用的內(nèi)容加擾系統(tǒng)的VLSI設(shè)計

作者: 時間:2008-03-18 來源: 收藏

  摘 要:本文介紹了一種基于DVD-ROM應(yīng)用的內(nèi)容干擾系統(tǒng)(CSS)的設(shè)計和實現(xiàn)。該系統(tǒng)可有效防止對DVD盤片的非法拷貝。文中通過對其工作原理和實際應(yīng)用的分析,給出其最終實現(xiàn)方案,并用Verilog HDL完整整個系統(tǒng)的設(shè)計。功能仿真和FPGA驗證表明,設(shè)計成功。

本文引用地址:http://www.butianyuan.cn/article/80243.htm

  關(guān)鍵詞:內(nèi)容加擾系統(tǒng);DVD;Verilog HDL;FPGA驗證

  引 言

  DVD-ROM的視頻和音頻數(shù)據(jù)是經(jīng)過加密編碼的,加擾的源是標(biāo)題密鑰(Tittle Key),同時標(biāo)題密鑰被光盤密鑰(光盤密鑰)加密,主機(jī)在播放影碟的時候必須拿到這兩個密鑰才能順利播放。在密鑰從DVD驅(qū)動器傳送到主機(jī)的過程中,為了保證數(shù)據(jù)傳輸通道的安全性,即保證光盤密鑰和標(biāo)題密鑰能夠被安全地傳輸,CSS建立了一道認(rèn)證機(jī)制(Authentication Mechanism),通過總線密鑰(BUSKEY)對光盤密鑰和標(biāo)題密鑰進(jìn)行加擾。由于能夠有效地防止對DVD光盤的非法拷貝,CSS幾乎被所有的商業(yè)DVD設(shè)備所使用。

  當(dāng)DVD播放機(jī)讀取數(shù)據(jù)時,伺服控制芯片中的CSS將進(jìn)行復(fù)雜的密碼校驗。如果密碼校驗成功,數(shù)據(jù)才可以還原成MPEG-2格式和轉(zhuǎn)換為視頻信號和音頻信號。本文介紹了一種完成認(rèn)證過程、光盤密鑰和標(biāo)題密鑰的加擾和傳輸?shù)腃SS的設(shè)計,它用于DVD伺服控制芯片中。

  CSS 的原理及系統(tǒng)分析

  根據(jù)DVD標(biāo)準(zhǔn)以及CSS的相關(guān)的規(guī)范,CSS主要包含兩部分:

  (1)DVD驅(qū)動器和主機(jī)之間的授權(quán)認(rèn)證。

  其認(rèn)證流程為:主機(jī)發(fā)送一個隨機(jī)碼流到驅(qū)動器,驅(qū)動器對其加密后返回主機(jī),主機(jī)解密后確認(rèn)是否和原碼流相同,如果相同則驅(qū)動器被授權(quán)。主機(jī)的授權(quán)過程與驅(qū)動器的授權(quán)過程相同。交互授權(quán)的結(jié)果是產(chǎn)生總線密鑰用于對在主機(jī)和驅(qū)動器之間傳輸?shù)臄?shù)據(jù)進(jìn)行加密。只有主機(jī)和驅(qū)動器可以產(chǎn)生用于解密的密鑰。

  (2)光盤密鑰和標(biāo)題密鑰的加擾。加擾過程為:

 ?、衮?qū)動器用總線密鑰對光盤密鑰和標(biāo)題密鑰加擾。CSS對密鑰的加擾開始于伺服控制芯片從DVD 光盤讀取包含光盤密鑰和標(biāo)題密鑰的扇區(qū)數(shù)據(jù)。數(shù)據(jù)先讀入UPI(微處理器接口)寄存器然后傳送到存儲區(qū)管理模塊(BM-Buffer Manager)并生成CSS內(nèi)存指針以用于CSS讀取數(shù)據(jù)。CSS 從BM 中一次讀取一個字節(jié)的密鑰,加擾后儲存到BM 中由微處理器內(nèi)存指針?biāo)赶虻膮^(qū)域。密鑰加擾完成后,CSS發(fā)出CSS DONE中斷。

 ?、谕ㄟ^微處理器內(nèi)存指針,UPI寄存器讀取加擾后的密鑰并傳送至主機(jī)。

  ③主機(jī)接收到加擾后的光盤密鑰和標(biāo)題密鑰用其進(jìn)行解擾。采用正確的光盤密鑰和標(biāo)題密鑰主機(jī)可對光盤上的音頻、視頻數(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偽隨機(jī)數(shù)用于DVD驅(qū)動器對主機(jī)的認(rèn)證,偽隨機(jī)數(shù)的產(chǎn)生用到了42位線性反饋移位寄存器(LFSR-LinearFeedback Shift Register);

 ?、?CSS_AUTH:CSS中最為關(guān)鍵的認(rèn)證運算模塊;

  ④CSS_SM:控制CSS_AUTH模塊的認(rèn)證過程,并且在CSS_PROC中開啟密鑰傳輸。

  由以上這些模塊構(gòu)成的CSS系統(tǒng)實現(xiàn)DVD驅(qū)動器和主機(jī)之間的交互授權(quán)認(rèn)證以及光盤密鑰和標(biāo)題密鑰的加擾兩大功能,系統(tǒng)時鐘為100MHZ 。

  數(shù)據(jù)通路設(shè)計

  CSS最關(guān)鍵的地方在于主機(jī)和DVD驅(qū)動器之間的認(rèn)證,因而認(rèn)證運算模塊CSS_AUTH成為設(shè)計重點。根據(jù)圖1的認(rèn)證過程,它由5個子模塊來完成,如圖2所示:

  

 

  圖2  CSS_AUTH結(jié)構(gòu)圖

  在圖2中,DRV_AUTH得到驅(qū)動器對主機(jī)的響應(yīng)值DRV_RES,返回到主機(jī)以完成主機(jī)對驅(qū)動器的認(rèn)證并產(chǎn)生總線密鑰,而DEC_AUTH則和KEY_SHARE 共同完成驅(qū)動器對主機(jī)的認(rèn)證;DEC_AUTH 取回主機(jī)對驅(qū)動器的響應(yīng)值以后,通過和主機(jī)相反的過程得到一個參考值,將它和DEC_RES比較后驗證主機(jī),驗證成功產(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ù)源。這種模塊多路復(fù)用結(jié)構(gòu)很好的節(jié)省了電路面積,提高了運算速度。

  在這些模塊中,被復(fù)用的模塊AUTH_COMMON 包含著最復(fù)雜的數(shù)據(jù)路徑,設(shè)計時劃分為四個子模塊,如圖3所示:

  

 

  圖3 AUTH_COMMON結(jié)構(gòu)圖

  在圖3中,KEY模塊中存放通過L ICENSE 得到的AK,通過XOR 模塊與PCD[79:40] (對于DRV_AUTH)來說PCD為從主機(jī)發(fā)送過來的80bit 隨機(jī)碼流;對于DEC_AUTH 來說PCD為驅(qū)動器自身產(chǎn)生的用以對主機(jī)進(jìn)行認(rèn)證的80_bit 隨機(jī)數(shù);而對于KEY_SHARE PCD來說則為DEC_AUTH模塊的運算結(jié)果,即驅(qū)動器對主機(jī)認(rèn)證過程產(chǎn)生的中間連接數(shù))進(jìn)行異或,然后經(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)。整個運算按列進(jì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ù)進(jìn)行XOR 運算及相應(yīng)的置位;SBOX硬件結(jié)構(gòu)如圖5所示:

  

 

  圖5 SBOX硬件結(jié)構(gòu)圖

  其中,PRE_TABLE 和POST_TABLE 均為查找表,用8X8ROM 實現(xiàn),這樣完成整個認(rèn)證過程需要32 個這樣的ROM。從圖中可以看到,ROM地址由輸入數(shù)據(jù)決定,按址查找后即得到輸出結(jié)果。查找表和AK一樣需向DVD協(xié)會申請許可證才能得到具體數(shù)據(jù)。

  狀態(tài)機(jī)設(shè)計

  根據(jù)系統(tǒng)分析,CSS有6種工作模式,分別為:

 ?、儆嬎鉊VD驅(qū)動器的響應(yīng)值DRV_RES ;

 ?、诋a(chǎn)生對主機(jī)認(rèn)證的呼叫DEC_CHAL 用于對主機(jī)的認(rèn)證;

 ?、郛a(chǎn)生主機(jī)的參考值DEC_REF,并與主機(jī)的響應(yīng)值DEC_RES作比較,若相同則主機(jī)通過DVD驅(qū)動器認(rèn)證并產(chǎn)生連接數(shù);

 ?、墚a(chǎn)生總線密鑰:

 ?、萦每偩€密鑰對光盤密鑰進(jìn)行加擾;

 ?、抻每偩€密鑰對標(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 驗證

  按照上述設(shè)計思想,用Verilog HDL對CSS進(jìn)行RTL描述。使用Synopsys VCS對其6種模式進(jìn)行仿真,通過Debussy的PLI接口生成波形文件(.fsdb),在Debussy中對波形進(jìn)行分析。光盤密鑰共有2048 個字節(jié),DVD 扇區(qū)中包含光盤密鑰的數(shù)據(jù)區(qū)在第13個到2060個字節(jié)。在測試腳本里預(yù)先設(shè)定總線密鑰的值并導(dǎo)入2352個字節(jié)的DVD扇區(qū)數(shù)據(jù)到BM以便對CSS進(jìn)行功能測試。在這里只針對光盤密鑰加擾模式的仿真波形進(jìn)行說明。

  其中,CSS_BM_RD_REQ_CNT為CSS向BM發(fā)出的讀請求信號,DISC_KEY_XFER_EN為光盤密鑰傳輸使能信號,均為高電平有效。BM_CSS_DATA[7:0]為光盤密鑰數(shù)據(jù),存儲于BM的FIFO中。當(dāng)上述兩個使能信號都為“1”時,光盤密鑰就從BM傳輸至CSS中,每個時鐘周期傳送一個字節(jié)。TOTAL_OFFSET_CNT是從BM傳輸來的數(shù)據(jù)的總的字節(jié)偏移量,當(dāng)TOTAL_OFFSET_CNT=11時DISC_KEY_STARTLOC置位,標(biāo)志著開始加擾光盤密鑰。每傳送一個字節(jié)數(shù)據(jù)的光盤密鑰,就用總線密鑰對其進(jìn)行異或運算,并在下一個時鐘周期將加擾的結(jié)果送出并產(chǎn)生數(shù)據(jù)有效標(biāo)志。分析CSS_BM_DATA_OUT[7:0]可知,總線密鑰對光盤密鑰進(jìn)行了正確的加擾及傳輸。

  為了保證CSS系統(tǒng)設(shè)計的正確性,我們選用Xilinx Spartan2的XC2S50器件做FPGA驗證。我們在Synplify中生成網(wǎng)表文件(.edf),然后通過XilinxISE生成單元網(wǎng)表文件(.v)和線延時文件(.sdf)以用于VCS 進(jìn)行后仿真,最后生成FPGA下載文件(bit)。XC2S50硬件占用情況如表1所示:

  

 

  表1  FPGA資源分配表

  結(jié)束語

  本文介紹了一種內(nèi)容干擾系統(tǒng)(CSS)的設(shè)計和實現(xiàn)。在分析了其工作原理和系統(tǒng)結(jié)構(gòu)后我們給出了數(shù)據(jù)通路和狀態(tài)機(jī)的設(shè)計方法,重點說明了SUBSTITU TOR的設(shè)計,這是整個系統(tǒng)設(shè)計中的難點。該系統(tǒng)在DVD伺服控制電路中的應(yīng)用表明,它確保了DVD驅(qū)動器到主機(jī)的光盤數(shù)據(jù)傳輸通道的安全性,可以有效防止對DVD盤片的非法拷貝,達(dá)到了設(shè)計要求。



關(guān)鍵詞: FPGA DVD CSS VLSI

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉