5.1 SECURITY ARCHITECTURE
5.2 BR/EDR SECURE SIMPLE PAIRING
在这一节中,Spec介绍了Simple pairing的目标是在保证安全的情况下,去简化Pairing流程。
Simple pairing的两个安全目标:
SSP的目标是超过使用16个字母、数字PIN提供的最大安全级别,以及蓝牙核心规范版本2.0 + EDR和早期版本中使用的配对算法。 请注意,许多符合蓝牙核心规范2.0 + EDR和早期版本的蓝牙设备使用4位数PIN或固定PIN,这些PIN通常已知,严重限制了链路的安全性。
【防止窃听】
防窃听主要依赖于健壮的Link Key以及健壮的加密算法。
Link key的强度取决于生成Link Key过程产生的熵的数量(这里的熵应该理解为信息熵,是信息论的一个概念,由香农提出,信息(熵)定义为离散随机事件的出现概率,它有一套固定的算法),在这里我们可以简单的理解,计算出的信息熵越大,Link key的强度越强。
SSP使用的防窃听手段是ECDH(Elliptic Curve Diffie Hellman)公钥加密算法,ECDH用于生成密钥,使用该算法是因为其计算量不是特别的大,蓝牙Controller的计算能力通常不会很高,使用这种算法不至于超出Controller的计算能力。
PIN与SSP的安全强度对比:
使用16位数字PIN(蓝牙核心规范版本2.0 + EDR以及之前的安全协议)可实现约53位的熵,而当使用整个62个字符集([0,... 9,'A',......'Z','a',...'z'])时,16个字符的字母数字,区分大小写的PIN会产生大约95位的熵。
对于不支持Secure Connections功能的设备(在Core Specification v4.1中引入),使用FIPS认可的P-192 Elliptic Curve(ECDH之一,用于生成密钥),SSP具有大约96位的熵,这至少与“使用16个字符,字母数字,区分大小写的PIN”的熵一样好。
对于支持Secure Connections功能的设备,使用FIPS认可的P-256 Elliptic Curve(ECDH之一,用于生成密钥),安全简单配对具有大约128位的熵。
可知,enable Secure Connections的SSP的安全强度是以上四种之中最高的。
【中间人攻击】Man-In-The-Middle Protection
当用户想要让两个设备相连时,其实两个设备并没有直接相互连接,而是在不知不觉中都连接到了第三个(攻击性)设备,这个设备扮演了他们试图配对的设备的角色,从而发生中间人(MITM)攻击。
中间人在中间进行转发,以使双方设备错误的认为已经相互连接。此时,双方交换的信息都会被中间人所监听,甚至可以修改。
为了避免MITM攻击,SSP提供了两种辅助的数字方法:numerical comparison或者passkey entry(passkey entry典型情景是PC与键盘,一个有输入能力但无显示能力,对端设备则有输出能力,PC显示6位十进制数字,键盘输入这组数字,输入正确则成功).
【认证的必要性】
举个例子:iPhone发起配对时,当前是不要求认证的,所以不会弹数字比较UI,此时, iPhone就不会察觉自己连接的是“预期设备”还是“同名的攻击者”。
而如果有认证动作,双方通过数字比较,就可以知道连接的设备是不是“预期设备”,因为,“同名攻击者”与两个设备相连时,产生的数值是不同的。
【安全级别】
如果SSP使用16位十进制数字,那么MITM成功加入到链接中的概率是10的16次方分之一,这是一个没有必要的超低概率。
SSP保护用户免受MIMT攻击的目标是1/1000000的攻击成功概率,因此,MIMT的保护强度选用6位十进制数的numerical comparison或者passkey entry。同时,使用6位数字可以使SSP符合FIPS标准。
虽然大多数用户认为只要他们没有泄露密码,4位密钥足以进行身份验证(即银行卡密码),使用6位数字可以使SSP符合FIPS标准,这种差异不易被感知。
【PIN Code的攻击防御情况】
传统的PIN CODE方式也可以抵御MITM攻击,但是由于可以通过穷举PIN码的方式进行破译,因此,无法抵御被动监听攻击。