藍牙信息安全改進管理論文

時間:2022-06-25 06:14:00

導語:藍牙信息安全改進管理論文一文來源于網友上傳,不代表本站觀點,若需要原創文章可咨詢客服老師,歡迎參考。

藍牙信息安全改進管理論文

摘要:重點分析了藍牙信息安全機制,對其各部分的算法及實現步驟進行了詳細討論。并對現有藍牙規范安全性做了一定的評估,根據其不足提出了由DES算法構建的一種新的安全機制,能夠滿足安全性要求較高的藍牙應用。

關鍵詞:藍牙密鑰DES算法安全機制

藍牙作為一種新興的短距離無線通信技術已經在各個領域得到廣泛應用,它提供低成本、低功耗、近距離的無線通信,構成固定與移動設備通信環境中的個人網絡,使得近距離內各種信息設備能夠實現無縫資源共享。

由于藍牙通信標準是以無線電波作為媒介,第三方可能輕易截獲信息,所以藍牙技術必須采取一定的安全保護機制,尤其在電子交易應用時。為了提供使用的安全性和信息的可信度,系統必須在應用層和鏈路層提供安全措施。

本文重點討論了藍牙信息安全機制的構成原理及相關算法,并指出其在安全性方面存在的不足與問題。因為對于大多數需要將保密放在首位來考慮的應用來說,藍牙現行標準所提供的數據安全性是不夠的。藍牙現行規范采用的128位密鑰長度的序列的加密在某些情況下可以被破解。本文同時提出了一種藍牙安全機制的改進方案,即采用DES加密體制構建強健的加鑰算法,能夠在計算上證明此加密算法是安全可靠的。

1藍牙的安全機制

藍牙采取的安全機制適用于對等通信情況,即雙方以相同方式實現認證與加密規程。鏈路層使用4個實體提供安全性:一個公開的藍牙設備地址,長度為48bit;認證密鑰,長度為128bit;加密密鑰,長度為8~128bit;隨機數,長度為128bit。以下重點討論藍牙安全機制的組成及相關算法。

1.1隨機數發生器

隨機數發生器在藍牙標準中有重要應用,例如在生成認證密鑰和加密密鑰中以及查詢-應答方案中等。產生隨機數的理想方法是使用具有隨機物理特性的真實隨機數·發生器,例如某些電子器件的熱噪聲等,但是在實際應用中通常利用基于軟件實現的偽隨機數發生器。藍牙系統對于隨機數的要求是“隨機生成”和“非重復性”。“隨機生成”是指不可能以明顯大于零的概率(對于長度為L位的藍牙加密密鑰,概率大于1/2L)估計出隨機數值。

目前在眾多類型的偽隨機數發生器中,線性同余發生器(LinearCongruentialGenerator)被最廣泛地研究與使用。其表達式為:

Xn+1=αXn+c(modm)n≥0。

式中α和c為常量,m為模數,均為正整數。αXn+c對m作模運算后得到Xn+1。開始時以某種方式給出一個種子數X0;然后使用前一個隨機整數Xn生成下一個隨機整數Xn+1,由此產生整數隨機數列{Xn}。

1.2密鑰管理

藍牙單元密鑰長度不能由單元制造者預置,不能由用戶設置。藍牙基帶標準規定不接收由高層軟件給出的加密密鑰以防止使用者完全控制密鑰長度。

1.2.1密鑰類型

鏈路密鑰是一個128位隨機數,為通信雙方或多方共享的臨時性或半永久性密鑰。半永久性鏈路密鑰可以用于共享鏈路單元之間的幾個相繼認證過程中。臨時密鑰的典型應用是:在點對多點通信情況下,同一信息需要安全地發往多個接收端,這時采用主單元密鑰取代當前鏈路密鑰。藍牙標準定義了四種鏈路密鑰:①聯合密鑰KAB;②單元密鑰KA;③臨時密鑰Kmoster;④初始化密鑰Kinit。此外還定義了加密密鑰Kc,由當前鏈路密鑰生成。對藍牙單元來說,單元密鑰KA在單元A中生成,依賴于該單元,很少改變。聯合密鑰KAB。由單元A、B方共同生成。臨時密鑰Kmoster僅在當前會話中使用,也稱主單元密鑰。初始化密鑰Kinit是藍牙初始化過程中使用的鏈路密鑰。該密鑰由一個隨機數、一個通常為十進制的PIN碼以及發起單元的藍牙設備地址BD_ADDR生成。PIN碼可由用戶選擇也可以是隨藍牙一起提供的固定數。目前大多數應用中PIN碼為4位的10進制數,無法提供較高的安全性。藍牙基帶標準要求PIN碼長度為1~16位,因此建議盡量使用較長的PIN碼以增強安全性。

1.2.2密鑰生成與初始化

每一對要實現認證與加密的藍牙單元都要執行初始化過程,其過程由以下幾部分組成:

(1)生成初始化密鑰Kinit:為初始化過程中臨時使用的鏈路密鑰。該密鑰由E22算法及相關參數生成,其生成原理圖見圖1。E22輸出的128位初始化密鑰Kinit用于鏈路密鑰的交換分配過程。如果申請者與證實者沒有交換過鏈路密鑰,則Kinit用于認證過程,否則不再使用。該過程必須保證能夠抵御一定的攻擊,例如攻擊者使用大量的假藍牙地址BD_ADDR來測試大量PIN等,如果設備地址固定則每次測試PIN碼等待間隔應按指數增加。

(2)認證:如果兩個單元沒有發生過通信聯系,則使用初始化密鑰作為鏈路密鑰。每次執行認證規程,均新隨機參數AU_RANDA。在相互認證中,首先在一個方向執行認證規程,成功后再反向執行認證。認證成功將得到一個輔助參數ACO,即認證加密偏移量。它將用于生成加密密鑰。

(3)生成單元密鑰:單元密鑰在藍牙單元首次運行時生成,根據E21算法生成并幾乎不改變。初始化時,通信雙方通常選用一個內存容量較少的單元中的密鑰作為鏈路密鑰。

圖3

(4)生成聯合密鑰:聯合密鑰是分別在A單元與B單元中生成的兩個數字的組合。生成過程是:每個單元生成隨機數LK_RANDA與Lk_RANDB,采用E21算法與各自的隨機數、藍牙地址分別生成另一個隨機數LK_KA與LK_KB,并通過其他操作后兩個單元得出聯合密鑰。然后開始互相認證過程以確認交互過程成功。聯合密鑰交換分配成功后將放棄使用原鏈路密鑰。

(5)生成加密密鑰:加密密鑰Kc根據E3算法,由當前鏈路密鑰、96bit“加密偏移數”COF和一個128bit隨機數導出。

(6)點對多點配置情況:實際上,主單元通知幾個從單元使用一個公共鏈路密鑰廣播加密消息,在多數應用中這個公共鏈路密鑰是臨時密鑰,記為Kmoster。Kmoster被從單元接收后便可用它替代原鏈路密鑰Kmoster的產生過程為:首先由2個128bit的隨機數RAND1與RAND2生成新鏈路密鑰Kmoster:Kmoster=E22(RAND1,RAND2,16)。然后將第3個隨機數RANO發往從單元,主、從單元根據E22、當前鏈路密鑰及RAND計算出128bit擾亂碼overlay,主單元將overlay與新鏈路密鑰按位“異或”結果發送給從單元,再計算出Kmoster。在后面的認證過程中計算出一個新ACO值。

1.3加密規程

對有效載荷加密通過流密碼算法實現,流密碼與有效載荷同步,加密原理圖如圖2所示。流密碼系統由三部分組成:執行初始化、生成密鑰流比特、執行加密或解密。有效載荷密鑰生成器將輸入比特流以恰當順序進行組合并移人密鑰流生成器使用的4個線性反饋移位寄存器LFSR。第二部分是主要部分,密鑰流比特根據Massey與Rueppel提出的方法生成,該方法經過一定的分析與研究,證明具有較高的加密性能,但此法可能受到相關攻擊,其改進方法在本文后面詳細描述。

1.3.1商定加密密鑰長度與加密模式

實現基帶標準的藍牙設備需要定義最大允許密鑰字節長度Lmax,1≤Lmax≤16。在生成加密密鑰前,有關單元必須商定密鑰實際長度。主單元將建議值L(M)sug發送給從單元。如果L(S)min≤L(M)min并且從單元支持建議值,從單元對此給予確認,L(M)min成為本鏈路加密密鑰長度值。如果不滿足上述條件,從單元將向主單元發送新的建議值L(S)min〈L(M)sug,主單元對此建議評估。重復此規程直至達成協議或一方放棄商談。

1.3.2加密算法

加密規程使用流密碼加密。加密系統使用線性反饋移位寄存器(LFSRs),寄存器系統輸出由具有16狀態的有限狀態機進行組合,狀態機輸出或是密鑰流序列,或是初始化階段的隨機初始值。加密算法需要提供加密密鑰、48bit藍牙地址、主單元時鐘比特與128bit隨機數RAND,加密算法原理如圖3所示。

其中,有4個LFSR(LFSR1,…,LFSR4),比特長度分別為L1=25,L2=31,L3=33,L4=39,反饋多項式(抽頭多項式,特征多項式)。4個寄存器長度之和是128bit。

這些多項式都是本原多項式,漢明重量都為5,可以兼顧生成序列具有良好的統計特性與減少硬件實現所需要的異或門數兩方面的要求。

令xit表示LFSRit時刻輸出狀態比特,由四元組(x1t,…,x4t)得Yt為:

,式中Yt為整數,取值為0,1,2,3或4。加法生成器輸出由下述方程給出:

式中,T1[.]與T2[.]是GF(4)上兩個不同的線性雙射。

密鑰流生成器工作前需要為4個LFSR(總共128bit)裝載初始值并且確定C0與C-14bit值,這些132bit初始值使用密鑰流生成器由規定的輸入量導出,輸入量分別為密鑰Kc、48bit藍牙地址和26bit主單元時鐘CLK26-1。加密算法初始化過程:(1)由128bit加密密鑰Kc生成有效加密密鑰,記為K'c,令L(1≤L≤16)為用8bit組數目表示的有效密鑰長度,則K'c(x)=g2(L)(x)(Kc(x)modg1(L)(x))。(2)將K'c、藍牙地址、時鐘以及6bit常數111001移入LFSR。加密算法初始化完成后,從加法組合器輸出密鑰流用于加密/解密。

1.3.2認證

藍牙技術認證實體使用所謂查驗-應答方案。通過“兩步”協議,申請者是否知道秘密密鑰使用對稱密鑰進行證實。這意味著,一個正確的申請者/證實者對,在查驗-應答方案中將共享相同密鑰Kc,證實者對于申請者是否能夠認證算法K1認證隨機數AU_RANDA,并返回認證結果SERS,進行查驗。其認證及加密密鑰生成函數可以參考相關資料,此處略。

2藍牙安全機制的方案改進

現有藍牙安全機制主要存在兩個主要問題。一個是單元密鑰的使用問題:在鑒權和加密過程中,由于單元密鑰沒有改變,第三方利用此密鑰來竊取信息。128位密鑰長度的E0序列加密在某些情況下可通過不是很復雜的方法破解。另一個是藍牙單元提供的個人識別碼(PIN碼)的不安全問題:由于大多數應用中PIN碼是由4位十進制數組成,所以采用窮舉法很容易攻擊成功。

克服這些安全性問題的解決方法除了增加PIN碼長度外,關鍵是要采取更為強健的加密算法,如用數字加密標準DES代替序列加密算法。DES是一種塊加密方法,加密過程是針對一個個數據塊進行的。在DES算法中,原始信息被分為64位的固定長度數據塊,然后利用56位的加密密鑰通過置換和組合方法生成64位的加密信息。與藍牙序列的加密算法不同,數學上可以證明塊加密算法是完全安全的。DES塊密碼是高度隨機和非線性的,其產生的密文和明文與密鑰的每一位都相關。DES的可用加密密鑰數量非常龐大,應用于每一位明文信息的密鑰都是從這個龐大數量的密鑰中隨機產生的。DES算法已經被廣泛采用并認為非常可靠。采用DES加密算法的藍牙技術可以將藍牙應用到安全性較高的應用中去,例如電子金融交易、ATM等。

2.1DES算法

1977年美國國家標準局公布了聯邦數據加密標準DES。由于DES算法保密性強,迄今尚無切實可行的破譯方法,所以DES得到了廣泛地應用。DES是一種分組密碼體制,它將明文按64位一組分成若干組,密鑰長為56位。其基本思想是采用變換的組合與迭代,將明文中的各組變為密文組。

在DES系統中,乘積變換是加密過程的核心,連續進行16次操作,每次更新一組密鑰。移位變換B是移位變換A的逆變換。圖4為DES體制加密流程,圖的右側表示DES系統的密鑰生成過程。初始密鑰是一串64bit的隨機序列。經過反復移位變換,產生16組子密鑰(K1~K16),每組子密鑰用于一次乘積變換。所謂初始重排(IP)就是打亂輸入分組內比特原有排列次序,重新排列,排列方式是固定的。

DES的一次乘積變換運算步驟為:(1)把64bit輸入碼分成左右兩組,每組32位比特,分別用Li-1和Ri-1代表。其中i代表第i次乘積變換,i=1~16。(2)把該次乘積變換輸入分組的右組32位比特變為輸出分組的左組32位比特,即Li=Ri-1。(3)輸入分組右組32位比特經過擴展操作變為48位比特碼組。(4)擴展變換輸出的48位比特與子密鑰Ki的48位比特按模2相加,輸出的48位比特分為8組,每組6位。(5)把每組6位比特進行密表(S-盒)替代,產生4位比特。輸入的6位比特的第1、6兩位決定密表內所要選擇的行數,其余4位決定密表內的列數。(6)把8組密表輸出合并為32位比特,然后與本次乘積變換輸入左組Ci-1按位模2相加,即可得到第i次乘積變換的右32位輸出Ri。

2.2DES算法的特點

DES算法具有以下特點:

(1)DES的保密性僅僅取決于對密鑰的保密,算法公開。

(2)在目前水平下,不知道密鑰而在一定的時間內要破譯(即解析出密鑰K或明文)是不可能的,至少要建立256或264個項的表,這是現有資源無法實現的。

(3)由于“雪崩效應”,無法分而破之,一位的變化將引起若干位同時變化。

綜上所述,由DES算法構建的藍牙安全機制是可靠的,采用窮舉方式攻擊是不現實的。假設有一臺每秒完成一次DES加密的機器要用將近1000年的時間才能破譯這個密碼。

以上算法能夠保持數據加密過程中與藍牙標準所需參數的一致性,它與藍牙算法產生的單元密鑰在時間實現上同處一個數量級別,符合藍牙規范要求。

本文首先重點討論了藍牙信息安全的機制構成,對其各部分的算法及實現步驟進行了詳細說明。然后對現有藍牙規范安全性做了一定的評估,并根據其不足提出了由DES算法構建新的安全方案,能夠給藍牙在安全性要求較高的應用上提供一個安全設計的改進參考。