【LE Audio】CSIS精讲[4]: 从加密原语到RSI解析全链路拆解

LE Audio作为蓝牙音频的新一代标准,把多设备协同能力做到了极致,小到双耳真无线耳机的同步发声,大到多扬声器的空间音频组网,甚至医疗场景的助听器集群、传感器节点组网,都离不开Coordinated Set Identification Service(CSIS)------协调集识别服务。而CSIS的所有安全能力,都扎根于其核心的安全工具箱,这套由多个加密函数、密钥操作、标识生成解析流程组成的体系,决定了协调集设备身份识别的唯一性、安全性和抗追踪性。


目录

一、安全工具箱的核心定位与设计逻辑

二、基础加密原语:安全工具箱的基础工具

[2.1 加密函数e:标准化的AES-128加密实现](#2.1 加密函数e:标准化的AES-128加密实现)

[2.2 CMAC函数:基于RFC4493的消息认证与密钥派生基础](#2.2 CMAC函数:基于RFC4493的消息认证与密钥派生基础)

三、密钥加工层:s1盐生成与k1密钥派生,打造专属加工工具

[3.1 s1盐生成函数:为密钥派生增加随机性因子](#3.1 s1盐生成函数:为密钥派生增加随机性因子)

[3.2 k1密钥派生函数:生成SIRK加解密的专属密钥](#3.2 k1密钥派生函数:生成SIRK加解密的专属密钥)

四、核心密钥加解密层:sef与sdf,守护协调集的核心门禁密钥SIRK

[4.1 SIRK加解密的核心前提:传输层密钥适配](#4.1 SIRK加解密的核心前提:传输层密钥适配)

[4.2 sef加密函数:服务器端的SIRK加密包装](#4.2 sef加密函数:服务器端的SIRK加密包装)

[4.3 sdf解密函数:客户端的SIRK拆包还原](#4.3 sdf解密函数:客户端的SIRK拆包还原)

五、身份标识层:sih哈希+RSI生成与解析,制作协调集的动态身份牌

[5.1 sih哈希函数:RSI的哈希生成器](#5.1 sih哈希函数:RSI的哈希生成器)

[5.2 RSI生成操作:协调集设备的身份牌制作](#5.2 RSI生成操作:协调集设备的身份牌制作)

[5.3 RSI解析操作:客户端身份牌验证"](#5.3 RSI解析操作:客户端身份牌验证”)

六、安全工具箱的全链路工作流程

[6.1 阶段1:SIRK的安全传输(服务器→客户端)](#6.1 阶段1:SIRK的安全传输(服务器→客户端))

[6.2 阶段2:RSI的生成与解析(设备广播→客户端验证)](#6.2 阶段2:RSI的生成与解析(设备广播→客户端验证))

七、安全工具箱的设计亮点与工程实现坑点

[7.1 设计亮点](#7.1 设计亮点)

[7.2 工程实现坑点](#7.2 工程实现坑点)

八、测试


如果把蓝牙协调集比作一个专属俱乐部,那么安全工具箱就是俱乐部的密钥管理 室+身份制作间:核心加密原语是工坊的基础工具,密钥派生是工具的组合加工,SIRK加解密是给俱乐部核心门禁密钥做安全包装,而RSI的生成与解析则是制作动态变化的临时身份牌,只有持有合法核心密钥的成员,才能验证临时身份牌的有效性并加入俱乐部。

本文会从安全工具箱的设计逻辑出发,从底层加密原语到高层身份标识操作,层层拆解每个函数的定义、设计目的和实际应用,结合协议样本数据做实操性解析,同时梳理全链路工作流程和工程实现的注意事项,让大家真正吃透CSIS的安全核心。


一、安全工具箱的核心定位与设计逻辑

CSIS的核心目标是让设备能被识别为协调集的一员,同时为客户端提供协调集的独占访问权,而安全工具箱的设计就是为了实现两个核心安全需求:一是保护协调集的唯一标识密钥SIRK不被泄露,二是让协调集设备的广播标识具备抗追踪性

为了满足这两个需求,安全工具箱采用分层设计,从底层到高层分为四个层级:基础加密原语、密钥加工层、核心密钥加解密层、身份标识层,每层都基于蓝牙核心规范(Version 4.2及以上)和通用加密标准(如RFC4493的AES-CMAC)实现,既保证了不同厂商设备的兼容性,又适配了蓝牙低功耗设备的资源受限场景------大量使用计算效率高的操作(如按位异或、取低位数),避免复杂运算带来的功耗损耗。

整个安全工具箱的所有函数和操作都是强关联且层层递进的:底层加密原语是所有操作的基础,密钥加工层基于原语生成专属的加解密密钥,核心密钥加解密层保护SIRK的传输安全,身份标识层则基于SIRK生成动态的广播标识RSI,并完成解析验证。所有操作的最终目的,都是让合法客户端能安全获取SIRK,并通过SIRK识别协调集设备,同时防止第三方窃取SIRK或追踪设备。

二、基础加密原语:安全工具箱的基础工具

基础加密原语包含加密函数eCMAC函数,是整个安全工具箱的底层基石,所有高层的密钥派生、哈希计算、加解密操作,都基于这两个函数实现。协议对这两个函数的实现做了严格的标准化要求,确保不同厂商的设备能互通使用。

2.1 加密函数e:标准化的AES-128加密实现

协议中对加密函数e的定义为:

该函数并非CSIS自定义,而是直接采用蓝牙核心规范Volume 3, Part H, Section 2.2.1 中定义的标准加密函数,本质是AES-128 对称加密算法

函数的输入为128位的密钥key和任意长度的明文plaintext,输出为与明文等长的密文ciphertext。在CSIS中,该函数主要用于后续RSI哈希函数sih的计算,是所有与加密相关操作的基础。

协议明确要求,加密函数e的实现必须严格遵循蓝牙核心规范,设备可以选择两种实现方式:一是在主机端直接实现AES-128算法,二是通过HCI_LE_Encrypt命令调用蓝牙控制器的AES硬件加速功能------后者更适合低功耗设备,能在保证加密效率的同时降低功耗。

2.2 CMAC函数:基于RFC4493的消息认证与密钥派生基础

CMAC函数全称为Cipher-based Message Authentication Code,协议中定义为:

该函数基于RFC4493 实现,采用AES-128作为分组密码,是安全工具箱中密钥派生、盐生成的核心函数。

函数的输入为128位的密钥k和可变长度的待认证数据m,输出为128位的消息认证码MAC。与普通的MAC算法相比,AES-CMAC在蓝牙低功耗场景下的优势在于计算效率高、抗碰撞性强,既能保证数据的完整性和真实性,又不会给低功耗设备带来过大的计算压力。

协议对CMAC函数的使用做了一个关键的 字节序 约束 :在后续的s1盐生成和k1密钥派生函数中,当多字节整数作为CMAC的输入时,必须采用大端序(MSO在前,LSO在后),CMAC的输出也同样为大端序。这是厂商实现时最容易踩坑的点之一,字节序错误会直接导致后续的密钥派生、加解密结果全部失效。

此外,CMAC函数的实现与加密函数e共用AES-128算法,设备可以复用AES的实现逻辑,减少代码冗余。

三、密钥加工层:s1盐生成与k1密钥派生,打造专属加工工具

密钥加工层是连接基础加密原语和高层加解密操作的桥梁,包含s1盐生成函数k1密钥派生函数 。这一层的核心目的是避免直接使用蓝牙 传输层 的核心密钥(LTK/Link Key)进行加解密,通过盐生成和密钥派生,为SIRK的加解密生成专属密钥,降低核心密钥泄露的风险。

3.1 s1盐生成函数:为密钥派生增加随机性因子

盐的作用是在密钥派生中避免相同的输入生成相同的派生密钥,增加抗碰撞性。协议中s1函数的定义为:

其中有两个核心输入参数:

  1. M:非零长度的字节数组或ASCII字符串,若为字符串,需转换为对应的ASCII码整数(如字符串CSIS转换为0x43534953);

  2. ZERO:128位的全0密钥,是CMAC函数的固定密钥。

简单来说,s1函数就是用全0密钥的AES-CMAC对输入M进行计算,输出128位的盐值。协议中对M的取值做了明确的业务化定义,在SIRK的加解密中,M固定为字符串SIRKenc,这一设计让盐值与CSIS的SIRK操作强绑定,避免跨场景的盐值复用。

s1函数的设计逻辑非常简洁,采用全0密钥的目的是标准化盐值的生成方式,确保不同设备对相同的M能生成完全一致的盐值,这是多设备互通的关键。

3.2 k1密钥派生函数:生成SIRK加解密的专属密钥

k1函数是CSIS中最核心的密钥派生函数,协议中定义为两步计算:

  1. 先计算中间密钥:

  2. 再计算最终派生密钥:

函数的三个输入参数各有其作用,且都为可配置项,能适配不同的业务场景:

  1. SALT:128位盐值,由s1函数生成,是派生密钥的随机性基础;

  2. N:任意长度字节,一般传入设备相关的非ce(Nonce),让派生密钥与设备绑定;

  3. P:任意长度字节,一般传入协议标识,让派生密钥与具体业务绑定。

在SIRK的加解密场景中,N为空,SALT为s1(SIRKenc)的输出,P为字符串csis,这一参数组合让k1函数生成的派生密钥仅用于CSIS的SIRK加解密操作,实现了密钥的场景隔离------即使该派生密钥泄露,也不会影响蓝牙传输层的核心密钥(LTK/Link Key),大大降低了密钥泄露的风险。

k1函数的两步派生设计也进一步提升了密钥的安全性,通过中间密钥T的二次计算,让派生密钥与输入参数的关联更复杂,增加了暴力破解的难度。

四、核心密钥加解密层:sef与sdf,守护协调集的核心门禁密钥SIRK

SIRK(Set Identity Resolving Key)是协调集的唯一标识密钥 ,为128位的随机数,所有属于同一协调集的设备都共享同一个SIRK,是客户端识别协调集设备的核心依据。SIRK的安全直接决定了CSIS的安全性,因此协议设计了sef加密函数sdf解密函数,专门保护SIRK的传输安全------SIRK在设备间传输时必须以加密形式存在,禁止明文传输。

4.1 SIRK加解密的核心前提:传输层密钥适配

sef和sdf函数的加密密钥K并非固定值,而是根据蓝牙的传输层类型动态适配,协议明确规定:

  • 若采用**LE(低功耗)**传输,K为客户端与服务器共享的LTK(Long Term Key);

  • 若采用**BR/EDR(基础速率/增强速率)**传输,K为客户端与服务器共享的Link Key。

这一设计让SIRK的加解密密钥与蓝牙传输层的安全上下文保持一致,确保只有建立了合法安全连接的客户端,才能获取到加解密所需的密钥K,从源头保证SIRK的传输安全。

4.2 sef加密函数:服务器端的SIRK加密包装

sef函数是服务器端用于加密SIRK的函数,协议定义为:

其中oplus为按位异或操作

函数的计算流程分为三步:

  1. 用s1函数对字符串SIRKenc计算,生成128位盐值;

  2. 用k1函数以传输层密钥K为基础,结合上述盐值和字符串csis,派生128位的专属加解密密钥;

  3. 将派生密钥与SIRK进行按位异或,得到加密后的SIRK(EncSIRK)。

协议选择按位异或 作为加解密的核心操作,核心原因是计算效率极高 ------异或操作是硬件级别的基础运算,对蓝牙低功耗设备来说,几乎没有计算压力,同时异或操作具备对称性,相同的密钥异或两次即可还原原始数据,这也是sdf解密函数的设计基础。

结合附录A.2的样本数据实操计算

协议附录A给出了sef函数的完整样本数据,我们可以通过实际计算理解函数的工作过程:

这一计算过程验证了sef函数的实现逻辑,也能让我们更直观地理解各函数之间的层级调用关系。

4.3 sdf解密函数:客户端的SIRK拆包还原

sdf函数是客户端用于解密密文EncSIRK的函数,协议定义为:

可以看到,sdf函数与sef函数的计算逻辑完全一致,这正是利用了异或操作的对称性------客户端使用与服务器相同的传输层密钥K,经过相同的s1盐生成和k1密钥派生,得到与服务器完全相同的派生密钥,再用该密钥与EncSIRK异或,即可还原出原始的SIRK。

协议对SIRK的暴露方式做了严格的安全约束:

  1. 若服务器选择加密暴露SIRK,则禁止同时明文暴露

  2. 若服务器仅支持通过OOB(带外)方式暴露SIRK,则客户端发起SIRK读取请求时,服务器需返回错误码OOB SIRK Only(0x83),拒绝读取。

这些约束从实现层面避免了SIRK的泄露风险,进一步保障了协调集的安全。

五、身份标识层:sih哈希+RSI生成与解析,制作协调集的动态身份牌

如果说SIRK是协调集的核心门禁密钥,那么RSI(Resolvable Set Identifier)就是协调集设备的动态广播身份牌。RSI是6字节(48位)的广播标识,由设备动态生成并广播,客户端通过SIRK解析RSI,验证设备是否属于某一协调集。

协议设计RSI的核心目的是防止设备被追踪------如果设备使用固定的广播标识,第三方可以通过该标识持续追踪设备的位置;而RSI基于随机数生成,设备可以频繁更新RSI,第三方无法通过动态变化的RSI追踪设备,同时合法客户端持有SIRK,能解析任意一个版本的RSI,不影响设备发现。

身份标识层包含sih哈希函数RSI生成操作RSI解析操作,其中sih是核心,RSI的生成和解析都基于sih函数实现。

5.1 sih哈希函数:RSI的哈希生成器

sih函数是专门为RSI设计的哈希函数,基于基础加密函数e实现,协议定义为:

其中k为128位SIRK,r为24位随机数prand,函数的计算流程分为四步:

  1. 将24位的prand拼接104位的全0填充位 ,生成128位的r'------拼接规则为LSO的prand成为LSO的r',MSO的全0成为MSO的r'(如prand为0x3A98B5,r'为0x000000000000000000000000003A98B5);

  2. 以SIRK为密钥k,调用加密函数e对r'进行AES-128加密,得到128位密文;

  3. 对密文执行操作,即取密文的最低24位

  4. 该24位结果即为sih函数的输出,作为RSI的hash部分。

拼接104位全0的目的是适配AES-128的输入要求------AES-128的输入必须为128位的整数,而prand为24位,需要通过填充补至128位。取最低24位则是为了让hash值与prand的位数一致,便于后续拼接为6字节的RSI。

结合附录A.1的样本数据实操计算

协议附录A给出了sih函数的样本数据,实际计算过程如下:

5.2 RSI生成操作:协调集设备的身份牌制作

RSI生成操作是基于sih函数的高层操作,协议规定RSI为6字节(48位),由24位hash值24位prand随机数 拼接而成,生成流程分为两步:生成符合约束的prand拼接hash和prand得到RSI

关键约束:prand的生成规则

prand是24位的随机数,但协议对其做了三个强制约束,目的是避免生成无效的随机数,保证RSI的唯一性和可解析性:

  1. prand的最高两位(MSBs)必须固定为0和1(即01);

  2. prand的随机部分(剩余22位)至少有一个0位

  3. prand的随机部分(剩余22位)至少有一个1位

这三个约束看似简单,却是实现RSI互通的关键------如果prand的最高两位不固定,客户端在解析RSI时无法正确拆分hash和prand,导致解析失败。

RSI的最终格式

prand生成后,调用sih函数以SIRK为密钥、prand为输入,生成24位hash值,然后按hash || prand的顺序拼接,得到6字节的RSI,其格式示意图如下:

RSI的传输采用小端序(LSO在前),即RSI的最低位为hash的最低位,最高位为prand的最高位。

5.3 RSI解析操作:客户端身份牌验证"

RSI解析操作是客户端识别协调集设备的核心步骤,是RSI生成操作的反向过程,只有持有该协调集SIRK的客户端,才能完成解析验证,流程分为四步:

  1. 拆分RSI:将客户端扫描到的6字节RSI,按生成时的拼接顺序拆分为24位hash值和24位prand随机数;

  2. 生成本地hash:调用sih函数,以客户端持有的SIRK为密钥、拆分出的prand为输入,生成24位的本地hash值(localHash);

  3. 哈希对比:将本地hash值与从RSI中拆分出的hash值进行对比;

  4. 验证结果:若两者一致,则RSI解析成功,该设备属于该协调集;若不一致,则解析失败,设备不属于该协调集。

整个解析过程的核心是SIRK的合法性 ------只有持有正确SIRK的客户端,才能生成与设备端相同的localHash,从而完成验证。这一设计让RSI具备了安全性和隐私性:第三方无法获取SIRK,因此无法解析RSI,既无法识别设备所属的协调集,也无法通过动态变化的RSI追踪设备。

六、安全工具箱的全链路工作流程

将上述四个层级的函数和操作串联起来,就能得到CSIS安全工具箱的完整工作流程,分为两大核心阶段:SIRK的安全传输阶段和RSI的生成与解析阶段,这两个阶段构成了CSIS实现协调集识别的完整安全链路。

6.1 阶段1:SIRK的安全传输(服务器→客户端)

  1. 协调集设备(服务器)与客户端建立LE/BR/EDR安全连接,双方共享传输层密钥LTK/Link Key;

  2. 服务器调用s1函数对字符串SIRKenc计算,生成128位盐值;

  3. 服务器调用k1函数,以传输层密钥为基础,结合上述盐值和字符串csis,派生128位专属加解密密钥;

  4. 服务器调用sef函数,将派生密钥与SIRK按位异或,得到加密后的EncSIRK;

  5. 服务器将EncSIRK发送给客户端,客户端调用sdf函数,通过相同的步骤派生密钥,与EncSIRK异或还原出SIRK;

  6. 客户端存储该SIRK,作为后续解析该协调集RSI的核心密钥。

6.2 阶段2:RSI的生成与解析(设备广播→客户端验证)

  1. 协调集设备生成符合协议约束的24位prand随机数;

  2. 设备调用sih函数,以SIRK为密钥、prand为输入,生成24位hash值;

  3. 设备将hash和prand按hash||prand的顺序拼接,得到6字节RSI,并通过蓝牙广播发送;

  4. 客户端扫描到该RSI后,将其拆分为hash值和prand随机数;

  5. 客户端调用sih函数,以存储的SIRK为密钥、拆分出的prand为输入,生成本地hash值;

  6. 客户端对比本地hash值与RSI中的hash值,一致则验证通过,确定设备属于该协调集。

整个流程中,所有函数和操作都层层调用、环环相扣,没有任何一步是孤立的,这也是CSIS安全工具箱设计的精妙之处------通过分层设计,让每个函数都专注于单一功能,同时通过层级调用,实现复杂的安全需求。

七、安全工具箱的设计亮点与工程实现坑点

从协议设计和工程实现的角度,梳理CSIS安全工具箱的设计亮点容易踩坑的点,既能帮助我们更深入理解协议设计的逻辑,也能为实际开发提供参考。

7.1 设计亮点

  1. 分层设计,高内聚低耦合:从基础加密原语到身份标识层,每层函数专注于单一功能,层级之间通过固定的接口调用,便于实现和维护,同时也便于协议的后续扩展;

  2. 低功耗优化,适配蓝牙LE:大量使用计算效率高的操作(异或、取低位数),复用AES-128算法实现,支持硬件加速,完美适配蓝牙低功耗设备的资源受限场景;

  3. 隐私保护与安全性兼顾:RSI动态生成实现抗追踪,SIRK加密传输避免泄露,只有合法客户端能获取SIRK并解析RSI,兼顾了设备的隐私保护和协调集的识别安全;

  4. 与蓝牙核心规范深度融合:所有基础函数都基于蓝牙核心规范实现,传输层密钥适配LTK/Link Key,保证了与蓝牙现有安全体系的兼容性,无需额外的安全适配;

  5. 唯一性保证:SIRK为128位随机数,符合蓝牙核心规范的随机数生成要求,保证了每个协调集的标识唯一性,避免不同协调集的设备被误识别。

7.2 工程实现坑点

  1. 字节序问题:s1和k1函数中CMAC的输入输出为大端序,而CSIS特征的传输为小端序,两者需严格区分,否则会导致密钥派生、加解密结果错误;

  2. prand的生成约束:必须严格遵循最高两位为01、随机部分有0有1的约束,否则生成的RSI无法被客户端解析;

  3. 异或操作的位对齐:SIRK和派生密钥都是128位,异或时需保证位对齐,避免因字节序转换导致的位偏移,进而解密失败;

  4. AES函数的实现一致性:加密函数e和CMAC函数共用AES-128,需保证实现的一致性,建议使用蓝牙控制器的HCI_LE_Encrypt命令,避免主机端实现的差异;

  5. 错误处理的完整性:需处理协议定义的各类错误码(如OOB SIRK Only 0x83),尤其是SIRK读取和RSI解析的错误,避免程序异常;

  6. lock_timeout的合理设置:虽然不属于安全工具箱,但与RSI解析后的协调集访问相关,建议设置为60秒,过短会导致操作中断,过长会导致协调集被独占。

八、测试

题目:CSIS中sef和sdf函数的实现原理是什么?LE和BR/EDR传输时的密钥选择有何不同?

答案

  1. sef和sdf函数基于按位异或k1密钥派生实现,核心公式为:

原始数据利用异或的对称性实现加解密的统一逻辑,适配蓝牙低功耗设备的计算效率要求;

  1. 密钥选择的差异:LE传输时,函数的加密密钥K为客户端与服务器共享的LTK(低功耗链路密钥);BR/EDR传输时,K为双方共享的Link Key(基础速率/增强速率链路密钥),该设计让加解密密钥与传输层安全上下文一致,保证加密安全性。

题目:CSIS中RSI的生成流程是什么?协议对prand随机数有哪些强制约束?

答案

  1. RSI为6字节48位的可解析集标识符,生成流程为:①生成符合协议约束的24位prand随机数;②以协调集SIRK为密钥、prand为输入,调用sih函数生成24位hash值;③将hash和prand按hash||prand的顺序拼接,得到6字节RSI;

  2. 协议对prand的三个强制约束:①prand的最高两位(MSBs)固定为0和1;②prand的随机部分(剩余22位)至少包含一个0位;③prand的随机部分(剩余22位)至少包含一个1位,约束的目的是避免生成无效随机数,保证RSI的可解析性和唯一性。

题目:CSIS中sih哈希函数的计算步骤是什么?结合协议附录的样本数据说明核心过程。

答案

  1. sih函数是基于加密函数e的专属哈希函数,计算步骤为:①将24位prand拼接104位全0,生成128位的r'(LSO的prand为LSO的r');②以SIRK为密钥,调用e函数对r'进行AES-128加密,得到128位密文;③对密文执行,取最低24位作为输出;

  2. 附录样本数据的核心过程:样本SIRK和prand均为0x0000000000000000000000000069f563,r'为该值拼接全0,e函数加密后得到0x3fb0534994e48cd8022b55909b1948da,取最低24位0x1948da即为sih函数的输出。


相关推荐
EasyDSS7 小时前
视频直播点播/音视频点播/云点播/云直播EasyDSS一站式音视频平台赋能社交娱乐场景创新
音视频·娱乐
CYB353217 小时前
R&S 罗德与施瓦茨 R&S VTC-VTE-VTS 视频测试仪
音视频
sweetone19 小时前
夏普LCD-46LX530A液晶电视机不开机故障之小修(包含RUNTKA829WJQZ电源板实测电路图)
经验分享·音视频
美狐美颜SDK开放平台19 小时前
从采集到渲染:直播APP开发中视频美颜SDK工作原理详解
人工智能·音视频·实时音视频·美颜sdk·视频美颜sdk·美颜api
Henrii_历小海20 小时前
WhatsApp Cloud API 媒体消息全链路:上传协议、类型约束、图片/视频预处理与发送管线
音视频·媒体
对讲机数码科普1 天前
哈尔滨对讲机无声、音量小、喇叭破音故障修复 香坊双工电子音频组件专项维保
音视频
人生百态,人生如梦1 天前
情感交互仿生人从技术到落地构想2——技术交流贴(2026.7)
人工智能·机器人·人机交互·交互
dualven_in_csdn1 天前
【摄像头】虚拟摄像头
音视频
小二·1 天前
多模态RAG实战:用LangChain+Milvus打造支持图文音视频的企业级知识库
langchain·音视频·milvus