BLE4.0配對繫結通訊過程解析
一、實驗目的
1.瞭解配對與繫結過程的通訊概況
二、說明
1.連線:通訊的基礎,通訊資料為明文;
2.配對:在連線的基礎上,通訊資料經過加密為密文;
3.繫結:在每次重新連線後,不需要再次配對,通訊資料經過加密為密文;
三、實驗平臺
1、藍芽協議棧:1.3.2
2、軟體平臺:IAR For 8051 8.10.3
3、抓包軟體:SmartRF Packet Sniffer 2.16.3
4、硬體平臺:Smart RF開發板(從機),BTOOL(主機),
四、實驗步驟
一、配對認證過程
1.連線未配對之前,通訊資料是明文
2..主機發送配對請求給從機,配對請求配對資訊和簡單的金鑰資訊
3.從機接收到配對請求後,根據主機的配對能力和自己的配對能力作比較,由於從機只有顯示能力,所以向主機發送密碼請求
4.主機接收到從機的密碼請求後,輸入密碼併發送給從機,從機設定的密碼是123456,而主機發送過來的是851415(下圖所示),所以密碼不正確,從機對接收到主機的密碼後,進行校驗,如果密碼不正確,直接觸發認證完成事件(認證狀態為authstatus=0x04 密碼錯誤),從機請求斷開連線(個人設定);
空中抓包,密碼錯誤時的資料:
5.主機接收到從機的密碼請求後,輸入密碼併發送給從機,從機設定的密碼是123456,主機發送過來的是123456(下圖所示)
從機對接收到主機的密碼後,進行校驗,如果密碼正確,將傳送當前認證資訊(LTK等)給主機;
6.當主機接收到從機的認證資訊(LTK)後,向從機發起加密請求,加密成功後,收到從機的回覆(success)
空中抓包,主機向從機發起加密請求
7.加密成功後,通訊資料位密文;
二、繫結後通訊過程
1.每次連線時,從機會向主機發送安全請求,如果主從機相互繫結過,主機不會發送配對請求,主機直接利用繫結時儲存的LTK傳送加密請求,從機也會利用繫結時儲存的LTK來做加密回覆,三次握手成功後(加密成功,三次握手通訊由底層完成,使用者不可見),從機回覆主機加密狀態success
空中抓包,繫結後再次連線的加密通訊,開始加密請求後,都是密文了(表示加密成功)
2.如果從機在與主機繫結後,從機刪除繫結資訊,再次連線時,主機利用繫結時儲存的LTK傳送加密請求,從機也會利用繫結時儲存的LTK來做加密回覆,實際上從機已經刪除了繫結資訊,所以加密不成功,從機回覆status=0x06代表繫結資訊丟失
空中抓包,繫結後從機刪除繫結資訊,再次連線時,開始加密請求後,加密失敗,errorcode=0x06
空中抓包,加密失敗後,不會斷開連線(連線跟加密沒有直接關係),通訊資料位明文
五、總結
1.配對認證:主從機一方提供密碼,一方輸入密碼,如果雙方密碼一致,那麼此密碼將作為TK(臨時密碼);
2.加密鏈路:利用得到的TK(臨時密碼)等資訊計算出STK(短期密碼)用來做加密認證;
3.繫結:加密認證通過後,利用STK等資訊生成LTK(長期密碼),把LTK儲存下來,用於下次連線時做加密認證,不需要再次配對就可以加密鏈路,這就是綁定了;
六、補充
1.此實驗用到BTOOL作為主機,才能知道加密後的通訊資料,因為加密後,空中抓包是密文,看不到資料,APP也看不到資料,所以只能用BTOOL;
2.上述空中抓包看不到密文是因為版本是2.16.3的,現在官方最新版本2.18.1可以看到密文解析後的明文http://www.ti.com.cn/tool/cn/packet-sniffer#Technical
3.關於BTOOL的配對與繫結的操作,請參考文件CC2541 Evaluation Module Kit 的4.6章節
相關推薦
BLE4.0配對繫結通訊過程解析
一、實驗目的 1.瞭解配對與繫結過程的通訊概況 二、說明 1.連線:通訊的基礎,通訊資料為明文; 2.配對:在連線的基礎上,通訊資料經過加密為密文; 3.繫結:在每次重新連線後,不需要再次配對,通訊資料經過加密為密文; 三、實驗平臺 1、藍芽協議棧:1.3.2 2、軟
BLE4.0配對繫結過程的底層剖析
一、實驗目的 1、瞭解主從配對繫結的過程中底層是怎麼執行的; 二、說明 1、關於配對於繫結,網上查了很多資料都沒查到什麼,問了很多人也沒有回答的,所以我決定自己深入瞭解底層關於配對與繫結是如何執行的,我用了接近兩個星期來理解的,效率很低,在這裡總結一下,希望能幫助到別人。 2.這裡之
域名註冊域名解析域名繫結 dns伺服器解析 域名記錄的新增 記錄型別含義@ www 訪問域名請求過程
建立一個web應用,簡言之就是訪問一個域名,可以到達一個地方,這個地方就是你存放供別人檢視的檔案的地方 就像一條繩,從這頭拉一下,可以拉出來另一頭的東西 主要有兩個部分: 域名 虛擬主機(空間) 1.域名 1.1域名註冊 Google/baidu 搜尋一下 域名註冊 隨便點一下,一般首頁都會有這
網路通訊過程--解析:IP地址, 埠port,,DNS伺服器,MAC地址,預設閘道器,通訊過程圖解(理解型)
IP地址: 用來在網路中標記一臺電腦,指引資料包的收發方向,在一個區域網中是唯一的;電腦中的ip是可以手動修改的,只要在同一個區域網中不重複即可。 分類: ①ip地址的組成,包括網路地址和主機地址
Android8.0 HIDL繫結式和直通式區別
原址 備註:這裡已Camera模組為例,如問題,歡迎討論。 以往的hal和framwork的程式碼緊密聯絡起來的,為此google為了framework 升級的方便在Android 8.0 上對 Android 作業系統底層進行了重新架構。新的架構已經瞭解一部分,但仍
需要載入網路圖片的時候我們在adapter繫結資料裡面解析等到圖片的url
public void BindData(UserBean.DataBean date){ title.setText(date.getTitle()); data.setText(date.getPrice()+""); String R = ""; i
asp.net2.0在繫結列格式化時間問題
你一定會遇到在繫結列格式化時,原來在asp.net1.1裡直接這樣{0:d} 繫結格式化屬性就行,但是在asp.net2.0的繫結列確沒用,在asp.net2.0的繫結列的標籤屬性加上HtmlEncode="False"
Spring Boot 2.0 新特性(一):配置繫結 2.0 全解析
在Spring Boot 2.0中推出了Relaxed Binding 2.0,對原有的屬性繫結功能做了非常多的改進以幫助我們更容易的在Spring應用中載入和讀取配置資訊。下面本文就來說說Spring Boot 2.0中對配置的改進。 配置檔案繫結 簡單型別 在S
BLE4.0教程一 藍牙協議連接過程與廣播分析
black lap hit erl 改變 對象 藍牙低功耗 1.2 second 1.藍牙簡介 什麽是藍牙4.0 藍牙無線技術是使用範圍最廣泛的全球短距離無線標準之一,藍牙4.0版本涵蓋了三種藍牙技術,即傳統藍牙、高速藍牙和低功耗藍牙技術,將三種規範合而為一。它繼承
Spring Boot配置繫結2.0實戰
一 新建pom <dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>
2.0解析系列 | OceanBase 2.0——第一款支援“儲存過程”的原生分散式資料庫
OB君:本文是 “ OceanBase 2.0 技術解析系列” 的第八篇文章,今天我們來說說2.0版本最標誌性、最不得不提的新特性——儲存過程。在為數不多的原生分散式資料庫中,OceanBase 2.0是第一款支援儲存過程功能的產品。本文將為你深入剖析2.0中儲存過程的功能特性和實現機制。更多精彩歡迎關
域名泛解析後nginx拒絕未繫結域名
第一種: 返回HTTP 狀態碼 server { listen 80 default; server_name _; return 403; } default表示預設主機 403為Http狀態
mybatis傳多個引數(不使用@param註解情況下),3.4.2版本之後出現#{0}-#{n}引數繫結異常
解決方案: 在mybatis配置檔案中宣告setting屬性的useActualParamName 引數值為false **
BLE4.0廣播連線過程的底層剖析
一、實驗目的 1、在實驗過程中遇到很多問題,都不知道從何下手,所以決定深入瞭解藍芽協議棧的底層,看是如何執行的,瞭解後,遇到問題就知道從哪裡開始找問題,你懂得; 二、說明 1、由於空間有限,這裡只是貼出部分程式碼,有些不能理解的要配合原始碼來理解,這裡只是大概指向(紅色部分),能讓你大部
vue2.0中v-on繫結自定義事件
vue中父元件通過prop傳遞資料給子元件,而想要將子元件的資料傳遞給父元件,則可以通過自定義事件的繫結。 每個 Vue 例項都實現了事件介面,即: 使用 $on(eventName) 監聽事件 使用 $emit(eventName) 觸發事
Python3中的命名繫結、解析與函式閉包
介紹 本篇主要介紹Python中的命名解析與函式閉包,關於類或物件的命名解析是關於屬性,在另一篇中有詳細介紹:Python3描述器 Python中的名字(name) Python中的名字不等同於其他語言中的變數,當進行賦值操作時,name1 = xxx,是給物件xxx賦予了名字n
深入解析vue.js資料繫結操作
廢話不多說,直接進入正題!!! 資料繫結 響應式的資料繫結系統。建立繫結之後,DOM將和資料保持同步,無須手動維護DOM。使程式碼能夠更加簡潔易懂、提升效率。 資料繫結語法 1.文字插值 {{ }}Mustache標籤 <span>Hello {{ n
【進階3-1期】JavaScript 5 種 this 繫結全面解析
(關注福利,關注本公眾號回覆[資料]領取優質前端視訊,包括Vue、React、Node原始碼和實戰、面試指導) 本週正式開始前端進階的第三期,本週的主題是this全面解析,今天是第9天。 本計劃一共28期,每期重點攻克一個面試重難點,如果你還不瞭解本進階計劃,點選檢視前端進階的破冰之旅 如果覺得本系列不
DataGridView繫結list物件,出現索引 0 沒有值
已成功測試,用bindinglist而且不用重新繫結,好用! 在我做專案的時候,datagridview繫結物件列表後,再點選datagridview控制元件,就會報一個"索引 -1 沒有值。"的錯誤資訊,跟蹤錯誤資訊,發現是在System.Windows.Forms.Curre
Polymer2.0通過資料繫結更改元素樣式
<link rel="import" href="../bower_components/polymer/polymer-element.html"> <link rel="import" href="../bower_components/polymer/