通过蓝牙在 android 应用程序和 PC 应用程序之间发送敏感数据

Sending sensitive data between a android app and a pc application via bluetooth

我必须通过蓝牙在 android 应用程序和 java 应用程序之间发送敏感数据。我对实施仍有一些疑问。该应用不会在 Google Play 中发布。

蓝牙使用 E0 for encryption, which gets broken a bit more every year since 1999 (in published papers, and probably even more otherwhere...) and ECDH 进行密钥协商,这在设计上很容易受到中间人攻击等攻击。
此外,较旧的蓝牙设备可能根本不使用加密,整个协议有更多的设计缺陷,并且周围有现成的漏洞利用工具包。

2007 年,有人 overview 解决了其他一些已知问题;我没读过,但也许你会感兴趣(但请记住那是 8 年前的事了。今天,情况更糟。)

因此,根据您的具体操作及其安全程度,您可能希望自己完成所有操作。当您刚刚谈论加密时,您应该首先考虑您想要保护的内容。加密将防止有人读取传输的数据,但它不会阻止例如。一些 "evil" 设备让你相信它是真正的接收者(简而言之,身份验证)。

对于加密本身,AES 就可以了。如果两个设备都没有任何内容可以开始,则密钥交换是一个问题......如果您可以为某些身份验证部署(非对称)密钥。东西并将它们用作生成 AES 会话密钥的帮助,这将非常有帮助(连同身份验证,您可以使用例如 ECDH 而不会出现 MITM 问题)