1. 程式人生 > >BLE4.0配對繫結通訊過程解析

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期,每期重點攻克一個面試重難點,如果你還不瞭解本進階計劃,點選檢視前端進階的破冰之旅 如果覺得本系列不

DataGridViewlist物件,出現索引 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/