【BLE】蓝牙配对绑定

蓝牙的配对(Pairing)和绑定(Bonding)其实是两个流程,这两个流程并不是一块的,只是我们Pairing后往往需要将一些信息(TK, LTK等)存下来,这个过程就是Bonding。
Bonding只是物理性的保存某些encrypted数据在芯片的Flash中。

1. Pairing(配对)

Pairing主要有三个步骤:
• Phase 1: Pairing Feature Exchange
• Phase 2 (LE legacy pairing): Short Term Key (STK) Generation
• Phase 2 (LE Secure Connections): Long Term Key (LTK) Generation
• Phase 3: Transport Specific Key Distribution

Pairing流程的关键在于Phase 2。无论是蓝牙4.0还是4.2,Phase 1和Phase 3都是一样的。
Pairing有两种方式:一种是LE legacy pairing,另外一种是LE Secure Connections。其中Phase 1决定了Phase 2 需要使用何种Pairing methods以及Authentication的方式。

Pairing methods的选择:
Pairing Request PDU中的SC位决定了设备支持哪种Pairing 方式,当Initiator和Responder都支持LE Secure Connections的时候,则使用LE Secure Connections。否则,使用LE legacy pairing。

Authentication的选择:

总的来说归结为下面几句话:
• 如果双方都支持OOB Authentication,则选择该方式(优先级最高)。
• 如果双方都支持MITM Authentication,则根据双方的IO Capabilities(并结合具体的配对方法),选择合适的Authentication方式。
• 否则,使用Just Works的方式。

2. 加密过程中产生的KEY

SPEC关于TK、STK、LTK的说明:

不同的Authentication获取TK的方式不同:
• OOB:get from OOB data.
• Passkey Entry: user input passkey.
• Just Works: zero.

LE key hierarchy流程图:

3. LE legacy pairing加密流程:

4. Security manager protocol:

通过抓包工具观察整个配对流程大部分是在SMP(SECURITY MANAGER PROTOCOL)上进行的,这里注意一点,抓包工具需要事先配置好PIN码才能解释下面的数据。

当Initiator发起配对绑定后,协议栈主要有两个动作,从SMP上看,Initiatorr会发起一个Pairing Request PDU,Responder则会返回一个Pairing Response PDU。

从L2CAP层上也能找到对应的PDU,SPEC上也说明了SMP其实是在L2CAP层上的Protocol,所以这部分的解析跟SMP的是一样的,下面不再重复说明。

Pairing Request PDU:

Pairing Response PDU:

Pairing Confirm PDU:

Pairing Random PDU:

Encryption Information:

Master Identification:

Identity Information:

Identity Address Information:

你可能感兴趣的:(【BLE】蓝牙配对绑定)