BIAS:蓝牙冒充攻击( 二 )


蓝牙标准定义了使用旧版安全连接过程或安全连接过程在链路层保护蓝牙连接的机制 。两个蓝牙设备使用配对来达成长期密钥 。最安全和广泛使用的配对机制是安全简单配对(SSP) , 它使用椭圆曲线Diffie Hellman(ECDH)进行密钥协商 。如果配对设备支持安全连接 , 则在P-256曲线上执行SSP , 否则在P-192曲线上执行 。配对后 , 并根据使用的安全性程序 , 设备从ECDH共享机密中计算出长期密钥 , 并且它们会相互认证该密钥 。配对是通过空中执行的 , 它使用链接管理器协议(LMP) 。
一旦两个配对的设备共享一个长期密钥 , 则它们可以建立多个安全连接 。每个安全连接使用不同的会话密钥 , 该会话密钥是根据长期密钥和其他公共参数计算得出的 。蓝牙安全连接建立既未加密也不受到完整性保护 , 两个设备使用它来交换功能 , 验证长期密钥 , 计算会话密钥并激活安全连接 。如果连接设备支持安全连接 , 则安全连接建立将使用安全身份验证过程 , 并且使用AES CCM对连接进行加密和完整性保护 。否则 , 对于旧版安全连接 , 安全连接建立将使用旧式身份验证过程 , 并且将使用E0流密码对连接进行加密 。安全的连接建立是通过空中进行的 , 它使用LMP协议 。
 
0x03 System and Attack ModelA.系统模型考虑了两个受害设备Alice和Bob , 它们使用安全的蓝牙链接进行通信(请参见下图) 。请注意 , 在攻击时不要求两个受害者都在场 , 仅假设存在两个合法设备并在过去进行通信 。假设Alice和Bob已经共享了一个长期密钥 , 称为链接密钥 。通过完成蓝牙的“安全简单配对”(使用旧版安全连接或安全连接)并使用强关联模型(例如密码输入) , 可以达成共识 。

BIAS:蓝牙冒充攻击

文章插图
 
在不失一般性的前提下 , 假设Bob是蓝牙主设备 , Alice是蓝牙从设备 。Bob希望使用上述现有密钥与Alice建立安全连接 , Alice也愿意使用此密钥接受鲍勃的连接 。冒充攻击发生在安全连接建立期间 , 即当Alice和Bob交换其功能、验证长期密钥、计算会话密钥并激活加密时 。根据Alice和Bob的功能 , 可以使用Legacy Secure Connections或Secure Connections建立安全连接 。在这两种情况下 , 都假定使用的所有安全原语(例如AES和Hmac)都是完全安全的 。尽管不是必须的 , 但Alice和Bob可以使用长期密钥建立以前的安全连接 。
B.攻击者模型攻击者的目标是与Alice(或Bob)建立安全的蓝牙连接 , 冒充是Bob(或Alice) 。攻击者(Charlie)没有拥有Alice和Bob共享的长期密钥 , 并且当他们安全配对时 , 他没有观察到他们 。Charlie能够窃听、解码和处理未加密的数据包 , 并干扰蓝牙频谱 。Charlie知道有关Alice和Bob的公共信息 , 例如其蓝牙名称 , 蓝牙地址 , 协议版本号和功能 。由于安全连接的建立未加密 , Charlie可以通过窃听他们的通信来收集Alice和Bob的特征 。在Alice和Bob之间建立安全连接之后 , Charlie可以阻塞蓝牙频谱以迫使Alice和Bob断开连接 , 然后重新建立安全连接 。
C.符号KL表示配对产生的长期密钥 , 称为链接密钥 。蓝牙身份验证过程涉及质询响应协议 , 用C指示验证者发送的质询 , 并用R指示证明者的响应 。用HL( )指示用于传统安全连接身份验证的哈希函数 , 并用HS( )指示用于安全连接身份验证的哈希函数 。这些函数从多个参数(包括C)生成R , 用k表示连接运算符 , 用rand( n)表示生成n个随机字节的函数 。蓝牙地址以BTADD表示 。使用M , S , A , B和C下标表示与主设备 , 从设备 , Alice , Bob和Charlie相关的数量 。例如 , 主设备将CM发送给从设备 , 而从设备通过将RS发回进行响应 。
 
0x04 Bluetooth Impersonation AttackS(BIAS)Alice和Bob配对一次就达成KL协议 , 然后通过使用传统安全连接或安全连接来认证他们在建立安全连接后拥有KL 。唯一标识其安全绑定的三元组为(KL , BTADDA , BTADDB) 。当模仿Alice或Bob时 , Charlie可以将其蓝牙地址更改为BTADDA或BTADDB , 但他不能证明KL的所有权 。这是蓝牙身份验证保证背后的基本假设 , 并且该假设应该可以防止冒充攻击 。


推荐阅读