翟 禹,武黎明,王 祥,王淑娟,董祺寧
(北方自動控制技術研究所,太原 030006)
隨著坦克裝甲車輛的信息化發(fā)展,其各個分系統(tǒng)及嵌入式設備產(chǎn)生的數(shù)據(jù)量越來越大。以火控系統(tǒng)為例,包括武器狀態(tài)信息、發(fā)控信息、目標信息等。這些大量數(shù)據(jù)需要專門的嵌入式數(shù)據(jù)庫進行管理。SQLite 作為嵌入式平臺數(shù)據(jù)儲存的主要方式,具有體量小、可移植性高、管理簡單、狀態(tài)回滾方便等特點。然而SQLite 沒有用戶管理與加密功能,這意味著數(shù)據(jù)庫文件對所有人開放,都可以輕松用工具查看。對于重要的軍用設備,這種開放的文件存在信息安全隱患。加密一直是最受歡迎的信息安全解決方案之一,在數(shù)據(jù)安全中發(fā)揮著重要作用,加密算法研究具有重要意義。
DAEMEN J 和RIJMEN V 創(chuàng)建了Rijndael 算法。Rijndael 算法于2001 年被美國國家標準與技術研究院(NIST)選為高級加密標準(advanced encryption standard,AES)[1]。AES 方法是一種對稱分組密碼,使用替換-排列網(wǎng)絡(SPN)具有速度快,安全級別高的優(yōu)勢[2]。PATIL S,PATIL R 并行應用了AES算法[3]。對于計算成本高昂的數(shù)據(jù)加密,例如音頻、視頻和圖像數(shù)據(jù)加密,AES 算法運行緩慢。因此,通過采用并行處理,能夠克服處理緩慢的缺點。TAHIR A S 為圖像加密開發(fā)了修改版AES,通過更改行移位階段,以提高安全性[4]。修改版AES 更安全,并且在測試后實現(xiàn)了針對統(tǒng)計攻擊的安全結果。JUREMI J 等提出了一個名為行列式旋轉的新階段,通過使用行列式矩陣計算為每輪生成不同的S盒來實現(xiàn)AES 的S 盒位置的旋轉[5]。通過隨機性試驗和雪崩試驗,證明了此方法獲得了高隨機性和高安全性。RIYALDHIA R 等提出了一種通過修改S 盒和行移位來改進AES 算法的方法[6]。經(jīng)過測試,所提出的改進AES 算法比原來的AES 減少了3 μs 的執(zhí)行時間。NAZIRI 等在S 盒架構中設計了乘法逆,限制了儲存器減輕了儲存占用[7]。何文才等在安卓平臺開啟多線程與計算器模式,使得SQLite 的加密速率提升了23.5%[8]。冷飛等提出融合RSA 與AES算法,降低了密鑰的管理復雜度[9]。費雄偉等引入統(tǒng)一計算架構平臺,實現(xiàn)AES 并行計算,提高了加密速度[10]。張詩永等提出256 位分組來構造新算法,增強了AES 算法的計算性能[11]。
嵌入式設備計算資源有限、存儲空間狹小,若使用標準的AES 存在處理速度慢、數(shù)據(jù)傳輸時間長等缺陷?;谝陨戏治?,對AES 算法進行了輕量化的改進策略,在保證安全性的同時,加快AES 算法的進程。實驗結果表明,本文設計的輕量化AES 算法高效輕便,在SQLite 文件加密中表現(xiàn)優(yōu)秀。
AES 是一種分組密碼,使用對稱密鑰進行加密和解密過程。明文大小等于128 位(相當于16 字節(jié)),而密鑰大小可以分為128、192 或256 位。AES算法中有輪次(迭代),總回合數(shù)由密鑰的大小決定,如表1 所示。
表1 AES 算法規(guī)范Table 1 Specification of AES algorithm
具體由4 個階段組成,分別是字節(jié)代替(Sub-Byte),行移位(ShiftRow),列混淆(MixColumn)和輪密鑰加(AddRoundKey)階段。這些階段以順序形式執(zhí)行,并在狀態(tài)數(shù)組(4×4 字節(jié))上作為輪次運行。明文在加密過程中作為參數(shù)通過這些輪次傳遞,如圖1 所示的4 個階段[12-13]。
圖1 AES 算法結構Fig.1 Structure of AES algorithm
1)字節(jié)代替:是一個非線性字節(jié)替換函數(shù),獨立地對狀態(tài)數(shù)組的每個字節(jié)進行操作,并基于有限域GF(28)中的乘法反轉。即查S 盒,替換字節(jié),S 盒如圖2 所示。
圖2 S 盒Fig.2 S-box
2)行移位:狀態(tài)中有4 行。第1 行不受影響(未移位),第2 行向左移動1 個字節(jié),第3 行向左移動2 個字節(jié),第4 行向左移動3 個字節(jié)。
3)列混淆:此階段使用逐列操作狀態(tài),每列被視為GF(28)上的4 項多項式,并乘以固定多項式a(x)x4+1。列混淆使用式(1)計算:
4)輪密鑰加:對128 位的狀態(tài)按位與128 的輪密鑰XOR 操作,即按位異或[14-15]。
本文所提出的輕量化AES 算法改進了前兩個階段:字節(jié)代替和行移位階段,從而改善了加密和解密過程。此外,回合數(shù)縮短至4 輪。
改進的字節(jié)代替階段使用替換表而不是標準AES 算法的S 盒。替換表由兩個條目組成;第1 個條目具有以0 值開頭并以F 值結束的升序形式的十六進制數(shù)字,第2 個條目具有以F 值開頭并以0值結束的降序形式的十六進制數(shù)字,如表2 所示。
表2 輕量化替換表Table 2 Lightweight replacement table
狀態(tài)數(shù)組中的每個字節(jié)分為兩位數(shù)(每個數(shù)字用十六進制表示)。在字節(jié)代替階段,字節(jié)的每個數(shù)字取決于替換表,該替換表在第1 個條目中搜索狀態(tài)的第1 個字節(jié)(字節(jié)由兩位數(shù)組成),并從第2 個條目中獲取相應的字節(jié)。例如,假設以下狀態(tài)數(shù)組,狀態(tài)的第1 個字節(jié)等于(FF),則替換為(00)。經(jīng)過輕量化替代后結果如下,如圖3 所示。
圖3 輕量化字節(jié)代替Fig.3 Replacement with lightweight byte
此外,由于輕量化替換表存在線性關系,其逆操作逆字節(jié)代替也用同一張表,加密解密均節(jié)省了存儲空間,替換表的大小為2×16,等于32 字節(jié),S盒由16×16 字節(jié)組成,等于256 字節(jié)。此外,在搜索過程中更快(僅搜索16 個條目)。算法1 解釋了輕量化字節(jié)代替階段的步驟。
在標準AES 中,行移位階段每次移位按特定編號執(zhí)行,由狀態(tài)數(shù)組中的行號確定的移動編號。輕量化后的行移位階段通過隨機移位數(shù)對每一行執(zhí)行循環(huán)移位。一維無序邏輯映射系統(tǒng)產(chǎn)生的隨機移位數(shù)由等式(2)表示:
算法1:輕量化字節(jié)代替階段輸入:狀態(tài)數(shù)組、替換表輸出:新狀態(tài)數(shù)組開始For i=1 to 4 For j=1 to 4字節(jié)塊T=狀態(tài)[i][j];數(shù)值1=字節(jié)塊T 左邊值;數(shù)值2=字節(jié)塊T 右邊值;新數(shù)值1=代替(輕量化替換表,數(shù)值1);新數(shù)值2=代替(輕量化替換表,數(shù)值2);新字節(jié)塊T=結合(新數(shù)值1,新數(shù)值2);新狀態(tài)[i][j]=新字節(jié)塊T;Next j;Next i;結束
其中,X0表示起始狀態(tài),i 表示迭代次數(shù),是系統(tǒng)控制參數(shù)。對于所有i,Xi+1的值是介于0 和1 之間的數(shù)字,而控制參數(shù)的值在(0,3)范圍內,具體取決于狀態(tài)數(shù)組中的行數(shù)。由無序系統(tǒng)隨機生成并排列在一個稱為“移位數(shù)”的一維數(shù)組中,如表3 所示。
表3 行移位前狀態(tài)Table 3 Status before shift row
狀態(tài)數(shù)組中的每一行都向左移動,不同的移位值取決于隨機移位數(shù)而不是標準AES 算法中的固定移位值(行號)。輕量化行移位階段如圖4 所示。
圖4 輕量化行移位Fig.4 Lightweight shift row
從圖4 中可以看出,移位數(shù)是變量值(不是固定值),排列由無序系統(tǒng)隨機實現(xiàn),以增加狀態(tài)數(shù)組的排列。此外,在解密過程中,輕量化后的逆行移位階段是通過使用相同的隨機移位數(shù)向右移位狀態(tài)數(shù)組來實現(xiàn)的。算法2 解釋的是修改移位行(MSR)階段的步驟。
算法2:輕量化行移位階段輸入:狀態(tài)數(shù)組、無序移位數(shù)輸出:新狀態(tài)數(shù)組開始For i=1 to 4新狀態(tài)數(shù)組[i]=左移位(狀態(tài)數(shù)組[i],無序移位數(shù)[i]);Next i;結束
本文在內存有限制的Ubuntu 虛擬機上進行實驗,模擬了嵌入式設備運行環(huán)境。創(chuàng)建了mysqlite.db數(shù)據(jù)庫文件,插入數(shù)據(jù)后,可用sqlite3 命令行打開文件進行查看。在加密后,再次用sqlite3 打開則有“File is not adatabase”的提示不能查閱。此實驗表明了本系統(tǒng)對sqlite 數(shù)據(jù)庫加密有效。
下面將通過3 種標準進行評估:加密時間,存儲空間和雪崩效應。為展示輕量化AES 性能,實驗還加入了標準AES 和3DES 算法進行對比。表4 展示了5 條十六進制密文的示例。
表4 十六進制密文示例Table 4 Example of hexadecimal ciphertext
利用時間函數(shù)對3 種算法的加密時間進行測試研究。在SQLite 中插入不同大小的信息,測試不同條件下加密算法的加密時間。表5 展示了加密相同SQLite 文件所花費的時間,輕量化AES 比標準AES 快約8%,比3DES 快約17%。因為輕量化AES具有比標準AES 更快捷的字節(jié)替換階段,比3DES迭代輪數(shù)更少。經(jīng)實驗證明,輕量化AES 在加密速度上表現(xiàn)優(yōu)于另兩種方法。
表5 加密時間測試Table 5 Encryption time test
對3 種算法進行內存占用統(tǒng)計,結果如表6 所示。輕量化AES 比標準AES 小17.8%,比3DES 小約27%。因為加密算法的工作取決于S 盒和逆S盒,輕量化AES 具有比標準AES 和3DES 更小的S盒。標準S 盒由8 個小S 盒(4x16)組成,而輕量化S盒由2x16 組成。經(jīng)統(tǒng)計,輕量化AES 在內存占用上表現(xiàn)優(yōu)于另兩種方法
表6 內存測試Table 6 Memory test
雪崩效應是加密算法的一種理想擴散屬性,是指當密碼發(fā)生微小改變時,導致輸出的不可區(qū)分性改變。雪崩效應可以通過式(3)計算
雪崩效應=密文反轉字節(jié)數(shù)/密文總字節(jié)數(shù)(3)
每個輸入消息的大小由16 個字符組成,代表一個塊,更改是在明文塊和密文塊之間進行的。通過在密文中使用幾個翻轉位來計算表4 中的示例得。
由表7 可得,AES 在雪崩效應上優(yōu)于3DES,輕量化AES 略優(yōu)于標準AES。這意味輕量化AES 獲得更安全的加密SQLite 文件,不會輕易受到攻擊者的攻擊。輕量化AES 算法實現(xiàn)了較優(yōu)的數(shù)據(jù)擴散,即理論安全性。
表7 雪崩效應Table 7 Avalanche effects
武器平臺上的諸多嵌入式設備計算能力有限,儲存狹小。本文針對這一特點對AES 加密算法進行輕量化改進,并將其應用在嵌入式SQLite 中。所提出的算法通過修改加密過程中的兩個階段:字節(jié)代替和行移位來修改排列和加密時間,同時將迭代次數(shù)縮短至4 輪。經(jīng)測試,輕量化AES 比標準AES 快8%,比3DES 快17%,內存占用比標準AES 輕17.8%,比3DES 輕27%,雪崩效應略優(yōu)于另兩種算法。輕量化AES 在SQLite 中的性能表現(xiàn)良好,達到了預期研究目標。