藍牙設備開機,根據(jù)該藍牙設備的設備序列號的哈希值組成藍牙廣播 包,廣播該藍牙廣播包;
[0244]本實施例中,根據(jù)該藍牙設備的設備序列號的哈希值組成藍牙廣播包,具體為:
[0245]藍牙設備從藍牙設備存儲區(qū)中獲取內(nèi)部保存的設備序列號的哈希值,根據(jù)哈希值 組成藍牙廣播包;
[0246]或者,藍牙設備從藍牙設備存儲區(qū)中獲取內(nèi)部保存的設備序列號,對該設備序列 號進行哈希運算,得到哈希值,根據(jù)哈希值組成藍牙廣播包;
[0247]本實施例中,智能密鑰裝置開機包括長按確認鍵開機或藍牙連接從休眠狀態(tài)中觸 發(fā)喚醒;
[0248]本實施例中,藍牙設備存儲區(qū)中具體保存有藍牙設備的設備序列號或設備序列號 的哈希值、協(xié)商好的會話密鑰、私鑰、哈希值。
[0249]例如,藍牙設備獲取到的設備序列號為228000005808,對其進行哈希運算得到的 哈希值為bba2b007d7936788f8e6b2afa3834213bbd3ced2,根據(jù)哈希值組成的藍牙廣播包 為:
[0250] 0x02,0x01,0x06,0x03,0x02,OxFF,OxFO,0x14,Oxbb,0xa2,OxbO,0x07,0xd7, 0x93,0x67,0x88,0xf8,0xe6,0xb2,0xaf,0xa3,0x83,0x42,0x13,Oxbb,0xd3,0xce,0xd2, 0x00,0x00,0x00,其中 0x02 為廣播時間,0x01,0x06,0x03 為廣播模式,OxFF,OxFO,Ox14 為服 務通用的唯一標識碼。
[0251]步驟102:當客戶端打開藍牙連接并搜索到藍牙廣播包時,根據(jù)客戶端唯一標識碼 從服務器中獲取與該客戶端綁定的藍牙設備的設備序列號,將該藍牙設備的設備序列號保 存至客戶端存儲區(qū)中;
[0252]本實施例中,客戶端存儲區(qū)中具體保存有與該客戶端綁定的藍牙設備的設備序列 號、協(xié)商好的會話密鑰、公鑰、隨機數(shù);
[0253]本步驟還可以為:當客戶端打開藍牙連接并搜索到藍牙廣播包時,直接從客戶端 存儲區(qū)中獲取與客戶端綁定的藍牙設備的設備序列號;
[0254]其中,服務器中藍牙設備的設備序列號是在柜臺給用戶開通業(yè)務時與客戶端唯一 標識碼綁定好的,其中,客戶端唯一標識碼為客戶端在激活時服務器記錄的設備激活標識 碼,優(yōu)選的,客戶端唯一標識碼為用戶手機號,還可以為客戶端應用程序的唯一標識碼;
[0255]本實施例還包括,當客戶端啟動時,獲取保存的激活標識,如果為已激活,則轉(zhuǎn)入 登錄界面,當?shù)卿洺晒r,進入需要連接藍牙設備進行交易簽名界面,如果為未激活,則轉(zhuǎn) 入激活界面,接收用戶選擇的激活請求(用戶點擊激活按鈕),根據(jù)用戶手機號將激活請求 短信發(fā)送至服務器,服務器將用戶手機號與客戶端唯一標識碼進行綁定,客戶端激活成功, 將激活標識置為已激活。
[0256]步驟103:客戶端對獲取到的藍牙設備的設備序列號進行哈希計算,得到第一哈希 值;
[0257]具體的,客戶端應用預設哈希算法對藍牙設備的設備序列號進行哈希計算,其中, 優(yōu)選的,預設哈希算法為SHA-1算法,除此之外,還可以為MD2、MD5算法等;
[0258]例如,客戶端獲取到的藍牙設備的設備序列號為228000005808,對其進行哈希運 算得到的第一哈希值為bba2b007d7936788f8e6b2afa3834213bbd3ced2;
[0259]步驟104:客戶端選擇搜索到的藍牙廣播包的值為第一哈希值的藍牙設備,與該藍 牙設備建立藍牙連接;
[0260]本實施例中,客戶端對搜索到的所有藍牙廣播包的值進行逐一比對,查找藍牙廣 播包的值為第一哈希值的藍牙設備,與之建立藍牙連接;
[0261]本步驟還包括:客戶端判斷是否能夠查找到藍牙廣播包的值為第一哈希值的藍牙 設備,如果是,則與該藍牙設備建立藍牙連接,建立與藍牙設備的藍牙通道,否則說明當前 搜索到的藍牙設備均不是本客戶端能夠識別的藍牙設備,因此,報錯,結(jié)束。
[0262]步驟105:客戶端與藍牙設備協(xié)商會話密鑰;
[0263]本實施例中,客戶端與藍牙設備協(xié)商會話密鑰包括藍牙層協(xié)商會話密鑰和指令層 協(xié)商會話密鑰;
[0264]其中,指令層協(xié)商會話密鑰具體為:客戶端生成隨機數(shù)作為會話密鑰,應用預先保 存的公鑰對會話密鑰進行加密,將加密結(jié)果發(fā)送至藍牙設備,藍牙設備應用預先保存的私 鑰對接收到的解密結(jié)果進行解密,得到會話密鑰并保存至藍牙設備存儲區(qū)中,向客戶端返 回協(xié)商會話密鑰成功響應,客戶端將生成的隨機數(shù)作為會話密鑰保存至客戶端存儲區(qū)中, 協(xié)商會話密鑰成功。
[0265]步驟106:客戶端生成隨機數(shù)并保存至客戶端存儲區(qū)中,根據(jù)該隨機數(shù)生成隨機數(shù) 指令,應用協(xié)商好的會話密鑰對隨機數(shù)指令進行加密,得到加密的隨機數(shù)指令;
[0266]本實施例中,具體的,客戶端調(diào)用隨機數(shù)生成函數(shù),生成隨機數(shù),根據(jù)APDU指令格 式將該隨機數(shù)作為數(shù)據(jù)域加上指令頭組成發(fā)送隨機數(shù)指令,根據(jù)預設加密算法,應用協(xié)商 好的會話密鑰對發(fā)送隨機數(shù)指令進行加密,優(yōu)選的,預設加密算法為DES算法,除此之外還 可以為AES算法等;
[0267] 例如,客戶端生成的隨機數(shù)為7CA6962BE9E3A803801A61EB5987CFD1,根據(jù)該隨機 數(shù)生成的發(fā)送隨機數(shù)指令為:
[0268] 00 01 10 7CA6962BE9E3A803801A61EB5987CFD1;
[0269]步驟107:客戶端將加密的隨機數(shù)指令發(fā)送至藍牙設備;
[0270]步驟108:藍牙設備應用協(xié)商好的會話密鑰對接收到的指令進行解密,判斷解密得 到指令是否為隨機數(shù)指令,如果是,則執(zhí)行步驟109,否則結(jié)束;
[0271]具體的,藍牙設備判斷解密得到的指令的前兩個字節(jié)是否為0x0001,如果是,則該 指令為發(fā)送隨機數(shù)指令,否則該指令不是發(fā)送隨機數(shù)指令;
[0272]本實施例中,當藍牙設備判斷解密得到的指令不是發(fā)送隨機數(shù)指令時,還包括:藍 牙設備顯示提示信息,主動斷開與客戶端的藍牙連接并進入省電模式;
[0273]其中,藍牙設備顯示的提示信息可以為:"非法連接,請仔細核實連接自己的掌 銀",進入省電模式包括關(guān)機或進入休眠狀態(tài),休眠狀態(tài)可以包括關(guān)閉顯示屏等。
[0274]步驟109:藍牙設備從解密得到的隨機數(shù)指令中獲取隨機數(shù),并獲取藍牙設備存儲 區(qū)中保存的設備序列號,對隨機數(shù)和設備序列號進行哈希運算,得到哈希值并保存至藍牙 設備存儲區(qū)中;
[0275]具體的,藍牙設備應用預設哈希算法對隨機數(shù)和設備序列號進行哈希運算,其中, 優(yōu)選的,預設哈希算法為SHA-1算法,除此之外,還可以為MD2、MD5算法等;
[0276] 例如,藍牙設備對隨機數(shù)7CA6962BE9E3A803801A61EB5987CFD1和設備序列號 228000005808進行哈希運算得到的哈希值為:
[0277]C018f4798bea04a70053ebee3763c7a814986815;
[0278]步驟110:藍牙設備根據(jù)哈希值生成驗證指令,應用協(xié)商好的會話密鑰對該驗證指 令進行加密,得到加密的驗證指令;
[0279]例如,藍牙設備根據(jù)APDU指令格式將該哈希值作為數(shù)據(jù)域加上指令頭組成的驗證 指令為〇〇02 14C018f4798bea04a70053ebee3763c7a814986815;
[0280]步驟111:藍牙設備將加密的驗證指令發(fā)送至客戶端;
[0281]步驟112:客戶端應用協(xié)商好的會話密鑰對加密的驗證指令進行解密,得到驗證指 令,并從驗證指令中獲取哈希值,根據(jù)客戶端存儲區(qū)中保存的藍牙設備的設備序列號和隨 機數(shù)驗證該哈希值是否正確,如果是,則執(zhí)行步驟113,否則結(jié)束;
[0282]本實施例中,客戶端根據(jù)客戶端存儲區(qū)中保存的藍牙設備的設備序列號和隨機數(shù) 驗證該哈希值是否正確,具體為:客戶端獲取保存的設備序列號和隨機數(shù),對設備序列號和 隨機數(shù)進行哈希運算,生成第三哈希值,判斷第三哈希值與哈希值是否相等,如果是,則哈 希值正確,否則哈希值不正確;
[0283]本步驟還包括:客戶端判斷解密得到的指令的前兩個字節(jié)是否為0x0002,如果是, 則解密得到的是驗證指令,否則解密得到的不是驗證指令,報錯,結(jié)束;
[0284]本步驟中,當客戶端判斷哈希值不正確時,還包括:客戶端斷開與藍牙設備的藍牙 連接。
[0285] 步驟113 :客戶端根據(jù)哈希值生成配對碼,根據(jù)該配對碼生成提示信息,顯示該提 不?目息;
[0286]本實施例中,根據(jù)哈希值生成配對碼,具體可以為獲取哈希值的預設位上的數(shù)據(jù) 作為配對碼或者對哈希值進行預設運算生成配對碼等;
[0287] 本步驟中,根據(jù)該配對碼生成的提示信息可以為:"正在配對,配對碼為ΧΧΧΧ";
[0288] 例如,客戶端獲取哈希值后四位數(shù)據(jù)6815作為配對碼,生成的提示信息為:"正在 配對,配對碼為6815"。
[0289]步驟114:客戶端向藍牙設備發(fā)送配對請求;
[0290] 步驟115:藍牙設備接收到配對請求后,獲取藍牙設備存儲區(qū)中保存的哈希值,根 據(jù)哈希值生成配對碼,根據(jù)該配對碼生成提示信息,顯示該提示信息;
[0291]本實施例中,根據(jù)哈希值生成配對碼,具體可以為獲取哈希值的預設位上的數(shù)據(jù) 作為配對碼或者對哈希值進行預設運算生成配對碼等;
[0292]本步驟中,根據(jù)該配對碼生成的提示信息可以為:"請確認配對碼ΧΧΧΧ,您的設備 正在與其他設備建立連接,請按確認鍵進行配對,按取消鍵取消配對";
[0293] 例如,藍牙設備獲取哈希值后四位數(shù)據(jù)6815作為配對碼,生成的提示信息為:"請 確認配對碼6815,您的設備正在與其他設備建立連接,請按確認鍵進行配對,按取消鍵取消 配對"。
[0294] 步驟116:藍牙設備檢測按鍵狀態(tài),當檢測到確認鍵按下時,執(zhí)行步驟118,當檢測 到取消鍵按下時,執(zhí)行步驟117;
[0295] 步驟117:藍牙設備提示取消配對,進入省電模式。
[0296] 步驟118:藍牙設備向客戶端發(fā)送配對成功響應,配對成功,進入交易流程;
[0297]本步驟還包括:藍牙設備提示配對成功信息。
[0298] 實施例3
[0299]本發(fā)明實施例3提供了一種實現(xiàn)藍牙設備間安全交互配對認證的方法,應用于藍 牙設備和客戶端組成的系統(tǒng)中,其中,藍牙設備具體為具有藍牙功能的智能密鑰設備,客戶 端是安裝在移動設備(手機、pad等具有藍牙功能的終端設備)上的用于交易的應用程序,如 圖3和圖4所示,包括:
[0300] 步驟201:藍牙設備開機,根據(jù)該藍牙設備的設備序列號的哈希值組成藍牙廣播 包,廣播該藍牙廣播包;
[0301]本實施例中,根據(jù)該藍牙設備的設備序列號的哈希值組成藍牙廣播包,具體為:
[0302]藍牙設備從藍牙設備存儲區(qū)中獲取內(nèi)部保存的設備序列號的哈希值,根據(jù)哈希值 組成藍牙廣播包;
[0303]或者,藍牙設備從藍牙設備存儲區(qū)中獲取內(nèi)部保存的設備序列號,對該設備序列 號進行哈希運算,得到哈希值,根據(jù)哈希值組成藍牙廣播包;
[0304]本實施例中,智能密鑰裝置開機包括長按確認鍵開機或藍牙連接從休眠狀態(tài)中觸 發(fā)喚醒。
[0305]步驟202:當客戶端打開藍牙連接并搜索到藍牙廣播包時,根據(jù)客戶端唯一標識碼 從服務器中獲取與該客戶端綁定的藍牙設備的序列號,將該藍牙設備的設備序列號保存至 客戶端存儲區(qū)中;
[0306] 本實施例中,服務器中藍牙設備的序列號是在柜臺給用戶開通業(yè)務時與客戶端唯 一標識碼綁定好的,優(yōu)選的,客戶端唯一標識碼為用戶手機號。
[0307]步驟203:客戶端對獲取到的藍牙設備的序列號進行哈希計算,得到第一哈希值;
[0308] 具體的,客戶端應用預設哈希算法對藍牙設備的序列號進行哈希計算,其中,優(yōu)選 的,預設哈希算法為SHA-1算法,除此之外,還可以為MD2、MD5算法等。
[0309] 步驟204:客戶端選擇搜索到的藍牙廣播包的值為第一哈希值的藍牙設備,與該藍 牙設備建立藍牙連接;
[0310] 本實施例中,客戶端對搜索到的所有藍牙廣播包的值進行逐一比對,查找藍牙廣 播包的值為第一哈希值的藍牙設備,與之建立藍牙連接;
[0311] 本步驟還包括:客戶端判斷是否能夠查找到藍牙廣播包的值為第一哈希值的藍牙 設備,如果是,則與該藍牙設備建立藍牙連接,建立與藍牙設備的藍牙通道,否則說明當前 搜索到的藍牙設備均不是本客戶端能夠識別的藍牙設備,因此,報錯,結(jié)束。
[0312]步驟205:客戶端與藍牙設備協(xié)商會話密鑰;
[0313] 本實施例中,客戶端與藍牙設備協(xié)商會話密鑰包括藍牙層協(xié)商會話密鑰和指令層 協(xié)商會話密鑰;
[0314] 其中,指令層協(xié)商會話密鑰具體為:客戶端生成隨機數(shù)作為會話密鑰,應用預先保 存的公鑰對會話密鑰進行加密,將加密結(jié)果發(fā)送至藍牙設備,藍牙設備應用預先保存的私 鑰對接收到的解密結(jié)果進行解密,得到會話密鑰并保存至藍牙設備存儲區(qū)中,向客戶端返 回協(xié)商會話密鑰成功響應,客戶端將生成的隨機數(shù)作為會話密鑰保存至客戶端存儲區(qū)中, 協(xié)商會話密鑰成功。
[0315] 步驟206:客戶端判斷是否已與該藍牙設備進行過配對,如果是,則執(zhí)行步驟207, 否則執(zhí)行步驟210;
[0316] 具體的,客戶端從客戶端存儲區(qū)中獲取與該藍牙設備對應的配對標識,判斷該配 對標識是否為已配對,如果是,則客戶端已與該藍牙設備進行過配對,否則客戶端未與該藍 牙設備進行過配對;
[0317] 步驟207:客戶端從客戶端存儲區(qū)中獲取內(nèi)部保存的客戶端唯一標識碼;
[0318] 本實施例中,優(yōu)選的,客戶端唯一標識碼可以為用戶手機號,除此之外還可以為客 戶端的唯一標識碼。
[0319] 步驟208:客戶端將客戶端唯一標識碼發(fā)送至藍牙設備進行配對驗證;
[0320]步驟209:藍牙設備從藍牙設備存儲區(qū)中獲取內(nèi)部保存的客戶端唯一標識碼,判斷 獲取到的客戶端唯一標識碼和接收到的客戶端唯一標識碼是否相同,如果是,則配對成功, 進入交易流程,否則向客戶端發(fā)送未進行過配對響應,執(zhí)行步驟210;
[0321]本步驟之前還包括:藍牙設備從藍牙設備存儲區(qū)中獲取與該客戶端對應的配對標 識,判斷該配對標識是否為已配對,如果是,則執(zhí)行步驟209,否則向客戶端發(fā)送未進行過配 對響應,執(zhí)行步驟210。
[0322] 步驟210:客戶端生成隨機數(shù)并保存至客戶端存儲區(qū)中,根據(jù)該隨機數(shù)生成發(fā)送隨 機數(shù)指令,應用協(xié)商好的會話密鑰對發(fā)送隨機數(shù)指令進行加密,得到加密的發(fā)送隨機數(shù)指 令;
[0323] 本實施例中,客戶端調(diào)用隨機數(shù)生成函數(shù),生成隨機數(shù),將該隨機數(shù)作為數(shù)據(jù)域加 上指令頭組成發(fā)送隨機數(shù)指令,根據(jù)預設加密算法,應用協(xié)商好的會話密鑰對發(fā)送隨機數(shù) 指令進行加密,優(yōu)選的,預設加密算法為DES算法,除此之外還可以為AES算法等。
[0324] 步驟211:客戶端將加密的發(fā)送隨機數(shù)指令發(fā)送至藍牙設備;
[0325] 步驟212:藍牙設備應用協(xié)商好的會話密鑰對接收到的指令進行解密,判斷解密得 到指令是否為發(fā)送隨機數(shù)指令,如果是,則執(zhí)行步驟213,否則結(jié)束;
[0326] 本實施例中,當藍牙設備判斷解密得到的指令不是發(fā)送隨機數(shù)指令時,還包括:藍 牙設備顯示提示信息,主動斷開與客戶端的藍牙連接并進入省電模式;
[0327] 其中,藍牙設備顯示的提示信息可以為:"非法連接,請仔細核實連接自己的掌 銀",進入省電模式包括關(guān)機或進入休眠狀態(tài),休眠狀態(tài)可以包括關(guān)閉顯示屏等。
[0328] 步驟213:藍牙設備從解密得到的發(fā)送隨機數(shù)指令中獲取隨機數(shù),并獲取藍牙設備 存儲區(qū)中保存的設備序列號,對隨機數(shù)和設備序列號進行哈希運算,得到哈希值并保存至 藍牙設備存儲區(qū)中;
[0329] 具體的,藍牙設備應用預設哈希算法對隨機數(shù)和設備序列號進行哈希運算,其中, 優(yōu)選的,預設哈希算法為SHA-1算法,除此之外,還可以為MD2、MD5算法等。
[0330]步驟214:藍牙設備根據(jù)哈希值生成驗證指令,應用協(xié)商好的會話密鑰對該驗證指 令進行加密,得到加密的驗證指令;
[0331]步驟215:藍牙設備將加密的驗證指令發(fā)送至客戶端;
[0332]步驟216:客戶端應用協(xié)商好的會話密鑰對加密的驗證指令進行解密,得到驗證指 令,并從驗證指令中獲取哈希值,根據(jù)客戶端存儲區(qū)中保存的藍牙設備的設備序列號和隨 機數(shù)驗證該哈希值是否正確,如果是,則執(zhí)行步驟217,否則結(jié)束;
[0333] 本實施例中,客戶端根據(jù)客戶端存儲區(qū)中保存的藍牙設備的設備序列號和隨機數(shù) 驗證該哈希值是否正確,具體為:客戶端獲取保存的設備序列號和隨機數(shù),對設備序列號和 隨機數(shù)進行哈希運算,生成第三哈希值,判斷第三哈希值與哈希值是否相等,如果是,則哈 希值正確,否則哈希值不正確;
[0334] 本步驟中,當客戶端判斷哈希值不正確時,還包括:客戶端斷開與藍牙設備的藍牙 連接。
[0335] 步驟217:客戶端根據(jù)第三哈希值生成配對碼,根據(jù)該配對碼生成提示信息,顯示 該提不?目息;
[0336]本實施例中,根據(jù)第三哈希值生成配對碼,具體可以為獲取第三哈希值的預設位 上的數(shù)據(jù)作為配對碼或者對第三哈希值進行預設運算生成配對碼等;
[0337]例如,客戶端獲取第三哈希值前四位數(shù)據(jù)作為配對碼;
[0338] 本步驟中,根據(jù)該配對碼生成的提示信息可以為:"正在配對,配對碼為ΧΧΧΧ"。
[0339] 步驟218:客戶端向藍牙設備發(fā)送配對請求;
[0340] 步驟219:藍牙設備接收到配對請求后,獲取藍牙設備存儲區(qū)中保存的哈希值,根 據(jù)哈希值生成配對碼,根據(jù)該配對碼生成提示信息,顯示該提示信息;
[0341]本實施例中,根據(jù)哈希值生成配對碼,具體可以為獲取哈希值的預設位上的數(shù)據(jù) 作為配對碼或者對哈希值進行預設運算生成配對碼等;
[0342]例如,藍牙設備獲取哈希值前四位作為配對碼;
[0343] 本步驟中,根據(jù)該配對碼生成的提示信息可以為:"請確認配對碼XXXX,您的設備 正在與其他設備建立連接,請按確認鍵進行配對,按取消鍵取消配對"。
[0344] 步驟220:藍牙設備檢測按鍵狀態(tài),當檢測到確認鍵按下時,執(zhí)行步驟222,當檢測 到取消鍵按下時,執(zhí)行步驟221;
[0345] 步驟221:藍牙設備提示取消配對,進入省電模式。
[0346] 步驟222:藍牙設備將客戶端唯一標識碼保存至藍牙設備存儲區(qū)中;
[0347]本實施例中,藍牙設備將客戶端唯一標識碼保存至藍牙設備存儲區(qū)中,具體為:
[0348] 藍牙設備判斷藍牙設備存儲區(qū)中是否存在其他已配對的客戶端唯一標識碼,如果 是,則將其他已配對的客戶端唯一標識碼刪除,并將接收到的客戶端唯一標識碼作為已配 對的客戶端唯一標識碼保存;
[0349]或者,藍牙設備判斷藍牙設備存儲區(qū)中已配對的客戶端唯一標識碼的個數(shù)是否達 到預設值(優(yōu)選為3),如果是,則根據(jù)預設方式將其中一個已配對的客戶端唯一標識碼刪 除,并將接收到的客戶端唯一標識碼作為已配對的客戶端唯一標識碼保存;
[0350] 其中,預設方式可以為將最先保存的已配對的客戶端唯一標識碼刪除,除此之外 還可以為將配對次數(shù)最少的已配對的客戶端唯一標識碼刪除,此方式中對應的在步驟220 中還包括將該客戶端唯一標識碼對應的配對次數(shù)加1。
[0351]步驟223:藍牙設備向客戶端發(fā)送配對成功響應;
[0352]步驟224:客戶端接收到配對成功響應后,記錄已與該藍牙設備進行過配對的信 息,配對成功,進入交易流程;
[0353]具體的,客戶端接收到配對成功響應后,將配對標