链路密钥
链路密钥
加密
加密密钥Kc
加密密钥Kc
申请者 校验者
图1:蓝牙中链路层的加密过程
蓝牙技术在加密过程中所采用的加密算法如下表1。
表1:蓝牙加密过程中所用的加密算法
3.1认证算法
在认证过程中,用于蓝牙认证的E1认证函数来计算出一个安全认证码或被称为MAC(媒体访问控制地址)。E1所采用的算法是SAFER+,SAFER+算法是参与1997年美国国家标准技术研究所(NIST)征集AES(Advanced Encryption Standard)的候选算法之一。SAFER+是基于现有的64位分组密码的SAFER-SK128,因此它的安全性可以说是经过了时间的考验。
E1函数的输入是link key,AU_RAND及BD_ADDR,它的定义如下:
E1:
在蓝牙技术中,认证采用口令-应答方式。验证方要求申请者鉴别随机数AU_RAND并返回计算结果SRES,若双方的计算结果相等则认证成功,并保留ACO(Authenticated Ciphering Offset)值。 若某次认证失败,则必须等待一定的时间间隔才能进行再次认证
3. 2加密算法
在蓝牙技术中,用户信息可采用分组有效载荷的加密进行保护,但识别码和分组头不加密。有效载荷的加密采用E0流密码来实现。E0将对每一有效载荷重新同步。流密码系统E0由三部分组成。第一部分执行初始化(生成有效载荷字),第二部分生成密钥流,第三部分完成加密和解密,如图2。
有效载荷字 明码文本/密码文本
Kc
地址
时钟 Z 密码文本/明码文本
RAND
图2 蓝牙的E0流加密