基于FPGA技術(shù)的GPS數(shù)據(jù)加密系統(tǒng)設(shè)計研究
2 數(shù)據(jù)加密算法的原理及應(yīng)用
2.1 MD5算法的原理及應(yīng)用
信息—摘要算法MD5(Message-Digest Algorithm 5),在90年代初由Rivest設(shè)計發(fā)明,經(jīng)MD2、MD3和MD4發(fā)展而來。其作用可使大容量信息在用數(shù)字簽名軟件簽署私人密匙前,被“壓縮”成一種保密的格式(對任意長度的信息,生成一個長度為128 bit的值)。
本設(shè)計將MD5算法移植到NIOS中,用于加密管理員口令。這樣系統(tǒng)在并不知道管理員口令的明碼情況下就可以確定口令的合法性,從而有效地防止了反編譯等技術(shù)手段對管理員口令進(jìn)行破解。系統(tǒng)工作時,NIOS預(yù)先將管理員口令加密后,將MD5值存儲在Flash中,當(dāng)加密卡接收到更改密鑰、更改口令或發(fā)GPS接收機(jī)控制指令等操作命令時,先將輸入的口令計算成MD5值,然后與存儲在Flash中的MD5值進(jìn)行比較,如果兩值相同則說明口令正確,再進(jìn)行相應(yīng)的操作。
2.2 DES算法的原理及應(yīng)用
DES(Data Encryption Standard)是一種分組乘積加密算法,是用64 bit的密鑰對64 bit的明文加密,64 bit密鑰中每8 bit有一奇偶校驗位不參與運(yùn)算,有效密鑰只有56 bit。同時,它又是對稱加密算法,其加密和解密運(yùn)算過程完全相同,只是在迭代運(yùn)算時子密鑰的使用順序不同[1]。如圖2所示,64 bit的明文塊在經(jīng)過初始IP置換后,被重新排列,然后進(jìn)入16輪的迭代運(yùn)算;每一輪迭代運(yùn)算由一個f函數(shù)完成;最后一輪迭代的輸出為64 bit,將其左半部分和右半部分互換產(chǎn)生預(yù)輸出;預(yù)輸出再與逆初始置換IP-1作用產(chǎn)生64 bit的密文,IP-1是IP的反變換[2]。
采用軟件方式實現(xiàn)的DES算法會在很大程度上占用系統(tǒng)資源,造成系統(tǒng)性能的嚴(yán)重下降,而DES算法本身并沒有大量的復(fù)雜數(shù)學(xué)計算(如乘、帶進(jìn)位的加、模等運(yùn)算),在加密、解密過程和密鑰生成過程中僅有邏輯運(yùn)算和查表運(yùn)算。因而,無論是從系統(tǒng)性能還是加、解密速度的角度來看,采用硬件實現(xiàn)都是一個理想的方案[3]。
圖3為DES IP的硬件邏輯圖,主要由狀態(tài)控制器、子密鑰生成器、DES算法運(yùn)算器三部分組成。其中,狀態(tài)控制器用于控制IP的工作狀態(tài)、模式和標(biāo)識完成狀態(tài);子密鑰生成器將56 bit密鑰分成兩部分,每部分按循環(huán)移位次數(shù)表移位并按置換選擇表置換,從而生成每一輪次運(yùn)算的子密鑰K(K1,K2,…,K48);DES算法運(yùn)算器為整個IP的關(guān)鍵,它將64 bit中間數(shù)據(jù)分為左右兩部分,分別記為Li和Ri。單個運(yùn)算的過程可以寫為下面的公式:
評論