數(shù)字電視CAS中DES加密模塊的FPGA實(shí)現(xiàn)
付費(fèi)節(jié)目是數(shù)字電視的重要新業(yè)務(wù)之一,建立付費(fèi)頻道,其中關(guān)鍵性的技術(shù)就是加密技術(shù),數(shù)字電視條件接收系統(tǒng)CAS(Conditional Access System)是數(shù)字電視加密控制的核心技術(shù)的保證。典型的CAS由前端子系統(tǒng)、終端接收子系統(tǒng)等組成,前端子系統(tǒng)邏輯結(jié)構(gòu)如圖1所示。圖1中加密器B采用數(shù)據(jù)加密標(biāo)準(zhǔn)DES(Data Encryption Standard)加密算法進(jìn)行硬件實(shí)現(xiàn),以達(dá)到對控制字CW進(jìn)行快速加密。盡管目前DES算法已經(jīng)出現(xiàn)很多變形的算法,但基礎(chǔ)仍然是DES算法,可見,對DES算法的研究具有很大現(xiàn)實(shí)意義。
通過軟件實(shí)現(xiàn)的安全系統(tǒng)從本質(zhì)上來說很難做到真正的保密,而通過硬件來實(shí)現(xiàn)加密模塊的內(nèi)部運(yùn)作,可實(shí)現(xiàn)硬件的自鎖、自毀功能,能夠?qū)崿F(xiàn)真正意義上的保密?,F(xiàn)場可編程門陣列FPGA在實(shí)現(xiàn)算法方面具有靈活性、物理安全性和比軟件高的速度性能,已成為硬件實(shí)現(xiàn)DES算法最好的選擇。本文就資源優(yōu)先和性能優(yōu)先上對DES算法進(jìn)行了設(shè)計(jì)和比較,這兩種設(shè)計(jì)方法和針對流水線改進(jìn)后的方法都在Altera CycloneⅡ芯片上得到了實(shí)現(xiàn)。
1 DES加密算法原理
本文采用電碼本模式ECB(Electric Code Book)的DES加密算法,通過直接使用分組密碼算法來進(jìn)行消息加密。這一工作模式的優(yōu)點(diǎn)就是分組密碼的優(yōu)點(diǎn),其缺點(diǎn)是相同的密文對應(yīng)相同的明文。DES是迭代型分組密碼,明文分組長度為64bit,密鑰的長度也為64bit,但實(shí)際上只有56bit有效,密鑰中第8、16、24、…、64位被舍去,因?yàn)樗鼈兺ǔJ瞧媾夹r?yàn)位。DES加密算法從數(shù)據(jù)流的角度來看,可以分為兩部分:明文的變換和密鑰的變換。變換中引入了輪的概念,每一輪的算法都是重復(fù)的,一般要進(jìn)行16輪。
在每輪密鑰變換過程中,密鑰擴(kuò)展算法還需要用到循環(huán)左移變換。密鑰變換的原則是:在第1、2、9、16輪變換時(shí),密鑰循環(huán)左移1位;當(dāng)?shù)?~8輪或者10~15輪變換時(shí),密鑰循環(huán)左移2位。每個(gè)循環(huán)左移變換的輸入和輸出都是28bit串。將移位所得的56bit密鑰通過壓縮變換變成48bit密鑰,此密鑰即為這輪變換所得的子密鑰[1]。
在一輪明文變換時(shí),輸入數(shù)據(jù)被分為左右對稱的兩部分。通過一個(gè)擴(kuò)展置換將數(shù)據(jù)的右半部分?jǐn)U展成48bit,將其與此輪生成的子密鑰進(jìn)行模二加運(yùn)算,經(jīng)過S盒代換將模二加生成的48bit密鑰替代成32bit密鑰,最后將其進(jìn)行P盒置換。以上四個(gè)運(yùn)算過程構(gòu)成函數(shù)F。通過另一個(gè)模二加運(yùn)算,函數(shù)F的輸出與輸入數(shù)據(jù)左半邊模二加構(gòu)成新的右半部分,原來的右半部分變成新的左半部分。以上過程即完成了DES算法的完整的一輪運(yùn)算。DES加密算法一輪運(yùn)算和總運(yùn)算流程如圖2所示。
2 DES加密算法的FPGA實(shí)現(xiàn)
2.1 資源優(yōu)先設(shè)計(jì)方案
資源優(yōu)先方案就是通過硬件設(shè)計(jì)出一個(gè)密鑰變換輪函數(shù)和一個(gè)明文變換輪函數(shù),通過16輪反復(fù)調(diào)用這一個(gè)硬件系統(tǒng)實(shí)現(xiàn)一次DES加密運(yùn)算。由于16輪運(yùn)算都只占用一輪運(yùn)算所需的硬件資源,使硬件的開銷大大減少。但是,一個(gè)時(shí)鐘周期只能進(jìn)行一輪加密運(yùn)算,要完成整個(gè)加密過程要花費(fèi)16個(gè)時(shí)鐘周期,從而在速度性能上大打折扣。而采用循環(huán)法實(shí)現(xiàn)DES加密算法能達(dá)到減少資源占用的目的,具體實(shí)現(xiàn)方法如圖3所示。
2.2 性能優(yōu)先設(shè)計(jì)方案
性能優(yōu)先設(shè)計(jì)方案剛好與資源優(yōu)先設(shè)計(jì)方案相反。傳統(tǒng)方案是將循環(huán)全部打開配合流水線結(jié)構(gòu)進(jìn)行設(shè)計(jì),即將16輪函數(shù)進(jìn)行硬件級(jí)聯(lián)構(gòu)成一個(gè)16級(jí)的流水線結(jié)構(gòu),提前生成16個(gè)子密鑰,隨著流水線的進(jìn)程發(fā)送給相對應(yīng)的流水級(jí),從而達(dá)到16個(gè)數(shù)據(jù)塊同時(shí)加密的目的[3-4]。這樣,從第一個(gè)數(shù)據(jù)塊開始加密起,每一個(gè)時(shí)鐘周期延時(shí)都會(huì)有一個(gè)數(shù)據(jù)塊進(jìn)行加密,經(jīng)16個(gè)時(shí)鐘周期延時(shí)后,得到最終的密文。流水線結(jié)構(gòu)設(shè)計(jì)通過一個(gè)時(shí)鐘周期即可進(jìn)行一個(gè)數(shù)據(jù)塊的加密,通過占用資源換取速度性能的提高。
本文通過子密鑰的簡化和S盒的優(yōu)化來改進(jìn)傳統(tǒng)的流水線結(jié)構(gòu),實(shí)現(xiàn)一個(gè)占用資源少、加密速度快的加密系統(tǒng)。具體的設(shè)計(jì)框圖如圖4所示。
(1) 子密鑰的簡單生成
由DES加密算法原理可知,一個(gè)64bit的初始密鑰輸入后通過一次壓縮變換、移位變換、二次壓縮變換后得到第一輪子密鑰,其密鑰為48bit。第一輪子密鑰變換結(jié)果如圖5所示。由圖5可知,第一輪子密鑰的第1、2、3、…、46、47、48位分別為初始密鑰的第10、51、34、…、62、55、31位。每一輪子密鑰產(chǎn)生的方法是一樣的,如果采用硬件描述語言按照其子密鑰產(chǎn)生的原理一步步地推導(dǎo)出16次DES迭代的密鑰,不僅語言表述繁瑣,而且占用很多的硬件資源。同時(shí),由于每一輪子密鑰產(chǎn)生的時(shí)間并不相同,會(huì)給DES密碼的迭代運(yùn)算帶來很多不必要的麻煩。
對密鑰變換原理進(jìn)行分析可以發(fā)現(xiàn),每一輪子密鑰的產(chǎn)生只是將初始密鑰經(jīng)過置換和不同次數(shù)的循環(huán)移位。每一輪循環(huán)移位的次數(shù)對原始密鑰是固定的,其每一位相對于初始密鑰的每一位存在著固定的關(guān)系,由此可以列出每一輪子密鑰與初始密鑰之間的關(guān)系表,通過關(guān)系表采用硬件描述語言可同時(shí)產(chǎn)生16輪子密鑰。采用此方法大大簡化了程序語言、節(jié)約了硬件的資源開銷。
(2) S盒的優(yōu)化
S盒的設(shè)計(jì)是DES算法的關(guān)鍵部分, S盒設(shè)計(jì)的優(yōu)劣將影響整個(gè)算法的性能。S盒是DES加密算法中唯一的非線性函數(shù),S盒的非線性變換使算法達(dá)到很好的“混亂”效果,從而具有較強(qiáng)的安全性。
S盒的原理是輸入6bit的數(shù)據(jù),其中第1位和第6 位確定行,中間4bit確定列,通過行、列查表確定對應(yīng)的4 bit的輸出。根據(jù)S盒的工作原理,可直接使用輸入為6變量、輸出為4變量的case語句進(jìn)行描述,構(gòu)成一個(gè)4bit 64個(gè)存儲(chǔ)空間的表。然而這樣的語句雖然可讀性很強(qiáng),但綜合的效率往往不高,占用資源過多,速度也比較低,使S盒成為系統(tǒng)速度的瓶頸。
本文采用8個(gè)ROM來實(shí)現(xiàn)S盒。把輸入的6bit作為地址,對應(yīng)的地址空間里存放的就是待輸出的4bit,這樣可提高運(yùn)算時(shí)間,解決S盒變換的時(shí)間瓶頸;利用FPGA內(nèi)部自帶的ROM,大大減少邏輯資源的占用。以第一個(gè)S盒設(shè)計(jì)為例,其設(shè)計(jì)實(shí)現(xiàn)電路如圖6所示。輸入為IN[6:1],經(jīng)地址變換電路將輸入的初始值轉(zhuǎn)換為相應(yīng)的查表地址{IN[6]、IN[1]、IN[5:2]},即ADR[6:1],以此對64×4 ROM進(jìn)行查表,ROM值按照S盒查找表進(jìn)行初始化,由ADR[6:1]讀取ROM中相對應(yīng)的數(shù)據(jù)從而得到OUT[3:0][2,5]。采用同樣的辦法,通過ROM實(shí)現(xiàn)其他7個(gè)S盒,以達(dá)到優(yōu)化的目的。
3 綜合仿真結(jié)果對比
利用ModelSim對三種不同方法實(shí)現(xiàn)的DES加密算法程序進(jìn)行了仿真,得到的仿真波形初步驗(yàn)證了DES加密功能的正確性。選用Altera公司的QuartusⅡ6.0環(huán)境下成功編譯、綜合、適配、仿真,并下載到CycloneⅡ系列的FPGA中進(jìn)行了驗(yàn)證,通過分析得到循環(huán)法、傳統(tǒng)流水線法、改進(jìn)流水線法在速度性能和資源占用上的差異如表1所示。
從表1可以看出,三種不同的方法,各自占用硬件資源、可以達(dá)到的最大時(shí)鐘頻率、加密速率上都存在各自的特點(diǎn)。循環(huán)法占用資源少、時(shí)鐘頻率低、加密速度相對較慢。傳統(tǒng)流水線法通過改進(jìn)后,大大減少了邏輯資源的占用量,同時(shí)在時(shí)鐘頻率和加密速率上都得到很大的提升。
本文按照資源優(yōu)先和性能優(yōu)先兩種不同的設(shè)計(jì)方案,分別采取循環(huán)法和流水線法予以實(shí)現(xiàn)。同時(shí),對性能優(yōu)先方案提出了改進(jìn)方法即:子密鑰簡單生成和S盒的優(yōu)化。通過對這三種方法進(jìn)行綜合仿真驗(yàn)證,證實(shí)了改進(jìn)流水線法的正確可行性。這兩種方案可以用于不同要求的應(yīng)用領(lǐng)域,具有較大的靈活性。
評論