网络密钥、应用密钥及设备密钥
获得网络密钥后,节点就能解密并认证到网络层,从而能在网络中传递消息。网络加密密钥和私有密钥可从网络密钥中提取。需要注意的是,虽然网络中的所有节点都能接收并转发Mesh中继消息,但实际的传输数据不能使用网络密钥解密。只有拥有正确的应用密钥的设备才能解密应用数据。
》》》》网络密钥
一个节点可以拥有一个或多个网络密钥。这样就能在Mesh网络下创建多个子网。例如多层停车系统,将每层划分到自己的子网下,这种划分可以避免跨层传递消息,而是将中继的消息限制在所需的层上。
》》》》应用密钥
应用密钥可被Mesh网络内的设备子集共享。这些设备通常是具有类似的功能。例如,起居室内的所有灯泡可以共享相同的应用密钥,而运动传感器或电子锁则使用单独的应用密钥。用于改变灯泡状态的Mesh消息只能由起居室内的灯泡解密(即仅限那些内置所需应用密钥的设备)。
》》》》设备密钥
设备密钥由部署方分配给每一个被部署入网的Mesh节点。这有助于确定Mesh节点的唯一标识。设备密钥仅由部署方在节点设置过程中使用。
3、节点移除(密钥刷新、黑名单)
Mesh网络需要防止黑客非法获得故障或弃置的Mesh节点安全密钥,对特定的Mesh网络发起攻击,这类攻击被称为垃圾箱攻击。为了避免此类攻击,蓝牙技术联盟定义了密钥刷新流程,该流程可由部署方发起,将特定的节点列入黑名单。密钥刷新流程不向黑名单中的设备发布新的网络密钥、应用密钥和相关信息。上了黑名单的设备曾持有的任何密钥都不可再用于访问曾经接入的Mesh网络。
4、隐私(消息模糊处理)
隐私是非常敏感的问题,蓝牙Mesh网络中使用加密方式处理隐私信息传递。正如前文所讨论的,隐私密钥来源于网络密钥。蓝牙Mesh使用隐私密钥模糊处理消息报文的源地址等信息。如果消息报文头地址被模糊化,就可以防止黑客根据源地址跟踪消息。
5、重放攻击
攻击者可在空中截取消息并多次重复发送相同的数据包,达到扰乱Mesh网络的目的。例如,如果攻击者能成功地在空中截取消息并打开电子门锁,就可以破门而入。很明显,这对人身和财产安全都将构成重大威胁。为了解决这一问题,蓝牙技术联盟为每条网络消息提供两个字段构成的内容:初始化矢量指数(IV指数)和顺序编号(SEQ)。
节点每发布一个消息,顺序编号就递增一次。如果Mesh消息的顺序编号等于或小于上次处理过的有效Mesh消息,Mesh节点就会弃置这条消息。要修改顺序编号,攻击者必须拥有所有必需的密钥才能解码,然后再加密消息,而这些密钥只提供给需要的设备。因此,即使攻击者试图答复消息,答复仍会被目标节点弃置。IV指数是Mesh网络消息中的另一个字段。消息中的IV指数值必须等于或大于上次处理过的Mesh消息,否则消息就会被弃置。
总之,蓝牙Mesh中的入网部署过程仅允许可信设备添加到网络中,这样可以避免任何中间人攻击;网络密钥支持子网创建(每个子网分别有网络密钥);应用密钥让Mesh消息仅由特定硬件进行解码;密钥刷新流程可实现安全的节点移除,并防止垃圾箱攻击;为每条消息添加顺序编号可以防止重放攻击;消息模糊处理能保护发送方的身份。所有这些特性使得蓝牙Mesh非常安全并可以保护隐私。