蓝牙的地址问题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
蓝⽛的地址问题
From
1 地址分类
就像Ethernet MAC (Media Access Control)地址⼀样,每个蓝⽛设备有⼀个基本标识符,即蓝⽛设备地址,其是⼀个48位(6-byte)的唯⼀标识,蓝⽛建⽴连接时使⽤的就是这个地址。
蓝⽛有两类地址:
Public deviceaddress
Random device address
Public deviceaddress:相当于固定的BR / EDR,⼯⼚编程的设备地址。
它必须向IEEE注册机构注册,并且在设备的⽣命周期内不会变化。
蓝⽛random地址⼜进⼀步分类如下:
对于⼀个蓝⽛设备,可以使⽤public,static, resolvable 或者non-resolvable类型的蓝⽛地址,地址类型通过⼴播包中的⼀个bit来区分,这个bit就是TxAddr和RxAddr。
Public address: 全球唯⼀性地址,前3个字节体现了OUI(Organizationallyunique identifier),表明制造商,定义如下
Static random address: 当OUI⽆法获取时,可以使⽤静态随机地址来替换Public address,定义如下:
Private addresses: 可以周期性的变化,因此可以避免设备被跟踪。
这类地址⼜分为可以解析的地址和不可解析的私有地址。
Resolvable private address: 双⽅设备可以通过⼀个共享的key来解析的地址,BLE双⽅在经过配对以后,会产⽣⼀个⽤于解析私有地址的key,在后续的连接中,即使BLE设备地址发⽣了变化,也能被信任的设备识别,但对其他设备来说,则是随机变化和不可跟踪
的,定义如下:
Non-resolvable privateaddress: 不可解析的地址,⼀般不希望使⽤这类型的地址,定义形式如下:
2 私有地址⽣成与解析
Resolvable private address的⽣成⽅法和解析⽅法
在蓝⽛的pairing/bonding流程中,双⽅会产⽣交换两个参数(IPK,prand),其中IPK是地址解析⽤的密钥,prand是⼀个随机数,私有地址的解析会⽤到这两个参数以及⼀个哈希函数ah。
⽣成⽅法:
可以看到这类地址有两部分组成,24位的pand以及24位的hash值。
因此,对⽅设备只要根据这个地址信息,使⽤相同的key就能解析出该地址:
上⾯公式中的prand是从对⽅地址中获取的,只要localhash与对⽅的hash值相同,就可以认为,这个设备是之前配对过可信的设备,从⽽实现双⽅设备的通信。