发布网友 发布时间:2023-03-14 19:09
共1个回答
热心网友 时间:2023-11-14 23:04
蓝牙的配对(Pairing)和绑定(Bonding)其实是两个流程,这两个流程并不是一块的,只是我们Pairing后往往需要将一些信息(TK, LTK等)存下来,这个过程就是Bonding。
Bonding只是物理性的保存某些encrypted数据在芯片的Flash中。
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的方式。
SPEC关于TK、STK、LTK的说明:
不同的Authentication获取TK的方式不同:
• OOB:get from OOB data.
• Passkey Entry: user input passkey.
• Just Works: zero.
LE key hierarchy流程图:
通过抓包工具观察整个配对流程大部分是在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: