在面对C#BLE连接问题时,我已经深入挖掘了蓝牙低功耗连接部分。 如果我100%理解这一部分,我不会感到害羞。
在我的情况下,我想连接到需要绑定以启动数据传输的设备,否则我会尝试使用正确数量的字节但只有零。 我的应用程序somtimes工作,我收到预期的值,有时我只收到零,有时我得到一个错误" System.ArgumentException"在mscorlib.dll和我的应用程序崩溃。 在我开始更改我的代码之前,我希望我能理解连接部分是正确的 使用BLE,我可以进行绑定,配对和连接。 粘合通常意味着配对。交换加密密钥,并且在绑定的情况下,密钥被永久保存并且被重新用于两个特定设备之间的未来会话。 配对密钥仅对一个会话有效。 https://eewiki.net/display/Wireless/A+Basic+Introduction+to+BLE+Security 基于此链接,蓝牙使用AES套装。 所以对我来说,这两个选项是明确的(当然,如果我理解它们是正确的)。 所以现在我已经读过,自Windows Creator更新以来,可以在没有绑定或配对的情况下获得连接。 据我所知,没有密钥交换,根据我对AES的了解不能使用。 只使用两个设备之间的连接的通信真的完全不安全还是我错过了什么? 谢谢
答案 0 :(得分:1)
这是正确的,没有配对/绑定BLE链接是未加密的,并且可以使用嗅探器轻松地来回传输所有来回传输的数据。另一方面,如果使用配对/绑定,所有来回传输的数据都是加密的,除非在嗅探器端使用加密密钥,否则无法使用嗅探器读取。
有关详细信息,请参阅Bluetooth Specification,版本5.0,第3卷,第H部分,第C.2节(身份验证和加密)。
我希望这能回答你的问题。