Page 460 - 《软件学报》2026年第2期
P. 460
毕昌兵 等: 5G 车联网中基于区块链的半分布式消息认证加密方案 939
接收者, 其中 KGC 由各区域的 VMC 充当, 发送者和接收者均是车辆. 无证书签名算法形式化定义为如下 7 个子
算法.
1) 系统参数生成算法: 输入安全参数 τ, 返回系统参数 params、系统公钥 P Pub 和系统私钥 sk.
∗
2) 秘密值生成算法: 输入地址 Addr k 、系统参数 params, 返回 Addr k 的秘密值 x k ∈ Z .
q
3) 部分密钥生成算法: 输入地址 Addr k 、系统参数 params 和系统私钥 sk, 返回 Addr k 的部分私钥 py k .
∗ Addr k 的私钥
4) 私钥生成算法: 输入地址 Addr k 、系统参数 params、部分私钥 y k 和秘密值 x k ∈ Z , 返回
q
SK k = (x k ,y k ).
∗ Addr k 的公钥
5) 公钥生成算法: 输入地址 Addr k 、系统参数 params, 部分公钥 Y k 和秘密值 x k ∈ Z , 返回
q
PK k = (X k ,Y k ).
6) 签名算法: 输入系统参数 params、消息 m k 、发送者的地址 Addr k 及其私钥 SK k , 返回签名 σ k .
7) 验证算法: 输入系统参数 params、签名 σ k 、发送者的地址 Addr k 及其公钥 PK k , 若验证通过, 则返回 1; 否
则返回 0.
2.3 安全模型
参照 Al-Riyami 等人 [26] 所定义的安全模型, 在无证书密码机制中, 主要面临的敌手为类型 I 的敌手 A I 和类型
II 的敌手 A II , 通过模拟挑战者和敌手之间的两个游戏来证明方案的安全性. 两种类型的敌手分别介绍如下.
● 类型 I: 敌手 A I 可以替换合法用户的公钥, 但不知道系统主密钥, 也指代恶意用户.
● 类型 II: 敌手 A II 可以获得系统主密钥, 但不能替换合法用户的公钥, 也指代恶意 KGC.
游戏 1: 定义为敌手 A I 和挑战者 C 之间的一个游戏. 在该游戏中, 将哈希函数 H 1 和 H 2 看作随机预言机 (random
oracle, RO). 游戏包括 3 个阶段, 过程如下.
1) 初始化阶段: 挑战者 C 输入安全参数 τ 进行系统初始化, 生成系统公/私钥, 以及系统参数, C 将系统参数发
送给敌手 A I .
2) 询问阶段: A I 可以执行如下询问.
● H 1 询问: 当 A I 选择 (Addr,X,Y,P Pub ) 执行该询问时, C 选择一个随机数 α, 并发送给 A I .
● H 2 询问: 当 A I 选择 (X,Y,K,m,t) 执行该询问时, C 选择一个随机数 β, 并发送给 A I .
● 部分私钥询问: 当 A I 选择 Addr 执行该询问时, C 生成 Addr 的部分私钥 (Y,cy), 并发送给 A I .
● 私钥询问: 当 A I 选择 Addr 执行该询问时, C 生成 Addr 的私钥 SK, 并发送给 A I .
● 公钥询问: 当 A I 选择 Addr 执行该询问时, C 生成 Addr 的公钥 PK, 并发送给 A I .
● 公钥替换询问: A I 可以选择新的秘密值 x, 计算新公钥 PK , 并替换任意 Addr 的原有公钥 PK Addr .
∗
● 签名询问: 当 A I 选择 (Addr,m) 执行该询问时, C 产生一个对消息 m 的签名, 并发送给 A I .
3) 伪造阶段: 经过概率多项式次询问后, A I 选择一个消息 m 和一个目标地址 Addr , 伪造签名 σ , 然后向 C
∗
∗
∗
∗
∗
提交 <Addr ,σ > 作为挑战. 如果下面的 3 个条件同时成立, 则称 A I 在游戏 1 中获胜.
a) A I 没有使用 Addr 执行过部分私钥询问.
∗
b) A I 没有使用 Addr 执行过私钥询问.
∗
c) 伪造的签名能成功通过验证, 即: 1 ← Verify(Addr ,m ,σ ,PK ).
∗
∗
∗
∗
A I 在游戏 1 中获胜的概率为:
记
∗
∗
∗
Adv τ = Pr[1 ← Verify(Addr ,m ,σ ,PK )].
∗
A I
定义 1. 在概率多项式时间内, 类型 I 的敌手 A I 以可忽略的优势 Adv τ 在游戏 1 中取得胜利, 则称该无证书签
A I
名方案在适应性选择消息攻击下具有不可伪造性 (EUF-CMA).
游戏 2: 定义为敌手 A II 和挑战者 C 之间的一个游戏, 与游戏 1 类似, 游戏 2 也包含了以下 3 个阶段.
1) 初始化阶段: 挑战者 C 输入安全参数 τ 进行系统初始化, 生成系统公/私钥, 以及系统参数, C 将系统参数及

