基于HCI層的藍(lán)牙傳輸加密方案

針對藍(lán)牙協(xié)議的基帶層加密方案在密鑰方面易受窮盡攻擊、中間人攻擊和EO算法容易受到代數(shù)攻擊的問題,根據(jù)藍(lán)牙設(shè)備的特點(diǎn),我們提出了一種基于HCI層的加密傳輸方案,該方案具有足夠高的安全強(qiáng)度,并且能在重傳模式下保證較高的數(shù)據(jù)速率。

一、基于HCI層的藍(lán)牙傳輸加密方案設(shè)計(jì)

主機(jī)控制器接口層(HCD處在L2CAP層與基帶層之間,是主機(jī)與設(shè)備通信的通道。通常在L2CAP層會將長的服務(wù)數(shù)據(jù)包(SDU)拆分成短的協(xié)議數(shù)據(jù)包(PDU),然后通過HCI層傳到基帶層。流量控制和重傳機(jī)制都在L2CAP進(jìn)行設(shè)定,通過HCI進(jìn)行管理和數(shù)據(jù)緩存。如果設(shè)置了流量控制和重傳機(jī)制并出現(xiàn)了傳輸錯誤的問題,在基帶層傳輸敏感數(shù)據(jù)時必須重新進(jìn)行加密和解密,在信道干擾嚴(yán)重的情況下,就會影響傳輸速度。為了解決這個問題,本文將傳輸加密方案設(shè)計(jì)在HCI層,對要傳輸?shù)囊鸭用軘?shù)據(jù)進(jìn)行緩存。

1、加密密鑰的安全獲取

為了抵抗在加密密鑰的生成過程中存在的窮盡攻擊和中間人攻擊,本文采用ECDH密鑰交換方案抵抗窮盡攻擊,同時利用預(yù)共享秘密信息的方法防止中間人攻擊,HMAC-SHA-256算法保護(hù)數(shù)據(jù)的完整性和新鮮性,協(xié)議中用Hx表示。

協(xié)議雙方經(jīng)過圖l所示的認(rèn)證過程后,就可以生成此次的會話密鑰LK,然后按照藍(lán)牙協(xié)議中規(guī)定的方法將鑒權(quán)密碼偏移(Authentication Cipher Offset,ACO)、當(dāng)前的會話密鑰和在加密協(xié)商過程中交換的隨機(jī)數(shù)送入E3算法,從而獲得安全的加密密鑰。本協(xié)議的安全性主要取決于認(rèn)證過程的安全性。

2、HCI層的加密流程

2000年10月美國國家標(biāo)準(zhǔn)和技術(shù)研究所正式宣布選擇Rijndael作為AES算法,成為一種正式的商業(yè)加密標(biāo)準(zhǔn)。業(yè)界認(rèn)為AES算法是足夠安全的,因此,本文采用AES作為敏感數(shù)據(jù)的加密傳輸算法,對數(shù)據(jù)流進(jìn)行機(jī)密性保護(hù)。

可以看到,敏感數(shù)據(jù)通過HCI進(jìn)入藍(lán)牙設(shè)備,根據(jù)藍(lán)牙的分組類型將不同的藍(lán)牙數(shù)據(jù)分類。把ACL分組數(shù)據(jù)和SCO分組數(shù)據(jù)送入AES加密模塊,然后通過藍(lán)牙射頻發(fā)送到接收設(shè)備。接收方將收到的藍(lán)牙分組后,首先判斷藍(lán)牙分組類型,如果為ACL分組或SCO分組,則利用AES算法模塊進(jìn)行解密,如果為其他分組,則直接交給主機(jī)。

3、加密方案實(shí)現(xiàn)方式

傳輸加密方案有2種實(shí)現(xiàn)方式:

(1)在藍(lán)牙設(shè)備外實(shí)現(xiàn);

(2)在藍(lán)牙設(shè)備上實(shí)現(xiàn)。

方式(1)的優(yōu)點(diǎn)是數(shù)據(jù)處理速度快,缺點(diǎn)是需要添加其他應(yīng)用程序或硬件加密設(shè)備的支持。方式(2)的優(yōu)點(diǎn)是不需要添加其他硬件設(shè)備支持,缺點(diǎn)是對藍(lán)牙設(shè)備內(nèi)部處理器的要求較高,可能影響數(shù)據(jù)傳輸速率。

本文采用方式(2),它能使設(shè)備本身具有安全性,是其他方式不可替代的??紤]到數(shù)據(jù)的傳輸速率問題,需要根據(jù)藍(lán)牙設(shè)備內(nèi)部微控制器特點(diǎn)對AES的實(shí)現(xiàn)方式進(jìn)行優(yōu)化,以獲得更好的效果。

二、關(guān)鍵模塊AES的固件實(shí)現(xiàn)

由于藍(lán)牙設(shè)備資源的限制,在藍(lán)牙設(shè)備上實(shí)現(xiàn)AES加密算法,需要對它的實(shí)現(xiàn)方式進(jìn)行改進(jìn),盡量提高算法的加密和解密速度。主要考慮以下2個方面:

(1)藍(lán)牙主機(jī)控制器主要分為2類:ARM7TDMI 32位RISC和XAP2 16位RISC處理器。

(2)藍(lán)牙設(shè)備的存儲空間為4 MB-8 MB,RAM大小為32 KB-64 KB,必須考慮代碼的大小。

因此,將AES加密算法進(jìn)行數(shù)學(xué)變換,把操作定義為字節(jié)或字上的操作,就能執(zhí)行非常有效的操作。

1、基于16位RISC處理器的實(shí)現(xiàn)改進(jìn)

對于16位RISC處理器,只能將其操作定義在8位的字節(jié)上。

(1)字節(jié)代換與行移位

用查表操作代替了基于矩陣乘法的復(fù)雜仿射變換。其中,字節(jié)代替變換為si,j= SBox[si,j],逆字節(jié)代替變換為si,j=iSBox[si,j]。

(2)列混淆變換與逆列混淆變換

列混淆變換是AES算法中最復(fù)雜的過程,它涉及字節(jié)乘和異或,由于藍(lán)牙設(shè)備本身的計(jì)算能力有限,因此建議對列混淆進(jìn)行重寫,并使用查表的方式取代乘法操作。

綜上可知,實(shí)現(xiàn)AES算法需要3張表以及存儲這些表所需的756 Byte的存儲空間。

2、基于32位RISC處理器的實(shí)現(xiàn)改進(jìn)

對于32位RISC處理器,可以將操作定義在32位的字上。首先利用代數(shù)形式定義一輪的4個變換:

上述方程用向量的線性組合表示矩陣的乘法。定義4個256字的表,每個表接受一個字節(jié)的輸入,同時輸出一個列向量。因此,基于上述等式的實(shí)現(xiàn)僅需4張表、每輪每列的4次異或以及存儲這些表所需的4 KB的存儲空間。同理,對于解密操作,也可以將一輪的4個運(yùn)算變換為上面方程的形式。

綜上可知,實(shí)現(xiàn)AES算法需要8張表及存儲這些表所需的8KB存儲空間。

三、基于HCI層的藍(lán)牙傳輸加密方案實(shí)驗(yàn)及結(jié)果分析

本文通過在CSR公司的BC04芯片和RF Micro Devices公司的SiW4000芯片上編寫了固件程序,并利用它們傳輸了長度為1MB的文件,然后對密鑰生成速度和安全性、數(shù)據(jù)加密和解密速度等測試結(jié)果進(jìn)行了分析。

1、密鑰生成分析

新的密鑰生成方案采用改進(jìn)的ECDH協(xié)議,安全強(qiáng)度明顯優(yōu)于藍(lán)牙規(guī)范中簡易的DH協(xié)議方案,而密鑰生成速度則比原來略慢。

2、加密和解密處理速度分析

加密和解密處理速度測試結(jié)果如圖4所示??梢园l(fā)現(xiàn),本方案的加密速度在非重傳模式下低于藍(lán)牙規(guī)范的基帶層傳輸加密方案,而在重傳模式下接近甚至等于協(xié)議的傳輸加密方案。另外,AES加密算法的安全強(qiáng)度遠(yuǎn)遠(yuǎn)高于EO算法。

3、整體性能分析

通過以上2項(xiàng)分析可以得出如下結(jié)論:

(l)與藍(lán)牙規(guī)范提出的基帶層加密方案相比,本方案的優(yōu)點(diǎn)是加密密鑰更加安全,能夠抵抗以前的攻擊。

(2)加密算法采用了AES分組密碼算法,相對于EO算法或DES算法,其安全性更高。

(3)加密的位置處于HCI層,在流量控制和重傳機(jī)制下,可以避免多次加密無用的數(shù)據(jù)。

(4)針對性更強(qiáng),對不需要加密的數(shù)據(jù)進(jìn)行了過濾,如命令分組、事件分組。

小知識之HCI

是一門交叉學(xué)科,主要研究關(guān)于設(shè)計(jì)、實(shí)現(xiàn)和評價供人們使用的交互計(jì)算系統(tǒng)以及有關(guān)這些現(xiàn)象進(jìn)行研究的科學(xué)。