配对、绑定、密钥生成方法 - 概述


配对和绑定

为了保证低功耗蓝牙的绝大多数安全特征,必须完成两件事情:首先,必须互相配对;其次,连接一旦加密,设备必须分配用于加密、保障隐私并对消息进行验证的密钥。只要密钥被保存下来,设备就处于绑定状态了。

因此,要想了解安全是如何工作的,关键在于理解配对和密钥分配系统的工作原理。同样,明确两个设备间的初始化连接不同与二者之间的后续连接也很重要。


配对和绑定区别:
1.连接:通讯的基础,通讯数据为明文;

2.配对:配对仅仅是为了在连接的基础上加密(通讯数据经过加密为密文),提高蓝牙链路传输的安全性。不配对也能连接进行通信。

3.绑定:绑定是配对发起时的一个可选配置。把配对信息记录下来, 下次不用配对自动进入加密的连接所以没在bonding列表里的设备不影响连接,照连不误。


蓝牙配对

起初未提供安全性的两个设备如果希望做一些需要安全性的工作,就必须先配对。

配对涉及两个设备的身份认证,链路加密以及随后的密钥分配,身份解析密钥等。如果配对时设置了绑定位,分配的秘钥用户可以存储在flash中这样两个设备再第二次重连时的安全启动会更快。而不需要像第一次一样需要再启动整个配对过程。


总的来说配对有三个阶段:
第一阶段:配对信息交换(主要就是两边设备的i/o能力,设置绑定标志,链路是否需要MITM保护,如果设置绑定分配哪些密钥等信息。
第二阶段:链路认证(以前的静态密码,动态密码,这个输入密码的过程就是认证的一种方式。

·     第三阶段:密钥分配

配对信息交换:

配对的第一阶段涉及配对信息的交换,该信息用于确定设备的配对方式,以及确定在最后的阶段将会分配哪些密钥。

两台设备间配对信息的交换是通过配对请求(PairingRequest)和配对响应(PairingResponse)数据包实现的。这两种信息的内容请参考表1:配对请求/响应。



*位顺序从LSBMSB

·        

  • 6
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在 Android 中,蓝牙配对绑定的过程主要包括以下几个步骤: 1. 打开蓝牙:使用 `BluetoothAdapter` 类来打开蓝牙。 ``` BluetoothAdapter bluetoothAdapter = BluetoothAdapter.getDefaultAdapter(); if (bluetoothAdapter == null) { // 设备不支持蓝牙 return; } if (!bluetoothAdapter.isEnabled()) { // 请求打开蓝牙 Intent enableBtIntent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE); startActivityForResult(enableBtIntent, REQUEST_ENABLE_BT); } ``` 2. 搜索设备:使用 `BluetoothAdapter` 的 `startDiscovery()` 方法搜索蓝牙设备。 ``` bluetoothAdapter.startDiscovery(); ``` 3. 显示设备列表:在 `onActivityResult()` 回调中,可以获取到蓝牙设备列表,并显示在界面上供用户选择。 ``` @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == REQUEST_ENABLE_BT && resultCode == RESULT_OK) { // 蓝牙已成功打开 // 开始搜索设备 bluetoothAdapter.startDiscovery(); } if (requestCode == REQUEST_CONNECT_DEVICE && resultCode == RESULT_OK) { // 用户已选择设备 String address = data.getStringExtra(DeviceListActivity.EXTRA_DEVICE_ADDRESS); BluetoothDevice device = bluetoothAdapter.getRemoteDevice(address); // 开始配对绑定 pairAndConnect(device); } } ``` 4. 配对绑定设备:使用 `BluetoothDevice` 的 `createBond()` 方法进行配对绑定。 ``` private void pairAndConnect(BluetoothDevice device) { try { Method createBondMethod = BluetoothDevice.class.getMethod("createBond"); createBondMethod.invoke(device); } catch (Exception e) { e.printStackTrace(); } } ``` 在配对绑定过程中,需要注意以下几点: - 配对绑定是一个异步过程,需要注册广播接收器来监听配对绑定状态的改变。 - 配对绑定需要用户手动输入 PIN 码或者确认配对请求,因此需要显示系统的配对界面,让用户输入 PIN 码或确认配对请求。可以使用 `BluetoothDevice.createBond()` 方法来显示系统的配对界面,也可以自定义配对界面并使用 `BluetoothDevice.setPairingConfirmation()` 方法来确认配对请求。 - 配对绑定成功后,需要使用 `BluetoothSocket` 类来建立蓝牙连接,并进行数据传输。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值