经典蓝牙配对基本知识--防迷路,通过博客收藏

it2022-05-05  156

配对过程:

    先请求HCI连接得到一个新的句柄。通过事前设定是否启动简单配对区分配对模式Command Code    Write Simple Pairing Mode

 

非pincode

1.获取L2CAP的扩展信息请求,Code    Information Request

2.若本地无配对记录发起IO能力交换。Event Code    IO Capability Request

3.获取功能列表。 Command Code    Read Remote Supported Features

4.若有配对记录发起key的验证请求  Event Code    Link Key Request。

    4.1校验失败执行5,校验成功执行7

5.发起IO能力交换。 

6.进行配对秘钥验证。Command Code    User Passkey Request Reply   。

7.上送加密变更事件  Event Code    Encryption Change

 

pincode

1.若无配对记录启动pincode配对。

2.获取功能列表。 Command Code    Read Remote Supported Features

3.启动连接RFCOMM,被动方发现无配对记录启动配对。

4.启动加密验证。

5.启动加密。

 

简单配对参考文档的:Version 4.2 [Vol 2, Part H]  7 SECURE SIMPLE PAIRING      

    按照5个步骤进行配对 ,配对中使用到了椭圆曲线的秘钥生成和加密计算,离散计算使用到了各自的私钥,所以能达到放中间和防窃听, 但是如果使用Just Works的方式可能会存在中间人的问题,因为少去了人为的配对,若存在证书就可以有效防止。

 

BREDR的配对流程是在LMP层进行的。

 

连接RFCOMM的过程:

    首先BREDR是通过连接L2CAP层的连接请求进入连接,然后利用固定的PSM码请求上层连接,常规的有0x0001 、0x0003进行RFCOMM和SDP服务的连接。每次连接将产生一个新的句柄。

    通过SDP服务获取RFCOMM以上的参数。

然后再从新连接L2CAP连接到RFCOMM上得到新的句柄。

 

通过

Event Code    User Confirmation Request    

Event Code    User Passkey Request  

这两个事件通知用户进行选择。

 

 

LMP的流程 分简单配对和安全配对。

    简单配对就是PINCODE、而安全配对分Numeric Comparison 和 passkey entry两种, 参考Version 4.2 [Vol 2, Part C]4.2.2 Pairing

        对于简单配对的报文只依赖Lmp报文的相关的PDU:

            

        对于安全配对历来的PDU:

            

    我们常说的UserConf、JustWork 就是Numeric Comparison,  而Passkey就是对passkey entryVersion 4.2 [Vol 2, Part C]4.2.7 Secure Simple Pairing

   IO能力和配对方式配对表参考Version 4.2 [Vol 3, Part C]5.2.2.6 IO and OOB Capability Mapping to Authentication Stage 1 Method

 

 

 

 

 

 

 

 

 


最新回复(0)