安全办理的简介在蓝牙的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也生成一128-bit随机数Srand,并运用这个Srand结合一些其他的输入,运用暗码工具箱中c1核算出一个128-bit的Sconfirm值:
Sconfirm = c1(TK, Srand,
Pairing Request command, Pairing Response command,
initiating device address type, initiating device address,
responding device address type, responding device address)
然后Initiator将其核算的Mconfirm值经过Pairing Confirm包发送给Responder,而Responder也将其核算的Sconfirm值经过Pairing Confirm包发送给Initiator;
Initiator收到Sconfirm后,再将Mrand值经过Pairing Random包发送给Responder;
Responder收到Mrand值后核算它的Mconfirm值,再跟前面那个Initiator送过来的Mconfirm值进行比较,若不同阐明配对失利了。若相同,则Responder也会将它的Srand值经过Pairing Random包发送给Initiator;
而Initiator也会核算收到的Srand值的Sconfirm值,并跟前面那个Responder送过来的Sconfirm值进行比较,若不同阐明配对失利了,若相同,持续;
Initiator核算STK,并告诉其Controller答应链路加密:
STK = s1(TK, Srand, Mrand)
纵观以上各进程,其实便是两者互送一个128-bit随机数用来生成STK。窃听者或进犯者只需知道TK,这进程是很简略破解的。
LE Secure Connections的第二阶段
即LTK的生成,比Legacy pairing仍是杂乱许多的,这也是BT 4.2安全性要高许多的原因了。这部分这儿只简略阐明下内容,具体的进程需对照Spec的流程图了。
Public Key交流
Authentication阶段1-Just Works或Numeric Comparison
Authentication阶段1-Passkey Entry办法
Authentication阶段1-Out of Band办法
Authentication阶段2和LTK核算
BR/EDR, LE穿插Key引证
这部分是指蓝牙双模设备,且支撑Secure Connections,配对Key其实能够彼此同享运用的,这样能够省掉掉一些重复配对,不过Key也有个换算的算法的,即暗码工具箱中的h6。