尽管设置了 rfcomm 安全设置,Bluez hcidump 仍然清晰

Bluez hcidump is clear despite rfcomm security set

检查以下情况:

  1. 我有两个使用 libbluetooth (Bluez) 的 RFCOMM 程序(slave 和 master),分别设置如下:

    opt |= RFCOMM_LM;
    opt |= RFCOMM_LM_AUTH;
    opt |= RFCOMM_LM_ENCRYPT;
    opt |= RFCOMM_LM_SECURE;
    
    opt |= RFCOMM_LM;
    opt |= RFCOMM_LM_MASTER;
    opt |= RFCOMM_LM_AUTH;
    opt |= RFCOMM_LM_ENCRYPT;
    opt |= RFCOMM_LM_SECURE;
    
  2. Hciconfig 报告两个适配器都启用了加密和身份验证:

    dev@ackbar:$ hciconfig hci0

    hci0: 类型:BR/EDR 总线:USB BD 地址:01:1A:07:00:47:0C ACL MTU:310:10 SCO MTU:64:8 UP 运行 PSCAN 授权加密 RX bytes:10187160 acl:66879 sco:0 events:180556 errors:0 TX bytes:1012442 acl:57039 sco:0 commands:6787 errors:0

    dev@ackbar:$ hciconfig hci1

    hci1:类型:BR/EDR总线:USB BD 地址:01:1A:07:00:47:0D ACL MTU:310:10 SCO MTU:64:8 UP 运行 PSCAN 授权加密 RX bytes:2174821 acl:6303221 sco:0 events:100 errors:0 TX bytes:51000 acl:54982 sco:0 commands:3458 errors:0

  3. Wireshark 和 hcidump 都报告两个适配器之间的通信是明文的。我希望安全性通过 encrypted/scrambled 有效负载是显而易见的,类似于查看 Wireshark 中的 SSL/TLS 流量。

    Recv: 11111111 应该是: 348djwfoisdfg78sdfsdifods2#@$%^&*ifgyuh

根据原始模式下的 hcidump:

> . E   . . . . @ . . . . . 1 1 1 1 1 1 1 
  1 1 1 1 1 1 1 1 . . . . . . . . . . . . 
  . . . . . . . . . . . . . . . . . . . . 
  . . . . . . . . . . . . . . . . . . . . 
  . . . . . . . . . . . . . . . . . . . . 
  . . . . . . . . . . . . . . . . . . . . 
  . . . . . . . . . . . . . . . . . . . . 
  . . . . . . . . . . . . . . . . . . . . 
  . . . . . . . . . . . . . . . . . . . . 
  . . . . . . . . . . . . . . . . . . . . 
  . . . . . . . . . . . . . . . . . . . . 
  . . . . . . . . . . . . . . . . . . . . 

这引出了问题:

设置的选项是否也被保密?或者 kernel/OS 在解密后通过(稍后的)挂钩以明文形式发送重组数据。

有没有更好的方法来验证这一点 - 显然使用工具的传统方法是不够的(而且我无法访问硬件嗅探器)? (至少正在使用 bt-agent 检查引脚)。

根据 Whosebug 上的这个回答 (Does Bluetooth encrypt data?) - 我相信数据已被解密并且 hcidump 在该操作发生后以明文形式看到它。

验证这一点的唯一方法是使用昂贵且受限的工具(或可能是软件定义的无线电,例如 ubertooth)。