Encryption 蓝牙加密数据吗?
简介:我在不完全熟悉蓝牙协议栈和协议的情况下遇到了这个问题,因此这可能需要几轮编辑,因为我的假设中出现了错误 我正在尝试连接到蓝牙设备,一个。我能够使用Android的“官方”应用程序连接到设备,并使用Encryption 蓝牙加密数据吗?,encryption,bluetooth,Encryption,Bluetooth,简介:我在不完全熟悉蓝牙协议栈和协议的情况下遇到了这个问题,因此这可能需要几轮编辑,因为我的假设中出现了错误 我正在尝试连接到蓝牙设备,一个。我能够使用Android的“官方”应用程序连接到设备,并使用hcidump捕获蓝牙数据包输出。我可以通过链接密钥交换阅读和理解连接过程;然而,设备随后发送HCI加密更改事件,之后大部分(但不是全部)数据包被标记为ACL数据包,并且难以解释 基本问题是:蓝牙是否加密数据,是否有安全解密的方法?这与转换为ACL数据包有关吗? 以下是hcidump为给定连接提供
hcidump
捕获蓝牙数据包输出。我可以通过链接密钥交换阅读和理解连接过程;然而,设备随后发送HCI加密更改
事件,之后大部分(但不是全部)数据包被标记为ACL数据包,并且难以解释
基本问题是:蓝牙是否加密数据,是否有安全解密的方法?这与转换为ACL数据包有关吗?
以下是hcidump
为给定连接提供的数据包输出示例,从传递链接键开始。(
指发送数据的监视器)
>HCI事件:链接密钥请求(0x17)plen 6
0000: ** ** ** ** ** ** ??????
HCI事件:命令完成(0x0e)plen 10
0000:01 0b 04 00*********。。。。??????
>HCI事件:加密更改(0x08)plen 4
0000:00 0c 00 01。。。。
>ACL数据:句柄12标志0x02 dlen 12
L2CAP:连接要求:psm 1 scid 0x0040
HCI事件:完成的数据包数(0x13)5
0000:01 0c 00 02 00。。。。。
>ACL数据:句柄12标志0x02 dlen 16
L2CAP:信息rsp:类型2结果0
扩展功能掩码0x0000
HCI事件:完成的数据包数(0x13)5
0000:01 0c 00 02 00。。。。。
>ACL数据:句柄12标志0x02 dlen 16
L2CAP:配置请求:dcid 0x0040标志0x00 clen 4
MTU 48
ACL数据:处理12个标志0x02 dlen 14
L2CAP(s):配置rsp:scid 0x0040标志0x00结果0提示0
成功
>ACL数据:处理12个标志0x02 dlen 36
L2CAP(d):cid 0x0040 len 32[psm 0]
0000:06 00 01 00 1b 35 11 1c 00 00 00 00 de ca fa de…..5?
0010:de ca de af de ca fe 00 26 35 03 09 00 04 00?»和5。。。。。
HCI事件:完成的数据包数(0x13)5
0000:01 0c 00 02 00。。。。。
>ACL数据:句柄12标志0x02 dlen 12
L2CAP:DISCON请求:dcid 0x0040 scid 0x0040
ACL数据:句柄12标志0x02 dlen 12
L2CAP:连接要求:psm 3 scid 0x0041
HCI事件:完成的数据包数(0x13)5
0000:01 0c 00 02 00。。。。。
>ACL数据:句柄12标志0x02 dlen 16
L2CAP:配置请求:dcid 0x0040标志0x00 clen 4
MTU 895
HCI事件:完成的数据包数(0x13)5
0000:01 0c 00 02 00。。。。。
>ACL数据:句柄12标志0x02 dlen 18
L2CAP(s):配置rsp:scid 0x0040标志0x00结果0 clen 4
MTU 1013
在这一点上,设备交付的有效负载在不同的运行之间有很大的差异,更不用说在一次运行中了。为了简洁起见,我将日志的其余部分放在一个粘贴箱中:是的,蓝牙通过无线方式对数据进行加密。是的,这适用于ACL数据。但是您在HCI接口上看到的数据已经被解密了。您的问题是不知道如何解释ACL数据流。ACL数据之上有两个级别的协议。除非你的设备记录了他们的协议,否则你可能会倒霉。他们很可能正在运行SPP(串行端口配置文件)或RFCOMM来与android应用程序通话。因此,您有以下嵌套的协议层来解码SPP->RFCOMM->L2CAP->ACL数据
你的设备/应用程序也可能在SPP上进行额外的应用程序级加密。如果是这样,你就不走运了。谢谢你迄今为止的回答,Kenogu,但这个问题显然是离题的。你会推荐一个堆栈而不是这个堆栈吗?可能是因为谷歌也会想到。啊。对不起,放错地方了。
> HCI Event: Link Key Request (0x17) plen 6
0000: ** ** ** ** ** ** ??????
< HCI Command: Link Key Request Reply (0x01|0x000b) plen 22
0000: ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ** ???????????????
0010: ** ** ** ** ** ** ??????
> HCI Event: Command Complete (0x0e) plen 10
0000: 01 0b 04 00 ** ** ** ** ** ** ....??????
> HCI Event: Encrypt Change (0x08) plen 4
0000: 00 0c 00 01 ....
> ACL data: handle 12 flags 0x02 dlen 12
L2CAP(s): Connect req: psm 1 scid 0x0040
< ACL data: handle 12 flags 0x00 dlen 16
0000: 0c 00 01 00 03 02 08 00 40 00 40 00 01 00 00 00 ........@.@.....
< ACL data: handle 12 flags 0x00 dlen 10
0000: 06 00 01 00 0a 01 02 00 02 00 ..........
> HCI Event: Number of Completed Packets (0x13) plen 5
0000: 01 0c 00 02 00 .....
> ACL data: handle 12 flags 0x02 dlen 16
L2CAP(s): Info rsp: type 2 result 0
Extended feature mask 0x0000
< ACL data: handle 12 flags 0x00 dlen 16
0000: 0c 00 01 00 03 02 08 00 40 00 40 00 00 00 00 00 ........@.@.....
< ACL data: handle 12 flags 0x00 dlen 12
0000: 08 00 01 00 04 02 04 00 40 00 00 00 ........@...
> HCI Event: Number of Completed Packets (0x13) plen 5
0000: 01 0c 00 02 00 .....
> ACL data: handle 12 flags 0x02 dlen 16
L2CAP(s): Config req: dcid 0x0040 flags 0x00 clen 4
MTU 48
< ACL data: handle 12 flags 0x00 dlen 18
0000: 0e 00 01 00 05 03 0a 00 40 00 00 00 00 00 01 02 ........@.......
0010: 30 00 0.
> ACL data: handle 12 flags 0x02 dlen 14
L2CAP(s): Config rsp: scid 0x0040 flags 0x00 result 0 clen 0
Success
> ACL data: handle 12 flags 0x02 dlen 36
L2CAP(d): cid 0x0040 len 32 [psm 0]
0000: 06 00 01 00 1b 35 11 1c 00 00 00 00 de ca fa de .....5......??·?
0010: de ca de af de ca ca fe 00 26 35 03 09 00 04 00 ???»????.&5.....
< ACL data: handle 12 flags 0x00 dlen 33
0000: 1d 00 40 00 07 00 01 00 18 00 15 35 13 35 11 09 ..@........5.5..
0010: 00 04 35 0c 35 03 19 01 00 35 05 19 00 03 08 12 ..5.5....5......
0020: 00 .
> HCI Event: Number of Completed Packets (0x13) plen 5
0000: 01 0c 00 02 00 .....
> ACL data: handle 12 flags 0x02 dlen 12
L2CAP(s): Disconn req: dcid 0x0040 scid 0x0040
< ACL data: handle 12 flags 0x00 dlen 12
0000: 08 00 01 00 07 04 04 00 40 00 40 00 ........@.@.
> ACL data: handle 12 flags 0x02 dlen 12
L2CAP(s): Connect req: psm 3 scid 0x0041
< ACL data: handle 12 flags 0x00 dlen 16
0000: 0c 00 01 00 03 05 08 00 40 00 41 00 00 00 00 00 ........@.A.....
> HCI Event: Number of Completed Packets (0x13) plen 5
0000: 01 0c 00 02 00 .....
> ACL data: handle 12 flags 0x02 dlen 16
L2CAP(s): Config req: dcid 0x0040 flags 0x00 clen 4
MTU 895
< ACL data: handle 12 flags 0x00 dlen 18
0000: 0e 00 01 00 05 06 0a 00 41 00 00 00 00 00 01 02 ........A.......
0010: 7f 03 ..
< ACL data: handle 12 flags 0x00 dlen 16
0000: 0c 00 01 00 04 03 08 00 41 00 00 00 01 02 f5 03 ........A.....?.
> HCI Event: Number of Completed Packets (0x13) plen 5
0000: 01 0c 00 02 00 .....
> ACL data: handle 12 flags 0x02 dlen 18
L2CAP(s): Config rsp: scid 0x0040 flags 0x00 result 0 clen 4
MTU 1013