在物联网应用中,如何确保BLE连接的安全
2019-03-02
作者:Pushek Madaan,Sachin Gupta
安全性是设计物联网(IoT)应用时面临的最大挑战之一。由于物联网设备通过无线方式进行通话,因此一切控制和状态信息以及私人用户数据都可能会暴露于风险之中。不安全的物联网设备可能会使人员生命和财产面临风险,而不是带来更便捷的生活。试想一下,有人可以攻击家庭照明控制系统,跟踪到用户何时在家,然后闯入家中。或者有人可以通过伪造您的身份,然后开启您的智能锁。
为保障物联网设备的安全性,需要进行以下三项部署:
对未经授权的设备隐藏设备身份的机制- 身份保护对于保护用户免受破坏者跟踪其物理位置至关重要。如果没有足够的保护,物联网设备会使用户面临隐私泄露以及潜在的生命或财产威胁。这一情况类似于有人根据您的汽车注册编号对你进行跟踪。
防止被动窃听- 被动窃听是指收听两台设备之间私人通信的过程。被动窃听者静静地听取通信,但不会更改数据。
防范中间人攻击- 中间人(MITM)攻击是所有安全威胁中最为严重的一种情况。在这种情况下,称为MITM攻击者的第三台设备不仅可以监听两台设备之间的私密通信,还可以模仿其中任意一台设备并更改数据。
对未经授权的设备隐藏设备身份
BLE设备使用48位地址,如果该地址可被另一台设备解码,则后者可对前者实时跟踪。BLE使不可信设备难以通过频繁更改地址来实施跟踪。以上是通过使用仅可信设备可用的身份解析密钥(IRK)实现的。对链路进行加密后,可信设备之间可在配对过程中共享IRK。然后将其作为绑定过程的一部分存储在内部。这一类型的地址称为可解析私有地址(RPA)。
可解析私有地址包含两个组件 - 24位hash和24位prand。hash是IRK函数,prand则由22位随机数和两个固定的MSB(最高有效位)组成。
随机产生的22位prand不能所有位都为'1'或'0'。之后,使用IRK和prand作为加密函数'e'的输入变量计算hash。
Hash = e(IRK,prand),截断为24位
设备IRK是一组128位数字。通过104位填充连接,其中填充位设置为‘0’,使得prand的大小与IRK一致。原始prand的LSB(最低有效位)在填充后依然是prand的LSB。生成后的hash将与prand连接从而生成RPA。
为解析RPA,需要使用在广告包中接收的prand和在配对过程中接收的IRK生成本地hash。然后将这一本地hash与地址中的hash进行比较。如果匹配,则可解析地址。由于一台设备可存储来自多台设备的IRK,因此可使用存储的每一个IRK逐个计算本地hash值,直至匹配为止。
BLE 4.2及更高版本允许该地址最快可每秒更改一次,最长更改间隔为11.5小时,这称为RPA超时。RPA更改的频次越高,对设备实施跟踪就越困难。
防止被动窃听
假设在一次会议中,交谈中有两个人突然切换到与会的其他人难以听懂的他们的母语,那么,将会发生什么情况?事实上通过这一方式,他们让这一部分对话免受被动窃听。类似地,BLE设备使用共享密钥对链路进行加密。因此,没有秘钥的设备将无法理解链路加密之后设备之间的对话。保护强度取决于钥匙强度–即获取或猜测钥匙的难易程度。
BLE(4.2或更高版本)使用符合美国联邦信息处理标准(FIPS)的Elliptic Curve Diffie-Hellman(ECDH)算法来生成和交换密钥。之后,这些密钥用于生成其他密钥,也称为DHKey共享密钥。再之后,可通过DHKey共享密钥对链路进行加密或生成另一组密钥对链路进行加密。
在BLE设备中,这一安全通信的基础是在配对过程中建立的。配对过程分为三个阶段:
在第1阶段,配对过程中涉及的两台设备发送配对请求和响应以及配对参数,其中包括设备的性能和安全要求。在此之后,两台设备将根据交换参数的值选择配对方式。
第2阶段涉及设备身份验证和链路加密。该阶段建立的安全性环境可确保设备不受被动窃听和MITM攻击。
如前所述,为防止被动窃听,BLE使用符合FIPS标准的ECDH算法,使设备能够在不安全的信道上建立共享密钥,然后使用该秘钥或其衍生秘钥对链路进行加密。
为便于理解ECDH算法的工作原理,我们给出了非常经典的Alice和Bob示例(参见图5)。Alice和Bob希望建立一个安全的通信链路,然而他们正在通信的信道正在被第三方Eve窃听。
1.Alice和Bob生成了他们自己的私钥和公钥,其中私钥d是从[1到n-1]的随机数,并通过将d乘以G, dG获得公钥Q。
假设Alice的私钥和公钥是dA和QA = dAG,Bob的私钥和公钥分别是dB和QB = dBG。
2.Alice和Bob在不安全的频道上互相分享他们的公钥QA和QB,而该信道正在被Eva窃听。Eve可以拦截QA和QB,但她无法确定私钥。
3.Alice使用自己的私钥QBdA计算共享密钥,Bob则使用QAdB计算共享密钥。请注意,共享密钥是相同的。
S = QBdA = (dBG)dA = (dAQ)dB = QAdB
4.现在,Alice和Bob可使用该共享密钥保护其通信,或使用该共享密钥生成另一个密钥。而Eve则无法计算该密钥,因为她仅仅知道QA和QB。
以上示例假设Alice和Bob都使用相同的域参数。在LE Secure(低功耗安全)连接的情况下,两台设备默认遵循FIPS标准的P-256 ECDH机制。
一旦两台BLE设备成功生成共享密钥,它们就会生成长期密钥(LTK)和MAC(介质访问控制)密钥。MAC密钥用于确认生成的密钥是否正确。成功确认后,两台设备都将使用LTK对链路进行加密。请注意,该LTK永远不会通过无线共享,因此被动窃听者将无法计算LTK,窃听者也将无法拦截两台设备之间交换的信息。
虽然ECDH提供的安全性保护可防止被动窃听,但却并不能阻止设备免受MITM攻击。为防止MITM攻击,基于设备的I / O功能,BLE使用身份验证作为配对过程第2阶段的一部分。
关于作者:
Pushek Madaan现任职于赛普拉斯开云棋牌官网在线客服印度公司,担任高级应用工程师。他主要使用C语言和汇编语言设计用于模拟和数字电路的嵌入式系统应用,同时使用C#开发GUI(图形用户界面)。
Sachin Gupta现任职于赛普拉斯开云棋牌官网在线客服公司物联网业务部,担任资深产品营销工程师。他拥有德里洲际大学(Guru Gobind Singh Indraprastha University)电子与通信学士学位。Sachin在SoC应用开发和产品营销方面拥有9年的经验。