蓝牙安全管理SM的配对方法
安全管理的简介在蓝牙的SMP安全管理简介这篇文章中有介绍。这里将介绍BLE安全管理(SM)的详细的配对的方法。
在配对过程开始时,第一阶段就是双方交换支持的配对特征,如果有一方不支持配对,那就不会进行配对,如果都支持配对,那么就会选择合适的方法进行配对了。
配对特征
首先看下这个配对特征的内容都有哪些(前三个将决定配对第二阶段的key生成方法):
- IO capability;
- OOB;
- authenTIcaTIon requirements;
- key size;
- key distribute。
配对中产生的Key
LE legacy pairing
Temporary Key(TK):短暂存在的Key,128-bit,用来产生STK的;
Short Term Key(STK):128-bit,会被用来加密配对后的链路。
LE Secure ConnecTIons
Long Term Key(LTK):128-bit,会被用来加密配对后的链路。
authenTIcation
authentication requirements是GAP设定的,主要是对Bond类型和MITM(man-in-the-middle)的要求。
key distribute
对于key distribute,Initiator首先会将自己的需求发给Responder,表明自己想发哪些Key,而且想要对方发哪些Key。而Responder收到后,会回复确定最终双方能够分发的Key。这层协商就两步,比较简单。
安全属性-Security Properties
分为如下几类安全属性:
- LE Secure Connections pairing(BT4.2才支持);
- Authenticated MITM protection(有人参与干涉的安全,可以是人输入密码,或者通过OOB获取密码,对于Secure Connections还支持数字比较的方式);
- Unauthenticated no MITM protection;
- No security requirements;
IO capabilities
表明输入,输出的能力。输入是按键、键盘,输出是显示数字用的界面。
输入能力
输入输出的组合
OOB Authentication Data
OOB Auth Data是一个设备持有对端的Data,用来对对端设备进行authenticate。
- LE legacy pairing:要两端都持有对方OOB Auth Data才用OOB方法;
- LE Secure Connections pairing:至少一端持有OOB Auth Data即可用OOB方法。
加密Key Size
加密Key Size都在都在7到16 bytes之间;
两端设备要选择相互的max key len中较小那个;
两端设备要检测max key len是否小于自己的min key len,小于的话pair失败;
产生的key到最终key有可能要裁剪。key一生成就是16 byte的key值,但是max key len小于16时,那就要缩减成len较小的resulting key再来分发了。
配对算法
在第一阶段交换配对特征后,这些特征内容将会用来选择确认用哪种Key生成方法。
比如Temperary Key的生成:如Just Works,Passkey Entry, OOB都可以用来生成TK,只是要先看设备是否具备这种能力。
选择Key生成的方法
如果auth Req中MITM没有,则说明不需要人参与中间,所以IO capabilities会被忽略,只用Just Works就OK了。
如果有OOB data,auth Req将可直接忽略,会直接选择OOB的方式了。
Legacy pairing生成STK
Use IO capabilities对应的具体算法
上面两个图中都有Use IO capabilities一项,其实这一项又有细分:
LE Legacy Pairing - Just Works
Just Works方式不能抵抗窃听者和中间人攻击,只有在配对过程时没有遭受攻击,后面加密的链路的数据传输才是可信的。安全级别很低。
LE Legacy Pairing - Passkey Entry
这种方式通过输入6位数字的方式来进行配对,生成STK。6位数是随机产生的在000000到999999之间的数值,这个数值相当于一个TK,比如远端显示这个数字,需要在本地端输入这个数字给本地设备与远端配对。如输入019655,那此时的临时Key–TK是:0x00000000000000000000000000004CC7。
Out of Band
这种方式是通过BLE之外的,设备上的其他方式来获取这个OOB data,比如通过IR红外,或其余的方式,因此对于蓝牙窃听者/攻击者而言这个data的传输是不可见的了,因此会显得要安全些。
LE Legacy Pairing第二阶段
即是STK的生成,这一部分可简述为以下步骤的实现:
1. Initiator生成一128-bit随机数Mrand,并使用这个Mrand结合一些其他的输入,使用密码工具箱中c1计算出一个128-bit的Mconfirm值:
Mconfirm = c1(TK, Mrand,
Pairing Request command, Pairing Response command,
initiating device address type, initiating device address,
responding device address type, responding device address)
Responder也生成一1
- 仅用几分钱就能降低电磁干扰的设计(03-06)
- 基于蓝牙芯片的无线通信模块设计与开发(02-03)
- 蓝牙技术在组建无线局域网中的应用(06-12)
- 移动支付2.4 GHz频段Zigaee、蓝牙及WiFi三标准比较(06-06)
- 蓝牙技术未来发展更加注重低功耗和互联性(12-22)
- 低功耗蓝牙与专有射频技术在HID的应用概述(10-06)