摘 要: 針對GPS測量系統數據傳輸過程中的安全問題,采用FPGA技術設計了GPS數據加密系統。系統移植MD5算法到NIOS中對系統口令加密,并設計DES IP對GPS數據加密。實驗表明,該設計可有效防止GPS數據被非法竊取,具有安全性強、速度快、操作簡便等特點。
關鍵詞: FPGA;GPS;MD5;DES;數據加密
隨著網絡通信技術的發展,數據傳輸對安全性的要求也隨之加強。如何確保信息的正確認證與嚴格保密,保證數據信息在傳輸與處理過程中不被非法竊取和篡改,成為信息安全理論與技術研究的重要內容。多數情況下,數據加密是保證信息機密性的惟一方法。在GPS測量系統中,GPS定位數據以明文形式通過電臺進行傳輸,可能會被同型號電臺獲取,存在一定的安全隱患。本設計應用FPGA技術設計了GPS數據加密系統,通過MD5加密算法對管理員口令進行加密;DES加密算法對GPS數據進行加密。這樣,GPS數據經加密卡加密后再以密文方式發給電臺進行傳輸,同時接收端必須使用密鑰將密文解碼才能得到定位數據,從而確保了數據傳輸的安全。
1 系統組成及功能
GPS數據加密系統由機載模塊和服務器端兩部分組成,通過電臺進行通信。其系統結構如圖1所示。
1.1 機載模塊
機載模塊由4×4鍵盤、機載LCD、加密卡三部分組成,用戶可通過4×4鍵盤發送預定義指令、更改密鑰等操作;機載LCD用于顯示系統工作狀態、飛行參數等數據;加密卡為系統核心部件,主要有以下4個功能:
(1)解析、處理GPS數據、檢測設備工作狀態并在LCD上顯示相關信息;
(2)接收GPS數據并通過加密卡對其加密,將密文通過電臺傳送到服務器端;
(3)處理鍵盤或服務器端輸入的預存指令編號或新指令,將指令發給GPS接收機并返回回饋信息;
(4)更新鍵盤或服務器輸入的新密鑰或新管理員口令。新密鑰先保存在Flash中,再通過總線傳給密鑰寄存器;新口令保存在Flash中。
系統工作時,加密卡通過UART IP獲取GPS數據后同時傳給NIOS和DES IP。NIOS解析GPS數據并經LCD Controller傳給機載LCD進行實時顯示,方便機上人員了解設備工作狀態;DES IP將GPS數據加密后,通過I/O中斷傳給NIOS,NIOS將密文加入數據包頭、尾字節后,再經電臺傳到服務器端。
1.2 服務器端
服務器端為通用計算機,其應用軟件使用VC++6.0開發,服務器的主要功能有以下6點:
(1)接收電臺傳來的密文并進行DES算法解密、解析和處理GPS數據;
(2)顯示GPS參數,并保存數據;
(3)發送GPS接收機控制指令;
(4)更改密鑰;
(5)更改管理員口令;
(6)設置串口參數。
2 數據加密算法的原理及應用
2.1 MD5算法的原理及應用
信息—摘要算法MD5(Message-Digest Algorithm 5),在90年代初由Rivest設計發明,經MD2、MD3和MD4發展而來。其作用可使大容量信息在用數字簽名軟件簽署私人密匙前,被“壓縮”成一種保密的格式(對任意長度的信息,生成一個長度為128 bit的值)。
本設計將MD5算法移植到NIOS中,用于加密管理員口令。這樣系統在并不知道管理員口令的明碼情況下就可以確定口令的合法性,從而有效地防止了反編譯等技術手段對管理員口令進行破解。系統工作時,NIOS預先將管理員口令加密后,將MD5值存儲在Flash中,當加密卡接收到更改密鑰、更改口令或發GPS接收機控制指令等操作命令時,先將輸入的口令計算成MD5值,然后與存儲在Flash中的MD5值進行比較,如果兩值相同則說明口令正確,再進行相應的操作。
2.2 DES算法的原理及應用
DES(Data Encryption Standard)是一種分組乘積加密算法,是用64 bit的密鑰對64 bit的明文加密,64 bit密鑰中每8 bit有一奇偶校驗位不參與運算,有效密鑰只有56 bit。同時,它又是對稱加密算法,其加密和解密運算過程完全相同,只是在迭代運算時子密鑰的使用順序不同[1]。如圖2所示,64 bit的明文塊在經過初始IP置換后,被重新排列,然后進入16輪的迭代運算;每一輪迭代運算由一個f函數完成;最后一輪迭代的輸出為64 bit,將其左半部分和右半部分互換產生預輸出;預輸出再與逆初始置換IP-1作用產生64 bit的密文,IP-1是IP的反變換[2]。
采用軟件方式實現的DES算法會在很大程度上占用系統資源,造成系統性能的嚴重下降,而DES算法本身并沒有大量的復雜數學計算(如乘、帶進位的加、模等運算),在加密、解密過程和密鑰生成過程中僅有邏輯運算和查表運算。因而,無論是從系統性能還是加、解密速度的角度來看,采用硬件實現都是一個理想的方案[3]。
圖3為DES IP的硬件邏輯圖,主要由狀態控制器、子密鑰生成器、DES算法運算器三部分組成。其中,狀態控制器用于控制IP的工作狀態、模式和標識完成狀態;子密鑰生成器將56 bit密鑰分成兩部分,每部分按循環移位次數表移位并按置換選擇表置換,從而生成每一輪次運算的子密鑰K(K1,K2,…,K48);DES算法運算器為整個IP的關鍵,它將64 bit中間數據分為左右兩部分,分別記為Li和Ri。單個運算的過程可以寫為下面的公式:
(1)將Ri-1按照擴展換位表E擴展為48 bit的數據;
(2)將擴展后的Ri-1與循環移位后的48 bit子密鑰K(K1,K2,…,K48)“異或”;
(3)將“異或”后的結果送入8個S盒(S box)進行替代運算,每個S盒都有6 bit輸入、4 bit輸出,并且8個S盒都不相同,48 bit的輸入分為6位一組,分別送到8個S盒選擇相應的輸出,結果為32 bit;
(4)S盒替代后的32 bit結果依照P盒(P box)進行置換,置換后結果即為f(Ri-1,Ki)的最終值,這樣便完成了f函數的運算。
算法中用到的初始換位表IP、放大換位表E、替代函數表S、換位函數P、逆初始換位IP-1、密鑰循環移位表可在參考文獻[4]中查到。本設計中,GPS數據的加密在加密卡中完成,解密在服務器端完成,為方便功能擴展,在加密卡中設計、保留了解密功能。
2.3 DES算法仿真驗證
本設計的DES IP采用ALTERA公司的Quartus 7.0軟件開發及Verilog HDL語言編寫[5],整個加密卡在單片Cyclone系列EP1C6Q240C8N芯片上實現。圖4為Quartus 7.0開發軟件下DES IP的仿真圖。
各仿真信號的意義及說明如下:
時鐘信號(clk):周期為10 ns、占空比為50%;
復位信號(reset_n):低電平有效,置高;
模式信號(mode):加密/解密選擇,‘1’為加密,‘0’為解密;
加載信號(load):高電平有效,置高;
加密數據(des_in):8000 0000 0000 0000;
密鑰信號(key):0000 0000 0000 0000;
加密結果(des_out):95F8 A5E5 DD31 D900;
加密完成信號(ready) :在第17個周期后置高。
DES IP工作時,“密鑰”保存在總線接口的密鑰寄存器中,“加密數據”由NIOS輸入,加密完成后,通過“加密完成信號”產生的I/O中斷傳回給NIOS。圖4中,其加密結果與XILINX公司網站上設計參考中給出的數據一致,表明DES IP設計正確。
本設計采用FPGA技術設計了GPS數據加密系統,重點介紹了機載模塊中DES IP的設計。實驗發現,采用NIOS進行DES算法軟件加密時速度慢,會出現間隔丟失GPS數據的現象,而采用硬件DES IP進行加密處理時,完全可以滿足GPS接收機的速度需要,不會出現丟點現象。系統采用MD5算法對管理員口令進行加密,進一步增強了系統的安全性,因此本設計對解決該GPS測量系統安全性方面有較大的現實意義和實用價值。
參考文獻
[1] 胡向東,魏琴芳.應用密碼學[M].北京:電子工業出版社,2006.
[2] 賀雪晨,陳林玲,趙琰.信息對抗與網絡安全[M].北京:清華大學出版社,2006.
[3] 褚雄,王子敬,王勇.一種基于FPGA的DES加密算法實現[J].江南大學學報(自然科學版),2006,15(6):661-664.
[4] STALLINGS W.密碼編碼學與網絡安全(第3版)[M].劉玉珍,王麗娜,傅建明,等譯.北京:電子工業出版社,2004.
[5] 徐光輝,程東旭,黃如.基于FPGA的嵌入式開發與應用[M].北京:電子工業出版社,2006.