一種實現藍牙設備間安全交互配對認證的方法及裝置的制造方法
【技術領域】
[0001] 本發明涉及信息安全領域,尤其涉及一種實現藍牙設備間安全交互配對認證的方 法及裝置。
【背景技術】
[0002] 現有的藍牙設備之間的配對過程相對復雜,藍牙設備之間建立連接時,要先掃描 雙方的藍牙信息,選擇出待匹配的藍牙設備,再輸入雙方認可的配對碼并在驗證通過之后 才能建立連接。
[0003] 當使用環境中有多個可配對設備時,用戶必須知道要配對的終端設備的名稱,而 用戶在手動選擇時很容易產生誤操作,甚至連錯設備,另外,藍牙設備在此過程中并未發揮 硬件功能,安全性低,而且由于每次連接都需要輸入配對碼進行驗證,配對操作過程繁瑣、 準確性差、易用性差。
【發明內容】
[0004] 本發明的目的是為了解決現有技術中存在的問題,提供了一種實現藍牙設備間安 全交互配對認證的方法及裝置。
[0005] 本發明采用的技術方案是:一種實現藍牙設備間安全交互配對認證的方法,包括:
[0006] 步驟S1:當客戶端搜索到藍牙廣播包時,根據所述藍牙廣播包與對應的藍牙設備 建立藍牙連接,生成隨機數并發送至所述藍牙設備;
[0007] 步驟S2:所述藍牙設備根據接收到的所述隨機數生成哈希值并保存,并將所述哈 希值發送至所述客戶端;
[0008] 步驟S3:所述客戶端根據生成的所述隨機數,判斷接收到的所述哈希值是否正確, 如果是,則根據所述哈希值生成配對碼并顯示,并向所述藍牙設備發送配對請求,執行步驟 S4,否則報錯,結束;
[0009] 步驟S4:所述藍牙設備接收到所述配對請求后,根據保存的所述哈希值生成配對 碼并提示用戶進行配對碼比對;
[0010] 步驟S5:所述藍牙設備檢測按鍵狀態,當檢測到確認鍵按下時,配對成功,等待接 收所述客戶端發送的指令,當檢測到取消鍵按下時,配對失敗,結束。
[0011] 所述步驟S1中,所述建立藍牙連接之后,還包括:所述客戶端與所述藍牙設備協商 會話密鑰。
[0012] 所述協商會話密鑰,具體為:所述客戶端生成會話密鑰,應用預先保存的公鑰對所 述會話密鑰進行加密,將加密結果發送至所述藍牙設備,所述藍牙設備應用預先保存的私 鑰對接收到的加密結果進行解密,得到會話密鑰并保存,向所述客戶端返回協商會話密鑰 成功響應,所述客戶端將所述會話密鑰保存,協商會話密鑰成功。
[0013] 所述步驟S1中,所述生成隨機數,具體為:所述客戶端生成隨機數,根據所述隨機 數生成隨機數指令,應用所述會話密鑰對所述隨機數指令進行加密,得到加密的隨機數指 令;
[0014]所述步驟S2還包括:所述藍牙設備接收到所述加密的隨機數指令后,應用所述會 話密鑰對所述指令進行解密,判斷解密得到的數據是否是隨機數指令,是則從所述隨機數 指令中獲取所述隨機數,否則主動斷開與所述客戶端的藍牙連接并進入省電模式。
[0015]所述步驟S2中,所述根據接收到的所述隨機數生成哈希值,具體為:所述藍牙設備 獲取保存的藍牙設備的設備序列號,對所述隨機數和所述設備序列號進行哈希運算,得到 哈希值;
[0016]所述步驟S3中,所述判斷接收到的所述哈希值是否正確,具體為:所述客戶端獲取 保存的藍牙設備的設備序列號,對所述設備序列號和所述隨機數進行哈希計算,生成哈希 值,判斷生成的哈希值與接收到的哈希值是否相同,如果是,則根據接收到的哈希值生成配 對碼并顯示,并向所述藍牙設備發送配對請求,否則報錯,結束。
[0017]所述步驟S3中,所述根據所述哈希值生成配對碼,具體為:所述客戶端獲取所述哈 希值的預設位上的數據作為配對碼;
[0018] 所述步驟S4中,所述根據所述哈希值生成配對碼,具體為:所述藍牙設備獲取所述 哈希值的預設位上的數據作為配對碼。
[0019]所述步驟S3中,所述根據所述哈希值生成配對碼,具體為:所述客戶端對所述哈希 值進行預設運算生成配對碼;
[0020] 所述步驟S4中,所述根據所述哈希值生成配對碼,具體為:所述藍牙設備對所述哈 希值進行預設運算生成配對碼。
[0021] 所述步驟S1中,所述建立藍牙連接和所述生成隨機數之間,還包括:
[0022] 步驟al:所述客戶端判斷是否已與所述藍牙設備進行過配對,如果是,則執行步驟 a2,否則生成隨機數;
[0023]步驟a2:所述客戶端獲取所述客戶端中保存的客戶端唯一標識碼,將所述客戶端 唯一標識碼發送至所述藍牙設備進行驗證;
[0024]步驟a3:所述藍牙設備獲取所述藍牙設備中保存的客戶端唯一標識碼,判斷獲取 到的所述客戶端唯一標識碼與接收到的所述客戶端唯一標識碼是否相同,如果是,則配對 成功,否則生成隨機數;
[0025]所述步驟S5中,當配對成功時,還包括:所述藍牙設備將接收到的所述客戶端唯一 標識碼保存至所述藍牙設備中。
[0026]所述步驟S5中,配對成功后,還包括:
[0027]步驟bl:所述客戶端組織待簽名數據,根據所述待簽名數據生成簽名指令,將所述 簽名指令發送至所述藍牙設備;
[0028]步驟b2:所述藍牙設備從接收到的所述簽名指令中獲取待簽名數據,顯示所述待 簽名數據;
[0029]步驟b3:所述藍牙設備檢測按鍵狀態,當檢測到確認鍵按下時,執行步驟b4,當檢 測到取消鍵按下時,向所述客戶端發送簽名失敗響應,執行步驟b5;
[0030]步驟b4:所述藍牙設備對所述待簽名數據執行簽名操作,根據簽名結果生成簽名 成功響應并發送至所述客戶端,執行步驟b5;
[0031]步驟b5:所述客戶端判斷接收到的響應,如果是簽名失敗響應,則交易失敗,結束, 如果是簽名成功響應,則執行步驟b6;
[0032] 步驟b6:所述客戶端將所述簽名成功響應中的簽名結果發送至服務器進行驗證;
[0033] 步驟b7:所述客戶端接收并判斷所述服務器返回的驗證結果,如果是成功結果,則 交易成功,結束,如果是失敗結果,則交易失敗,結束。
[0034] 一種實現藍牙設備間安全交互配對認證的系統,所述系統包括:客戶端和藍牙設 備;
[0035]所述客戶端包括搜索模塊、建立連接模塊、第一接收模塊、第一生成模塊、第一發 送模塊和第一顯示模塊;
[0036] 所述搜索模塊,用于搜索藍牙廣播包;
[0037] 所述建立連接模塊,用于當所述搜索模塊搜索到藍牙廣播包時,根據所述藍牙廣 播包與對應的藍牙設備建立藍牙連接;
[0038] 所述第一接收模塊,用于接收所述藍牙設備發送的哈希值;
[0039]所述第一生成模塊,用于當所述建立連接模塊建立藍牙連接后,生成隨機數;當所 述第一接收模塊接收到所述哈希值后,根據所述哈希值生成配對碼;
[0040] 所述第一發送模塊,用于將所述第一生成模塊生成的所述隨機數發送至所述藍牙 設備;當所述第一顯示模塊顯示配對碼后,向所述藍牙設備發送配對請求;
[0041] 所述第一顯示模塊,用于顯示所述第一生成模塊生成的配對碼;
[0042] 所述藍牙設備包括第二接收模塊、第二生成模塊、存儲模塊、第二發送模塊、第二 顯示模塊和檢測模塊;
[0043] 所述第二接收模塊,用于接收所述客戶端發送的配對請求或所述隨機數;
[0044] 所述第二生成模塊,用于根據所述第二接收模塊接收到的所述隨機數生成哈希 值;當所述第二接收模塊接收到客戶端發送的配對請求時,根據所述存儲模塊存儲的哈希 值生成配對碼;
[0045] 所述存儲模塊,用于保存所述第二生成模塊生成的所述哈希值;
[0046] 所述第二發送模塊,用于將所述第二生成模塊生成的所述哈希值發送至所述客戶 端;
[0047]所述第二顯示模塊,用于顯示所述第二生成模塊生成的配對碼;
[0048]所述檢測模塊,用于當所述第二顯示模塊顯示所述配對碼后,檢測按鍵狀態,當檢 測到確認鍵按下時,配對成功,當檢測到取消鍵按下時,配對失敗。
[0049] 所述客戶端還包括第一協商模塊,用于與所述藍牙設備協商會話密鑰;
[0050] 所述藍牙設備還包括第二協商模塊,用于與所述客戶端協商會話密鑰。
[0051] 所述第一協商模塊,具體包括生成單元、加密單元、第一發送單元、第一接收單元 和第一存儲單元;
[0052] 所述生成單元,用于生成會話密鑰;
[0053] 所述加密單元,用于應用預先保存的公鑰對所述生成單元生成的所述會話密鑰進 行加密;
[0054]所述第一發送單元,用于將所述加密單元得到的加密結果發送至所述藍牙設備;
[0055] 所述第一接收單元,用于接收所述藍牙設備返回的協商會話密鑰成功響應;
[0056] 所述第一存儲單元,用于當所述第一接收單元接收到協商會話密鑰成功響應時, 將所述生成單元生成的所述會話密鑰保存;
[0057]所述第二協商模塊,具體包括第二接收單元、解密單元、第二存儲單元和第二發送 單元;
[0058]所述第二接收單元,用于接收所述客戶端發送的加密結果;
[0059] 所述解密單元,用于應用預先保存的私鑰對所述第二接收單元接收到的解密結果 進行解密;
[0060] 所述第二存儲單元,用于將所述解密單元解密得到的會話密鑰保存;
[0061 ]所述第二發送單元,用于當所述存儲單元存儲完成所述會話密鑰后,向所述客戶 端返回協商會話密鑰成功響應。
[0062] 所述第一生成模塊,具體用于生成隨機數,根據所述隨機數生成發送隨機數指令, 應用所述會話密鑰對所述發送隨機數指令進行加密,得到加密的發送隨機數指令;
[0063] 所述第二接收模塊,用于接收所述客戶端發送的所述加密的發送隨機數指令;
[0064] 所述藍牙設備還包括解密模塊、第一判斷模塊、獲取模塊和斷開模塊;
[0065] 所述解密模塊,用于應用所述會話密鑰對所述第二接收模塊接收到的所述發送隨 機數指令進行解密;
[0066] 所述第一判斷模塊,用于判斷所述解密模塊解密得到的數據是否是隨機數指令; [0067]所述獲取模塊,用于當所述第一判斷模塊判斷為是時,從所述隨機數指令中獲取 所述隨機數;
[0068]所述斷開模塊,用于當所述第一判斷模塊判斷為否時,主動斷開與所述客戶端的 藍牙連接并進入省電模式。
[0069]所述第二生成模塊,具體用于獲取保存的藍牙設備的設備序列號,對所述隨機數 和所述設備序列號進行哈希運算,得到哈希值。
[0070] 所述客戶端還包括第二判斷模塊,用于當所述第一接收模塊接收到所述哈希值 后,根據保存的藍牙設備的設備序列號和所述隨機數驗證所述哈希值是否正確,判斷為是 時,觸發所述第一生成模塊,判斷為否時,結束。
[0071] 所述第一生成模塊,具體用于獲取所述哈希值的預設位上的數據作為配對碼;
[0072] 所述第二生成模塊,具體用于獲取所述哈希值的預設位上的數據作為配對碼。
[0073] 所述第一生成模塊,具體用于對所述哈希值進行預設運算生成配對碼;
[0074] 所述第二生成模塊,具體用于對所述哈希值進行預設運算生成配對碼。
[0075] 所述客戶端還包括配對模塊,用于判斷是否已與所述藍牙設備進行過配對,判斷 為是時,觸發所述第一發送模塊,判斷為否時,觸發所述第一生成模塊;
[0076] 所述第一發送模塊,還用于獲取所述客戶端中保存的客戶端唯一標識碼,將所述 客戶端唯一標識碼發送至所述藍牙設備進行驗證;
[0077]所述第二接收模塊,還用于接收所述客戶端發送的所述客戶端唯一標識碼;
[0078]所述藍牙設備,還包括第三判斷模塊和存儲模塊;
[0079]所述第三判斷模塊,用于當所述第二接收模塊接收到所述客戶端唯一標識碼時, 獲取所述藍牙設備中保存的客戶端唯一標識碼,判斷獲取到的所述客戶端唯一標識碼與接 收到的所述客戶端唯一標識碼是否相同,判斷為是時,觸發所述存儲模塊,判斷為否時,觸 發所述第一生成模塊;
[0080]所述存儲模塊,用于將所述客戶端唯一標識碼保存至所述藍牙設備中。
[0081 ]所述存儲模塊,還用于將所述客戶端唯一標識碼保存至所述藍牙設備中。
[0082]所述第一發送模塊,還用于組織待簽名數據,根據所述待簽名數據生成簽名指令, 將所述簽名指令發送至所述藍牙設備;還用于將簽名成功響應中的簽名結果,發送至服務 器進行驗證;
[0083]所述第二接收模塊,還用于接收所述客戶端發送的所述簽名指令;
[0084]所述第二顯示模塊,還用于從所述第二接收模塊接收到的所述簽名指令中獲取待 簽名數據,顯示所述待簽名數據;
[0085]所述檢測模塊,還用于當所述第二顯示模塊顯示所述待簽名數據后,檢測按鍵狀 態;
[0086]所述第二發送模塊,還用于當所述檢測模塊檢測到確認鍵按下時,對所述待簽名 數據執行簽名操作,根據簽名結果生成簽名成功響應并發送至所述客戶端;當所述檢測模 塊檢測到取消鍵按下時,向所述客戶端發送簽名失敗響應;
[0087]所述第一接收模塊,還用于接收所述藍牙設備發送的簽名響應;還用于接收所述 服務器返回的驗證結果;
[0088] 所述客戶端還包括第五判斷模塊,用于判斷所述第一接收模塊接收到的簽名響 應,如果是簽名失敗響應,則交易失敗,結束,如果是簽名成功響應,則觸發所述第一發送模 塊;判斷服務器返回的驗證結果,如果是成功結果,則交易成功,結束,如果是失敗結果,則 交易失敗,結束。
[0089] -種實現安全配對的藍牙設備的工作方法,包括:
[0090] 步驟T1:藍牙設備啟動,組織并廣播藍牙廣播包,等待與客戶端建立藍牙連接,當 所述藍牙設備與所述客戶端建立藍牙連接時,執行步驟T2;
[0091 ]步驟T2:所述藍牙設備判斷是否接收到所述客戶端發送的隨機數,如果是,則根據 所述隨機數生成哈希值并保存,并將所述哈希值發送至所述客戶端,執行步驟T3,否則報 錯,結束;
[0092] 步驟T3:所述藍牙設備接收所述客戶端發送的配對請求,根據保存的所述哈希值 生成配對碼并顯示;
[0093] 步驟T4:所述藍牙設備檢測按鍵狀態,當檢測到確認鍵按下時,配對成功,等待接 收所述客戶端發送的指令,當檢測到取消鍵按下時,配對失敗,結束。
[0094] 所述步驟T1中,所述組織并廣播藍牙廣播包,具體為:所述藍牙設備根據所述藍牙 設備的設備序列號組成藍牙廣播包,廣播所述藍牙廣播包。
[0095] 所述步驟T1中,所述組織并廣播藍牙廣播包,具體為:所述藍牙設備從所述藍牙設 備中獲取內部保存的設備序列號,對所述設備序列號進行哈希計算,生成哈希值,根據所述 哈希值組成藍牙廣播包,廣播所述藍牙廣播包。
[0096]所述步驟T1中,所述組織并廣播藍牙廣播包,具體為:所述藍牙設備從所述藍牙設 備中獲取內部保存的設備序列號的哈希值,根據所述哈希值組成藍牙廣播包,廣播所述藍 牙廣播包。
[0097]所述步驟T2中,所述根據所述隨機數生成哈希值,具體為:所述藍牙設備獲取保存 的藍牙設備的設備序列號,對所述隨機數和所述設備序列號進行哈希運算,得到哈希值。
[0098] 所述步驟T3中,所述根據保存的所述哈希值生成配對碼,具體為:獲取所述哈希值 的預設位上的數據作為配對碼。
[0099] 所述步驟Τ3中,所述根據保存的所述哈希值生成配對碼,具體為:對所述哈希值進 行預設運算生成配對碼。
[0100] 所述步驟Τ2之前還包括:所述藍牙設備接收所述客戶端發送的客戶端唯一標識 碼,獲取所述藍牙設備中保存的客戶端唯一標識碼,判斷獲取到的所述客戶端唯一標識碼 與接收到的所述客戶端唯一標識碼是否相同,如果是,則配對成功,否則執行步驟Τ2;
[0101 ]所述步驟Τ4中,當檢測到確認鍵按下時,還包括:將接收到的所述客戶端唯一標識 碼保存至所述藍牙設備中。
[0102] 所述藍牙設備接收客戶端發送的客戶端唯一標識碼之后,還包括:所述藍牙設備 判斷是否已與所述客戶端進行過配對,如果是,則繼續,否則執行步驟Τ2。
[0103] 所述藍牙設備將所述客戶端唯一標識碼保存至所述藍牙設備中,具體為:所述藍 牙設備判斷所述藍牙設備中是否存在其他已配對的客戶端唯一標識碼,如果是,則將所述 其他已配對的客戶端唯一標識碼刪除,并將所述客戶端唯一標識碼作為已配對的客戶端唯 一標識碼保存,否則直接將所述客戶端唯一標識碼作為已配對的客戶端唯一標識碼保存。
[0104] 所述藍牙設備將所述客戶端唯一標識碼保存至所述藍牙設備中,具體為:所述藍 牙設備判斷所述藍牙設備中已配對的客戶端唯一標識碼的個數是否達到預設值,如果是, 則將其中一個已配對的客戶端唯一標識碼刪除,并將所述客戶端唯一標識碼作為已配對的 客戶端唯一標識碼保存,否則直接將所述客戶端唯一標識碼作為已配對的客戶端唯一標識 碼保存。
[0105] 所述步驟Τ1中,所述藍牙設備與所述客戶端建立藍牙連接后,還包括:所述藍牙設 備與所述客戶端協商會話密鑰。
[0106] 所述協商會話密鑰,具體為:所述藍牙設備接收所述客戶端發送的加密結果,應用 預先保存的私鑰對所述加密結果進行解密,得到會話密鑰并保存,并向所述客戶端返回協 商會話密鑰成功響應。
[0107] 所述步驟Τ2中,所述判斷是否接收到所述客戶端發送的隨機數,具體包括:所述藍 牙設備接收所述客戶端發送的指令,應用所述會話密鑰對所述指令進行解密,判斷解密得 到的數據是否為隨機數指令,如果是,則從所述隨機數指令中獲取隨機數,否則主動斷開與 所述客戶端的藍牙連接并進入省電模式。
[0108] 所述步驟Τ4中,所述等待接收所述客戶端發送的指令之后,還包括:
[0109]步驟1:所述藍牙設備接收所述客戶端發送的簽名指令,從所述簽名指令中獲取待 簽名數據,顯示所述待簽名數據;
[0110] 步驟2:所述藍牙設備檢測按鍵狀態,當檢測到確認鍵按下時,對所述待簽名數據 執行簽名操作,根據簽名結果生成簽名成功響應并發送至所述客戶端,當檢測到取消鍵按 下時,向所述客戶端發送簽名失敗響應。
[0111] -種實現安全配對的藍牙設備,包括:
[0112] 組織廣播模塊,用于當藍牙設備啟動時,組織并廣播藍牙廣播包;
[0113] 藍牙連接模塊,用于與客戶端建立藍牙連接;
[0114] 第一判斷模塊,用于與所述客戶端建立藍牙連接后,判斷是否接收到所述客戶端 發送的隨機數,判斷為是時,觸發處理模塊,判斷為否時,報錯,結束;
[0115]處理模塊,用于根據所述隨機數生成哈希值并保存;
[0116]發送模塊,用于將所述處理模塊得到的所述哈希值發送至所述客戶端;
[0117]接收模塊,用于接收所述客戶端發送的配對請求;當配對成功時,接收所述客戶端 發送的指令;
[0118]顯示模塊,用于當所述接收模塊接收到所述配對請求后,根據所述處理模塊保存 的所述哈希值生成配對碼并顯示;
[0119] 檢測模塊,用于當所述顯示模塊顯示所述配對碼后,檢測按鍵狀態,當檢測到確認 鍵按下時,配對成功,當檢測到取消鍵按下時,配對失敗。
[0120] 所述組織廣播模塊,具體用于根據所述藍牙設備的設備序列號組成藍牙廣播包, 廣播所述藍牙廣播包。
[0121] 所述組織廣播模塊,具體用于從所述藍牙設備中獲取內部保存的設備序列號,對 所述設備序列號進行哈希計算,生成哈希值,根據所述哈希值組成藍牙廣播包,廣播所述藍 牙廣播包。
[0122] 所述組織廣播模塊,具體用于從所述藍牙設備中獲取內部保存的設備序列號的哈 希值,根據所述哈希值組成藍牙廣播包,廣播所述藍牙廣播包。
[0123]所