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