当我使用蓝牙将文件从我的 Windows 10 PC 传输到我的 Android 时(右键单击文件->发送到蓝牙设备),我可以看到 fsquirt.exe 以纯文本形式(通过套接字,使用 Obex 协议)将文件传输到 Android 设备。套接字上的数据不应该加密吗?
答案1
Windows 版蓝牙支持以下套接字选项。套接字选项的设置和查询使用设置sockopt和获取套接字选项函数。
对于断开连接的套接字,SO_BTH_AUTHENTICATE 指定需要进行身份验证才能成功完成连接或接受操作。如果两个蓝牙设备之前未进行身份验证,则设置此套接字选项会在建立连接期间主动启动身份验证。
在未连接的套接字上,SO_BTH_ENCRYPTsocket 选项强制加密以建立连接。加密仅适用于经过身份验证的连接。
SO_BTH_MTU 套接字选项是一个主要用于验证的高级选项。
所以我认为加密是为了经过身份验证的连接,而不是为了通过蓝牙传输的数据。
详细信息我们可以参考这篇文章:蓝牙和插座选项
答案2
套接字上的数据不应该被加密吗?
不。蓝牙在链路层提供加密 – 例如类似于 Wi-Fi 的 WPA2。
但与 TCP/IP 流量(通常跨具有不同安全属性的许多链接传输)不同,蓝牙连接中通常没有任何中间跳跃,因此每个应用程序添加自己的加密层是没有意义的:它们只需请求使用加密链接即可。