王鳳忠,呂亞飛,鄒饒邦彥
(1.軍事交通學(xué)院 軍用車(chē)輛系,天津 300161;2.軍事交通學(xué)院 研究生管理大隊(duì),天津 300161)
軍事物流數(shù)據(jù)庫(kù)加密與AES算法的探究
王鳳忠1,呂亞飛2,鄒饒邦彥2
(1.軍事交通學(xué)院 軍用車(chē)輛系,天津 300161;2.軍事交通學(xué)院 研究生管理大隊(duì),天津 300161)
針對(duì)目前軍事物流信息系統(tǒng)中數(shù)據(jù)庫(kù)安全面臨的嚴(yán)峻形勢(shì),分析數(shù)據(jù)庫(kù)加密技術(shù)方法和AES算法的加解密過(guò)程及輪密鑰生成過(guò)程,采用Java語(yǔ)言在my eclipse中實(shí)現(xiàn)AES算法的編程及測(cè)試,通過(guò)實(shí)例驗(yàn)證了算法的有效性。
軍事物流;數(shù)據(jù)庫(kù)安全;AES算法;輪密鑰
軍事物流主要完成軍用物資的后勤保障任務(wù),主要包括武器、裝備、彈藥、器材、軍需被服與軍用食品等。軍事物流信息涉及部隊(duì)生活、訓(xùn)練、執(zhí)勤及作戰(zhàn)情況,對(duì)于敵我雙方都是十分敏感的信息。在軍事物流信息系統(tǒng)中,軍事物流的主要信息如物資信息、實(shí)力信息、運(yùn)輸信息、倉(cāng)儲(chǔ)信息和計(jì)劃信息等,均以數(shù)據(jù)庫(kù)為基礎(chǔ)進(jìn)行存取,數(shù)據(jù)庫(kù)的安全作為軍事物流信息系統(tǒng)安全的三大基石之一,與操作系統(tǒng)安全、通信安全同樣重要。目前我國(guó)所使用的操作系統(tǒng)、防火墻硬件以及數(shù)據(jù)庫(kù)產(chǎn)品大多依賴(lài)國(guó)外產(chǎn)品的進(jìn)口,這些產(chǎn)品是否留有后門(mén),是否安全,難以確定。因此,采取加密技術(shù)是我們自主、主動(dòng)保護(hù)信息安全的重要而有效的方法。
根據(jù)美國(guó)國(guó)防部頒發(fā)的《可信計(jì)算機(jī)系統(tǒng)評(píng)估標(biāo)準(zhǔn)關(guān)于可信數(shù)據(jù)庫(kù)系統(tǒng)的解釋》,可將數(shù)據(jù)庫(kù)管理系統(tǒng)的安全等級(jí)分為4類(lèi)7個(gè)等級(jí),由低到高依次是:D級(jí)、C1級(jí)、C2級(jí)、B1級(jí)、B2級(jí)、B3級(jí)和A1級(jí)。D級(jí)產(chǎn)品是沒(méi)有任何安全保護(hù)的產(chǎn)品,只能用于沒(méi)有安全威脅的環(huán)境中;C級(jí)產(chǎn)品只具有初步安全功能;B級(jí)以上的標(biāo)準(zhǔn)被認(rèn)為是產(chǎn)品真正安全的開(kāi)始,具有安全保護(hù)、結(jié)構(gòu)化保護(hù)等功能。由于美國(guó)對(duì)高安全級(jí)別的產(chǎn)品出口有嚴(yán)格的限制,出口至我國(guó)的數(shù)據(jù)庫(kù)產(chǎn)品安全級(jí)別只能達(dá)到C級(jí)。目前我軍大部分軍事物流信息系統(tǒng)中所采用的數(shù)據(jù)庫(kù),都是SQL Server、Oracle等C級(jí)的國(guó)外產(chǎn)品,有關(guān)乎戰(zhàn)斗力的敏感數(shù)據(jù)仍在防范較弱的國(guó)外數(shù)據(jù)庫(kù)系統(tǒng)中運(yùn)行,其安全性
令人堪憂(yōu)。而要將應(yīng)用系統(tǒng)遷移至國(guó)產(chǎn)數(shù)據(jù)庫(kù)還需大量的投入和一定時(shí)段。因此,對(duì)現(xiàn)行數(shù)據(jù)庫(kù)中的涉密信息采取加密措施進(jìn)行有效保護(hù),是當(dāng)前軍事物流信息安全的最后一道防線,也是迫在眉睫的事情。
數(shù)據(jù)加密技術(shù)一般是通過(guò)數(shù)學(xué)變換的方式加密數(shù)據(jù),使攻擊者無(wú)法從密文中讀取重要信息,而密文的接收方能通過(guò)密鑰將密文還原成明文,其一般流程如圖1所示。
圖1 數(shù)據(jù)加密的一般流程
2.1 數(shù)據(jù)庫(kù)加密層次
數(shù)據(jù)庫(kù)加密技術(shù)可以在數(shù)據(jù)庫(kù)管理系統(tǒng)的內(nèi)核層、外核層以及操作系統(tǒng)層進(jìn)行。在操作系統(tǒng)層進(jìn)行數(shù)據(jù)加密就是將存儲(chǔ)于操作系統(tǒng)的關(guān)系文件進(jìn)行整體加密。由于其加密粒度是文件級(jí)的,數(shù)據(jù)庫(kù)管理系統(tǒng)無(wú)法辨認(rèn)數(shù)據(jù)庫(kù)文件中各數(shù)據(jù)之間的關(guān)系,對(duì)加密關(guān)系進(jìn)行操作時(shí),要先解密文件,降低了系統(tǒng)的工作效率。
在內(nèi)核層進(jìn)行加密是指在數(shù)據(jù)存取時(shí)對(duì)數(shù)據(jù)進(jìn)行加解密處理,其過(guò)程如圖2所示。其優(yōu)點(diǎn)是可以不影響數(shù)據(jù)庫(kù)管理系統(tǒng)的正常功能并且支持各種加密粒度,但加密的實(shí)行需要數(shù)據(jù)庫(kù)管理系統(tǒng)開(kāi)發(fā)商提供數(shù)據(jù)接口,修改內(nèi)核,實(shí)現(xiàn)較為復(fù)雜;且加解密運(yùn)算在服務(wù)器端進(jìn)行,易增加數(shù)據(jù)庫(kù)服務(wù)器的負(fù)載。
圖2 系統(tǒng)內(nèi)核層加密
在外層進(jìn)行加密是在用戶(hù)客戶(hù)端和數(shù)據(jù)庫(kù)管理系統(tǒng)之間增加一個(gè)加解密層,在敏感數(shù)據(jù)存入數(shù)據(jù)庫(kù)之前進(jìn)行相應(yīng)的加密處理,其過(guò)程如圖3所示。加解密操作既可以放在服務(wù)器上進(jìn)行也可以放在客戶(hù)端進(jìn)行,對(duì)數(shù)據(jù)庫(kù)管理系統(tǒng)沒(méi)有太多要求。這種加密方式被當(dāng)前大多數(shù)數(shù)據(jù)庫(kù)所采取。
圖3 外層加密
2.2 加密算法
密碼系統(tǒng)的兩個(gè)基本要素包括加密算法和密鑰管理,加密算法作為數(shù)據(jù)加密的核心,其規(guī)定了明文、密文之間的轉(zhuǎn)換方法。數(shù)據(jù)加密算法可以按密文發(fā)送方和密文接收方的密鑰是否相同分為兩類(lèi):對(duì)稱(chēng)密碼算法和非對(duì)稱(chēng)密碼算法。
非對(duì)稱(chēng)密碼算法的密鑰可分為加密密鑰和解密密鑰,加密密鑰作為公開(kāi)密鑰對(duì)外公布,解密密鑰作為私有密鑰加以保存。其加解密過(guò)程為:擁有私鑰的信息接收方生成一對(duì)密鑰,將其中的加密密鑰對(duì)外公開(kāi);信息發(fā)送方利用公開(kāi)密鑰對(duì)信息進(jìn)行加密,然后傳送給信息接收方;信息接收方則利用保密的解密密鑰對(duì)加密信息進(jìn)行解密。常用的非對(duì)稱(chēng)密碼算法有RSA算法和MD5算法。
對(duì)稱(chēng)密碼算法是信息發(fā)送方和接收方共用一個(gè)密鑰和一個(gè)算法去加解密信息,其中,必須保證密鑰的安全保密。其加解密的速度快、密鑰短、破譯困難、安全有效,是廣泛采用的加密算法。對(duì)稱(chēng)密碼算法可分為流加密和分組加密兩種。本文所采用的AES算法就是取代DES算法的新一代的高級(jí)加密算法。
DES算法開(kāi)創(chuàng)了公開(kāi)密碼的先河,由于其密鑰長(zhǎng)度只有56位,人們只用了20年時(shí)間就用窮舉法將DES算法的全部密鑰破解。由此,更安全性的算法AES應(yīng)運(yùn)而生。AES算法的分組長(zhǎng)度為128位,密鑰長(zhǎng)度可為128位、192位、256位,對(duì)應(yīng)的循環(huán)輪次為10輪、12輪、14輪。AES算法迄今為止還未被破解過(guò),據(jù)估算,按照摩爾定律依然有效,窮舉法依然為最有效的破解密鑰的方法,128位密鑰的AES算法一直到21世紀(jì)70年代左右依然安全。
AES算法的數(shù)學(xué)理論主要是GF(28)域,其以字節(jié)定義,每個(gè)字節(jié)是8位二進(jìn)制的比特?cái)?shù),與GF(28)域中每個(gè)元素相對(duì)應(yīng)。
3.1 加密過(guò)程
AES算法的加密是以狀態(tài)為單位的,狀態(tài)的生成是將明文每128位為一組,共16個(gè)字節(jié),按次序生成一個(gè)4×4矩陣。AES算法的加密過(guò)程由狀態(tài)矩陣開(kāi)始,共
十輪加密操作,前九輪的加密各包含四步,分別是:字節(jié)代換、行移位變換、列混合變換和輪密鑰相加變換;第十輪加密只包括三步操作,不包括列混合。
3.1.1 字節(jié)代換。字節(jié)代換也稱(chēng)S-盒變換,是一種非線性變換,其變換過(guò)程分為兩步。
其中,La為仿射矩陣,v為16進(jìn)制數(shù)‘63’。
在實(shí)際的操作過(guò)程中,為了簡(jiǎn)化操作,本文將字節(jié)代換轉(zhuǎn)化為查表操作,預(yù)先構(gòu)建一個(gè)16×16字節(jié)的矩陣,又叫S-盒,其生成過(guò)程和以上字節(jié)代換過(guò)程相同,具體形式見(jiàn)表1。將狀態(tài)矩陣中,每一字節(jié)的高四位作為x值,低四位作為y值,對(duì)應(yīng)查找S-盒中的元素,完成代換。
表1 S-盒
3.1.2 行移位變換。行移位變換是AES算法里的一種基本線性變換,其作用是使密文進(jìn)行充分的混亂,以提高密文的復(fù)雜程度。行移位變換是在字節(jié)變換的基礎(chǔ)上,在所得狀態(tài)矩陣的每一行進(jìn)行變換,將每一行的字節(jié)進(jìn)行循環(huán)向左移位。具體為,第一行字節(jié)不變,第二行向左移動(dòng)一位,第三行移動(dòng)兩位,第四行移動(dòng)三位,這樣就將原來(lái)每一列的字節(jié)分到了四列上去。具體移位操作如圖4所示。
圖4 行移位變換示意圖
3.1.3 列混合變換。列混合變換是對(duì)狀態(tài)矩陣進(jìn)行矩陣乘法變換。狀態(tài)矩陣的一列為四個(gè)字節(jié),在GF(28)中,可以用四項(xiàng)多項(xiàng)式表示該字。
相對(duì)應(yīng)的系數(shù)即為相應(yīng)的矩陣元素,將每一列所代表的多項(xiàng)式與一個(gè)固定的矩陣相乘,并將結(jié)果對(duì)x4+1取模運(yùn)算,見(jiàn)下式:
圖5 列混合變換示意圖
3.1.4 輪密鑰相加變換。輪密鑰相加變換是將狀態(tài)矩陣與輪密鑰進(jìn)行加法運(yùn)算,即異或運(yùn)算。每一輪的輪密鑰是由初始密鑰經(jīng)過(guò)密鑰擴(kuò)展算法經(jīng)過(guò)十輪擴(kuò)展得到的,且加解密過(guò)程使用相同的輪密鑰。輪密鑰有128位,相當(dāng)于16個(gè)字節(jié),與狀態(tài)矩陣相對(duì)應(yīng)。輪密鑰相加過(guò)程如圖6所示。
3.2 解密過(guò)程
AES算法是對(duì)稱(chēng)算法,其加密和解密過(guò)程的操作基本相同,解密過(guò)程也分為四步:逆向行移位變換、逆向字
節(jié)代換、輪密鑰相加和逆向列混合變換。由于每一步操作基本相同,在這里就不重新一一贅述,只將加密和解密過(guò)程的異同加以總結(jié)。
圖6 輪密鑰相加過(guò)程
首先,加解密過(guò)程所使用的輪密鑰都是相同的,只是使用順序是相反的;加解密過(guò)程每輪的四步操作是互為逆運(yùn)算的過(guò)程,輪密鑰相加的逆過(guò)程就是其本身;加解密過(guò)程每輪的操作順序不相同,加密過(guò)程的順序?yàn)樽止?jié)代換、行移位變換、列混合變換和輪密鑰相加變換,而解密過(guò)程為逆向行移位變換、逆向字節(jié)代換、輪密鑰相加、逆向列混合變換。加解密操作流程圖如圖7所示。
圖7 加解密操作流程圖
3.3 輪密鑰擴(kuò)展算法
在加密過(guò)程中的輪密鑰相加中提到,每一輪加密都需要一個(gè)輪密鑰,這些輪密鑰就是由初始密鑰通過(guò)輪密鑰擴(kuò)展算法得來(lái)的。初始密鑰有16個(gè)字節(jié),通過(guò)擴(kuò)展算法,輸出176個(gè)字節(jié)的一維線性數(shù)組,為每一輪的加密提供16個(gè)字節(jié)的輪密鑰。首先,將初始密鑰按照處理初始明文一樣分為四列,分別記為w[0]、w[1]、w[2]、w[3]。在此基礎(chǔ)上,確定以后每一輪的w[i]。
若i能被4整除,則:
若i不能被4整除,則:
其中,T函數(shù)為一個(gè)更復(fù)雜的變換函數(shù),其包括行移位變換、字節(jié)代換和Rcon運(yùn)算。行移位和字節(jié)代換與加密過(guò)程中的操作一致,而Rcon為一個(gè)輪常量,將該輪常量與經(jīng)過(guò)行移位和字節(jié)代換的結(jié)果進(jìn)行異或運(yùn)算。Rcon也是由四個(gè)字節(jié)組成,其后三個(gè)字節(jié)都為0,形式如下:
其中Rc[i]每一輪的值(16進(jìn)制),見(jiàn)表2。
表2 Rc[i]的值
基于上述AES算法加解密原理,可以在不同操作環(huán)境下,使用不同編程工具對(duì)應(yīng)用系統(tǒng)中的敏感數(shù)據(jù)進(jìn)行加解密運(yùn)算。
4.1 算法編程
采用Java工具在my eclipse中實(shí)現(xiàn)算法的編程。在Java中的包aessuanfa中創(chuàng)建了四個(gè)類(lèi),分別為aes1、aes2、aes3和test,其中aes1、aes2、aes3為算法程序,test為測(cè)試程序,如圖8所示。
圖8 算法的類(lèi)
其中的加密算法的部分程序如下:
public void Cipher(byte[]input,byte[]output)
{
this.State=new byte[4][Nb];
for(int i=0;i<(4*Nb);i++)
{
this.State[i/Nb][i%Nb]=input[i];
}//初始化狀態(tài)矩陣
AddRoundKey(0);//輪密鑰加
for(int round=1;round<Nr;++round)
{
SubBytes();//S盒變換
ShiftRows();//行移位
MixColumns();//列混合
AddRoundKey(round);
}
SubBytes();//S盒置換
ShiftRows();//行移位
AddRoundKey(Nr);//輪密鑰加
for(int i=0;i<(4*Nb);i++)
{
output[i]=this.State[i/Nb][i%Nb];
//System.out.println(i%Nb);
}//輸出密文
}
4.2 算法實(shí)例
下面用一個(gè)數(shù)據(jù)庫(kù)用戶(hù)的登錄數(shù)據(jù)驗(yàn)證上面算法的可行性。設(shè)置登錄的明文為“登錄用戶(hù):平津埠車(chē)材庫(kù) 登錄密碼:tbbgyz”,經(jīng)過(guò)AES加密算法運(yùn)算,對(duì)用戶(hù)名和登錄密碼加密后得到的密文為“e9bd1aa3b5fc7a10ee4d42ac286e3b9bc408893c935ddbd3 97cc749f9ac5c7c49bf7147f3c5d7610963dfb0baebb108b4b d975b9”;將此密文與儲(chǔ)存于數(shù)據(jù)庫(kù)登錄表中的登錄用戶(hù)和登錄密碼密文相對(duì)比,若一致則登錄成功。
同時(shí)驗(yàn)證解密算法,將密文數(shù)據(jù)用上面算法解密,得到的結(jié)果為“登錄用戶(hù):平津埠車(chē)材庫(kù) 登錄密碼:tbbgyz”,與原來(lái)明文結(jié)果一致,證實(shí)了算法的有效性,其運(yùn)行結(jié)果如圖9所示。
圖9 實(shí)例運(yùn)行結(jié)果
AES算法作為取代DES算法的新一代加密算法,在無(wú)線通信加密和數(shù)據(jù)存儲(chǔ)加密方面都有良好的應(yīng)用前景。目前,在通訊、網(wǎng)絡(luò)和芯片等領(lǐng)域,涉及數(shù)據(jù)安全傳輸和安全存取等問(wèn)題的重大突破,都有AES加密算法的貢獻(xiàn),在路由器、存儲(chǔ)器、閃存盤(pán)等生活數(shù)字產(chǎn)品中也有AES加密算法的身影,而將AES加密算法應(yīng)用于各種數(shù)據(jù)庫(kù)產(chǎn)品也成了各大數(shù)據(jù)庫(kù)公司的重要任務(wù)。
ORACLE公司自O(shè)racle8i第一次通過(guò)內(nèi)置的工具包允許用戶(hù)對(duì)數(shù)據(jù)實(shí)現(xiàn)字段級(jí)加密,其加密包中應(yīng)用的是DES、3DES算法,而到了Oracle9i就支持使用AES算法的加密,但限于美國(guó)對(duì)安全產(chǎn)品出口的嚴(yán)格管理,其只支持56位長(zhǎng)度的密鑰,如今Oracle已經(jīng)可以支持256位密鑰的AES加密。同Oracle一樣的還有SYBASE公司,在其產(chǎn)品Adaptive Server Anywhere 8.0中,引入了數(shù)據(jù)庫(kù)加密的功能,其支持?jǐn)?shù)據(jù)庫(kù)級(jí)的加密,使用的算法是AES和MDSR,其中,AES算法為默認(rèn)的加密算法,長(zhǎng)度為128位。
數(shù)據(jù)庫(kù)作為信息安全的最后一道防線,對(duì)敏感數(shù)據(jù)保護(hù)是加強(qiáng)信息系統(tǒng)安全的重要舉措。AES算法的運(yùn)用是自主保護(hù)涉密信息的重要有效的手段。軍事物流數(shù)據(jù)庫(kù)因其內(nèi)存數(shù)據(jù)高度涉密,在操作系統(tǒng)和網(wǎng)絡(luò)防護(hù)可能存在不完備的情況下,急需相應(yīng)靈活的加密保護(hù)措施,而AES算法具備良好的可行性,為下一步軍事物流數(shù)據(jù)庫(kù)的加密提供了一個(gè)很好的途徑。
[1]陳越,寇紅召,費(fèi)曉飛.數(shù)據(jù)庫(kù)安全[M].北京:國(guó)防科技大學(xué)出版社,2011.
[2]胡志奇.數(shù)據(jù)庫(kù)安全與加密技術(shù)[J].計(jì)算機(jī)與現(xiàn)代化,2003,(11):70-74.
[3]張煥國(guó).演化密碼引論[M].武漢:武漢大學(xué)出版社,2010.
[4]王小偉.AES加密算法的研究與IP核設(shè)計(jì)實(shí)現(xiàn)[D].哈爾濱:哈爾濱工業(yè)大學(xué),2012.
[5]苗杰.基于AES算法的數(shù)據(jù)庫(kù)二級(jí)密鑰系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[D].鎮(zhèn)江:江蘇科技大學(xué),2013.
[6]董翔英,張大鵬.器材倉(cāng)庫(kù)信息管理加密系統(tǒng)的研究[J].倉(cāng)儲(chǔ)管理與技術(shù),2008,(3):20-22.
[7]孫愛(ài)娟.基于AES加密算法的改進(jìn)及其Matlab實(shí)現(xiàn)[D].哈爾濱:哈爾濱理工大學(xué),2009.
[8]谷大武,徐勝波,高級(jí)加密標(biāo)準(zhǔn)(AES)算法—Rijindael的設(shè)計(jì)[M].北京:清華大學(xué)出版社,2003.
Exploration of Military Logistics Database Encryption and AES Algorithm
Wang Fengzhong1,Lv Yafei2,Zou Raobangyan2
(1. Department of Military Vehicle, Military Transportation Academy, Tianjin 300161;2. Graduate Student Management Brigade, Military Transportation Academy, Tianjin 300161, China)
In this paper, in light of the dire situation of database safety of the military logistics information system, we analyzed thedatabase encryption technology and the encryption and decryption processes and the round key generation process of the AES algorithm, usedJava to realize the programming and testing of the algorithm in My Eclipse and at the end, through a numerical example, demonstrated thevalidity of the algorithm.
military logistics; database safety; AES algorithm; round key
TP309.7;E234
A
1005-152X(2016)09-0164-05
10.3969/j.issn.1005-152X.2016.09.034
2016-08-02
王鳳忠(1969-),男,山東萊陽(yáng)人,軍事交通學(xué)院副教授,主要研究方向:軍事供應(yīng)鏈、軍用車(chē)輛器材管理;呂亞飛(1992-),山東文登人,軍事交通學(xué)院在讀碩士研究生,研究方向:器材信息管理。