『壹』 藍牙加密必需配對嗎
必須。兩個藍牙設備若要建立加密連接,則必須使用鏈接密鑰相互配對。藍牙(Bluetooth)是一種無線數據與語音通信的開放性全球規范,它以低成本的短距離無線連接為基礎,可為固定的或移動的終端設備提供廉價的接入服務。
『貳』 藍牙的安全機制有哪些
藍牙採取的安全機制適用於對等通信的情況,即雙方以相同的方式實現認證與加密規程。主要的安全機制為使用密鑰。它的鏈路層使用4個實體提供安全性,一個公開的藍牙設備地址,長度為48比特;認證密鑰,長度為128比特;加密密鑰,長度為8~128比特;隨機數,長為128比特。藍牙安全管理器存貯著有關設備和服務的安全信息,安全管理器將決定是否接收數據,斷開連接或是否需要加密和身份認證,它還初始化一個可信任的關系以及從用戶那裡得到一個PIN碼。
藍牙設備有兩種信任級別,即可信任和不可信任。可信任級別有一個固定的可信任關系,可以得到大多數服務。可信任設備是預先得到鑒別的。而不可信任設備所得到的服務是有限的,它也可以具有一個固定的關系,但不是可信任的。一個新連接的設備總是被認為是未知的,不可信任的。
對藍牙協議本身的攻擊可以分為兩類:主動攻擊和被動攻擊。主動攻擊是沒有被認證的第三方對傳輸過程中的數據流進行修改。主動攻擊包括偽裝、中繼、信息修改以及拒絕服務。被動攻擊可以是對傳輸內容進行竊聽,也可以是對通信模式進行監聽獲取相關信息。
2.1字管理機制
藍牙鏈字是長度為128位的隨機數,它是藍牙系統鑒權和加密的基礎。為了支持不同階段、模式的要求,藍牙系統在鏈路層上用了4種不同的字來保證系統的安全性。包括單元字KA組合字是KAB,臨時字Kmaster及初始化字Kinit。單元字KA與組合字KAB僅產生方式不同,執行的功能是完全相同的。也就是說,KAB是由兩個單元A,B共同產生的,而KA僅由一個單元A產生,因此KA在初始化階段產生後就基本不變了。系統的內存比較小時通常選擇KA,而系統對穩定性要求比較高時選擇KAB。臨時字Kmaster只是臨時取代原始字。例如,當主機想與多個子機通信時主機將用同一個加密字,因此把它存放在臨時字中,以便於使用。初始化字Kinit僅僅在初始化階段有效,也主是單元字KA,KAB產生的階段,它不僅僅是初始化階段的一個臨時字,其產生需要一個PIN。半永久性的鏈接字在特定的時間內被稱作當前鏈接字。當前鏈接字和其它
鏈接字一樣,用於鑒權和加密過程。
此外,還用到了加密字KC,加密字被LM的命令激活後將自動被改變。
另外,鑒權字和加密字在不同的階段執行不同的功能。例如:在兩個單元沒有建立連接的階段和已經建立連接的階段有很大的不同,前者必須首先產生加密字,而後者可以繼續使用上次通信的加密字。相應地不同的階段對字的管理是不一樣的。此外當主機想廣播消息,而不是一個一個地傳送消息時,需要特殊的字管理方法。正是藍牙系統有力的字管理機制,才使得系統具有很好的安全性,而且支持不同的應用模式。
2.2鏈接字的產生
初始化字Kunit的值以申請者的藍牙設備地址、一個PIN碼、PIN碼的長度和一個隨機數作為參數,通過E22演算法產生。而申請者相對校驗者而言是需要通過驗證的一方。因此,申請者需要正確的PIN碼和PIN碼的長度。一般來講,由HCI決定誰是申請者,誰是校驗者。當PIN的長度少於16個八進制數時,可以通過填充藍牙設備地址的數據使其增大,因此如果循環使用E22可以使鏈接字的長度增長為128位。初始化鏈接字Kint產生後,該單元將產生一個半永久字KA或KAB。如果產生的是一人KAB,則該單元將用一個隨機數LK_RAND周期性地加密藍牙設備地址,加密後的結果為LK_KA,而各自產生的LK_RAND與當前的鏈接字進行異或運算後,分別產生新值,永為CA和CA,然後互相交換,從而得到了對方的LK_RAND,並以對方的LK_RAND和藍牙設備地址作為參數,用E21函數產生新值LK_KB的異或運算得到組合字KAB。當KAB產生後,首先單向鑒權一次,看KAB變為當前鏈接字,而丟棄原先的鏈接字K。E22的工作原理與E21類似。