安全性是设计物联网(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算法,使设备能够在不安全的信道上建立共享密钥,然后使用该秘钥或其衍生秘钥对链路进行加密。