001_藍(lán)牙協(xié)議連接過(guò)程

ACL連接的建立和釋放

從藍(lán)牙聯(lián)盟規(guī)范文檔里我們可以找到對(duì)應(yīng)說(shuō)明.


acl_connection

可以看到藍(lán)牙連接流程分為9個(gè)步驟,實(shí)線部分是必須步驟都许,虛線步驟是可選的步驟贱傀。

第一步轴合,創(chuàng)建連接

第一步創(chuàng)建連接,host端會(huì)通過(guò)hci指令發(fā)送create connection的命令給到controller平酿,這個(gè)命令里面包含指定藍(lán)牙設(shè)備地址凤优,控制層會(huì)通過(guò)這個(gè)地址執(zhí)行paging操作。


create-connection

第二步蜈彼,可選的信息交換

第二部發(fā)送獲取對(duì)方藍(lán)牙設(shè)備特性信息筑辨,了解藍(lán)牙設(shè)備屬性等,例如是否支持OOB配對(duì)幸逆,也就是通過(guò)別的途徑交換配對(duì)信息棍辕,例如NFC藍(lán)牙設(shè)備等。


exchange features

第三步还绘,連接請(qǐng)求

獲取完特性后楚昭,host端就可以發(fā)送LMP_HOST_CONNECTION_REQ PDU,這個(gè)是必選步驟拍顷,對(duì)端藍(lán)牙收到這個(gè)請(qǐng)求后抚太,會(huì)有三種響應(yīng)方式:

  1. 拒絕連接;
  2. 接受連接昔案;
  3. 接受連接但是請(qǐng)求自己為master尿贫;


    connection-request

第四步,連接設(shè)備回應(yīng)

第一種情況:連接被拒絕踏揣。


connection-reject

第二種情況:連接請(qǐng)求同意庆亡。


accepts connection

第三種情況:連接接受,但是請(qǐng)求更換角色捞稿。


accept-connection-and-preference-central

第五步身冀,AFH自適應(yīng)跳頻-Adaptive Frequency Hopping

在藍(lán)牙設(shè)備接受連接請(qǐng)求后,會(huì)交換特性括享,之后AFH會(huì)被使用搂根,host端根據(jù)干擾情況自動(dòng)跳到下一個(gè)頻段,會(huì)發(fā)送LMP_SET_AFH 和 LMP_CHANNEL_CLASSIFICATION_REQ PDU


AFP

第六铃辖、七步剩愧,鑒權(quán)和配對(duì)

前面準(zhǔn)備工作完成后,需要進(jìn)行身份認(rèn)證請(qǐng)求娇斩,整個(gè)過(guò)程就是獲取Link Key的過(guò)程仁卷。Link Key在后續(xù)數(shù)據(jù)傳輸時(shí)使用穴翩。


required link key

當(dāng)兩個(gè)設(shè)備事第一次進(jìn)行連接時(shí),由于雙方都沒有保存link key,所以需要進(jìn)行授權(quán)驗(yàn)證锦积,控制器向host發(fā)送link key請(qǐng)求芒帕,如果host回復(fù)的是negative,接下來(lái)就進(jìn)入配對(duì)過(guò)程。如果host返回positive丰介,那雙方就不需要進(jìn)入配對(duì)過(guò)程背蟆。

secure simple pairing

在藍(lán)牙配對(duì)過(guò)程中,大部分使用secure simple pairing方式哮幢,也就是SSP配對(duì)带膀。首先會(huì)使能簡(jiǎn)單配對(duì),OOB(out of band)配對(duì)會(huì)最先考慮橙垢,如果雙方都支持垛叨,則優(yōu)先使用OOB。

io capability exchange

開始簡(jiǎn)單配對(duì)后柜某,先進(jìn)行特性交換嗽元,交換有關(guān)鑒權(quán)的需求,以及最重要的雙方藍(lán)牙設(shè)備具有怎么樣的人機(jī)交互能力喂击,也就是io capabilities exchange,也就是獲取對(duì)方設(shè)備是不是支持輸入还棱,支持顯式等功能,根據(jù)雙方具有的人機(jī)交互能力惭等,選擇合適的配對(duì)方式

public key exchange

接下來(lái)就是雙方藍(lán)牙設(shè)備交換public key了珍手,當(dāng)收到對(duì)方藍(lán)牙設(shè)備的公鑰,利用它就可以計(jì)算出Diffie Hellman密鑰辞做,也就是DHKey了琳要,這個(gè)DHKey我們后面會(huì)看到,就是利用它來(lái)生成link key

oob-authentication

根據(jù)前面的feature exchange的結(jié)果秤茅,有三種鑒權(quán)方式稚补,前面說(shuō)過(guò),OOB鑒權(quán)的優(yōu)先級(jí)最高框喳,由配對(duì)的雙方课幕,在配對(duì)過(guò)程之外,額外的交互一些信息五垮,并以這些信息為輸入乍惊,進(jìn)行后續(xù)的配對(duì)操作,額外信息稱作OOB(out of band),這個(gè)也是OOB的由來(lái)放仗。

numeric comparision authentication

接下來(lái)的鑒權(quán)方式叫做MITM(man-in-the-middle)也就是中間人鑒權(quán)润绎,方式中帶人,也就是說(shuō)需要人的參與,這種方式有2種莉撇,先介紹Numeric comparision方式鑒權(quán)呢蛤,這種方式需要兩個(gè)藍(lán)牙設(shè)備都具備顯式的能力,然后兩個(gè)設(shè)備自行產(chǎn)生6位數(shù)字棍郎,用戶比較后確認(rèn)其障,最常見的場(chǎng)景就是手機(jī)與手機(jī)通過(guò)藍(lán)牙之間進(jìn)行的配對(duì)連接。

passkey entry authentication

中間人鑒權(quán)的第二種方式涂佃,叫做passkey entry,這種方式要求一方藍(lán)牙設(shè)備具備輸入的能力励翼,比如藍(lán)牙鍵盤,一方藍(lán)牙設(shè)備具有顯式的功能巡李,比如手機(jī)抚笔,一端顯式配對(duì)碼扶认,一點(diǎn)輸入配對(duì)配對(duì)碼進(jìn)行配對(duì)侨拦,這種方式常用在平板或者pc和藍(lán)牙鍵盤之間的連接。

最后還有一種鑒權(quán)方式辐宾,叫做just work,它不需要用戶的參與狱从,兩個(gè)設(shè)備自行協(xié)商配對(duì),最常用的場(chǎng)景就是手機(jī)和藍(lán)牙耳機(jī)進(jìn)行配對(duì)叠纹。

上面鑒權(quán)交互結(jié)束后季研,就會(huì)通過(guò)算法將DHKey計(jì)算得到Link Key,并用在后續(xù)交互過(guò)程的輸入誉察。這一步完成后与涡,LM控制器通過(guò)HCI發(fā)送HCI_LINK_KEY_NOTIFICATION事件來(lái)通知host得到Link Key。

第八步持偏,啟動(dòng)加密

完成了鑒權(quán)和配對(duì)的過(guò)程驼卖,就會(huì)開始利用得到的link key進(jìn)行加密的連接,利用加密信息鸿秆,可以相互傳送一些私密信息酌畜,如encryption information,identity information等,進(jìn)行最后的連接過(guò)程交互卿叽。

starting encryption during connection setup

第九步桥胞,連接完成

最后,連接建立完成考婴,雙方藍(lán)牙設(shè)備LM控制器向各自的host發(fā)送LMP_SETUP_COMPLETE PDU事件贩虾,將底層連接建立的句柄發(fā)送給上層,使用這個(gè)連接handle就可以用來(lái)發(fā)送上層的數(shù)據(jù)了沥阱,那么整個(gè)的連接流程就完成了整胃。

connection setup

最后,連接斷開

當(dāng)連接不需要維持時(shí),雙方都可以發(fā)起終止連接命令或分離連接請(qǐng)求屁使。


disconnect
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末在岂,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子蛮寂,更是在濱河造成了極大的恐慌蔽午,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,000評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件酬蹋,死亡現(xiàn)場(chǎng)離奇詭異及老,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)范抓,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,745評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門骄恶,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人匕垫,你說(shuō)我怎么就攤上這事僧鲁。” “怎么了象泵?”我有些...
    開封第一講書人閱讀 168,561評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵寞秃,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我偶惠,道長(zhǎng)春寿,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,782評(píng)論 1 298
  • 正文 為了忘掉前任忽孽,我火速辦了婚禮绑改,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘兄一。我一直安慰自己厘线,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,798評(píng)論 6 397
  • 文/花漫 我一把揭開白布瘾腰。 她就那樣靜靜地躺著皆的,像睡著了一般。 火紅的嫁衣襯著肌膚如雪蹋盆。 梳的紋絲不亂的頭發(fā)上费薄,一...
    開封第一講書人閱讀 52,394評(píng)論 1 310
  • 那天,我揣著相機(jī)與錄音栖雾,去河邊找鬼楞抡。 笑死,一個(gè)胖子當(dāng)著我的面吹牛析藕,可吹牛的內(nèi)容都是我干的召廷。 我是一名探鬼主播,決...
    沈念sama閱讀 40,952評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼竞慢!你這毒婦竟也來(lái)了先紫?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,852評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤筹煮,失蹤者是張志新(化名)和其女友劉穎遮精,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體败潦,經(jīng)...
    沈念sama閱讀 46,409評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡本冲,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,483評(píng)論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了劫扒。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片檬洞。...
    茶點(diǎn)故事閱讀 40,615評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖沟饥,靈堂內(nèi)的尸體忽然破棺而出添怔,到底是詐尸還是另有隱情,我是刑警寧澤闷板,帶...
    沈念sama閱讀 36,303評(píng)論 5 350
  • 正文 年R本政府宣布澎灸,位于F島的核電站院塞,受9級(jí)特大地震影響遮晚,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜拦止,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,979評(píng)論 3 334
  • 文/蒙蒙 一县遣、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧汹族,春花似錦萧求、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,470評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至榴徐,卻和暖如春守问,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背坑资。 一陣腳步聲響...
    開封第一講書人閱讀 33,571評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工耗帕, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人袱贮。 一個(gè)月前我還...
    沈念sama閱讀 49,041評(píng)論 3 377
  • 正文 我出身青樓仿便,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子嗽仪,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,630評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容