Mesh(三)----Provision

Provision statck

下圖是provision的stack架構(gòu),分為三層,左邊基于Adv,右邊基于GATT


image.png

Provision bearer layer

bearer,送信人的意思,表示傳輸媒介
兩種bearer構(gòu)成:

  • PB-ADV
  • PB-GATT

一個(gè)未配對(duì)的設(shè)備應(yīng)該支持上述兩種中的一種,強(qiáng)烈建議都支持。
Provisioner(發(fā)起配對(duì)方)應(yīng)該支持至少一種,強(qiáng)烈建議支持PB-ADV

PB-ADV

通過adv channels傳遞Generic Provisioning PDUs,基于會(huì)話,一個(gè)未綁定的設(shè)備只能同時(shí)支持一個(gè)會(huì)話,Provisioner沒有限制。會(huì)話的建立使用Link Establishment procedure。
MTU(maximum transmission unit)大小是24個(gè)字節(jié)
設(shè)備要能主動(dòng)掃描(close to 100% duty)避免丟包。
任何使用PB-ADV的廣播應(yīng)該是非連接的非定向掃描的。(non-connectable, non-scannable undirected)

PB-ADV數(shù)據(jù)格式:


image.png

PB-ADV PDU格式


image.png
  • Link ID:
    區(qū)分每個(gè)link
  • transaction number:

PDU過長(zhǎng),分段,所有的分段使用同樣的transaction number。
PDU重發(fā)的時(shí)候,分段號(hào)也不變。
Provisioner上該值的范圍0x000x7F,device上該值的范圍0x800xFF。
當(dāng)一個(gè)設(shè)備收到Provisioning PDU,它應(yīng)該把該值設(shè)置為收到的值
當(dāng)一個(gè)設(shè)備發(fā)送Transaction Acknowledgement PDU,該值應(yīng)該被設(shè)為被承認(rèn)的PB-ADV中的值----發(fā)ack的時(shí)候,使用雙方協(xié)定好的transaction number。

PB-GATT

允許綁定設(shè)備,通過Proxy PDUs。
連接間隔建議250ms~1000ms

Proxy Protocol
該協(xié)議允許節(jié)點(diǎn)收發(fā)Network PDUs,mesh beacons,proxy configuration messages and Provisioning PDUs over a connection-oriented bearer。
Proxy PDUs包含Network PDUs,Mesh beacons, proxy configuration messages or provisioning PDU。
mesh消息轉(zhuǎn)發(fā)的協(xié)議

Generic Provisioning layer

傳輸Generic Provisioning PUDs的。

Generic Provisioning PDU types:

  • Transaction Start
  • Transaction Acknowledgement
  • Transaction Continuation
  • Provisioning Bearer Control(會(huì)話管理)
    • Link Open
    • Link ACK
    • Link Close
    • RFU(reserved for future use)

Link Establishment procedure

不同設(shè)備靠Device UUID區(qū)分
Device UUID,128-bit UUID,因?yàn)閙ac地址太簡(jiǎn)單了,不夠復(fù)雜

image.png
  • 每個(gè)Generic Provisioning PDU應(yīng)該有20~50ms延時(shí)
  • 分段
  • segments index 0~63個(gè),第一個(gè)發(fā)transaction start PDU, 其他的發(fā)transaction continuation PDU.

Provisioning protocol

Provisioning PDUs

發(fā)起者和設(shè)備之間交流的媒介。
格式如下:

image.png

type如下:

image.png

傳輸層協(xié)議使用帶外數(shù)據(jù)(out-of-band,OOB)來發(fā)送一些重要的數(shù)據(jù),如果通信一方有重要的數(shù)據(jù)需要通知對(duì)方時(shí),協(xié)議能夠?qū)⑦@些數(shù)據(jù)快速地發(fā)送到對(duì)方.為了發(fā)送這些數(shù)據(jù),協(xié)議一般不使用與普通數(shù)據(jù)相同的通道,而是使用另外的通道.

Provisioning behavior

Provisioning is performed using a five-step process:

  • beaconing
  • invitation
  • exchanging public keys(ECDH加密用的)
  • authentication
  • distribution of the provisioning data

ECDH,Deffie-Hellman 算法是 密鑰交換算法,它的作用是解決如何在不安全的信道中安全的傳輸一些信息(主要是交換對(duì)稱加密的密鑰/參數(shù))。ECDH 就是使用橢圓曲線函數(shù)的 DH 算法
a,b都有一對(duì)公鑰,各自根據(jù)公鑰計(jì)算出密鑰,使用該密鑰就行加密

下圖是Provisioning process的整體流程,在下一節(jié)會(huì)對(duì)每個(gè)流程做詳細(xì)描述。


image.png

Provisioning errors

一旦中間失敗,沒有恢復(fù)機(jī)制,必須從新開始配對(duì)。
發(fā)起方發(fā)生錯(cuò)誤,會(huì)立即斷開連接。
接收方發(fā)生錯(cuò)誤,發(fā)送一個(gè)Failed PDU給發(fā)起方,由發(fā)起方斷開連接。60s超時(shí)后,可以不同發(fā)送Failed PDU。

流程詳解

基于PB-ADV

image.png
  • Invitation & Capabilities

    建立連接,檢測(cè)device的兼容性。
    兼容性主要指:支持什么加密方式,(目前只有一種加密方法FIPS P-256 Elliptic Curve,
    就是ECDH),支不支持OOB等一些行為。

  • Exchanging public keys

    支持加密,即交換公共密鑰,不支持不用

不支持加密的流程

image.png

支持加密的流程


image.png
  • Authentication
    認(rèn)證,主要有三種方式。
    1.Output OOB
    device上展示一個(gè)Random number,用戶在provisioner上輸入這個(gè)number
    2.Input OOB
    provisioner上展示一個(gè)Random number,用戶在device上輸入
    3.Static OOB/no OOB
    沒有Random number
    下述是三種方式的流程圖
    Output OOB


    image.png

Input OOB


image.png

Static OOB

image.png

  • Distribution of Provisioning data
    該環(huán)節(jié)主要用來發(fā)送Network Key,IV index, Unicast Address(分配給節(jié)點(diǎn)的)等信息。然后該環(huán)節(jié)還會(huì)計(jì)算出一個(gè)session key用來加密Provisioning data。
    Provisioning data如下:


    image.png

加密

目前只支持一種加密方式FIPS P-256 Elliptic Curve,整體加密流程如下:
P是public key


image.png
image.png

最終算出一個(gè)session key用來加密provisioning data這些信息。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 轉(zhuǎn)自>曾夢(mèng)想仗劍走天涯 引言 關(guān)于開發(fā)證書配置(Certificates & Identifiers & ...
    MindTheGap閱讀 3,224評(píng)論 0 8
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,554評(píng)論 19 139
  • 最近換了新手機(jī)號(hào),原來銀行預(yù)留的手機(jī)號(hào)都要更改,所以就在各大銀行奔波,就見識(shí)了不同銀行的服務(wù)人員的態(tài)度。 從每個(gè)人...
    小小星火閱讀 218評(píng)論 0 1
  • 第一百一十五回 1、起初,賈寶玉覺得甄寶玉相貌俊美、性情相投,后來,因甄寶玉表達(dá)了自己想走仕途的想法,賈寶玉便覺得...
    楚歌兒閱讀 566評(píng)論 0 0
  • 文|零度魍玨 上一份工作因?yàn)槔习迮苈凡粴g而散后,我失業(yè)一個(gè)月,狗屁老板欠了兩個(gè)月工資,我已經(jīng)三個(gè)月沒有任何收入了。...
    云渡魍玨閱讀 1,064評(píng)論 0 3

友情鏈接更多精彩內(nèi)容