有没有办法在iOS或安卓设置一个蓝牙密钥密码,每当另一个设备想要连接到我的设备通过蓝牙?
我的应用程序涉及一个连接到BLE服务器的BLE客户端,这两个设备将在彼此之间传输数据。然而,传输的数据在安全方面将是非常敏感的。因此,除了标准加密之外,我的目标是在两个设备相互验证(例如,使用密钥)之前不启动数据传输。
似乎蓝牙密钥是设备制造商设置的东西,而不是用户能够配置的东西。如果是这样,并且没有密钥配对,那么在设备可以传输任何敏感数据之前,是否可以接受要求交换密钥(在设备配对之后)?
发布于 2019-07-16 03:18:05
在安卓手机上,假设手机是GATT服务器(它为客户端设备提供数据以供读取),您可以通过将其读取权限设置为PERMISSION_READ_ENCRYPTED_MITM来保护特征中保存的数据。
例如,当您在Android中创建一个要注册到蓝牙堆栈的特征时,您需要
BluetoothGattCharacteristic characteristic = new BluetoothGattCharacteristic(YOUR_UUID, BluetoothGattCharacteristic.PROPERTY_READ, BluetoothGattCharacteristic.PERMISSION_READ_ENCRYPTED_MITM) 这样,任何想要读取特征的人都需要首先通过输入密码或比较两个数值来创建与您的电话的安全绑定。配对的确切方式取决于两个设备的蓝牙堆栈进行协商(基于客户端上的可用IO )。
另一方面,如果您想要访问的数据存储在第三个远程设备中,并且您不需要身份验证(绑定/配对)来从该设备读取数据,并且您无法访问固件。然后,您的不能从您的电话强制单向安全传输。
https://stackoverflow.com/questions/57022970
复制相似问题