Mesh(三)----Provision

Provision statck

下图是provision的stack架构,分为三层,左边基于Adv,右边基于GATT


image.png

Provision bearer layer

bearer,送信人的意思,表示传输媒介
两种bearer构成:

  • PB-ADV
  • PB-GATT

一个未配对的设备应该支持上述两种中的一种,强烈建议都支持。
Provisioner(发起配对方)应该支持至少一种,强烈建议支持PB-ADV

PB-ADV

通过adv channels传递Generic Provisioning PDUs,基于会话,一个未绑定的设备只能同时支持一个会话,Provisioner没有限制。会话的建立使用Link Establishment procedure。
MTU(maximum transmission unit)大小是24个字节
设备要能主动扫描(close to 100% duty)避免丢包。
任何使用PB-ADV的广播应该是非连接的非定向扫描的。(non-connectable, non-scannable undirected)

PB-ADV数据格式:


image.png

PB-ADV PDU格式


image.png
  • Link ID:
    区分每个link
  • transaction number:

PDU过长,分段,所有的分段使用同样的transaction number。
PDU重发的时候,分段号也不变。
Provisioner上该值的范围0x000x7F,device上该值的范围0x800xFF。
当一个设备收到Provisioning PDU,它应该把该值设置为收到的值
当一个设备发送Transaction Acknowledgement PDU,该值应该被设为被承认的PB-ADV中的值----发ack的时候,使用双方协定好的transaction number。

PB-GATT

允许绑定设备,通过Proxy PDUs。
连接间隔建议250ms~1000ms

Proxy Protocol
该协议允许节点收发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消息转发的协议

Generic Provisioning layer

传输Generic Provisioning PUDs的。

Generic Provisioning PDU types:

  • Transaction Start
  • Transaction Acknowledgement
  • Transaction Continuation
  • Provisioning Bearer Control(会话管理)
    • Link Open
    • Link ACK
    • Link Close
    • RFU(reserved for future use)

Link Establishment procedure

不同设备靠Device UUID区分
Device UUID,128-bit UUID,因为mac地址太简单了,不够复杂

image.png
  • 每个Generic Provisioning PDU应该有20~50ms延时
  • 分段
  • segments index 0~63个,第一个发transaction start PDU, 其他的发transaction continuation PDU.

Provisioning protocol

Provisioning PDUs

发起者和设备之间交流的媒介。
格式如下:

image.png

type如下:

image.png

传输层协议使用带外数据(out-of-band,OOB)来发送一些重要的数据,如果通信一方有重要的数据需要通知对方时,协议能够将这些数据快速地发送到对方.为了发送这些数据,协议一般不使用与普通数据相同的通道,而是使用另外的通道.

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 算法是 密钥交换算法,它的作用是解决如何在不安全的信道中安全的传输一些信息(主要是交换对称加密的密钥/参数)。ECDH 就是使用椭圆曲线函数的 DH 算法
a,b都有一对公钥,各自根据公钥计算出密钥,使用该密钥就行加密

下图是Provisioning process的整体流程,在下一节会对每个流程做详细描述。


image.png

Provisioning errors

一旦中间失败,没有恢复机制,必须从新开始配对。
发起方发生错误,会立即断开连接。
接收方发生错误,发送一个Failed PDU给发起方,由发起方断开连接。60s超时后,可以不同发送Failed PDU。

流程详解

基于PB-ADV

image.png
  • Invitation & Capabilities

    建立连接,检测device的兼容性。
    兼容性主要指:支持什么加密方式,(目前只有一种加密方法FIPS P-256 Elliptic Curve,
    就是ECDH),支不支持OOB等一些行为。

  • Exchanging public keys

    支持加密,即交换公共密钥,不支持不用

不支持加密的流程

image.png

支持加密的流程


image.png
  • Authentication
    认证,主要有三种方式。
    1.Output OOB
    device上展示一个Random number,用户在provisioner上输入这个number
    2.Input OOB
    provisioner上展示一个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
    该环节主要用来发送Network Key,IV index, Unicast Address(分配给节点的)等信息。然后该环节还会计算出一个session key用来加密Provisioning data。
    Provisioning data如下:


    image.png

加密

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


image.png
image.png

最终算出一个session key用来加密provisioning data这些信息。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 200,045评论 5 468
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 84,114评论 2 377
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 147,120评论 0 332
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 53,902评论 1 272
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 62,828评论 5 360
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,132评论 1 277
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,590评论 3 390
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,258评论 0 254
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,408评论 1 294
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,335评论 2 317
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,385评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,068评论 3 315
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,660评论 3 303
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,747评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,967评论 1 255
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,406评论 2 346
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 41,970评论 2 341

推荐阅读更多精彩内容

  • 转自>曾梦想仗剑走天涯 引言 关于开发证书配置(Certificates & Identifiers & ...
    MindTheGap阅读 3,107评论 0 8
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,566评论 18 139
  • 最近换了新手机号,原来银行预留的手机号都要更改,所以就在各大银行奔波,就见识了不同银行的服务人员的态度。 从每个人...
    小小星火阅读 191评论 0 1
  • 第一百一十五回 1、起初,贾宝玉觉得甄宝玉相貌俊美、性情相投,后来,因甄宝玉表达了自己想走仕途的想法,贾宝玉便觉得...
    楚歌儿阅读 421评论 0 0
  • 文|零度魍珏 上一份工作因为老板跑路不欢而散后,我失业一个月,狗屁老板欠了两个月工资,我已经三个月没有任何收入了。...
    云渡魍珏阅读 897评论 0 3