楊曉非,趙 婷
(重慶郵電大學電工理論與新技術實驗室,重慶 400065)
藍牙技術的應用層出不窮,但與所有的有線和無線網絡通信一樣,藍牙技術也面臨著各種安全方面的攻擊和威脅,由于其無線通信的特征,藍牙數據較容易被竊聽,數據包中攜帶的安全因子成分不能過高,合法用戶的認證難度較大[1]。由于藍牙設備的硬件性能有限,其運算的速度較低,存儲空間較小,決定了其安全措施必須要簡潔和高效。雖然可以通過提高硬件性能的方法達到使用復雜加密算法的目的,但這一途徑要增加大量的成本[2]。因此,將復雜的加密算法進行消減,使之能夠應用于藍牙鑒權過程中的數據加密是一種行之有效的方法。
AES(Advanced Encryption Standard)加密算法[3]是一種安全性較高的算法,目前,256位的AES算法尚未有破解的方法。AES算法的高安全性對硬件有著較高的要求[4],而自組網方式的藍牙移動系統[5]顯然無法滿足其要求。針對這一情況,采用經典的客戶端/服務器(C/S)方式為網絡架構,服務器端采用固定設備,客戶端即為藍牙移動設備。
為了更好地使AES加密算法應用于藍牙的鑒權過程,還需要從數學理論和具體程序實現兩個角度對算法進行改進,目的是盡量減少計算的復雜度和時間,降低系統對存儲空間的需求,從而使藍牙移動設備的硬件條件能夠支持AES算法的運行。
藍牙系統中的鑒權過程是保證系統安全性的重要步驟和機制,為了獲取通信信息,對于鑒權過程的攻擊也較多,主要包括以下4 種[6]:
1)跳頻攻擊。這一攻擊方式是指攻擊者利用在藍牙網絡中可得到的節點移動身份號(MIN)和電子序列號(ESN),將自身偽裝成安全的授權節點,將通過MIN和ESN與藍牙節點建立連接,從而獲取該節點的數據信息,并可以對節點現有的數據進行破壞。
2)鏈路密鑰攻擊。藍牙設備在原始鏈路密鑰階段時,采用的PIN碼為4個自然數,采用暴力破解的方式可以較容易地得到正確的PIN碼,從而在藍牙系統處于設備密鑰產生階段時,對整個藍牙系統的安全體系進行破解。同時,由于鏈路密鑰的共享性,這一破解方式可能會造成整個安全系統的失效。
3)對加密算法實施攻擊。藍牙系統中的加密算法一般是采用序列密碼的方式,這一方式的優點在于其運算的速度較快,算法的結構簡潔,有利于硬件方法的實現。但這一加密算法的安全性不高,較容易被反射方法實施攻擊。
4)基于基帶頻率的攻擊。藍牙系統在大多數情況下是一種自組網的系統,為了保證正常通信,使用了跳頻技術。這一技術規范要求在通信雙方在實現跳頻操作時,對時鐘進行同步的校準。而攻擊者只需要利用物理方法對基帶的時鐘進行干擾,就可以使通信發生故障。
針對以上在藍牙鑒權過程中存在的4個主要隱患分屬于不同的研究領域,本文重點針對其中對加密算法實施攻擊的手段進行研究,提出將高安全性的AES加密算法經過改進后,應用于藍牙的鑒權過程,以提高藍牙鑒權過程中加密算法的安全性。
藍牙系統鑒權過程中的防范措施主要從硬件和軟件兩個角度進行考慮[7]。
硬件方面:
1)在藍牙系統中使用授權認證以及授權發布中心的功能。采用以上兩種方法后,一方面可以確保合法用戶身份的安全性,另一方面也可以保證非授權的用戶無法使用合法身份進行網絡連接,并能夠及時地發現網絡中的非法入侵者。
2)增強加密變換的安全性。藍牙系統的安全機制中,包括在跳頻時,使用產生的偽隨機序列對數據進行加密操作。在對數據進行加密的操作上,可以使用兩次加密的方式,在偽隨機數序列的使用方面,可以采用不同偽隨機序列的異或及其他計算方法,從而使加密的效果更好。
3)優化頻率管理。藍牙系統是通過無線網絡實現數據通信,具有一定的頻率,而該頻率對藍牙系統的跳頻工作機制影響較大,同時也會影響到藍牙系統的性能發揮。優化頻率管理,不僅可以使不同設備之間的負載得到更好的平衡,也可以通過限制最大頻率,防止干擾頻率攻擊。優化頻率管理可以在保證正常通信的前提下,使基帶范圍減小,從而降低被竊聽的可能性。
4)藍牙協議的優化。對鏈路層協議進行改進,使其能夠保證數據信息的分組安全和完整性,也可以在藍牙產品中提高數據干擾碼的質量,加大移位寄存器的位數。
軟件方面:
1)優化加密資源管理方法。一是強制增加PIN碼的長度,并在藍牙應用程序中提供對長PIN碼的支持。增強PIN碼的隨機性和不可預測性,使PIN碼的取值范圍擴大到暴力破解不具有意義的程度。為PIN碼設置有效期限。設備密鑰應通過數據加密后才能在不同的藍牙設備之間傳遞,鏈路密鑰也應定期更改。
2)提高整個軟件系統的安全性。加強系統服務安全性的管理,由于系統服務中的信息數據較為重要,其中還包括分組的密鑰等加密資源,因此在一般安全措施的前提下,一旦發現是系統服務,則應立即提升安全保護的級別。
3)利用高安全性加密算法。由于藍牙系統的硬件限制,復雜的、需要大量運算和存儲空間的數據加密算法無法直接應用于藍牙系統,但可以通過軟件處理的方式,設計合適的網絡架構方案,并對加密算法進行改進,使之能夠為藍牙系統提供更好的安全保護。
AES加密算法是目前使用的最為安全的數據加密方式,一般用于對安全具有特殊要求的領域,如金融系統,軍事系統等[8]。對于自組網方式的藍牙系統而言,AES加密算法的高性能要求無法應用其中,因此必須要在系統網絡架構和算法的具體實現方法上進行改進。
系統架構分為服務器端和客戶端兩個部分,其中服務器端的組成結構如圖1所示。

圖1 AES加密系統服務器端架構圖
服務器端主要是由固定服務器設備構成,圖1中大箭頭表示數據緩沖區。有線網絡模塊向服務器發出數據傳輸的請求,服務器調用AES解密模塊對數據信息進行處理,解析數據發送者的身份信息,根據解析的結果決定是否允許數據傳輸進程的開始。其中的擴展模塊可以增加運算處理單元,從而提高AES算法的處理能力和效率。
服務器端的這一結構可以控制數據的輸入和輸出端,抵御冒認攻擊。由于該架構采用類存儲器的設計方式,有較地降低了上下文的相關性,從而抵御利用網絡數據統計信息進行的攻擊。服務器端的所有功能都采用模塊化的設計方式,各模塊的內部結構與功能對外界透明,增加了攻擊的難度。
客戶端的架構如圖2所示。客戶端同樣是一個總線模式的架構。從外部看,客戶端部署于藍牙系統的移動終端上,與服務器端是C/S的網絡拓撲結構關系。當需要進行數據的傳輸時,客戶端生成授權身份號,并通過AES加解密模塊處理后提交給服務器進行驗證,并由服務器確定該客戶端的操作權限??紤]到藍牙移動設備的硬件性能有限,客戶端所需要進行的AES復雜運算都以數據包的形式發送到服務器端進行處理。

圖2 AES加密系統客戶端架構圖
與IDEA、DES等分組加密算法不同,AES加密算法中的乘法和加法操作都是在域上實現的,也就是一個典型的交換環結構[7]。AES算法是在有限域GF(28)上實現的,對于加法操作而言,由于需要處理的數值只有256個,且都是在GF(28)有限域上進行操作,其運算量較小,速度也較快,但對于乘法而言,則需要消耗大量的計算資源和時間。
標準的AES算法的乘法運算元使用的是0x01,0x02,0x03,0x09,0x0b,0x0d,0x0e。所有的乘法運算定義域和結果域均為GF(28)有限域。由以上的分析可知,AES算法是一種完全依賴于數學的算法,利用運算元的特性來進行數域變換,這也是AES算法區別于其他算法的一個重要特點。
GF(28)有限域對于乘法是封閉的,利用這一特點,對各運算元進行分析。
對于0x01運算元,GF(28)有限域中的數與之相乘,等于與乘法群的單位元進行運算,所以在域中的運算結果,與群中的運算結果相同。
對于0x02運算元,如果基數小于0x80,與0x02相乘,只需要將該數左移1位;如果基數大于或者等于0x80,則是該數與0x1b異或所得到的值再左移1位。
對于其他的乘法運算元,可以將其分解為0x01和0x02運算元的組合,以簡化乘法運算的過程。以0x03運算元為例,可將其分解為如下形式(設p為基數):p×0x03=(p×0x01)+(k×0x02)。其他的運算元也可以做類似的分解處理。
經過以上的算法優化,雖然簡化了AES算法中乘法的運算流程,但效果并不明顯。為了更好地加快AES算法中乘法的運算速度,在硬件存儲條件允許的情況下,可通過查表的方式來實現快速運算。AES算法的正向表如表1所示。

表1 AES正向乘法表(亂序)
AES逆向乘法表如表2所示。

表2 AES逆向乘法表
對于m=i·j的運算,首先在表1中找到i和j,一定可以在表2中找到a和b,以滿足m=i·j=g-1{256(a+b)}這一公式關系。由此,可以將AES乘法運算轉換為加法運算,可以極大地提高算法的運算效率。
以上,采用以空間換時間的方法,在藍牙設備的存儲器中設置兩個乘法查詢表,將傳統AES算法中代數運算轉換為查表運算,從而可以大幅提高處理的效率。由于這一方法在減少運算量的情況下,仍然覆蓋了整個GF(28)有限域,因此,其安全性并沒有受到損失。
上述對AES算法的改進,是在不改變AES安全性的前提下提高其運算的效率。而AES加密算法中的輪變化和密鑰擴展是其安全性的關鍵之處。其中,在輪變化過程中,包括了非線性變換、線性混合變換、密鑰加層3個流程。通過對輪變化過程的分析,改進后的初始密鑰生成過程如圖3所示。

圖3 藍牙AES加密算法初始密鑰的生成過程圖
以上設計的算法流程,引入了RSA算法的思想,也就是通過隨機選擇運算函數,或者采用偽隨機數異或運算操作的方法,在保證密碼強度不變的前提下,縮短了密鑰的預處理時間。具體的方法是通過一個素數與初始密鑰的異或操作來確定密鑰的隨機空間,在保證隨機空間不減少的情況下,降低了計算量。
密鑰的擴展是AES加密算法中另一個關鍵的步驟。密鑰擴展函數以原始密鑰為基礎,生成一個新的密鑰表。采用密鑰表中的多個密鑰對數據進行分段加密,從而提高數據的安全性。
在加密的過程中,針對藍牙網絡和設備的特點,主要作了如下改進:
1)利用不同長度的子密鑰有針對性地對不同長度的分組數據進行加密操作。
2)改變AES中原來的列混合變換。
3)在AES算法最后一輪函數中去除列混合變換的操作,在保證安全性的前提下,加快系統的計算速度。
對應地,對于藍牙系統中AES解密過程的改進包括以下幾點:
1)利用不同的子密鑰對不同長度的分組報文進行解密操作。
2)利用查表的方式實現解密過程中的乘法運算。
3)設計逆移位模塊與逆替代模塊之間的可互換性。
基于以上對AES加密算法的改進,設計了一套適用于藍牙系統的AES加密算法,該算法基于目前AES標準中定義的類型和數據長度,并對其中的加解密環節進行了優化,刪除了計算復雜但對安全性影響較小的模塊,并利用C語言實現了公共模板類。以加密過程為例,利用C語言在硬件層實現了數據加密密鑰的生成以及傳輸數據的讀取;利用C++語言實現了網絡層的數據包傳輸;利用C#語言在應用層實現了對數據的校驗操作。藍牙系統中AES加密模板類定義如下:
class AESClass{//定義AES模板類
void AESClass::AES_Encrypt() {//加密操作
Receive_Text_Message();//預處理明文數據
Expand_Key(UserKey);//擴展密鑰操作
Init_Key(0);
for(int i=1;i<Round-2;++i);//輪變化處理
{Round(i);}
Last_Round();
Send_Encryped_Message();
}
void AESClass::AES_Decrypt() {//AES的解密過程
Receive_Code_Message();//預處理密文數據
Expand_Key(UserKey);//擴展密鑰操作
InvLast_Round(); //Last_Round()的逆函數
for(int i=1;i<Round-2;++i);//輪變化處理
{
InvRound(i);}
InvInit_Key(0);
Send_Decryped_Message();
}
}
在該AES加密算法過程中,主要的思想是利用增加存儲空間的方式來獲取更快的運算處理速度。
為了驗證基于AES改進算法藍牙安全機制的有效性,以藍牙1.0版本作為研究工具,將藍牙的調頻模式設置為標準的連續模式,并指定AES加密密鑰的位數為128位,分別對3段報文采用非加密和AES加密兩種方式進行傳輸,得到的結果如表3所示。

表3 兩種加密模式傳輸時間仿真測試結果
由以上的仿真測試結果可以看出,將改進的AES算法應用于藍牙的安全保護,在提高安全防護能力的同時,并不會對傳輸的性能產生較大的影響。
藍牙無線網絡在鑒權過程中的數據加密,是其安全機制的重要組成部分。目前采用序列密碼方式的加密過程存在著易被攻擊的缺陷,而采用分組密碼的方式可以有效地提高系統的安全性,但對于硬件的要求較高,不適用于藍牙網絡環境。以AES加密算法為例,利用查表的方式加快其運算速度,以空間換時間的方式,設計了AES加密算法的改進方案,使其更適合于藍牙無線網絡的應用環境。
[1]NAFIE S M,DABAK A G,SCHMIDL T M,et al.Enhancements to the Bluetooth specification[J].Systems and Computers,2010,35(2):1591-1595.
[2]LANSFORD J,STEPHENS A,NEVO R.WiFi and Bluetooth:enabling coexistence[J].IEEE Network,2011,15(5):33-34.
[3]LI Xuemei,OU Haiwen,LU Erhong,et al.The implementation of AES algorithm IP core in FPGA [J].Computer Engineering and Applications,2006,24(24):84-86.
[4]ZHANG Qitao.On a hardware implementing method of the optimized AES encryption algorithm[C]//Proc.2010 Second International Conference on Multimedia and Information Technology(MMIT).[S.l.]:IEEE Press,2010:82-84.
[5]張毅,葉天翔,馬子超.面向移動終端的藍牙網關設計與實現[J].電視技術,2012,36(5):41-43.
[6]SHEPHERD R.Bluetooth wireless technology in the home[J].Electronics Communication Engineering Journal,2011,13(5):195-198.
[7]宣善立,吳永忠,韓江洪,等.藍牙技術安全研究[J].計算機工程,2009,28(9):93-95.
[8]王瑩,何大軍.AES加密算法的改進與實現[J].電腦編程技術與維護,2010(17):83-84.