用户
搜索

[内网攻防] 浅谈车载蓝牙安全

  • TA的每日心情
    无聊
    5 天前
  • 签到天数: 80 天

    连续签到: 1 天

    [LV.6]常住居民II

    版主

    bilibili:末心a

    Rank: 7Rank: 7Rank: 7

    100

    主题

    316

    帖子

    2987

    魔法币
    收听
    0
    粉丝
    8
    注册时间
    2018-8-22

    楚春秋达人积极活跃奖限定版春秋段子手推广达人春秋文阁

    M0x1n 版主 bilibili:末心a 楚 春秋达人 积极活跃奖 限定版春秋段子手 推广达人 春秋文阁 楼主
    发表于 2021-3-26 13:53:23 215152
    一、蓝牙的发展历史
        目前,蓝牙已经成为最庞大的无线通讯技术之一,被应用在智能家居、消费电子、智能穿戴设备、仪器仪表、智慧交通、智慧医疗、安防设备、汽车设备、远程遥控等各类产品中,渗入到各个行业及领域。

        那么什么是蓝牙呢?简言之,蓝牙技术让各种数码设备之间能够无线沟通,让散落各种连线的桌面成为历史。
    blue.JPG

      以蓝牙4.0架构为介绍,如下图:

    1615187915_6045cfcb0f0161ce5b24e.png

    其中:

    1.HW层:本质蓝牙芯片层,包含

    (1)RF(radio):射频层,本地蓝牙数据通过射频发送给远端设备,并且通过射频接收来自远端蓝牙设备的数据

    (2) BB(BASEBAND):基带层,进行射频信号与数字或语音信号的相互转化

    (3) LMP(LINK MANAGER PROTOCOL):链路管理层,负责管理蓝牙设备之间的通信,实现链路的建立、验证、链路配置等操作

    (4) HCI(HOST CONTROLLER INTERFACE):主机控制器接口层,HCI层在芯片以及协议栈都有,芯片层面的HCI负责把协议栈的数据做处理,转换为芯片内部动作,并且接收到远端的数据

    (5) BLE PHY:BLE的物理层

    (6) BLE LL:BLE的链路层

    2.传输层:此部分在硬件接口UART/USB/SDIO实现HOST和控制器的交互,同时有几个子协议:

    (1)H2:针对USB类型

    (2)H4:针对UART类型

    (3)H5:针对UART类型

    (5)BCSP:针对UART类型

    3.HOST层,此层是协议栈

    (1)HCI是HOST controller interface, 主机控制层接口,主要负责透过transport把协议栈的数据发送给蓝牙芯片,并且接受来自蓝牙芯片的数据。

    (2) L2CAP(Logical Link Control and Adaptation Protocol):逻辑链路控制与适配协议,将ACL数据分组交换为便于高层应用的数据分组格式,并提供协议复用和服务质量交换等功能。

    (3)SDP(SERVICE DISCOVERY PROTOCOL):服务发现协议

    (4)RFCOMM(Serial Port Emulation):串口仿真协议,上层协议蓝牙电话,蓝牙透传SPP等等功能模块。


    蓝牙设备可以实现四种不同的安全模式

    1.不安全:蓝牙设备不启动任何安全措施。

    2.服务级别强制实施的安全模式:两个蓝牙设备可以建立不安全的ACL链接。当发出逻辑链接控制和适应协议(L2CAP)面向连接(CO)或L2CAP少连接(CL)通道请求时,将启动安全性过程,即身份验证,授权和可选加密。

    3.链路级强制安全模式:建立ACL链路后,将启动安全性过程。

    4.服务级别强制实施的安全模式:此模式类似于模式2,不同的是只有使用SSP的蓝牙设备可以使用它,即,只有蓝牙2.1 + EDR或更高版本的设备才能使用此安全模式。蓝牙使用具有128位密钥的安全和快速加密例程+(SAFER +)作为认证和密钥生成算法,在最高3.0 + HS(高速)的蓝牙版本中,而蓝牙4.0(即低功耗蓝牙)用更安全的128位高级加密标准(AES)代替SAFER +SAFER +由Massey等人开发。1998年,它被提交为AES竞赛的候选人,但未被选为决赛入围者。

    SAFER +是具有以下主要功能的分组密码。它具有128位的块大小和三个不同的密钥长度(128、192和256位)。SAFER +由九个阶段(八个相同的回合和输出转换)和一个密钥调度算法(KSA)组成,其方式如下。KSA产生17个不同的128位子密钥。每个回合使用两个子项和上一个回合中的一个128位输入字来计算一个128位字,该字是下一回合的新输入字。最后一个子关键字用于输出转换,它是最后一轮输出与最后一个子关键字的简单按位XOR。在AES竞赛的评估过程之后,AES由美国国家标准技术研究院(NIST)于2001年发布。Rijndael是比赛的获胜者,NIST选择它作为AES的算法。AES是一种对称的分组密码,旨在代替数据加密标准(DES)作为广泛应用的认可标准,但是此过程 将需要很多年。NIST预计,在可预见的将来,至少在美国政府使用的情况下,三重数据加密标准(3DES)仍将是批准的算法。AES加密由10-14轮组成,其中数据块按以下方式逐步处理(最后一轮除外;值得注意的是,AES解密与AES加密对称)1.字节替换:字节替换使用S-box来执行块的逐字节替换。2.行移位:行移位是一个简单的排列。3.柱混合:柱混合是对GF(28)的一种算术替代。Galois字段GF(28)是256个元素的有限字段,可以用八位字符串或十六进制表示法表示。4.圆键添加:圆键添加是当前块与一部分扩展键的简单按位XOR。最后一轮AES加密(和AES解密)略有不同

    • 1.字节替换
    • 2.行移位
    • 3.圆键添加

    AES被认为是安全的,它非常快速且紧凑(大约1 kB代码),其块大小是32的倍数(通常为128位),其密钥长度也是32的倍数(通常为128、192或256位) ),并且它有非常整齐的代数描述。

    48位BD_ADDR分为三个部分:16位非有效地址部分(NAP),8位高地址部分(UAP)和24位低地址部分(LAP)。BD_ADDR的前三个字节(NAP和UAP)是蓝牙芯片的制造商,代表company_id。BD_ADDR(LAP)的后三个字节(称为company_assigned)在不同的蓝牙设备型号中或多或少地随机使用。

    蓝牙设备首次连接时会生成一个初始化密钥(Kini t),该初始化密钥用于保护其他更安全的128位密钥的生成,这些密钥是在事件安全性链的下一个阶段生成的。

    K_init是从伪随机数IN_RAND、L-byte PIN code、BD_ADDR中生成的128bit位的秘钥,此处的IN_RAND生成须放在高保密环境中。

    1615188081_6045d0716cd0c7a5acf60.png

    某个密钥生成函数的输出可以用函数本身及其输入来表示。此处K_init的生成采用K_init=Encrypt(PIN',L',IN_RAND)。

    在将PIN码及其长度L发送到Encrypt功能之前,将其修改为称为PIN'和L'的两个不同数量。如果PIN小于16字节,则通过从设备的BD_ADDR附加字节来增加PIN,直到PIN的总长度达到16字节或整个BD_ADDR被附加,以先到者为准。

    K_ini t用于加密128位伪随机数(RAND或LK_ RAND),如图K_A=Encrypt2(BD_ADDR_A,RAND_A);如图,设备A可以用K_init加密K_A,例如K_A xor K_init,然后发给设备B;设备B用Kinit得到K_A;此处设备A,B都拿到A的秘钥。

    使用单元密钥的蓝牙设备只有一个密钥可用于其所有连接。这意味着同一密钥与所有其他受信任的蓝牙设备共享。此外,任何使用相同单元密钥的受信任蓝牙设备都可以窃听共享同一单元密钥的两个其他蓝牙设备之间的任何流量。此外,任何使用相同单元密钥的受信任蓝牙设备都可以仅通过复制其BD_ADDR来模拟目标设备。

    此处,上述的方式提供的加密方式只在比较低的层级机型使用。

    一种更常见的组合秘钥K_AB会更普遍使用K_AB=Encrypt2(BD_ADDR_A,RAND_A) xor Encrypt2(BD_ADDR_B,RAND_B)。或者K_AB=K_A xor K_B

    接下来我们来介绍质询-响应认证机制。

    1615188109_6045d08d5be8375f55d5a.jpg

    上述认证过程初步互换秘钥过程是:最开始A设备用K来加密LK_RAND_A,之后将其释放到B(不管K是K_A,还是K_B, K_AB);B中采用同样的秘钥K可以得到随机数LK_RAND_A,过程是(LK_RANDA ⊕K)⊕K;而B中可以用K加密LK_RAND_B,用K加密后传输至A处,A在采用K解密,此处可以达到(LK_RANDB ⊕K)⊕K = LK_RANDB,这样生成K_B.

    二者采用不同方式,可以生成K_AB等复合型秘钥。

    质询-响应身份验证的过程是,其中将检查申请人对秘密链接密钥的了解,如上图所描述。每次身份验证期间,系统都会使用一个新的128位伪随机数 AU_RAND以未加密形式通过空中交换。通过E1(AU_RANDA,BD_ADDRB,链接秘钥)功能在两个设备中生成32位结果(SRES,签名响应)和96位结果(ACO,身份验证密码偏移),其中链接秘钥为KA或KAB 。A生成的SRES值,通过未加密形式向验证设备B传播。验证者将生成的SRES值与接收到的SRES值进行比较,如果这些值匹配(0),则验证成功完成。当生成加密密钥时,将在事件安全性链的下一个阶段中使用ACO。

    二、MITM的一种方式

    MITM称为Man In The Middle Attack, 感兴趣的同事可考虑如下故事:

    1.爱丽丝将她的公钥发送给鲍勃,但Mallory能够截获它。Mallory向Bob发送自己的公共密钥,并为其具有匹配的私有密钥。现在鲍勃错误地认为自己拥有爱丽丝的公钥。

    2.Bob将他的公钥发送给Alice,但是Mallory能够截取它。Mallory向爱丽丝发送自己的公共密钥,并为其提供匹配的私有密钥。现在爱丽丝错误地认为她拥有鲍勃的公钥。

    3.爱丽丝向鲍勃发送了一封用马洛里公钥加密的消息,但Mallory是能够拦截它。Mallory用他的私钥解密邮件,并保留一个邮件的副本,使用Bob的公钥对邮件重新加密,然后发送给鲍勃的消息。现在鲍勃错误地认为消息是直接传来的来自爱丽丝。

    4. Bob向Alice发送了一条用Mallory的公共密钥加密的消息,但是Mallory是能够拦截它。

    Mallory用他的私钥解密消息,并保留一个邮件副本,使用爱丽丝的公钥重新加密邮件,然后发送给爱丽丝的消息。现在,爱丽丝错误地认为消息是直接传来的来自鲍勃。

    或可查看如下图片:

    1615188204_6045d0ecc458c6410b527.png

    蓝牙版本2.1 + EDR,3.0 + HS和4.0添加了用于配对过程的新规范,即SSP。其主要目标是通过提供针对被动监听和MITM攻击的保护来提高配对的安全性

    SSP使用椭圆曲线Diffie-Hellman(ECDH)公钥加密技术,而不是使用(通常为短密钥)作为构建链接密钥的唯一熵源。为了构造链接密钥,设备使用公共-专用密钥对,多个随机数和设备的蓝牙地址。SSP可以有效地阻止了被动窃听。

    为了提供针对MITM攻击的保护,SSP使用OOB通道(例如,Near Field Communication,NFC),或寻求用户的帮助:例如,当两个设备都具有显示器和键盘时,要求用户比较两个六位数的数字。也可以将这种比较视为不受MITM控制的OOB通道。如果配对过程中使用的值已被MITM篡改,则六位数完整性校验和将以0.999999的概率不同

    SSP使用四个关联模型。除了两个关联模型 前面提到过,OOB和数值比较模型名为PasskeyEntry 和Just Works也被使用。

    如果一台设备具有输入功能,但没有可显示六位数字的屏幕,则使用“密钥输入关联”模型。在具有输出功能的设备上向用户显示六位数的校验和,并要求用户在具有输入功能的设备上输入该校验和。如果两个设备都具有输入功能但没有输出功能,则也可以使用“密钥输入”关联模型。在这种情况下,用户选择一个6位数的校验和并将其输入两个设备中。最后,如果至少一个设备既没有输入也没有输出能力,并且不能使用OOB。

    最后,关于SSP,其主要是六个阶段:

    1.能力交换:由于某种原因从未想过进行配对的设备,首先要交换其输入/输出(IO)能力,以确定要使用的正确关联模型。

    2.公用密钥交换:设备生成其公用-专用密钥对,并将公用密钥相互发送。他们还计算Diffie-Hellman密钥。

    3.身份验证阶段1:在此阶段运行的协议取决于关联模型。此阶段的目标之一是确保设备之间的通信中没有MITM。这是通过使用一系列随机数,对随机数的承诺以及对完整性的最终检查来实现的通过OOB通道或在用户帮助下执行的校验和。

    4.认证阶段2:设备完成值(公共密钥和随机数)的交换并验证其完整性。

    5.链接密钥计算:双方使用其蓝牙地址,先前交换的值以及阶段2中构造的Diffie-Hellman密钥来计算链接密钥。

    6. LMP身份验证和加密:在此阶段生成加密密钥,这与在2.0 + EDR以下的蓝牙版本中进行配对的最终步骤相同。

    微信公众号:末心网安 | Q群374327762 | 淘宝店铺:末心网络|TinSec(听安)
    优秀!
    让我们一起干大事!
    有兴趣的表哥加村长QQ:780876774!
    使用道具 举报 回复
    不明觉厉
    使用道具 举报 回复
    发新帖
    您需要登录后才可以回帖 登录 | 立即注册