一、基础定义与标准来源
- 全称:Augmented Simple Password Authenticated Key Exchange,增强型基于密码的密钥协商协议,简称 SPAKE2+
- 官方标准:IETF RFC 9383(2023 正式发布),属于aPAKE 非对称 PAKE密码协议
- 核心定位双方仅依靠共享口令(Password),在不安全信道完成双向身份认证 + 协商一致高强度会话密钥; 区分两个固定角色:
- Prover 证明方:完整持有原始口令(客户端 / 手机钥匙)
- Verifier 验证方:不存储原始口令,仅存储口令派生的不可逆验证数据(车辆 ECU、服务端)
- 对比初代 SPAKE2 核心升级: SPAKE2 是对称 PAKE,两端都要存口令相关敏感数据; SPAKE2 + 为增强非对称架构,服务端泄露存储数据也无法直接还原口令,安全性大幅提升,是 CCC 数字钥匙、蓝牙配对主流标准。
二、前置密码学符号与固定参数
1. 基础密码组件
- G:素数阶椭圆曲线群(CCC 标准强制使用 NIST P-256);P:曲线生成元;n:群阶
- M、N:群内两个固定公开基点(预定义,离散对数未知,用于盲化公钥防攻击)
- Hash:SHA256/SHA512;KDF:密钥派生函数;MAC:消息认证码(AES-CMAC)
- Scrypt:慢速内存硬哈希,用于口令派生,抵抗离线暴力字典攻击
2. 注册阶段预计算(离线完成,配对前一次性执行)
仅 OEM / 车辆后台执行,生成车辆永久存储数据:
- 输入配对口令
pwd、随机盐 Salt; - 通过 Scrypt 派生两组数值:
w0、w1(两组独立口令派生私钥); - 计算验证器永久存储值:
L = w1 × P(椭圆曲线标量乘); - 车辆(Verifier)永久保存:
w0、L、Salt;车辆永不存储原始 pwd; - Prover(手机)仅临时持有 pwd,本地实时计算 w0/w1,无持久存储验证数据。
三、完整协议交互流程(两轮消息交互 + 双向密钥确认,共 4 步)
阶段 1:Prover 初始化,发送第一条公钥分享
- Prover(手机)用安全随机数生成临时私钥
x; - 盲化计算自身临时公钥:
- 向 Verifier(车辆)发送消息 1:
X(临时公钥)+ Salt、协议版本等上下文信息。
阶段 2:Verifier 响应,返回自身公钥
- 车辆生成临时私钥
y; - 盲化计算车辆临时公钥:
- 车辆校验收到的 X 属于合法椭圆曲线子群(非法直接终止协议,防子群囚禁攻击);
- 车辆发送消息 2:
Y+ 车辆身份标识。
阶段 3:双方独立计算共享秘密
1)Prover(手机)计算
校验 Y 为合法群元素,计算共享密钥材料:
h 为曲线余因子;通过 KDF 把 Z、身份 ID、交互报文哈希,生成主共享密钥K; 用 K 生成 MAC 校验码 M1(客户端确认码)。
2)Verifier(车辆)计算
校验 X 合法,使用本地存储的 L、y、w0 计算完全相同的共享秘密 Z、V,导出一致主密钥K,生成车辆侧 MAC 校验码 M2。
阶段 4:双向密钥确认(认证核心,缺一不可)
- 车辆先发 M1 给手机;手机校验 M1,不匹配直接断开;
- 手机校验通过后,回复 M2 给车辆;车辆校验 M2;
- 两边 MAC 全部校验通过 → 双向身份认证完成,双方持有相同会话密钥 K;
- 任意一步校验失败,协议立即终止,不输出任何密钥。
四、核心安全能力(协议原生防护机制)
- 抵抗中间人 MITM 攻击中间人无法同时持有双方口令派生参数 w0/w1,无法生成合法 M1/MAC 校验码,双向确认机制直接拦截中间人伪造链路。
- 服务器泄露安全(aPAKE 核心优势)车辆仅存储 w0、L,即使存储数据被窃取,攻击者只能执行高成本离线字典暴力破解,无法直接还原配对口令 pwd。
- 抵御离线字典攻击口令派生使用 Scrypt 内存硬哈希,大幅提升暴力猜解算力成本;且每条会话使用独立随机临时私钥 x/y,单组交互报文无法批量爆破口令。
- 防重放攻击每次协议执行 x、y 为密码学安全随机数,每次会话导出的密钥 K 完全不同,历史捕获的交互报文无法复用。
- 子群校验防护强制校验对方发来的 X/Y 是否属于素数阶子群,杜绝子群囚禁攻击,避免攻击者泄露密钥材料。
- 信道无明文口令全程交互不传输原始口令 pwd,所有消息均经过椭圆曲线盲化,抓包无法逆向推导口令。
五、密钥使用逻辑(协议输出成果)
- SPAKE2 + 协商输出主共享密钥 K;
- 通过标准 KDF 基于 K 派生三组工作密钥:
- ENC 密钥:对称加密业务报文(AES)
- MAC 密钥:完整性、真实性校验
- KEK 密钥:保护长期凭证、密钥材料下发;
- CCC 数字钥匙场景:派生密钥用于启动 SCP03 安全通道,后续所有配对、密钥下发、BLE/UWB 密钥交换全部加密传输。
六、SPAKE2 + 与普通 SPAKE2 关键差异对比
| 对比项 | SPAKE2(对称 PAKE) | SPAKE2+(增强 aPAKE) |
|---|---|---|
| 存储模型 | 两端均存储口令等效敏感数据 | 仅客户端持有原始口令;服务端仅存不可逆验证数据 L |
| 泄露风险 | 服务端数据泄露可快速破解口令 | 服务端数据泄露仅能离线暴力破解,攻击成本极高 |
| 适用场景 | 本地点对点设备配对 | 车载数字钥匙、云端 - 终端离线认证、大规模设备 |
| 标准 | 无正式 IETF RFC | RFC9383 标准化,CCC、FiRa 强制采用 |
七、协议执行强制校验规则(规范硬性要求)
- 收到对方椭圆曲线点 X/Y,必须校验属于素数阶子群,非法值直接退出;
- 临时私钥 x/y 必须使用加密安全真随机数,禁止复用;
- M、N 固定基点不可自定义修改,防止离散对数漏洞;
- 必须完成双向 MAC 确认,仅单方校验成功不能认定认证通过;
- 所有交互报文、双方设备身份 ID 必须纳入 KDF 哈希计算,防止协议降级、跨协议攻击。