【问题标题】:Does Bluetooth encrypt data? [closed]蓝牙会加密数据吗? [关闭]
【发布时间】:2012-10-10 19:01:16
【问题描述】:

简介:我在不完全熟悉蓝牙堆栈和协议的情况下解决这个问题,因此这可能需要几轮编辑,因为我的假设中的错误被暴露出来。

我正在尝试连接到蓝牙设备Scosche myTREK Pulse Monitor。我能够使用 Android 的“官方”应用程序连接到设备,并使用 hcidump 捕获蓝牙数据包输出。我可以通过链接密钥交换阅读和理解连接过程;但是,设备随后会发送 HCI Encrypt Change 事件,之后大多数(但不是全部)数据包都被标记为 ACL 数据包,并且难以解释。

基本问题是:蓝牙会加密数据吗?有没有办法安全解密?这是否与转向 ACL 数据包有关?

这是hcidump 为给定连接提供的数据包输出示例,从传递链接密钥开始。 (>指监听发送数据)

> 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 

此时,设备提供的有效负载在每次运行之间变化很大,更不用说在一次运行中了。为简洁起见,我已将日志的其余部分放在一个 pastebin 中:Link

【问题讨论】:

  • 感谢您到目前为止的回答,Kenogu,但这个问题显然是题外话。
  • 有没有你推荐的堆栈来代替这个?
  • 可能是crypto,尽管我也想到了 Google。
  • 啊。很抱歉放错了位置。

标签: encryption bluetooth


【解决方案1】:

是的,蓝牙对无线数据进行加密。是的,这适用于 ACL 数据。但是您通过 HCI 界面看到的数据已经解密。您的问题是您不知道如何解释 ACL 数据流。在 ACL 数据之上有几个协议级别。除非您的设备记录了他们的协议,否则您可能不走运。他们很可能正在运行 SPP(串行端口配置文件)或 RFCOMM 来与 android 应用程序通信。所以你有以下嵌套协议层来解码 SPP -> RFCOMM -> L2CAP -> ACL 数据。

您的设备/应用也有可能在 SPP 之上进行额外的应用级加密。在这种情况下,你就不走运了。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-31
    • 1970-01-01
    • 2012-06-20
    • 2012-08-01
    • 2016-11-02
    • 2011-08-09
    • 1970-01-01
    • 2012-09-06
    相关资源
    最近更新 更多