陳小明
【摘 要】 隨著智能手機,平板的大力推廣,對無線網絡的應用也越來越廣泛,無線網絡安全中的加密算法也變得愈發重要,本文從AES算法的加密原理出發,闡述了該算法在無線網絡安全中的應用、研究以及從子密鑰生成算法的角度,優化AES算法加密解密的過程,從而提升了AES加密算法的性能。
【關鍵詞】 AES 加密算法 無線網絡
【Abstract】 With the intelligent mobile phone,flat vigorously promotion,for the application of wireless network is becoming more and more widely,the wireless network security of encryption algorithm is also becoming increasingly important,this article from the AES algorithm encryption principle,this paper discusses the algorithm in wireless network security and the application research and key generation algorithm from the point of view of the son,optimizing the AES algorithm encryption decryption process,so as to enhance the performance of the AES encryption algorithm.
【Key words】 AES encryption algorithm wireless network
隨著智能手機的普及以及無線網絡的不斷發展,無線網絡使用越來越廣泛,信息安全正在變的越來越重要,無線網絡的安全問題正在不斷受到廣泛的關注,而加密技術在信息安全、網絡傳輸中屬于最基礎的技術,而密碼算法則自然而然變的更加重要。AES(The Advanced Encryption Standard)是美國國家標準與技術研究所用于加密電子數據的規范。它是目前所公認的加密金融、電信和政府數字信息等各個領域的方法。AES加密算法是標準對稱加密算法,所以該算法使用的是相同的密鑰,去加密和解密數據。通過分組密碼返回的加密數據的位數與輸入數據相同。其中加密時使用的是迭代加密的方法,即使用循環的方法,在此循環中,重復置換和替換原始輸入數據[1]。AES加密算法是DES加密算法的改進和升級,密鑰長度支持128位、192位以及256位共三種,使用對稱分組密碼體制,故本算法非常方便用各種硬件及軟件實現。
1 AES算法的工作原理
1.1 AES算法描述
AES是以輪為基礎的對稱加密算法,是一個密鑰迭代型分組密碼,它包含了輪變換對狀態的重復作用,密鑰長度為128bits,192bits,256bits。對應的加密輪數為10,12,14,用Nr表示輪數[4]。明文經過AddRoundKey以及Nr輪組合函數變換,生成密文。其中Round1,Round2到Round(Nr-1)都是由字節代替變換、行位移變換、列混合變換、密鑰加法變換4種函數組成。RoundNr由字節代替變換、行位移變換、密鑰加法變換3種函數組成。
1.2 加密變換函數解析
(1)字節替換(SubBytes):是一種非線性的字節置換變換。將S-盒SRD構造為函數g和一個可逆仿射變換f的序列。首先對字節求有限域GF(28)上的乘法逆,用函數表示為g(b)。然后對g(b)進行可逆仿射變換f,用函數表示為。仿射變換是一個矩陣乘法和加法的混合,表示如下:
(1)
其中:表示異或;Ci=。
(2)行位移(ShiftRows):是加密算法中的線性運算。它將狀態第0行移動C0字節數,第1行移動C1字節數,第2行移動C2字節數,第3行移動C3字節數。
(3)列混合(MixColumns):采用GF(28)下的多項式與固定多項式相乘,使得到的結果取模。
(4)密鑰加法(AddRoundKey):在這個變換中,狀態的調整通過與輪密鑰進行逐位異或而得到。輪密鑰的長度和分組長度相等。
第i輪的上述四種變換可以表示為如下的數學表達式:
(2)
其中:a是輪變換開始輸入;j是狀態矩陣的列數;k是第i輪的密鑰;移位變換偏移量C0、C1、C2、C3分別為0,1,2,3;表示異或操作。
2 AES算法在無線網絡中的應用
2.1 無線網絡協議
隨著人們對無線網絡安全性的深入研究,終于在2006年3月13日,國際標準組織(ISO/IEC)批準IEEE802.11i為更安全無線協議的基礎。802.11i在數據加密方面定義了TKIP、CCMP和WRAP 三種加密機制。CCMP是基于AES加密算法和CCM認證機制的加密機制,可以大大提高無線網絡的安全程度。WPA(Wi-Fi Protected Access)保護無線電腦網絡安全系統是一種基于標準的可互操作的WLAN安全性增強解決方案,可大大增強現有以及未來無線局域網系統的數據保護和訪問控制水平。WPA源于正在制定中的IEEE 802.11i標準并將與之保持前向兼容。如果我們合理安排,WPA可以使無線網絡用戶的數據得到保護,并且只有被授權的一些網絡用戶才可以訪問該無線網絡。由于WEP業已證明的不安全性,在802.11i協議完善前,采用WPA為用戶提供一個臨時性的解決方案。該標準的數據加密采用TKIP協議(Temporary Key Integrity Protocol),認證有兩種模式可供選擇,一種是使用802.1x協議進行認證;一種是稱為預先共享密鑰PSK(Pre-Shared Key)模式。它是IEEE802.11i的一個子集,核心是IEEE802.1x和TKIP,可用以下公式表示幾者之間的關系:WPA=802.1x+EPA+TKIP+MIC其中MIC(信息完整性檢查碼)是CCMP(Counter mode/CBC-MAC Protocol)加密技術中的一個重要組成部分:CCMP首先用CBC-MAC數據源認證模式對消息中的明文頭、明文頭長度和負載計算出一個MIC,然后使用計數模式對負載(Payload)和MIC進行加密,產生128比特的密匙,其中計數模式的核心算法就是AES(高級加密標準)。endprint
2.2 無線健壯安全認證協議中的AES算法
無線健壯安全認證協議(WRAP),是基于128位的AES-OCB模式的加密算法[1]。AES算法所采用的操作模式OCB(Offset Codebook)是使用AES算法進行塊加密,該方法首先將要加密的明文分成x個數據塊,每個數據塊的長度是128bit,將這x個數據塊使用AES加密運算,這時可以生成x個加密數據塊, 拼接起這x個加密數據塊,與MIC、重放計數器(Replay Counter)三者一起作為加密數據負載,從而完成對明文數據的加密過程。在WRAP中,AES的主要是在WRAP的數據封裝過程的數據處理的各個階段中,其中產生密鑰的過程是先通過802.1X協議建立鏈接,從而構建臨時密鑰,媒體訪問控制(MAC)是通過連接請求應答以及臨時密鑰這三者一起通過密鑰產生算法生成加密密鑰[3]。此后媒體訪問控使用WRAP數據封裝算法,利用加密密鑰對所有即將發送的單MAC服務數據單元(MSDU,MAC Service Data Unit)進行保護,而在數據加密之前,傳輸端根據所要發送的MSDU來選擇合適的封裝方式。再之后傳輸端對MSDU分組個數(其中AES分組長度為128bit)進行檢驗,如此即可選擇適合的重放計數器[4]。之后設備使用WRAP臨時加密密鑰和Nonce對明文MSDU數據進行加密[5]。
3 AES算法密鑰擴展及優化改進
3.1 AES算法優化方法
從以上AES算法的加密和解密工作原理中,我們可以發現,在這些過程中存在著非常多的移位,而這些操作指令都非常耗時,并且也無法和其余指令結合組成流水線,這種情況非常嚴重地影響了算法的執行效率。再者,輪加密采用循環變換的方法,循環變換有一定機率會造成指令流水線的阻斷和指令預取的作廢[4]。
3.2 輪函數的優化
在AES算法的實現過程中中,輪函數有4種變換方式,我們可以通過改進和優化每個變換從而提高加密速度。如在實現ByteSub變換、MixColumn 02乘03乘、InvByteSub和InvMixColumn中的09,0D,0B,0E乘等使用查表的方法。如在實現ByteSub變換、MixColumn02乘03乘、InvByteSub和InvMixColumn中的09,0D,0B,0E乘等使用查表的方法。這樣可以部分提高算法性能。如果在AES輪函數的操作中,將這4個操作統一采用一次查表的方法實現,如此即可大大提高算法的速度。首先設X是密鑰數組,用xi,j表示X中第i行第j列的元素,xj表示X的j列 。
3.3 優化字節與字之間的相互轉換
在AES算法中,密鑰擴展以及加密和解密時主要是以字為單位進行處理的。所以通過優化這一部分可以得到性能上的提高。
字節到字的轉換代碼:
uint32 get_word(pt)
//pt 指向待轉換字節的最高位字節
{ m=((uint32)(pt)[0]<<24)
((uint32)(pt)[1]<<16)
((uint32)(pt)[2]<<8)
((uint32)(pt)[3])
return m;
}
改進后的的字節轉換代碼為:
void get_word(uint8*b,uint32*m)
//b指向四個字節的最低位
{ *m=*((uint32*)b)//m指向轉換后的字
}
同理,改進后的字到字節的轉換代碼:
void put_word(uint32*m,uint8*b)
//將1個字轉換成4個字節
{ uint8*b=(uint8*)(m);
//b指向轉換后的字節的最低位字節
*(b+1)=*(p+1);
*(b+2)=*(p+2);
*(b+3)=*(p+3);
}
3.4 AES算法解密密鑰生成
字節移位和S盒變換實現了加密密鑰的優化和改變,與此相對,解密密鑰亦可用同等方法進行研究與改進。設a0,a1,a2,a3為一個字的4個字節,b0,b1,b2,b3為a0,a1,a2,a3經過InvMixColumn變換的結果。該變換可表示為InvMixColumn(x)=T-1(S[x])綜合上述式子可得如下結論:
InvRoundKey[i]=InvMixColumn(RoundKey[N-i])=T-1(S[RoundKey[N-i]])(i=0,i=N除外)即解密密鑰可以利用加密密鑰、T-1表和S表實現。
4 測試與性能比較
AES算法支128位、192位、256位的密鑰長度,這里使用FIP(Sfederal Information Processing Standards)出版的FIPS-PUB 197所給出的例子來進行測試。在當前測試環境下,因為每一個分組用AES算法加密的時間是10-6秒數量級,所以采用重復加密N次的方法來測試加密時間。以下是測試結果比較。
從以上兩表對比可以看出,本文所做的改進和優化在一定程序上實現了對現在AES算法的基本功能,而且速度也提高了1.3522-1.6521倍左右。
5 結語
文章對深入的分析了AES算法在無線網絡中使用的方法和過程,并且優化和改進了算法的性能和效率。對AES算法的改進策略主要包括用一次查表的方法改進AES輪函數;通過指針類型轉換來優化字節與字之間的轉換以及加密解密函數中的移位操作,通過查表的方法進一步改進解密密鑰生成函數。通過測試證明,本例所優化改進的AES算法既實現了AES算法的基本功能,又使得加密速度比原來提高了大約1.3522-1.6521倍左右。
AES加密算法作為國際通用的數據安全加密標準,有著高效率、高安全性、高性能、方便和優雅一系列優點,在應用到無線網絡的過程中,為無線網絡的安全直到了很好防護作用。隨著智能手機和平板的不斷發展,無線網絡普及程度越來越高,AES加密算法在加密領域應用會不斷優化,無線網絡的應用會更加安全。
參考文獻:
[1]楊改貞.AES加密算法在無線網絡安全中的應用[J].長沙通信職業技術學院學報,2006(3):62-64.
[2]王瑩,何大軍.AES加密算法的改進與實現[J].電腦編程技巧與維護,2010(17):84-86.
[3]吳小博.AES加密算法分析與C++編程實現[J].計算機安全,2007(12):45-46.
[4]韓笑峰.AES加密算法在無線網絡安全中的應用[J].科技信息(科學教研),2007(22):339,348.
[5]賈旭.AES算法的安全性分析及其優化改進[D].吉林大學,2010.endprint
2.2 無線健壯安全認證協議中的AES算法
無線健壯安全認證協議(WRAP),是基于128位的AES-OCB模式的加密算法[1]。AES算法所采用的操作模式OCB(Offset Codebook)是使用AES算法進行塊加密,該方法首先將要加密的明文分成x個數據塊,每個數據塊的長度是128bit,將這x個數據塊使用AES加密運算,這時可以生成x個加密數據塊, 拼接起這x個加密數據塊,與MIC、重放計數器(Replay Counter)三者一起作為加密數據負載,從而完成對明文數據的加密過程。在WRAP中,AES的主要是在WRAP的數據封裝過程的數據處理的各個階段中,其中產生密鑰的過程是先通過802.1X協議建立鏈接,從而構建臨時密鑰,媒體訪問控制(MAC)是通過連接請求應答以及臨時密鑰這三者一起通過密鑰產生算法生成加密密鑰[3]。此后媒體訪問控使用WRAP數據封裝算法,利用加密密鑰對所有即將發送的單MAC服務數據單元(MSDU,MAC Service Data Unit)進行保護,而在數據加密之前,傳輸端根據所要發送的MSDU來選擇合適的封裝方式。再之后傳輸端對MSDU分組個數(其中AES分組長度為128bit)進行檢驗,如此即可選擇適合的重放計數器[4]。之后設備使用WRAP臨時加密密鑰和Nonce對明文MSDU數據進行加密[5]。
3 AES算法密鑰擴展及優化改進
3.1 AES算法優化方法
從以上AES算法的加密和解密工作原理中,我們可以發現,在這些過程中存在著非常多的移位,而這些操作指令都非常耗時,并且也無法和其余指令結合組成流水線,這種情況非常嚴重地影響了算法的執行效率。再者,輪加密采用循環變換的方法,循環變換有一定機率會造成指令流水線的阻斷和指令預取的作廢[4]。
3.2 輪函數的優化
在AES算法的實現過程中中,輪函數有4種變換方式,我們可以通過改進和優化每個變換從而提高加密速度。如在實現ByteSub變換、MixColumn 02乘03乘、InvByteSub和InvMixColumn中的09,0D,0B,0E乘等使用查表的方法。如在實現ByteSub變換、MixColumn02乘03乘、InvByteSub和InvMixColumn中的09,0D,0B,0E乘等使用查表的方法。這樣可以部分提高算法性能。如果在AES輪函數的操作中,將這4個操作統一采用一次查表的方法實現,如此即可大大提高算法的速度。首先設X是密鑰數組,用xi,j表示X中第i行第j列的元素,xj表示X的j列 。
3.3 優化字節與字之間的相互轉換
在AES算法中,密鑰擴展以及加密和解密時主要是以字為單位進行處理的。所以通過優化這一部分可以得到性能上的提高。
字節到字的轉換代碼:
uint32 get_word(pt)
//pt 指向待轉換字節的最高位字節
{ m=((uint32)(pt)[0]<<24)
((uint32)(pt)[1]<<16)
((uint32)(pt)[2]<<8)
((uint32)(pt)[3])
return m;
}
改進后的的字節轉換代碼為:
void get_word(uint8*b,uint32*m)
//b指向四個字節的最低位
{ *m=*((uint32*)b)//m指向轉換后的字
}
同理,改進后的字到字節的轉換代碼:
void put_word(uint32*m,uint8*b)
//將1個字轉換成4個字節
{ uint8*b=(uint8*)(m);
//b指向轉換后的字節的最低位字節
*(b+1)=*(p+1);
*(b+2)=*(p+2);
*(b+3)=*(p+3);
}
3.4 AES算法解密密鑰生成
字節移位和S盒變換實現了加密密鑰的優化和改變,與此相對,解密密鑰亦可用同等方法進行研究與改進。設a0,a1,a2,a3為一個字的4個字節,b0,b1,b2,b3為a0,a1,a2,a3經過InvMixColumn變換的結果。該變換可表示為InvMixColumn(x)=T-1(S[x])綜合上述式子可得如下結論:
InvRoundKey[i]=InvMixColumn(RoundKey[N-i])=T-1(S[RoundKey[N-i]])(i=0,i=N除外)即解密密鑰可以利用加密密鑰、T-1表和S表實現。
4 測試與性能比較
AES算法支128位、192位、256位的密鑰長度,這里使用FIP(Sfederal Information Processing Standards)出版的FIPS-PUB 197所給出的例子來進行測試。在當前測試環境下,因為每一個分組用AES算法加密的時間是10-6秒數量級,所以采用重復加密N次的方法來測試加密時間。以下是測試結果比較。
從以上兩表對比可以看出,本文所做的改進和優化在一定程序上實現了對現在AES算法的基本功能,而且速度也提高了1.3522-1.6521倍左右。
5 結語
文章對深入的分析了AES算法在無線網絡中使用的方法和過程,并且優化和改進了算法的性能和效率。對AES算法的改進策略主要包括用一次查表的方法改進AES輪函數;通過指針類型轉換來優化字節與字之間的轉換以及加密解密函數中的移位操作,通過查表的方法進一步改進解密密鑰生成函數。通過測試證明,本例所優化改進的AES算法既實現了AES算法的基本功能,又使得加密速度比原來提高了大約1.3522-1.6521倍左右。
AES加密算法作為國際通用的數據安全加密標準,有著高效率、高安全性、高性能、方便和優雅一系列優點,在應用到無線網絡的過程中,為無線網絡的安全直到了很好防護作用。隨著智能手機和平板的不斷發展,無線網絡普及程度越來越高,AES加密算法在加密領域應用會不斷優化,無線網絡的應用會更加安全。
參考文獻:
[1]楊改貞.AES加密算法在無線網絡安全中的應用[J].長沙通信職業技術學院學報,2006(3):62-64.
[2]王瑩,何大軍.AES加密算法的改進與實現[J].電腦編程技巧與維護,2010(17):84-86.
[3]吳小博.AES加密算法分析與C++編程實現[J].計算機安全,2007(12):45-46.
[4]韓笑峰.AES加密算法在無線網絡安全中的應用[J].科技信息(科學教研),2007(22):339,348.
[5]賈旭.AES算法的安全性分析及其優化改進[D].吉林大學,2010.endprint
2.2 無線健壯安全認證協議中的AES算法
無線健壯安全認證協議(WRAP),是基于128位的AES-OCB模式的加密算法[1]。AES算法所采用的操作模式OCB(Offset Codebook)是使用AES算法進行塊加密,該方法首先將要加密的明文分成x個數據塊,每個數據塊的長度是128bit,將這x個數據塊使用AES加密運算,這時可以生成x個加密數據塊, 拼接起這x個加密數據塊,與MIC、重放計數器(Replay Counter)三者一起作為加密數據負載,從而完成對明文數據的加密過程。在WRAP中,AES的主要是在WRAP的數據封裝過程的數據處理的各個階段中,其中產生密鑰的過程是先通過802.1X協議建立鏈接,從而構建臨時密鑰,媒體訪問控制(MAC)是通過連接請求應答以及臨時密鑰這三者一起通過密鑰產生算法生成加密密鑰[3]。此后媒體訪問控使用WRAP數據封裝算法,利用加密密鑰對所有即將發送的單MAC服務數據單元(MSDU,MAC Service Data Unit)進行保護,而在數據加密之前,傳輸端根據所要發送的MSDU來選擇合適的封裝方式。再之后傳輸端對MSDU分組個數(其中AES分組長度為128bit)進行檢驗,如此即可選擇適合的重放計數器[4]。之后設備使用WRAP臨時加密密鑰和Nonce對明文MSDU數據進行加密[5]。
3 AES算法密鑰擴展及優化改進
3.1 AES算法優化方法
從以上AES算法的加密和解密工作原理中,我們可以發現,在這些過程中存在著非常多的移位,而這些操作指令都非常耗時,并且也無法和其余指令結合組成流水線,這種情況非常嚴重地影響了算法的執行效率。再者,輪加密采用循環變換的方法,循環變換有一定機率會造成指令流水線的阻斷和指令預取的作廢[4]。
3.2 輪函數的優化
在AES算法的實現過程中中,輪函數有4種變換方式,我們可以通過改進和優化每個變換從而提高加密速度。如在實現ByteSub變換、MixColumn 02乘03乘、InvByteSub和InvMixColumn中的09,0D,0B,0E乘等使用查表的方法。如在實現ByteSub變換、MixColumn02乘03乘、InvByteSub和InvMixColumn中的09,0D,0B,0E乘等使用查表的方法。這樣可以部分提高算法性能。如果在AES輪函數的操作中,將這4個操作統一采用一次查表的方法實現,如此即可大大提高算法的速度。首先設X是密鑰數組,用xi,j表示X中第i行第j列的元素,xj表示X的j列 。
3.3 優化字節與字之間的相互轉換
在AES算法中,密鑰擴展以及加密和解密時主要是以字為單位進行處理的。所以通過優化這一部分可以得到性能上的提高。
字節到字的轉換代碼:
uint32 get_word(pt)
//pt 指向待轉換字節的最高位字節
{ m=((uint32)(pt)[0]<<24)
((uint32)(pt)[1]<<16)
((uint32)(pt)[2]<<8)
((uint32)(pt)[3])
return m;
}
改進后的的字節轉換代碼為:
void get_word(uint8*b,uint32*m)
//b指向四個字節的最低位
{ *m=*((uint32*)b)//m指向轉換后的字
}
同理,改進后的字到字節的轉換代碼:
void put_word(uint32*m,uint8*b)
//將1個字轉換成4個字節
{ uint8*b=(uint8*)(m);
//b指向轉換后的字節的最低位字節
*(b+1)=*(p+1);
*(b+2)=*(p+2);
*(b+3)=*(p+3);
}
3.4 AES算法解密密鑰生成
字節移位和S盒變換實現了加密密鑰的優化和改變,與此相對,解密密鑰亦可用同等方法進行研究與改進。設a0,a1,a2,a3為一個字的4個字節,b0,b1,b2,b3為a0,a1,a2,a3經過InvMixColumn變換的結果。該變換可表示為InvMixColumn(x)=T-1(S[x])綜合上述式子可得如下結論:
InvRoundKey[i]=InvMixColumn(RoundKey[N-i])=T-1(S[RoundKey[N-i]])(i=0,i=N除外)即解密密鑰可以利用加密密鑰、T-1表和S表實現。
4 測試與性能比較
AES算法支128位、192位、256位的密鑰長度,這里使用FIP(Sfederal Information Processing Standards)出版的FIPS-PUB 197所給出的例子來進行測試。在當前測試環境下,因為每一個分組用AES算法加密的時間是10-6秒數量級,所以采用重復加密N次的方法來測試加密時間。以下是測試結果比較。
從以上兩表對比可以看出,本文所做的改進和優化在一定程序上實現了對現在AES算法的基本功能,而且速度也提高了1.3522-1.6521倍左右。
5 結語
文章對深入的分析了AES算法在無線網絡中使用的方法和過程,并且優化和改進了算法的性能和效率。對AES算法的改進策略主要包括用一次查表的方法改進AES輪函數;通過指針類型轉換來優化字節與字之間的轉換以及加密解密函數中的移位操作,通過查表的方法進一步改進解密密鑰生成函數。通過測試證明,本例所優化改進的AES算法既實現了AES算法的基本功能,又使得加密速度比原來提高了大約1.3522-1.6521倍左右。
AES加密算法作為國際通用的數據安全加密標準,有著高效率、高安全性、高性能、方便和優雅一系列優點,在應用到無線網絡的過程中,為無線網絡的安全直到了很好防護作用。隨著智能手機和平板的不斷發展,無線網絡普及程度越來越高,AES加密算法在加密領域應用會不斷優化,無線網絡的應用會更加安全。
參考文獻:
[1]楊改貞.AES加密算法在無線網絡安全中的應用[J].長沙通信職業技術學院學報,2006(3):62-64.
[2]王瑩,何大軍.AES加密算法的改進與實現[J].電腦編程技巧與維護,2010(17):84-86.
[3]吳小博.AES加密算法分析與C++編程實現[J].計算機安全,2007(12):45-46.
[4]韓笑峰.AES加密算法在無線網絡安全中的應用[J].科技信息(科學教研),2007(22):339,348.
[5]賈旭.AES算法的安全性分析及其優化改進[D].吉林大學,2010.endprint