1 预备知识
1.1 困难问题
ECDL 问题
椭圆曲线上的循环加法群 G 由无穷远点 O 和曲线 E 上的其他点组成,P、q 为生成元和阶。给定群 G 中已知两个点 P 和 Q,且 Q=xP,其中 x∈Zq∗。敌手 A 在 PPT 时间内计算 x 是困难的,即解决 ECDL 问题的概率 ϵ 是可忽略的。
* 注:然而,本文方案实际并未使用到椭圆曲线,故基于的困难问题应为离散对数问题
RSA 问题
一个 PPT 敌手 A 尝试计算一个整数 u,使得 ue≡c(modn),其中 (n,e,c) 是已知的,且 n 是两个不同奇素数 p 和 q 的乘积,满足最大公约数 gcd(e,(p−1)(q−1))=1。A 解决 RSA 问题的概率 ϵRSAA=Pr[A(n,e,c)→u] 是可忽略的。
变种 RSA 问题
一个 PPT 敌手 A 尝试计算两个整数 (w,u),使得 ue≡awz(modn)。其中 (n,e,a,z) 是已知的,且 n 是两个不同奇素数 p 和 q 的乘积,满足 gcd(e,(p−1)(q−1))=1。A 解决 VRSA 问题的概率 ϵVRSAA=Pr[A(n,e,a,z)→(w,u)] 是可忽略的。
1.2 Shamir 秘密共享
Shamir 秘密共享方案通过将一个秘密值 s 拆分为 n 个片段 s1,...,sn,每位参与者 P1,...,Pn 分别持有一个片段。核心原理是:当群体中至少有 t 个成员时,能够恢复秘密值 s;否则无法恢复。
-
秘密分发
- 随机选择 s∈Zq∗ 作为共享的秘密值,随机选取一个满足 f(0)=s 的 t−1 次多项式 f(x)=s+∑j=1t−1ajxj mod q
- 随机选择 αi∈Zq∗,计算 f(αi)=si,其中 i∈{1,...,n}
- 将第 i 个片段 {αi,f(αi)} 分发给对应的参与者 Pi
-
秘密恢复:对包含至少 t 个参与者的群体 S,这些参与者通过以下等式恢复秘密值 s=f(αi),其中Δαi,S(x) 为拉格朗日基本多项式:
f(x)=Pi∈S∑Δαi,S(x)f(αi)
Δαi,S(x)=Pk∈S,k=i∏αi−αkx−αkmodq
1.3 汉明距离
汉明距离(Hamming Distance)最早用于数据传输纠错码,是两个字符串或向量中对应位置位不同的数目。给定两个等长的字符串或向量 x=(x1,x2,…,xn) 和 y=(y1,y2,…,yn),其汉明距离 dH(x,y) 定义为:
dH(x,y)=i=1∑nδ(xi,yi), 其中 δ(xi,yi)={10当 xi=yi当 xi=yi
2 认证方案流程
![]()
-
Setup:系统初始化,由 TA 执行,输入安全参数 λ,TA 与 KGC 共同输出系统主私钥 s,并发布系统参数 Para
-
Registration and Pseudo-identity Generation:注册与假名生成,每辆车辆 Vj 向 TA 申请注册,TA 运行本算法输入车辆的生物特征 bioj,输出生物身份 BIDj。随后车辆为 Vj 创建假名 PIDj,并通过安全信道发送给车辆
-
Partial Private Key Extract:部分密钥生成,由 KGC 执行,输入 Vj 的假名 PIDj、系统主密钥 s 和系统参数 Para,输出 Vj 的部分私钥 PSPID
-
Set Secret Value:设置秘密值,由 Vj 执行,输入其假名 PIDj 和系统参数 Para,生成其秘密值 xPID
-
Set Private Key:设置私钥,由 Vj 执行,输入假名 PIDj、部分私钥 PSPID、系统参数 Para 和秘密值 xPID,生成其完整私钥 SKPID
-
Set Public Key:设置公钥,由 Vj 执行,给定车辆 Vj 的秘密值 xPIDj,生成 Vj 的公钥 PKPIDj
-
Sign:签名,由 Vj 执行,输入 Vj 的假名 PIDj、系统参数 Para、消息 m 和完整私钥 SKPID,输出与 PIDj 和消息 m 关联的签名 σ
-
Verify:验证,给定车辆 Vj 的假名 PIDj、系统参数 Para、公钥 PKPIDj、消息 m 和签名 σ,返回 1 或 0
2.1 系统初始化
![]()
在此阶段,TA 生成系统主密钥并公布参数列表:
-
给定安全参数 λ,随机选取大素数 p 和 q,计算 ϕ(N)=(p−1)(q−1) 和 N=pq,并将 p、q 和 ϕ(N) 保密
-
另选一组大素数 p′ 和 q′,使得 p′=p、q′=q、且 q′∣(p′−1)。同时,选取 g∈Zp′∗ 且 g=1,满足 gq′≡1(modp′)
-
TA 随机选取一个整数 e,满足 1<e<ϕ(N) 且 gcd(e,ϕ(N))=1。TA 根据方程 e⋅s≡1(modϕ(N)) 计算出主私钥 s
-
定义一个安全的对称密钥加密方案 Encκ(⋅)/Decκ(⋅),κ 为对称密钥
-
TA 与 KGC 选择三个密码学哈希函数:
- H1:{0,1}∗→ZN∗
- H2:{0,1}∗→{0,1}∣N∣/4
- H3:{0,1}∗×{0,1}∗×Zp′∗×{0,1}π→Zq′∗
-
公开参数列表 Para=(p′,q′,N,e,g,H1,H2,H3)
2.2 注册和假名生成
![]()
车辆在进入车联网前需要向 TA 注册:
-
Vj 通过安全信道向 TA 提供其真实的生物特征 bio
-
TA 生成生物特征标识 BIDj=IdGen(bio),IdGen(⋅) 是一种身份提取函数
-
TA 为 Vj 创建假名 PIDj=Encκ(BIDj∥nPID)∥Tj,其中 nPID 是请求的假名数量,Tj 为假名有效期
-
TA 通过安全信道向 Vj 发送 {BIDj,PIDj}
![]()
这一步还考虑了恶意车辆冒充 RSU 的情况,作者声称的解决方案是:
-
定义另一个安全签名方案,由 TA 将方案交给 RSU
-
RSU 定期广播自己的公钥、私钥签名后的真实身份、验签方法 Verpk(.)
-
车辆用 RSU 公钥验签;若验证失败,表明为假冒 RSU,向 TA 上报
-
TA 追溯此假冒 RSU 的真实身份
但这样做实际上是把系统的安全性建立在这个签名方案的保密性上,这并不能解决实际问题;而如果方案公开,对于一个正确的签名方案,伪装成 RSU 的恶意车辆总能自行选取一个 RID′,对 RID′ 生成一个合法签名并通过其他车辆的验证。
2.3 完整密钥生成
KGC 获取车辆 Vj 假名 PIDj,生物特征相关属性集 ω=(ωi)i=1n,主私钥 s,为 Vj 生成部分私钥:
-
随机选取阶数为 d−1 的多项式 p(x),满足 p(0)=s
-
计算 Vj 的部分私钥 PSPIDj=(PSi,j)i=1n,其中PSi,j=H1(PIDj)p(ωi) mod N
-
将部分私钥 PSPIDj 经安全信道交给 Vj
车辆 Vj 计算完整的公私钥对:
- 随机选取 xPIDj∈Zq′∗ 和阶数为 d−1 的多项式 f(x),满足 f(0)=xPIDj={xi,PIDj}i=1n,其中 xi,PIDj=f(ωi)
- 私钥 SKPIDj=(PSPIDj,xPIDj),公钥 PKPIDj=gxPIDj mod p′
2.4 签名
![]()
车辆 Vj 对消息 mj 签名:
-
随机选取 lj∈ZN∗ 和阶数为 d−1 的多项式 g(x),满足 g(0)=lj。对于 i∈{1,…,n},计算:
- yi,j=li,je mod N,其中 li,j=g(ωi)
- ui,j=PSi,j⋅ljH2(mj) mod N
-
随机选取 kj∈ZN∗ 和阶数为 d−1 的多项式 q(x),满足 q(0)=kj。对于 i∈{1,…,n},计算:
- rj=gkj mod p′
- vi,j=ki,j−xPIDj⋅hj mod q′,其中 ki,j=q(ωi),hj=H3(mj,PIDj,rj,Tj),Tj 为时间戳
-
得到签名 σj=(uj,vj,yj,rj,hj),其中 yj=(yi,j)i=1n, uj=(ui,j)i=1n, vj=(vi,j)i=1n
2.5 验证
验证者接收消息 - 签名对 (mj,σj) 和车辆 Vj 公钥 PKPIDj,生物特征相关属性集 ω=(ωi)i=1n,ω′=(ωi′)i=1n,其满足 ∣ω∩ω′∣≥d,验证签名:
-
从 ω∩ω′ 中随机选取一个包含 d 个元素的子集 S,验证等式
(ωi∈S∏ui,jΔωi,S(0))e=H1(PIDj)⋅(ωi∈S∑yi,jΔωi,S(0)H2(mj)edΔωi,S(0))modN
其中 Δωi,S(0) 为拉格朗日基本多项式。若上述等式成立,进入下一步验证
-
计算 hj′=H3(mj,PIDj,rj′,Tj),验证等式
rj′=(ωi∈S∏gjvi,j′)⋅(PKPIDj)hj′d mod p′
3 安全性分析
3.1 安全规约回顾
安全规约中涉及的三类实体:
-
敌手(Adversary):意图攻破密码学方案的实体;
-
挑战者(Challenger):当敌手与真实方案(Real Scheme)交互时,敌手实际上是在与挑战者交互,由挑战者生成真实方案并应答敌手的询问请求。挑战者仅出现在安全模型和安全描述中;
-
模拟器(Simulator):当敌手与模拟方案(Simulated Scheme)进行交互时,敌手实际上是在与模拟器进行交互,由模拟器生成模拟方案并应答来自敌手的询问请求。模拟器仅出现在安全归约中,作为运行归约算法的一方。
3.2 无证书签名的安全模型
3.3 本文模拟方案
底层困难问题
-
DL 问题:已知 {x,y ∣ y=gx, x∈Zq∗},求解 x 是困难的。
-
VRSA 问题:已知 {n,e,a,z ∣ n=pq, gcd(e,(p−1)(q−1))=1,ue≡awz(modn), u,w∈Zq∗},求解 u 和 w 是困难的。
3.4 求解困难问题
Type I 型敌手
I 型敌手伪造对于 (PID^,m^) 的签名 (u^,v^,y^,r^,h^),满足
![]()
得 (∑ωi∈Sy^iΔωi,S(0),∏ωi∈Su^iΔωi,S(0)) 为困难问题的解
然而,这与 VRSA 问题的难度相矛盾,故方案是安全的。
Type II 型敌手
在询问 Public Key Query 时,若 ∣PID∩PIDπ∣≥d,则令 PKPID=β
在求解推导中,通过控制 H3 的不同,得到对同一条消息的两条签名,满足
(∏ωi∈Sgv^)PKPIDπh^d=r^ mod p′ ①
(∏ωi∈Sgv′^)PKPIDπh′^d=r^ mod p′ ②
①−②得 loggβ=(h^′−h^)dv^−v^′ 为困难问题的解
然而,这与 DL 问题的难度相矛盾,故方案是安全的。
3.5 非形式化安全性证明
-
消息认证:根据证明,本方案在 ECDLP 和变种 RSA 问题难以解决的假设下是抗自适应选择消息攻击的,所提方案可以保证消息的完整性、认证性和不可否认性。
-
条件隐私保护:车辆 Vi 使用假名 PIDj 保护其真实身份,假名基于安全对称加密方案 Encκ(⋅)/Decκ(⋅) 生成,在不知道对称密钥 κ 的情况下,任何实体都无法恢复 Vi 的真实身份。仅 TA 拥有密钥,具备恢复 Vi 的真实身份 BIDj 的能力。
-
容错性:方案基于秘密共享将系统主私钥 s 和车辆 Vj 的秘密值 xPIDj 分别分成 n 份,使得车辆 Vj 的部分私钥、完整私钥及签名均可以被构造为 n 份的形式。任何包含至少 d 个属性的属性集均可验证 Vj 的签名,因此方案具有容错性。
-
可追溯性:当恶意车辆发送错误信息时,TA 可通过下述公式提取车辆 Vj 的生物特征身份 BIDj 并追踪恶意车辆:
-
不可链接性:假名生成时用到的随机数 lj 和 kj 是不重复的,每个 PID 是随机且唯一的。因此,攻击者无法关联由同一签名者生成的多个签名。
4 实验评估
4.1 计算开销
本文采用 MIRACL 密码学库计算了不同基本操作的执行时间。选取的参考方案 [19~25] 均为基于双线性配对的方案,因此与作者选取的这些方案相比,本文无配对的方案具有更低的计算开销。
![]()
-
Tbp:执行双线性映射操作的时间
-
Tbp.m:执行基于双线性映射的标量乘法操作的时间
-
Tbp.sm:执行基于双线性映射的小指数测试的时间
-
Tbp.a:执行基于双线性映射的点加操作的时间
-
Te.m:执行椭圆曲线上标量乘法操作的时间
-
Te.sm:执行椭圆曲线上小指数测试的时间
-
Te.a:执行椭圆曲线上点加操作的时间
-
Te.ex:执行模幂运算所需的时间
-
Tmtp:执行映射到点的哈希时间
4.2 通信开销
对 I 型双线性配对,为达到 80bit 安全长度,需要 ∣g1∣≥1024(bits),故 G1 的群元素大小为 1024÷8=128 字节。对比表明,本文方案在签名长度方面具有更低的通信开销。
![]()
-
lZq∗:20 字节,Zq∗ 中的元素长度
-
lG1:128 字节, G1 中的元素长度
-
lG:40 字节,G 中的元素长度
-
时间戳和哈希函数的输出分别设置为 4 字节和 20 字节