李 延,耿震磊,袁艳芳,张 磊,杨 峰
(北京智芯微电子科技有限公司,北京 102299)
蓝牙技术是一种工作在2.4 GHz ISM免授权频段的短距离无线个人局域网(Wireless Personal Area Network,WPAN)技术,目前广泛应用于各类个人智能设备中,可实现固定设备与移动设备之间的数据交换功能。蓝牙标准在信息安全方面依靠配对机制可以在主从设备之间快速建立连接,连接建立以后可以避免第三方的窃听和篡改。如今,蓝牙已经成为多种消费电子产品的标配,同时,蓝牙技术被应用于各类工业物联网终端中。工业物联网场景对信息安全的要求远高于消费领域[1],因此,蓝牙技术信息安全也成为工业物联网应用必须研究的问题。本文针对蓝牙技术的安全机制进行研究,分析了蓝牙协议的安全防护机制与工业物联网场景的安全需求差别。本文在兼容蓝牙安全机制整体框架的基础上,应用国密标识密码算法,实现了基于身份的蓝牙分布式接入控制方案,为蓝牙技术在工业物联网领域的安全应用和标准化提供了解决思路。
蓝牙安全技术随着蓝牙版本的演进而变化,各版本的蓝牙在安全方案中又细分为不同的安全模式和操作方法。
蓝牙技术标准由蓝牙技术联盟(Bluetooth Special Interest Group,SIG)管理,目前最新版本为蓝牙5.1。蓝牙各版本的安全机制不尽相同,一般将蓝牙3.0及其之前版本称为传统蓝牙。2010年蓝牙推出4.0版本,蓝牙4.0及其以后的版本称为低功耗蓝牙(Low Energy,LE),传统蓝牙与低功耗蓝牙的安全机制在安全算法、密钥体系上存在较大差异。低功耗蓝牙与传统蓝牙相比在安全算法强度和隐私特性上有较大提升[2],目前,在主流终端中常以低功耗蓝牙应用为主,因此,本文以低功耗蓝牙作为研究对象。
蓝牙安全的应用场景设定为两个互不信任的蓝牙设备,在操作人员的控制下,可以快速、简单地建立连接,连接通道可以防止中间人攻击、防止空口报文被窃听和篡改[3]。蓝牙安全机制包括配对、绑定、设备鉴权、加密和完整性保护5个安全流程。在蓝牙协议栈中,与蓝牙安全强相关的模块为SM(安全管理)和链路层。其中SM负责配对、绑定和鉴权的流程管理,并在上述流程中生成一系列的过程密钥;链路层负责接收SM的指令,按照SM指令和密钥进行数据的加解密、完整性保护的封装操作。
配对环节是低功耗蓝牙安全的关键环节,两个蓝牙设备只有在完成配对后才能进行通信。由于蓝牙版本的差异,低功耗蓝牙配对分为传统模式和安全连接模式两种模式。
配对环节分为3个阶段,如图1所示[4]。第一阶段,配对双方通过协商消息进行协商,最终确定采用传统模式或者安全连接模式。第二阶段,根据第一阶段的协商结果进行简单的可选择的认证,并生成链路密钥。第三阶段,采用第二阶段生成的链路密钥进行会话密钥的分散派生。完成配对后,配对双方将一个长期密钥(Long-Term Key,LTK)存储在Flash中,此后这两个设备可以省略配对过程,直接采用LTK进行会话密钥的生成。两个设备完成LTK共享后,称为两个设备已经绑定。
图1 配对环节流程框架
每种配对模式,均可采用多种密钥协商方式,协商方式的选择依据蓝牙设备的安全需求及设备的输入/输出能力。
蓝牙设备的输入能力包括无输入、YES/NO、键盘输入3种。无输入指设备没有任何的人机交互输入接口。YES/NO指设备允许操作员进行YES或者NO的选择输入,比如一个蓝牙耳机有一个按键,操作员按下按键表示YES,操作员不按表示NO。键盘输入指设备具备数字键盘类输入能力,可以是硬件或者软件键盘。
蓝牙设备的输出能力包括无输出和数字输出两种。无输出指蓝牙设备不具备操作员肉眼可见的显示和指示能力,比如蓝牙鼠标没有任何显示和指示能力。数字输出能力指蓝牙设备具备数字显示的能力,比如带屏幕的蓝牙设备。
综上所述,每个设备的输入/输出能力一共包含了6种情况,详见表1。
表1 输入/输出能力表
传统模式分为3种协商方式,安全连接模式分为4种协商方式,因此,低功耗蓝牙安全具有7种配对方式,如图2所示。
图2 低功耗蓝牙配对分类
(1)Just Work:该方式适用于配对的一方没有任何的输入能力和显示能力。该方式无认证能力,无中间人攻击抵御能力。
(2)密码输入:该方式要求一方具备数字输入能力,另一方具备显示能力或数字输入能力。
(3)带外安全:带外安全即OOB(Out of Band,OOB)方式,要求通信双方都具备蓝牙通道以外的安全通信方式,比如NFC(Near Field Communication,NFC),带外NFC用来传输配对的机密信元。配对方式为操作人员操作两个待连接设备进行NFC触碰通信,从而触发蓝牙配对。
(4)数字比较:该方式要求一方具备YES/NO的输入能力和显示能力,另一方具备数字输入能力和显示能力。
上述各种配对方式的流程既有不同点,又有共同点。本文选择一种较为安全的方式,传统模式—密码输入协商方式进行详细分析。
在密码输入方式的应用场景中,操作员在两个设备上分别操作,确保两端设备共享一个6位十进制的认证密码ra和rb,如果ra=rb则认证成功,否则认证失败。其流程如图3所示[5]。
图3 传统模式—密码输入配对模式
(1)步骤1,该阶段主、从设备完成了配对模式、协商方式的协商。
(2)步骤2,主、从设备分别生成自己的随机数Mrand和Srand,随机数将参与鉴权计算,以确保在配对过程中能够防止重放攻击。
(3)步骤3,操作人员通过对主、从设备的正确操作,确保两端配对临时密钥TK的赋值相同,即TKA=ra=TKB=rb。比如,设备A显示输出一个6位数字ra,操作员将该数字通过键盘输入设备B中。操作人员需要保证ra和rb是相同的,以便后续认证流程可以成功。
(4)步骤4a,主设备A计算生成Mconfirm值。Mconfirm是以TKA=ra为密钥的加密运算结果,被加密消息包括步骤1的协商消息、步骤2a生成的随机数Mrand及双方蓝牙MAC地址信息。
步骤4b,从设备B计算生成Sconfrim值。Sconfirm是以TKB=rb为密钥的加密运算结果,被加密消息包括步骤1的协商消息、步骤2b生成的随机数Srand及双方蓝牙MAC地址信息。
(5)步骤5,主设备A将Mconfirm值发送给设备B。
(6)步骤6,从设备B将Sconfirm值发送给设备A。
(7)步骤7,主设备A将自己生成的随机数Mrand发送给设备B。
(8)步骤8,设备B用收到的Mrand和操作人员输入的rb,验证收到的Mconfirm值是否正确。验证相同,则继续配对流程,否则配对失败。
(9)步骤9,设备B将自己生成的随机数Srand发送给设备A。
(10)步骤10,设备A用收到的Srand和操作员的输入ra,验证收到的Sconfirm值是否正确。验证相同,则配对验证完成,进入密钥生成流程。
上述流程中的加密流程引入了随机数和共享临时密钥TK,可以很好地保护后续密钥协商的机密性,并可以防御重放攻击。
从上述配对的流程可知,配对过程中需要存在一个操作人员,可以同时对两个配对设备进行操作,并确保双方的TK赋值相同。
蓝牙其他带认证功能的协商方式——数字比较和带外安全,同样需要操作人员的判断和操作。数字比较需要操作人员对比配对双方的显示数字,做出判断后进行连接确认。而带外安全(以NFC带外为例)需要操作人员对配对双方进行触碰操作。各种场景都要求存在操作人员进行人为的输入操作或者判断。Just Work虽然简化了操作,但是不具备认证功能,其安全等级最低。
蓝牙依靠操作人员的配对流程和相应的安全机制,可以有效应对个人域消费电子场景的安全需求,却难以满足无人值守(或无人操作)的工业物联网场景。
具有蓝牙需求的工业物联网终端种类众多,在两个工业物联网终端通过蓝牙进行通信时,通常通信双方至少有一方处于无人值守的状态,常见的通信场景包括:
(1)物联设备之间的数据通信。比如各类传感设备和传感设备网关之间的通信。
(2)手持设备与物联设备之间的通信。此场景多为巡检或操作人员手持巡检设备与无人值守的物联网终端进行短距离通信。
在上述场景中,处于无人值守的蓝牙物联网终端需要对尝试连接的对端蓝牙设备进行身份验证,以便进行蓝牙通信的接入控制,才能保障物联设备本体安全及数据安全,工业物联网蓝牙的应用场景及安全需求与蓝牙协议侧重的个人域消费电子场景有如表2所示的差异。
表2 工业物联网蓝牙与消费蓝牙安全差异
无人值守工业物联网终端的蓝牙模块是否允许对端蓝牙配对连接,应该是基于对端蓝牙设备是否拥有业主运维部门的授权,而不是现场人员的操作意愿,这是工业物联网场景与消费蓝牙的重要区别。
蓝牙通信早期版本的拓扑结构为短距离点对点方式,但是随着蓝牙技术的发展,蓝牙5.1已经达到300 m覆盖,并且可以支持IPv6星型组网和Mesh组网,其组网能力和覆盖能力已经达到了WiFi(无线局域网)水平。蓝牙组网能力及覆盖能力的增强为蓝牙安全接入带来了新的挑战。在工业物联网终端场景下,为了防止无关人员和恶意攻击者通过蓝牙连接工业物联网终端,工业物联网蓝牙应具备基于可信身份的分布式鉴权能力。
工业物联网终端对蓝牙通信的需求日益强烈,亟需研究适应工业物联网场景的蓝牙安全机制及产品。
工业物联网终端蓝牙如果采用蓝牙协议内生的配对模式,即依靠操作人员主观操作进行接入控制,将给工业物联网终端带来潜在的风险。攻击者可以通过很低的成本搭建“无线公网+蓝牙”的攻击硬件,轻易地进行蓝牙通信层连接,进而对工业物联网终端和应用层协议进行持续的攻击尝试,如图4所示。
图4 远程蓝牙攻击模型
《CNNVD关于多个蓝牙协议安全漏洞情况的通报》[6]指出,蓝牙各版本都存在一些安全漏洞,绝大多数漏洞在新版本会被修复,但是也存在各版本共存的一些脆弱点,包括:
(1)连接密钥的存储不当:如果连接密钥的存储没有访问控制机制,可能会被非法读取或修改,从而影响连接的安全性。
(2)伪随机数安全:蓝牙安全需要大量的随机数参与安全运算,如果随机数发生器安全性不足将会影响蓝牙的安全。
本文同时指出蓝牙进程在所有操作系统都具有最高权限,攻击者如果成功控制蓝牙模块,将会对整个物联网终端的信息安全产生影响。
国密SM9算法是一种基于标识的非对称密码算法,该算法可以实现以设备的ID为公钥,避免了公钥的验证步骤[7],非常适合分布式设备的互相认证。采用支持SM9算法的安全芯片与蓝牙芯片进行合封或集成,形成安全蓝牙模块,可以解决蓝牙技术在工业物联网场景的接入安全问题。
工业物联网业主负责搭建基于标识算法的服务器,进行安全蓝牙模块的密钥发行,从而实现系统内的蓝牙互信关系,相关流程如图5所示:
图5 基于标识的身份鉴权机制
(1)步骤1,蓝牙设备运营方通过身份标识算法(SM9)密钥管理服务器进行基于身份的密钥管理和发行。服务器根据蓝牙芯片的MAC地址作为对应安全芯片的身份标识,进行密钥初始化。
(2)步骤2a,安全芯片A的初始化参数包括加密主公密钥P、加密私钥deA和身份标识MAC-A;步骤2b,安全芯片B的初始化参数包括加密主公密钥P、加密私钥deB和身份标识MAC-B。
(3)步骤3,根据蓝牙协议流程,双方在连接发现阶段会互相获得对方的蓝牙MAC地址。
(4)步骤4,双方设置SM9密钥交换协议参数。安全芯片A设置自身标识为MAC-A,设置对方标识为MAC-B;安全芯片B设置自身标识为MAC-B,设置对方标识为MAC-A。
(5)步骤5,双方安全芯片以蓝牙链路层为通道,以步骤4设置的参数启动SM9密钥交换流程。如果协商认证失败,则蓝牙配对流程失败。
(6)步骤6,如果协商成功,双方则会产生相同的共享密钥SKA=SKB。安全芯片A将密钥协商结果SKA发送给蓝牙芯片A;安全芯片B将密钥协商结果SKB发送给蓝牙芯片B。SM9密钥交换协议保障了SKA与SKB的机密性。
(7)步骤7,双方蓝牙启动传统配对模式。蓝牙芯片A将SKA赋值给配对临时密钥TKA,蓝牙芯片B将SKB赋值给配对临时密钥TKB。TKA=TKB=SKA=SKB作为配对临时密钥,确保了配对流程可以校验成功。
(8)步骤8,蓝牙A与蓝牙B通过各自的TK值进行后续的配对流程,后续流程如图3步骤4a/4b。
安全蓝牙模组中预制标识密码算法密钥,巧妙地采用蓝牙MAC地址作为标识算法的公钥,将标识信息的交换与蓝牙报文地址紧密地耦合,既减少了交互流程,又增强了安全性。基于MAC地址的标识认证流程,可以让蓝牙模组支持基于合法身份的分布式鉴权,进而实施接入控制,可以有效解决基于操作人员的主观意识进行接入认证的问题。
基于标识密码算法可以完美解决分布式的终端间、离线状态的相互认证问题。传统的对称密码算法在工业物联网中应用较为广泛,比如电网的计量系统,其密钥分散采用自上而下的分散方式,终端侧密钥一般根据服务侧根密钥与终端ID分散而来[8],适用于服务器同终端之间一对多的认证与加密,难以实现分布式终端间的互认证。利用数字证书技术解决分布式的互信也存在很多困难,比如证书的成本问题及证书的离线验证问题,数字证书技术公钥为随机数,无法使用特定的蓝牙MAC地址作为公钥[9]。
支持标识密码算法的安全芯片承载标识算法运算及真随机数生成,最终为蓝牙配对过程提供TK密钥共享服务,方案并未更改蓝牙协议的安全框架,因此降低了对标准蓝牙芯片内核的改动。标识算法安全模组一般都具备安全存储功能,不但可以保证预制密钥的安全,也可以为蓝牙配对流程后续产生的连接密钥提供安全的存储环境和访问控制机制。
蓝牙技术在无线个人域通信领域得到广泛应用,产业链蓬勃发展,芯片成本不断下降,可以有效解决工业物联网终端的短距离通信需求。本文首先分析了蓝牙标准的安全机制及应用场景;其次分析了工业物联网场景对短距离无线通信的安全需求,解析了蓝牙安全机制与工业物联网通信安全需求之间的差异;最后结合国密标识安全算法,为蓝牙基于可信身份的分布式、离线鉴权提出了可行的方案。
本文的研究成果已经在国家电网配电终端与巡检掌机间试点应用,可为无人值守的配电终端与巡检掌机提供安全的蓝牙通信通道。本方案也可适用于其他无人值守的工业物联网终端的蓝牙应用场景,可以为行业用户蓝牙技术的安全应用规范和技术标准提供参考。