藍(lán)牙鏈路層加密算法—EO加密算法

不少人認(rèn)為藍(lán)牙的安全體系是產(chǎn)生問題的重災(zāi)區(qū),會被任何稍有能力的投機(jī)者攻破。相反,另一些人則認(rèn)為藍(lán)牙的安全性已經(jīng)足夠好了。這其實取決于你想用藍(lán)牙來做什么。對于普通用戶而言,大部分信息都不值得花比信息本身更高的代價去破解。但如果要將藍(lán)牙用于商業(yè)、金融業(yè)、軍事業(yè)等來傳輸極具價值的信息,那么就有必要了解藍(lán)牙的安全能力。下面我們就將具體分析一下藍(lán)牙鏈路層所采用的加密算法EO的安全性。

一、EO加密算法簡介

EO加密算法是藍(lán)牙鏈路層的加密算法,屬于流加密方式,即將數(shù)據(jù)流與密鑰比特流進(jìn)行異或運算。對每一分組的有效載荷的加密是單獨進(jìn)行的,它發(fā)生在循環(huán)冗余校驗之后,前向纖錯編碼之前。主要原理是利用線性反饋移位寄存器產(chǎn)生偽隨機(jī)序列,從而形成可用于加密的密鑰流,然后將密鑰流與要加密的數(shù)據(jù)流進(jìn)行異或,實現(xiàn)加密。解密時把密文與同樣的密鑰流再異或一次就可得到明文。

關(guān)于EO加密算法如圖1所示。

藍(lán)牙鏈路層加密算法—EO加密算法

EO加密算法主要有:線性反饋移位寄存器組(Linear Feedback Shift Registcr,LFSR),(LFSR1~4)、組合邏輯和復(fù)合器(Blend)3部分組成,其中Blend中T1和T2為線性變換網(wǎng)絡(luò),Z-1為延遲網(wǎng)絡(luò)。LFSRs的長度分別為25、31、33、39。采用多個LFSR是為了增加生成的偽隨機(jī)序列的長度和隨機(jī)性。當(dāng)產(chǎn)生加密流時,LFSRs需要賦予初值(種子)。四個LFSR再加上各是兩位的Ct和Ct+1共計132位,由主設(shè)備地址ADR(48位)、時鐘CL(26位)和鏈路層加密私鑰Kc(最多128位)提供,Kc由E3算法產(chǎn)生的。種子進(jìn)入LFSRs的安排由圖2給出。

藍(lán)牙鏈路層加密算法—EO加密算法

圖中的材是由K變換得來。當(dāng)LFSRs開始進(jìn)行工作時,先產(chǎn)生的200位數(shù)據(jù)的后128位再次作為LFSRs的種子,而G和CI的值被保留,這時產(chǎn)生的偽隨機(jī)序列就是加密所用的密鑰比特流。之所以采用這樣的兩級加密是為了增加安全性,即使破解出第二級加密,也還必須破解第一級加密才能知道加密私鑰Kc。

二、對EO加密流產(chǎn)生器的基本攻擊

這種攻擊是基于給定有限的(132位左右)輸出加密流,重新導(dǎo)出LFSRs的初始值。輸出的加密流可以通過某種方式獲得的明文和密文按位異或得到。這種攻擊對兩級加密流的產(chǎn)生器都是有效的。攻擊時,假定
已知Blend、LFSRI和LFSR2內(nèi)容的初始設(shè)置,當(dāng)已知輸出的加密流時,雖不能輸出LFSR3和LFSR4的確切值,但也能推導(dǎo)出LFSR3和LFSR4的異或值。由圖l中得知在,時刻輸出密流Zt為LFSRs的輸出(即Xt1~Xt4)與C,O (Cr的低位)的異或結(jié)果。Xt3和Xr的異或值也可視作Xt3和Xt4的約束條件,把多位加密流得到的約束條件形成約束集,稱為三。首先,把Z初始化為空。然后進(jìn)行如下第一搜索,攻擊算法的基本步驟為:

(1)設(shè)當(dāng)前所測狀態(tài)為f(開始時t=0)。計算Xt1. Xt1、Cto和zr的異或值,輸出應(yīng)和Xt3與Xt4的異或值一致。

(2)如果異或值為零,那么在三中加入約束條件Xt3、Xt4都為0或都為1。

(3)如果異或值為1,那么在L中加入約束條件Xt3≠Xt4。

(4)如果t≥33,那么在L中的約束條件含有LFSR3的反饋鏈。如果,t≥39,在三中的約束條件含有LFSR4的反饋鏈。在這兩種情況下,如果新加入的約束條件與L中已有的約束相矛盾,這說明事先所做的關(guān)于Blend、LFSRI和LFSR2的假設(shè)不對,此時必須考慮假設(shè)其他情況。

(5)如果約束條件不矛盾,則計算Blcnd的次態(tài)。次態(tài)取決于現(xiàn)態(tài)和LFSRs輸出1的個數(shù)。

(6)如果把t≥132,那么有很高的概率可以發(fā)現(xiàn)密流產(chǎn)生器的初始設(shè)置。如果不能,則繼續(xù)搜索狀態(tài)t+1。

該加密算法中有兩點值得注意:先是Blend的次態(tài)取決于現(xiàn)態(tài)和LFSRs輸出l的個數(shù)。因此,本文可以假定LFSR3和LFSR4不同而不需要知道哪個是0哪個是1,只要知道它們不同即可繼續(xù)搜索。其次在約束條件集合E中的約束可以被有效的檢測是否矛盾。

下面分析這種攻擊手段的有效性。首先,考慮假設(shè)LFSR1、LFSR2的內(nèi)容和Blend的狀態(tài)都是正確。在任意t時刻,Xt3和Xt4的和(稱為S)有兩種情況:

(1)當(dāng)Xt3和Xt4的異或值為1,s=1。Blend的次態(tài)Ct+1就已經(jīng)決定了,因為次態(tài)只取決于現(xiàn)態(tài)和LFSRs輸出1的個數(shù)。此時可直接進(jìn)行Zt+1的分析。

(2)當(dāng)Xt3和Xt4的異或值為0時,S∈{0,2}。 Blend的次態(tài)Ct+1要分別考慮s=o和s=2兩種情況,此時需要分支考慮Zt+1。如果把對Z的分析看作結(jié)構(gòu)樹的根節(jié)點,以后的Z的位的分析,則可看作對結(jié)構(gòu)樹的分支。這個結(jié)構(gòu)樹的深度為33+39=72(即LFSR3和LFSR4的長度和)。由于對Z的每位,有一半的概率要分支,平均來看,對Z的每位平均分支0.5次,同時平均得到1.5個約束條件(無分支時有一個,分支時有兩個),所以結(jié)構(gòu)樹的分支數(shù)為272/3=224枝,這數(shù)值也就是進(jìn)行搜索的工作量。而最初假設(shè)的位數(shù)為60位(LFSRI和LFSR2共56位,Blend的現(xiàn)態(tài)和次態(tài)共4位),要得到正確的假定平均需要試259次,因此總的時間復(fù)雜度平均為0(239+24)=0(283)。這是基本的攻擊方法,還可以利用一些特殊條件對攻擊進(jìn)行進(jìn)一步的優(yōu)化。

三、對EO密流生成器的優(yōu)化攻擊

為了優(yōu)化攻擊第二層密流生成器,如果LFSR3和LFSR4的異或輸出有很高的漢明碼重,那么攻擊會更有效口為了利用這一點,本文通過假設(shè)擴(kuò)展攻擊,假設(shè)在一個密流的特殊點,LFSR3和LFSR4的異或為N
個連續(xù)的1(N33+39)。由于LFSR的輸出在這個長度上隨機(jī)且相互獨立,在N+k個輸出長度上產(chǎn)生這樣一個序列的可能性為k.2-N(因為k<<2-N)。如果有的話,整個工作量將小于0(N.2(72-N)/3),同時明文的需要量不小于2N+132_N。因為當(dāng)LFSR3和LFSR4的異或值為1時是不需要對結(jié)構(gòu)樹進(jìn)行分支的。部分理論值由表1給出,同時給出了全部搜索所需要的次數(shù)。

藍(lán)牙鏈路層加密算法—EO加密算法

形式上,EO加密算法如下:

(1)在已知密流中選擇132個連續(xù)的已知位;

(2)循環(huán)4位的Blender FSM、25位的LFSRI和最后的30-n位的LFSR2的狀態(tài);

(3)計算開始的LFSR2狀態(tài)的n+1位,使得LFSR3和LFSR4的異或輸出為一個1;

(4)在這一設(shè)置上運行基本攻擊,如果發(fā)現(xiàn)恒定的初始值則停止。

以上算法將運行2的59-n次方次基本攻擊,對一個單個的位置成功的可能性為2的-n次方,應(yīng)當(dāng)注意,即使是一個單個的數(shù)據(jù)包,其凈荷長度最大為2745位,如果可以得到多個包的明文,就可以得到超過2 745位的密流。所有需要的下一步攻擊是如何知道對任何一個包(Packet)來說,第二層密流產(chǎn)生器的初始設(shè)置。如果可能得到多個包,逐個去試它們,就能成功地找到任何一個包的初始設(shè)置。

四、對藍(lán)牙EO加密算法的改進(jìn)

根據(jù)以上的分析以及可能存在的攻擊可以看出,EO加密算法的主要弱點在于圖1中的yt信號是由LFSRs的輸出位Xt1、Xt2、Xt3、Xt4簡單的求和而得,當(dāng)?shù)弥魏嗡鼈兊漠惢蚪Y(jié)果很容易推出復(fù)合器的次態(tài),以上的攻擊手段都是在利用這一點進(jìn)行的。因此可以針對這一點進(jìn)行如下的改進(jìn),如圖3所示,把簡單的求和變成如圖所示的算法。改進(jìn)后的算法先對輸出位Xt1、Xt2、Xt3、Xt4計數(shù)再求和,這時用以上所述的攻擊手段不能奏效,因為求和的結(jié)果yt不僅與輸出位xtl、Xt2、Xt3、Xt4的現(xiàn)態(tài),也與它們的前態(tài)有關(guān)。改進(jìn)后的EO加密算法具有以下優(yōu)點:

(1)生成的加密流理論上更隨機(jī),原序列的長度最長為2的132次方-1,現(xiàn)在為最長可達(dá)2的144次方-1 。表2中所示的即改進(jìn)前后數(shù)據(jù)的對比情況。

藍(lán)牙鏈路層加密算法—EO加密算法

(2)無法進(jìn)行以上所述的攻擊手段,如果采用窮舉法進(jìn)行攻擊,工作量比以前要大212倍,因為系統(tǒng)比以前多了12個狀態(tài)。

(3)對原加密算法只做了很少的改動。一般為了速度等原因,加密算法主要部分都采用硬件實現(xiàn),改進(jìn)后的算法不需要改動算法軟件部分的內(nèi)容。

(4)改動的部分和原部分很容易進(jìn)行某種使能方式切換,這樣可以和原加密算法兼容。

EO加密算法是藍(lán)牙鏈路層加密所采用的密流加密算法,它的安全性直接影響到整個系統(tǒng)的安全性。根據(jù)我們的分析,依據(jù)所獲得的密文的長度,EO加密算法的安全性在78- 84位之間。在不改變基帶的情況下,如果要提高藍(lán)牙的安全性,只能采用公鑰加密體制進(jìn)行應(yīng)用層的加強(qiáng),例如橢圓曲線加密算法等。

小知識之基帶

Baseband 信源(信息源,也稱發(fā)終端)發(fā)出的沒有經(jīng)過調(diào)制(進(jìn)行頻譜搬移和變換)的原始電信號所固有的頻帶(頻率帶寬),稱為基本頻帶,簡稱基帶。