安全管理是BLE中最复杂的内容,涉及LL层、SM层、GAP层
一、妈妈的担心
1. 白名单:
妈妈说,你只能跟A、B、C这3个好孩子玩;他们打电话给你,你才可以出去玩。
A、B、C三人,就在妈妈的“白名单”里。
如果坏小孩D打电话时冒充是B,这怎么办?
妈妈有高招,记得B的声音。
妈妈心里想,这人的声音不是ABC任何一个,肯定是坏小孩。
这两者结合在一起就是:
是否使用白名单,就看你妈妈是否开明了。
类比于BLE,有下图:
可解析列表中会有一个IRK,IRK所对应的是设备的实体地址。
ABC同学会打电话给你的妈妈,妈妈根据声音解析出他们的名字。那么对于蓝牙设备,这些设备发出的无线信号中会含有一个可解析地址。
可解析地址的格式是这样的,它分为两部分:
1)随机数
2)hash值,可以通过ah(IRK,prand)计算出hash值。使用IRK来加密那个随机数。
hash和随机数结合起来就可以得到一个可解析地址。
可以这么理解:
1)设备发出的无线信号中会含有一个可解析地址(这是已知条件,此地址中会含有一个hash'值);
2)使用Resolving List中的每个IRK来加密地址中的随机数。这样的会得到一个hash值;
3)判断得到的hash值和hash'的值是否相同
如果相同,就表示在Resolving List中找到了对应的地址(这个地方,我理解就是发出的可解析地址与Resolving List中的某个地址相同)。然后再看一下该地址是否在白名单中,如果在白名单中,就认为该设备是可信任的设备。(这个过程相当于妈妈通过声音来识别ABC是一样的)。
引入可解析地址可以解决冒充的问题(就相当于同学E给妈妈打电话,说是你的好朋友,妈妈一听就知道有人在冒充),
引入白名单可以解决信任的问题(就相当于同学D给你妈妈打电话,你妈妈知道你有这么一个D同学,但是它老是旷课,是个坏同学,你妈妈不信任他)。
总结:
涉及这几个概念:白名单、可解析地址。
1. 设备中含有Device White List:表示它信任的设备。
白名单中保存的是地址信息Device Identity Address。
“坏设备”很容易伪造这个地址,改一下地址不就行了?
2. 为了解决这个问题,引入“Resolving List”:
2.1 本地设备含有一个“Resolving List”,就相当于妈妈记住的几个声音。
2.2 对端设备使用“可解析地址”
2.3 本地设备接收到“可解析地址”后:
跟Resolving List中每一项进行确认,确认能否使用其中的Peer IRK解析该地址。
如果可以,Resolving List中该项的“Peer Device Identity Address”就是对端设备的真实地址。
2.4 该“Peer Device Identity Address”被用来跟Device White List中每一项进行对比。
是否使用白名单,这取决于蓝牙的“Filter Policy”,过滤策略。
具体细节在下一节视频再讲。
引入可解析地址还有另一个目的:隐私问题
2. 隐私:
你带着一块有蓝牙功能的手表出门,这手表不断地发出广播信号。
如果坏人将一些设备布置于某个区域,你一经过该区域就自动跟踪。
这将会非常恐怖。
我们要防止他人根据你的设备认出你,并且使得他无法跟踪你。
这时就需要不断地变换蓝牙设备的地址,使得别人不知道你是新出现的设备,还是原来的设备。
这也涉及上面讲到的“可解析地址”:一个设备每过一段时间就变换一下地址,但是不能变得连亲人都不认识你,即这些变化的地址是“可解析”的。
二、特工的工作
实际上,数据的加密、解密并不复杂,复杂的是怎么把密钥安全地传递给对方。
加密的数据在空中传播,谁都可以接收到,有密码本的那人才能解出数据。
所以在BLE中,密钥怎么安全地传给对端设备,是关键点。
使用特工的工作做一下类比:
1. 我和谁接头?需要对一下暗号。等等,先确定一下对暗号的方式:用诗歌方式,还是用敲门的方式?
2. 对暗号
比如:
你说“天王盖地虎”,他说“宝塔镇河妖”。
或者:
有规律的敲门声。
3. 交换信物:
下一次接头还那么麻烦啊?
咱们可以交换一下信物,下一次就不用对暗号了。
我要记住他的声音,下次就认得他了:记录对端设备的IRK,用来解析地址。
我要记住他的签名,以后就知道哪些文件是他发出的:记录对端设备的CSRK,用来验证签名信息。
我要记住他的密码本,下次就可以直接加密:记录LTD、EDIV、RAND等
当然,不嫌麻烦的话也可以不交换信物,下次再重新对暗号。
4. 实际上对暗号之后,我们可以说悄悄话了。
隔墙有耳,我们用黑话来聊天吧:加密传输。
在BLE里,上述过程被称为配对:Paring,它被分为下面3个阶段(Phase):
翻译成中文就是:
1. 配对信息交换(Pairing Feature Exchange):
确定双方IO能力,
用什么方法对暗号
2. 认证:
有2类认证方式:LE Legacy Pairing、LE Secure Connections。
用白话来说就是对暗号,确定对方就是要找的人,最后生成STK或LTK。
3. 密钥分配(Transport Specific Key Distribution):
交换信物,交换信物之后的2个设备就被称为已经绑定了(Bonding)。
在BLE安全管理中,官方文档里列出了下述5种内容:
翻译成中文就是:
1. 配对:用来生成共享密钥
2. 绑定:保存配对过程中生成的密钥,下次重连时就不需要再次配对了。
3. 设备认证:确定对方就是要对话的设备,而非第3方。
4. 加密:消息加密
5. 消息完整性:传输的消息不要被篡改、不要发生错误
手机扫一扫
移动阅读更方便
你可能感兴趣的文章