Efficient Certificateless Aggregate Signcryption Scheme with Public Verifiability
开放科学(资源服务)标志码(OSID):
0 概述
签名和加密技术能够保证数据传输的安全性与可靠性,但其开销较大且效率较低。文献[1]对传统的“先签名后加密”的方式进行优化,并提出签密,即加密和签名同时实现,能够保证信息安全传输,减少计算量和传输开销。在密码领域,研究人员对签密进行研究,提出基于身份的签密[2]、无证书签密[3-5]、聚合签密[6-8]、多接收者签密[9-10]、广义签密[11]等具有特殊属性的签密方案。文献[3]在无证书密码环境下提出签密方案,提高了计算效率和安全性。文献[4]提出一种无证书签密方案并验证其安全性,在方案的设计中未涉及双线性映射运算,具有较高的计算效率。但文献[5]证明上述方案不满足安全性,并给出具体的攻击方案。
认证的消息越多,签名方案的运算效率越低。聚合签名[12-13]能够对大量签名进行同步验证。其中,基于无证书密码环境设计的聚合签名算法[14-16],在计算量和通信开销方面更具优势。文献[16]提出一种无证书聚合签名方案,为了降低用户间的耦合度,该签名方案仅使用公共参数和个人信息,使得在多对一的通信系统中,用户可灵活地认证消息。与文献[14]的签名方案相比,文献[16]的运算量约减少了1/2,有效应用在资源有限的网络环境中。文献[17]提出一个高效的签密方案,该方案将多个密文消息相聚合,提高传输效率。聚合签密方案在实际应用中对运算效率有很高的要求,但大多数方案都存在运算复杂[18-19]、效率低[20-21]的问题。文献[22]将无证书签密与聚合技术相结合提出一种无证书聚合签密(CLASC)方案,具有较高的可靠性。文献[23]提出更加高效的CLASC方案,该方案采用双线性映射运算,运算效率较高,但是安全性较低。文献[24]提出高安全性的常数对CLASC方案,并对文献[23]的高效算法进行改进,在保证运算效率的前提下提高了安全性。文献[25]将多接收者签密应用于异构密码体制中,设计一个异构环境下的聚合签密算法,虽然满足隐私保护的需求,但是存在安全问题。文献[26]指出文献[25]方案存在的问题并对其算法进行优化,提供了详细的安全证明。文献[27]将聚合签名与加密技术应用于全匿名区块链中,解决了在比特币区块链系统中的隐私保护问题。文献[28-30]提出聚合签密的相关方案[31],其性能满足车载系统的需求,但运算效率还存在较大的提升空间。
本文在上述签名方案基础上,提出一种可公开验证的高效CLASC方案。在无证书的密码环境中,采用双线性映射运算将双方身份信息隐藏在签名和密文中,在保证签密安全和提高效率的同时,能够有效保护用户隐私。基于随机预言模型(Random Oracle Model,ROM)验证本文方案同时满足适应性选择密文攻击下的不可区分性以及适应性选择消息攻击下的不可伪造性。
1 相关基础
1.1 双线性映射
加法、乘法循环群分别表示为$ {G}_{1} $、$ {G}_{2} $,阶都是素数$ q $,$ P $表示$ {G}_{1} $的生成元。双线性映射$ e:({G}_{1}\cdot $$ {G}_{1}) $ $ \to $ $ {G}_{2} $的特性主要有以下3个:1)双线性,对于任意的$ Q\in {G}_{1} $,存在$ a\mathrm{、}b\in {\mathbb{Z}}_{q}^{\mathrm{*}} $,使$ e(aP, bQ)=e{(P, Q)}^{ab} $;2)非退化性,$ e(P, P)\ne 1 $;3)可计算性,对于任何的$ Q\mathrm{、}R\in {G}_{1} $,$ e(Q, R) $皆可计算。
1.2 困难问题
本文提出的签密方案依赖以下数学困难问题,并且攻击者无法在多项式时间内攻破这些问题。
定义1(计算双线性Diffie-Hellman(CBDH)问题) 给定任意参数$ P\mathrm{、}aP\mathrm{、}bP\mathrm{、}cP\in {G}_{1}(a, b, c\in {\mathbb{Z}}_{q}^{\mathrm{*}}) $,得出$ e{(P, P)}^{abc} $是困难的。
定义2(计算性Diffie-Hellman(CDH)问题) 给定任意参数$ P\mathrm{、}aP\mathrm{、}bP\in {G}_{1} $$ (a, b\in {\mathbb{Z}}_{q}^{\mathrm{*}}) $,得出$ a\mathrm{、}b\mathrm{、}P $是困难的。
1.3 无证书聚合签密方案
无证书聚合签密方案的$ {u}_{i} $表示发送者,$ {u}_{j} $表示接收者,主要有9个步骤:1)系统初始化,由密钥生成中心(Key Generation Center,KGC)执行,输入初始化所需参数$ k $,选择系统参数parameters(公开)、主密钥$ \theta $(不公开);2)生成部分私钥,由KGC执行,输入身份信息$ {u}_{i} $,计算用户部分私钥$ {D}_{i} $,并将$ {D}_{i} $秘密传送给用户$ {u}_{i} $;3)生成秘密值,由用户执行,输入身份信息$ {u}_{i} $,输出秘密值$ {x}_{i}\in {\mathbb{Z}}_{q}^{\mathrm{*}} $;4)生成用户私钥,由用户执行,输入身份信息$ {u}_{i} $、秘密值$ {x}_{i} $、用户部分私钥$ {D}_{i} $,输出用户私钥$ \mathrm{s}{\mathrm{k}}_{i} $;5)生成用户公钥,由用户执行,输入身份信息$ {u}_{i} $、秘密值$ {x}_{i} $、系统公开参数parameters,输出用户公钥$ \mathrm{p}{\mathrm{k}}_{i} $;6)签密,由用户执行,输入$ {u}_{i} $、$ {u}_{j} $、parameters、私钥$ \mathrm{s}{\mathrm{k}}_{i} $、公钥$ \mathrm{p}{\mathrm{k}}_{j} $、明文$ {m}_{i} $,输出密文$ {\sigma }_{i} $;7)聚合签密,由聚合者执行,输入身份信息$ {u}_{i}\left(1\le i\le n\right) $的$ n $个密文$ {\sigma }_{i}\left(1\le i\le n\right) $,输出聚合密文$ \sigma $;8)解签密,由用户执行,输入$ {u}_{j} $、parameters、私钥$ \mathrm{s}{\mathrm{k}}_{j} $、公钥$ \mathrm{p}{\mathrm{k}}_{i} $、密文$ {\sigma }_{i} $,得到明文$ {m}_{i} $并对$ {m}_{i} $进行验证,若验证成功,则将$ {m}_{i} $输出,否则操作失败;9)聚合解签密,由用户执行,输入聚合密文$ \sigma $、系统参数parameters、用户私钥$ \mathrm{s}{\mathrm{k}}_{j} $、用户公钥$ \mathrm{p}{\mathrm{k}}_{i}\left(1\le i\le n\right) $,得到明文$ {m}_{i}(1\le i\le n) $并对$ {m}_{i}\left(1\le i\le n\right) $进行验证,若验证成功,则将$ {m}_{i}\left(1\le i\le n\right) $输出,否则操作失败。
1.4 无证书聚合签密安全模型
根据文献[15]刻画的敌手类型,CLASC系统将面临敌手$ {A}_{1} $和敌手$ {A}_{2} $的攻击。敌手$ {A}_{1} $扮演特殊的用户,不能获知系统主密钥,但可调换用户公钥。敌手$ {A}_{2} $扮演不可靠的KGC,能获知系统主密钥,但不能更换用户公钥。CLASC方案的游戏攻击模型结构如图 1所示。
定义3(机密性) 在适应性选择密文攻击下CLASC具有密文不可区分性。在ROM中,只有在多项式时间内不存在任何攻击者时,敌手以不可忽略的优势在游戏1(针对第一类攻击者的机密性)和游戏2(针对第二类攻击者的机密性)中取胜。
1.4.1 游戏1
$ {A}_{1} $与挑战者$ C $通过以下方式进行信息交互:
1) 初始化阶段。由KGC进行系统初始化,公开parameters。
2) 问询阶段。$ {A}_{1} $向$ C $进行问询并发送任意的输入,$ C $将其传送给ROM,ROM给C输出相应的结果,由$ C $将结果返回给$ {A}_{1} $。$ {A}_{1} $执行以下问询:(1)Hash问询,$ {A}_{1} $对所有Hash随机问询,并将相关信息发送给$ C $,$ C $将结果传送给$ {A}_{1} $;(2)部分私钥问询,$ {A}_{1} $能询问$ {u}_{i} $的部分私钥,$ C $通过执行相关算法得到$ {D}_{i} $并返回给$ {A}_{1} $;(3)私钥问询,$ {A}_{1} $能询问$ {u}_{i} $的私钥,$ C $通过执行相关算法得到sk,并返回给$ {A}_{1} $;(4)公钥问询,$ {A}_{1} $能询问$ {u}_{i} $的公钥,$ C $通过执行相关算法得到$ \mathrm{p}{\mathrm{k}}_{i} $,并返回给$ {A}_{1} $;(5)公钥替换问询,$ {A}_{1} $能对$ {u}_{i} $的公钥进行替换,$ C $收到问询后,将原来的公钥$ \mathrm{p}{\mathrm{k}}_{i} $替换成新公钥$ \mathrm{p}{\mathrm{k}}_{i}^{\mathrm{'}} $;(6)签密问询,$ {A}_{1} $选择两个用户$ {u}_{a} $、$ {u}_{b} $分别作为发送方和接收方,并选择一个消息$ {m}_{a} $进行签密问询,$ C $收到相应的问询后,输入参数,执行签密算法,将生成的密文$ {\sigma }_{a} $返回给$ {A}_{1} $;(7)聚合签密问询,$ {A}_{1} $选择用户$ {u}_{i}\left(1\le i\le n\right) $、$ {u}_{b} $分别作为发送方和接收方,并选择消息$ {m}_{i}\left(1\le i\le n\right) $进行聚合签密问询,$ C $收到问询后,输入参数,执行聚合签密算法,将生成的密文$ \sigma $返回给$ {A}_{1} $;(8)解签密问询,$ {A}_{1} $利用两个用户$ {u}_{a} $、$ {u}_{b} $和密文$ {\sigma }_{a} $向$ C $进行解签密问询,$ C $收到问询后,输入参数,执行解签密算法,并将生成的明文$ {m}_{a} $返回给$ {A}_{1} $;(9)聚合解签密问询,$ {A}_{1} $利用用户$ {u}_{i}(1\le i\le $$ n) $、$ {u}_{b} $和密文$ \sigma $向$ C $进行聚合解签密问询,$ C $收到相应的问询后,输入参数,执行聚合解签密算法,并将生成的明文$ {m}_{i}\left(1\le i\le n\right) $返回给$ {A}_{1} $。
3) 挑战阶段。$ {A}_{1} $选择用户$ {u}_{i} $、$ {u}_{j} $分别作为发送方和接收方,并选择两个长度相同的明文$ {m}_{0} $和$ {m}_{1} $,要求$ {u}_{i} $、$ {u}_{j} $执行过私钥问询,同时$ {u}_{i} $不能既执行过公钥替换问询又执行过部分私钥问询,$ {u}_{j} $没有执行过部分私钥问询。$ C $随机选取$ b\in \left\{0, \left.1\right\}\right. $,输入相关参数并执行签密算法,将生成的密文$ {\sigma }^{\mathrm{*}} $返回给$ {A}_{1} $。
4) 第二阶段问询。$ {A}_{1} $进行的问询与问询阶段相似,但不允许对$ {u}_{i} $、$ {u}_{j} $问询私钥,如果$ {u}_{i} $、$ {u}_{j} $在挑战阶段之前进行过公钥替换问询,则不能再问询其部分私钥。$ {A}_{1} $也不能对密文$ {\sigma }^{\mathrm{*}} $进行解签密问询。
5) 猜测阶段。$ {A}_{1} $输出$ b' $,若$ b'=b $,则$ {A}_{1} $赢得游戏。
1.4.2 游戏2
$ {A}_{2} $与挑战者$ C $通过以下方式进行信息交互:
1) 初始化阶段。由KGC进行系统初始化,公开parameters,并将$ \theta $传给$ {A}_{2} $。
2) 问询阶段。与游戏1的问询阶段相似,但没有公钥替换问询以及部分私钥问询。根据刻画的敌手类型可知,因为敌手$ {A}_{2} $不能替换用户公钥,所以无需执行公钥替换问询,且$ {A}_{2} $可以得到系统主密钥,能够计算出用户的部分私钥,也无需执行部分私钥问询。
3) 挑战阶段。$ {A}_{2} $选择用户$ {u}_{i} $、$ {u}_{j} $分别作为发送方和接收方,并任意选择两个明文$ {m}_{0} $和$ {m}_{1} $。$ {m}_{0} $和$ {m}_{1} $的长度相等,且要求不能对$ {u}_{i} $、$ {u}_{j} $进行私钥问询。$ C $随机选取$ b\in \left\{0, \left.1\right\}\right. $,输入相关参数并执行签密算法,将生成的密文$ {\sigma }^{\mathrm{*}} $返回给$ {A}_{2} $。
4) 第二阶段问询。$ {A}_{2} $进行的问询与问询阶段相似,但不允许对$ {u}_{i} $、$ {u}_{j} $进行私钥问询(若对$ {u}_{i} $、$ {u}_{j} $执行私钥问询得到其私钥,则可对密文进行解密得到明文,游戏终止)。$ {A}_{2} $也不能对密文$ {\sigma }^{\mathrm{*}} $进行解签密问询。
5) 猜测阶段。$ {A}_{2} $输出$ {b}^{'} $,若$ {b}^{'}=b $,则$ {A}_{2} $赢得游戏。
在游戏1和游戏2中,挑战者与敌手之间关于密文机密性的交互示意图如图 2所示。
定义4(不可伪造性) CLASC在适应性选择消息攻击下具有消息不可伪造性,在ROM中,只有当不存在任何多项式有界的攻击者时,以不可忽略的优势在游戏3(针对第一类攻击者的不可伪造性)和游戏4(针对第二类攻击者的不可伪造性)中取胜。
1.4.3 游戏3
$ {A}_{1} $与挑战者$ C $通过以下方式进行信息交互:1)初始化阶段,执行相关操作,公开parameters;2)问询阶段,与游戏1的问询阶段相似;3)伪造阶段,$ {A}_{1} $输出用户的身份信息$ {u}_{i} $、$ {u}_{j} $和明文$ {m}_{i} $的密文$ {\sigma }^{\mathrm{*}} $,若$ {A}_{1} $没有对$ {u}_{j} $进行过部分私钥问询和私钥问询,没有对密文$ {\sigma }^{\mathrm{*}} $进行过签密问询,且密文$ {\sigma }^{\mathrm{*}} $有效,则$ {A}_{1} $赢得游戏。
1.4.4 游戏4
$ {A}_{2} $与挑战者$ C $通过以下方式进行信息交互:1)初始化阶段,由KGC进行系统初始化,公开parameters,并将$ \theta $传给$ {A}_{2} $;2)问询阶段,与游戏2的问询阶段相似;3)伪造阶段,与游戏3的伪造阶段相似;若$ {A}_{2} $没有对$ {u}_{j} $进行过私钥问询,没有对密文$ {\sigma }^{\mathrm{*}} $进行过签密问询,且密文$ {\sigma }^{\mathrm{*}} $有效,则$ {A}_{2} $赢得游戏。
在游戏3和游戏4中挑战者与敌手之间关于签名不可伪造性交互的示意图如图 3所示。
2 本文方案
2.1 方案描述
本文设安全参数为$ k $,生成大素数$ p $、$ q $($ q|p-1 $)。$ ({G}_{1}, +) $和$ ({G}_{2}, \cdot ) $为循环群,其阶均为$ q $,$ P $是$ {G}_{1} $的一个生成元。双线性映射$ e:\left({G}_{1}\cdot {G}_{1}\right)\to {G}_{2} $,3个安全的哈希函数分别为$ {H}_{1}:{\left\{\mathrm{0, 1}\right\}}^{\mathrm{*}}\to {G}_{1} $,$ {H}_{2}:{\left\{\mathrm{0, 1}\right\}}^{\mathrm{*}}\times {\left\{\mathrm{0, 1}\right\}}^{\mathrm{*}}\times {G}_{1}\to {G}_{2} $,$ {H}_{3}: $$ {\left\{\mathrm{0, 1}\right\}}^{\mathrm{*}}\to {\left\{\mathrm{0, 1}\right\}}^{\mathrm{l}\mathrm{m}} $($ \mathrm{l}\mathrm{m} $表示消息比特长度)。本文构造的CLASC方案主要分为以下8个步骤:
1) 系统初始化。由KGC进行系统初始化,随机选取$ \theta \in {\mathbb{Z}}_{q}^{\mathrm{*}} $为系统主密钥并保密,计算$ {P}_{\mathrm{p}\mathrm{u}\mathrm{b}}=\theta P $,公开系统参数parameters=$ \{{G}_{1}, {G}_{2}, e, P, {P}_{\mathrm{p}\mathrm{u}\mathrm{b}}, {H}_{1}, {H}_{2}, {H}_{3}\} $。
2) 生成部分私钥。由KGC生成部分私钥,计算$ {Q}_{i}={H}_{1}\left({u}_{i}\right) $,$ {D}_{i}=\theta {Q}_{i} $,并将$ {D}_{i} $秘密传送给用户$ {u}_{i} $。
3) 生成用户私钥。用户私钥由用户参与生成,验证等式$ e({Q}_{i}, {P}_{\mathrm{p}\mathrm{u}\mathrm{b}})=e({D}_{i}, P) $,若等式成立,则表示部分私钥合法。用户$ {u}_{i} $随机选取秘密值$ {x}_{i}\in {\mathbb{Z}}_{q}^{\mathrm{*}} $,产生用户私钥对$ \mathrm{s}{\mathrm{k}}_{i}=({x}_{i}, {D}_{i}) $。
4) 生成用户公钥。用户私钥由用户参与生成,计算公钥$ \mathrm{p}{\mathrm{k}}_{i}={x}_{i}P $。
5) 签密。发送方$ {u}_{i} $向接收方$ {u}_{B} $发送明文$ {m}_{i} $,发送方$ {u}_{i} $的执行步骤主要有以下5个:(1)随机选取$ {r}_{i}\in {\mathbb{Z}}_{q}^{\mathrm{*}} $,$ {R}_{i}={r}_{i}P $,$ {U}_{i}={r}_{i}{Q}_{i} $;(2)$ {\alpha }_{i}=e({Q}_{B}, {r}_{i}{P}_{\mathrm{p}\mathrm{u}\mathrm{b}}) $,$ {T}_{i}={H}_{3}({u}_{B}, {\alpha }_{i}, {R}_{i}, \mathrm{p}{\mathrm{k}}_{B}, {r}_{i}\mathrm{p}{\mathrm{k}}_{B}) $;(3) $ {c}_{i}=\left({m}_{i}\left|\right|{u}_{i}\right) \oplus {T}_{i} $;(4)$ {h}_{i}= $ $ {H}_{2}\left({c}_{i}\left|\right|{U}_{i}\left|\right|{u}_{B}\right) $;(5)$ {v}_{i}=\left({r}_{i}+{h}_{i}\right)\left({x}_{i}{Q}_{i}+{D}_{i}\right) $,输出密文$ {\sigma }_{i}=({R}_{i}, $$ {U}_{i}, {c}_{i}, {v}_{i}) $。
6) 聚合签密。由聚合者进行聚合签密,主要有以下4个步骤:(1)发送方$ {u}_{i}\left(1\le i\le n\right) $对明文$ {m}_{i}(0\le i\le n) $执行上述步骤1~步骤5的签密操作;(2)将签密结果发送给聚合者(任意用户均可为聚合者);(3)聚合者接收密文$ {\sigma }_{i}(0\le i\le n) $,计算$ V=\sum \limits_{i=1}^{n}{v}_{i} $;(4)输出聚合密文$ \sigma =〈{\left\{{R}_{i}, {U}_{i}, {c}_{i}\right\}}_{i=1}^{n}, V〉 $。
7) 解签密。由接收者$ {u}_{B} $执行,主要有以下4个步骤:(1)$ {{\alpha }_{i}}^{'}=e({D}_{B}, {R}_{i}) $;(2)$ {{T}_{i}}^{'}={H}_{3}\left({u}_{B}, {{\alpha }_{i}}^{'}, {R}_{i}, p{k}_{B}, \right. $$ \left.{x}_{B}{R}_{i}\right) $,$ {m}_{i}\left|\right|{u}_{i}={c}_{i} \oplus {T}_{i}^{'} $;(3)$ {Q}_{i}={H}_{1}\left({u}_{i}\right) $,$ {h}_{i}={H}_{2}\left({c}_{i}\left|\right|{U}_{i}\left|\right|{u}_{B}\right) $;(4)验证等式$ e({v}_{i}, P)=e({U}_{i}+{h}_{i}{Q}_{i}, {P}_{\mathrm{p}\mathrm{u}\mathrm{b}}+\mathrm{p}{\mathrm{k}}_{i}) $是否成立,若成立,则证明$ {\sigma }_{i} $有效,并输出$ {m}_{i} $,否则证明签密无效,输出$ \perp $。
8) 聚合解签密。由接收者$ {u}_{B} $执行,主要有以下4个步骤:(1)$ {{\alpha }_{i}}^{'}=e({D}_{B}, {R}_{i}) $;(2)$ {{T}_{i}}^{'}={H}_{3}\left({u}_{B}, {{\alpha }_{i}}^{'}, {R}_{i}, \mathrm{p}{\mathrm{k}}_{B}, {x}_{B}{R}_{i}\right) $,$ {m}_{i}\left|\right|{u}_{i}={c}_{i} \oplus {T}_{i}^{'} $;(3)$ {Q}_{i}={H}_{1}\left({u}_{i}\right) $,$ {h}_{i}={H}_{2}\left({c}_{i}\left|\right|{U}_{i}\left|\right|{u}_{B}\right) $;(4)验证等式$ e(V, P)=e\left(\sum\limits _{i=1}^{n}({U}_{i}+{h}_{i}{Q}_{i}), {P}_{\mathrm{p}\mathrm{u}\mathrm{b}}+\sum\limits _{i=1}^{n}\mathrm{p}{\mathrm{k}}_{i}\right) $是否成立,若成立,则证明$ \sigma $有效,输出$ {m}_{i}(1\le i\le n) $,否则证明签密无效,并输出$ \perp $。
用户的密钥生成过程如图 4所示。
在初始化阶段中,KGC生成$ \theta $和$ {P}_{\mathrm{p}\mathrm{u}\mathrm{b}} $,并公开参数parameters。在生成部分私钥阶段中,KGC根据用户身份计算部分私钥,并将其安全地传送给用户。在用户密钥生成阶段中,用户通过等式$ e({Q}_{i}, {P}_{\mathrm{p}\mathrm{u}\mathrm{b}})=e({D}_{i}, P) $验证部分私钥的合法性,如果合法,则任取秘密值$ {x}_{i}\in {\mathbb{Z}}_{q}^{\mathrm{*}} $,并将收到的部分私钥与秘密值相结合得到用户的私钥对$ \mathrm{s}{\mathrm{k}}_{i}=({x}_{i}, {D}_{i}) $,使得用户私钥更加安全。在生成用户公钥阶段中,用户将秘密值与生成元相结合,生成用户的公钥$ \mathrm{p}{\mathrm{k}}_{i} $。
本文提出的CLASC方案流程如图 5所示。在签密阶段,$ n $个用户根据公开参数parameters和用户密钥,使用双线映射$ {\alpha }_{i}=e({Q}_{B}, {r}_{i}{P}_{\mathrm{p}\mathrm{u}\mathrm{b}}) $将明文$ {m}_{i}\left(1\le i\le n\right) $加密成密文$ {c}_{i}(1\le i\le n) $,在保证加密过程安全性的同时提高了效率,当每个用户签密后对密文进行聚合,形成聚合密文$ \sigma $发送给接收方。接收方收到密文$ \sigma $后,根据公开参数parameters和用户密钥,使用双线性映射$ {{\alpha }_{i}}^{'}=e({D}_{B}, {R}_{i}) $将密文$ \sigma $求解出明文$ {m}_{i} $,然后验证等式$ e(V, P)=e\left(\sum\limits _{i=1}^{n}({U}_{i}+{h}_{i}{Q}_{i}), {P}_{\mathrm{p}\mathrm{u}\mathrm{b}}+\sum \limits_{i=1}^{n}\mathrm{p}{\mathrm{k}}_{i}\right) $是否成立,进而证明聚合签名是否合法,如果合法,接收方接收明文$ {m}_{i} $,否则将丢弃接收到的信息。
2.2 正确性证明
本文方案的正确性分析包括密钥正确性、密文可恢复性和发送者合法性。
1) 密钥正确性,用户密钥由KGC的部分私钥和用户手中的秘密值组成,为了保证KGC传来密钥的可靠性,通过等式$ e({Q}_{i}, {P}_{\mathrm{p}\mathrm{u}\mathrm{b}})=e\left({Q}_{i}, \theta P\right)=e\left(\theta {Q}_{i}, P\right)=e({D}_{i}, P) $验证KGC传递的部分私钥的正确性。
2) 密文可恢复性和发送者合法性,因为$ {m}_{i}\left|\right|{u}_{i}= $ $ {c}_{i} \oplus {{T}_{i}}^{'}={c}_{i} \oplus {T}_{i} $,$ {{T}_{i}}^{'}={H}_{3}({u}_{B}, {{\alpha }_{i}}^{'}, {R}_{i}, \mathrm{p}{\mathrm{k}}_{B}, $$ {x}_{B}{R}_{i}) $,所以需要证明$ {{T}_{i}}^{'}={T}_{i} $,$ {{\alpha }_{i}}^{'}={\alpha }_{i} $,即可证明明文消息$ {m}_{i} $的正确性:
$ {{\alpha }_{i}}^{'}=e({D}_{B}, {R}_{i})=e\left(\theta {Q}_{B}, {r}_{i}P\right)=e\left({r}_{i}{P}_{\mathrm{p}\mathrm{u}\mathrm{b}}, {Q}_{B}\right)={\alpha }_{i} $
|
$ {{T}_{i}}^{'}={H}_{3}\left({u}_{B}, {{\alpha }_{i}}^{'}, {R}_{i}, \mathrm{p}{\mathrm{k}}_{B}, {x}_{B}{R}_{i}\right)=\\ {H}_{3}\left({u}_{B}, {{\alpha }_{i}}^{'}, {R}_{i}, \mathrm{p}{\mathrm{k}}_{B}, {x}_{B}{r}_{i}p\right)=\\ {H}_{3}\left({u}_{B}, {{\alpha }_{i}}^{'}, {R}_{i}, \mathrm{p}{\mathrm{k}}_{B}, \mathrm{p}{\mathrm{k}}_{B}{r}_{i}\right)={T}_{i} $
|
通过$ {m}_{i}\left|\right|{u}_{i}={c}_{i} \oplus {T}_{i}^{\mathrm{'}}={c}_{i} \oplus {T}_{i} $得到了明文消息$ {m}_{i} $,验证密文的可恢复性,同时通过验证等式$ e({v}_{i}, P)=e({U}_{i}+{h}_{i}{Q}_{i}, {P}_{\mathrm{p}\mathrm{u}\mathrm{b}}+\mathrm{p}{\mathrm{k}}_{i}) $是否成立,验证发送者身份的合法性,保证收到的明文是有效的,确保整个签密的正确性:
$ \begin{array}{l}e({v}_{i}, P)=e\left(\left({r}_{i}+{h}_{i}\right)\left({x}_{i}{Q}_{i}+{D}_{i}\right), P\right)=\\ e({r}_{i}{x}_{i}{Q}_{i}+{r}_{i}{D}_{i}+{h}_{i}{x}_{i}{Q}_{i}+{h}_{i}{D}_{i}, P)=\\ e({U}_{i}+{h}_{i}{Q}_{i}, \mathrm{p}{\mathrm{k}}_{i})e({r}_{i}\theta {Q}_{i}+{h}_{i}\theta {Q}_{i}, P)=\\ e({U}_{i}+{h}_{i}{Q}_{i}, \mathrm{p}{\mathrm{k}}_{i})e({U}_{i}+{h}_{i}{Q}_{i}, {P}_{\mathrm{p}\mathrm{u}\mathrm{b}})=\\ e({U}_{i}+{h}_{i}{Q}_{i}, {P}_{\mathrm{p}\mathrm{u}\mathrm{b}}+\mathrm{p}{\mathrm{k}}_{i})\end{array} $
|
因为$ e({v}_{i}, P)=e\left(\sum \limits_{i=1}^{n}({U}_{i}+{h}_{i}{Q}_{i}), {P}_{\mathrm{p}\mathrm{u}\mathrm{b}}+\sum \limits_{i=1}^{n}\mathrm{p}{\mathrm{k}}_{i}\right) $,所以:
$ \begin{array}{l}e(V, P)=e\left(\sum\limits_{i=1}^{n}{v}_{i}, P\right)=e\left(\sum\limits_{i=1}^{n}\left({r}_{i}+{h}_{i}\right)\left({x}_{i}{Q}_{i}+{D}_{i}\right), P\right)=\\ e\left(\sum\limits_{i=1}^{n}\left({r}_{i}+{h}_{i}\right){x}_{i}{Q}_{i}, P\right)e\left(\sum\limits_{i=1}^{n}\left({r}_{i}+{h}_{i}\right)\theta {Q}_{i}, P\right)=\\ e\left(\sum\limits_{i=1}^{n}\left({U}_{i}+{h}_{i}{Q}_{i}\right), \sum\limits_{i=1}^{n}\mathrm{p}{\mathrm{k}}_{i}\right)e\left(\sum\limits_{i=1}^{n}\left({U}_{i}+{h}_{i}{Q}_{i}\right), {P}_{\mathrm{p}\mathrm{u}\mathrm{b}}\right)=\\ e\left(\sum\limits_{i=1}^{n}({U}_{i}+{h}_{i}{Q}_{i}), {P}_{\mathrm{p}\mathrm{u}\mathrm{b}}+\sum\limits_{i=1}^{n}\mathrm{p}{\mathrm{k}}_{i}\right)\end{array} $
|
3 本文方案的安全性分析
CLASC方案结合加密技术与数字签名,加密技术负责保证机密性,数字签名负责保证认证性,两者独立存在,共同满足消息的安全需求。因此,本文主要从机密性、不可伪造性和可公开验证性对方案进行安全性分析。
3.1 机密性
机密性是指除指定接收方以外,其他任何人或机构均不能成功破解密文,并获取明文消息。
定理1 在ROM中的CBDH问题下,在概率多项式时间内,若存在敌手$ {A}_{1} $进行$ {H}_{1} $、$ {H}_{2} $、$ {H}_{3} $、公钥、部分私钥、聚合签密、解签密的问询次数至少为$ {{q}_{H}}_{{}_{1}} $、$ {q}_{{H}_{2}} $、$ {q}_{{H}_{3}} $、$ {q}_{k} $、$ {q}_{s} $、$ {q}_{E} $、$ {q}_{\mathrm{u}\mathrm{n}} $,能够以不可忽略的优势$ \varepsilon $赢得游戏IND-CCA2,则可能存在挑战者$ C $以概率$ \mathrm{s}\mathrm{u}\mathrm{c}{\mathrm{c}}_{{A}_{1}}^{\mathrm{C}\mathrm{B}\mathrm{D}\mathrm{H}}\ge \varepsilon /{q}_{1}{q}_{2}{q}_{3}(1-{q}_{\mathrm{u}\mathrm{n}}/{2}^{k}) $解决CBDH问题。
证明 假定敌手$ {A}_{1} $能以不可忽略的优势$ \varepsilon $赢得游戏IND-CCA2,则挑战者$ C $在敌手$ {A}_{1} $的协助下解决CBDH困难问题,即挑战者$ C $拥有CBDH实例$ \{P, aP, $$ bP, cP\} $,求解$ e{\left(P, P\right)}^{abc} $的值。$ C $与$ {A}_{1} $进行如下交互:
1) 初始化阶段。由挑战者$ C $执行,设置$ {P}_{\mathrm{p}\mathrm{u}\mathrm{b}}=aP $,并公开parameters=$ \{{G}_{1}, {G}_{2}, e, P, {P}_{\mathrm{p}\mathrm{u}\mathrm{b}}, {H}_{1}, $$ {H}_{2}, {H}_{3}\} $。在以下的问询过程中可以将ROM与挑战者$ C $看作1个实体。
2) 问询阶段。初始化列表$ {L}_{1} $、$ {L}_{2} $、$ {L}_{3} $、$ {L}_{K} $均为空,$ {A}_{1} $进行以下多项式有界次问询:
(1) $ {H}_{1} $问询。$ C $维护列表$ {L}_{1}=\left\{{u}_{i}, {Q}_{i}, {\pi }_{i}, {D}_{i}, {g}_{i}\right\} $,当$ {A}_{1} $对$ {H}_{1}\left({u}_{i}\right) $进行问询时,若该问询已存在列表$ {L}_{1} $中,则给$ {A}_{1} $返回对应的$ {Q}_{i} $;否则$ C $丢硬币选择$ {g}_{i}\in \left\{\mathrm{0, 1}\right\} $,(其中,取0的概率为$ \delta $,取1的概率为$ 1-\delta $),并随机选取$ {\pi }_{i}\in {\mathbb{Z}}_{q}^{\mathrm{*}} $。若$ {g}_{i}=0 $,$ C $返回$ {Q}_{i}={\pi }_{i}bP $;若$ {g}_{i}=1 $,$ C $给$ {A}_{1} $返回$ {Q}_{i}={\pi }_{i}P $,并将$ {Q}_{i} $添加到列表$ {L}_{1} $中。
(2) $ {H}_{2} $问询。$ C $维护列表$ {L}_{2}=\left\{{u}_{B}, {c}_{i}, {U}_{i}, {r}_{i}, {h}_{i}\right\} $,当$ {A}_{1} $对$ {H}_{2}\left({u}_{B}\left|\right|{c}_{i}\left|\right|{U}_{i}\right) $进行问询时,若该问询已存在列表$ {L}_{2} $中,则给$ {A}_{1} $返回对应的$ {h}_{i} $;否则$ C $随机选取$ {r}_{i}\in {\mathbb{Z}}_{q}^{\mathrm{*}}\left(1\le i\le n\right) $并进行$ {H}_{1} $问询得到$ {Q}_{i} $,计算$ {U}_{i}={r}_{i}{Q}_{i} $,任取$ {h}_{i}\in {G}_{2} $返回给$ {A}_{1} $,并将其添加到列表$ {L}_{2} $中。
(3) $ {H}_{3} $问询。$ C $维护列表$ {L}_{3}=\{{u}_{B}, {\alpha }_{i}, {R}_{i}, \mathrm{p}{\mathrm{k}}_{B}, $$ {r}_{i}\mathrm{p}{\mathrm{k}}_{B}, {T}_{i}\} $,当$ {A}_{1} $对$ {H}_{3}\left({u}_{B}, {\alpha }_{i}, {R}_{i}, \mathrm{p}{\mathrm{k}}_{B}, {r}_{i}\mathrm{p}{\mathrm{k}}_{B}\right) $进行问询时,若该问询已存在列表$ {L}_{3} $中,则给$ {A}_{1} $返回对应的$ {T}_{i} $;否则任取$ {T}_{i}\in {\left\{\mathrm{0, 1}\right\}}^{\mathrm{l}\mathrm{m}} $返回给$ {A}_{1} $,并将其添加到列表$ {L}_{3} $中。
(4) 部分私钥问询。当$ {A}_{1} $输入$ {u}_{i} $进行问询时,$ C $查询列表$ {L}_{1} $,若该问询已存在列表$ {L}_{1} $中,则给$ {A}_{1} $返回对应的部分私钥$ {D}_{i} $;否则,若$ {g}_{i}=0 $,则游戏终止;若$ {g}_{i}=1 $,$ C $返回$ {D}_{i}={\pi }_{i}ap $给$ {A}_{1} $,并将其添加到列表$ {L}_{1} $中。
(5) 秘密值问询。$ C $维护列表$ {L}_{k}=\{{u}_{i}, {\beta }_{i}, \mathrm{p}{\mathrm{k}}_{i}, {Y}_{i}\} $,当$ {A}_{1} $输入$ {u}_{i} $进行问询时,若该问询已存在列表$ {L}_{K} $中,则给$ {A}_{1} $返回对应的$ {\beta }_{i} $;否则,若$ {Y}_{i}=0 $,则取消问询;若$ {Y}_{i}=1 $,$ C $随机选取$ {\beta }_{i}\in {\mathbb{Z}}_{q}^{\mathrm{*}} $返回给$ {A}_{1} $,并将其添加到$ {L}_{K} $中。
(6) 公钥问询。当$ {A}_{1} $输入$ {u}_{i} $进行问询时,$ C $查询列表$ {L}_{K} $,若该问询已存在列表$ {L}_{K} $中,则给$ {A}_{1} $返回对应的公钥$ \mathrm{p}{\mathrm{k}}_{i} $;否则,若$ {\beta }_{i} $存在,计算$ \mathrm{p}{\mathrm{k}}_{i}={\beta }_{i}P $并返回给$ {A}_{1} $,并将其添加到列表$ {L}_{K} $中;若$ {\beta }_{i} $不存在,$ C $随机选取$ {\beta }_{i}\in {\mathbb{Z}}_{q}^{\mathrm{*}} $,计算$ \mathrm{p}{\mathrm{k}}_{i}={\beta }_{i}P $返回给$ {A}_{1} $,并设置$ {Y}_{i}=1 $,将其添加到$ {L}_{K} $中。
(7) 公钥替换问询。当$ {A}_{1} $输入$ \left({u}_{i}, \mathrm{p}{\mathrm{k}}_{i}^{'}\right) $进行问询时,$ C $查询列表。若$ \mathrm{p}{\mathrm{k}}_{i} $存在列表$ {L}_{K} $中,则用$ \mathrm{p}{{\mathrm{k}}_{i}}^{'} $替换$ \mathrm{p}{\mathrm{k}}_{i} $,并设置$ {Y}_{i}=0 $;否则将新的$ \mathrm{p}{{\mathrm{k}}_{i}}^{'} $添加到$ {L}_{K} $中,并设置$ {Y}_{i}=0 $。
(8) 签密问询。当$ {A}_{1} $输入$ \left({u}_{i}, {u}_{B}, {m}_{i}\right) $进行问询时,$ C $查询列表$ {L}_{1} $中的$ {g}_{B} $。若$ {g}_{B}=0 $,则取消问询;若$ {g}_{B}=1 $,按照原签密算法对明文$ {m}_{i} $进行签密,并返回签密结果$ {\sigma }_{i}=\left({R}_{i}, {U}_{i}, {c}_{i}, {v}_{i}\right) $。
(9) 聚合签密问询。当$ {A}_{1} $输入$ ({u}_{1}, {u}_{2}, \cdots , {u}_{n}, {u}_{B}, {m}_{1}, $ $ {m}_{2}, \cdots , {m}_{n}) $进行问询时,$ C $对$ \left({u}_{i}, {m}_{i}, {u}_{B}\right)\left(1\le i\le n\right) $进行签密问询得到签密结果$ {\sigma }_{i}=\left({R}_{i}, {U}_{i}, {c}_{i}, {v}_{i}\right)\left(1\le i\le n\right) $,然后计算$ V=\sum\limits_{i=1}^{n}{v}_{i} $,最后返回$ \sigma =〈{\left\{{R}_{i}, {U}_{i}, {c}_{i}\right\}}_{i=1}^{n}, V〉 $。
(10) 解签密问询。$ C $查询列表$ {L}_{1} $中的$ {u}_{i} $,若$ {g}_{i}=1 $,则查询列表$ {L}_{1} $和列表$ {L}_{K} $中$ {D}_{B} $、$ {\beta }_{B} $,在列表$ {L}_{3} $中查询$ \left({u}_{B}, {\alpha }_{i}^{'}, {R}_{i}, \mathrm{p}{\mathrm{k}}_{B}, {\beta }_{B}{R}_{i}\right) $,计算$ {m}_{i}\left|\right|{u}_{i}={c}_{i} \oplus {{T}_{i}}^{'} $,然后查询列表$ {L}_{1} $和列表$ {L}_{2} $得到$ {Q}_{i} $和$ {h}_{i} $,验证$ e({v}_{i}, P)=e({U}_{i}+{h}_{i}{Q}_{i}, {P}_{\mathrm{p}\mathrm{u}\mathrm{b}}+\mathrm{p}{\mathrm{k}}_{i}) $是否成立。若成立,则返回$ {m}_{i} $,否则游戏终止;若$ {g}_{i}=0 $,则查询列表$ {L}_{1} $、$ {L}_{2} $、$ {L}_{3} $,存在其对应元组,则返回$ {m}_{i} $,否则游戏终止;若公钥被替换,则查询列表$ {L}_{1} $、$ {L}_{2} $、$ {L}_{3} $,存在其对应元组,则返回$ {m}_{i} $;否则游戏终止。
(11) 聚合解签密问询。$ C $查询列表$ {L}_{1} $中的$ {u}_{i} $,若$ {g}_{i}=1 $,则查询列表$ {L}_{1} $和列表$ {L}_{K} $中$ {D}_{B} $、$ {\beta }_{B} $,在列表$ {L}_{3} $中查询$ \left({u}_{B}, {\alpha }_{i}^{'}, {R}_{i}, \mathrm{p}{\mathrm{k}}_{B}, {\beta }_{B}{R}_{i}\right) $,计算$ {m}_{i}\left|\right|{u}_{i}={c}_{i} \oplus {{T}_{i}}^{'} $,然后查询列表$ {L}_{1} $和列表$ {L}_{2} $得到$ {Q}_{i} $和$ {h}_{i} $,验证$ e({v}_{i}, P)=e\left(\sum\limits_{i=1}^{n}({U}_{i}+{h}_{i}{Q}_{i}), {P}_{\mathrm{p}\mathrm{u}\mathrm{b}}+\sum\limits_{i=1}^{n}\mathrm{p}{\mathrm{k}}_{i}\right) $是否成立。若成立,则返回$ {m}_{i} $,否则游戏终止;若$ {g}_{i}=0 $,则查询列表$ {L}_{1} $、$ {L}_{2} $、$ {L}_{3} $,存在其对应元组,则返回$ {m}_{i} $,否则游戏终止;若公钥被替换,则查询列表$ {L}_{1} $、$ {L}_{2} $、$ {L}_{3} $,存在其对应元组,则返回$ {m}_{i} $,否则游戏终止。
3) 挑战阶段。$ {A}_{1} $输出两个长度相同的明文$ {m}_{0} $和$ {m}_{1} $,身份$ \left({u}_{1}, {u}_{2}, \cdots , {u}_{n}\right) $和$ {u}_{B} $发送给$ C $,$ C $查询列表$ {L}_{1} $中的$ {g}_{B} $,若$ {g}_{B}=1 $,则游戏终止;否则,$ C $随机选取$ b\in \left\{\mathrm{0, 1}\right\} $,对消息$ {m}_{b} $运行签密算法得到密文$ {{\sigma }_{i}}^{\mathrm{*}}=({{R}_{i}}^{\mathrm{*}}, {{U}_{i}}^{\mathrm{*}}, {{c}_{i}}^{\mathrm{*}}, {{v}_{i}}^{\mathrm{*}}) $,聚合签密密文$ {\sigma }^{\mathrm{*}}=〈{\left\{{{R}_{i}}^{*}, {{U}_{i}}^{*}, {{c}_{i}}^{*}\right\}}_{i=1}^{n}, $ $ {\underset{}{V}}^{\mathrm{*}}〉 $,并返回给$ {A}_{1} $。
4) 第二阶段问询。在该阶段,$ {A}_{1} $进行的问询同问询阶段相似,但不允许对$ {u}_{B} $部分私钥问询,$ {A}_{1} $也不能对$ {\sigma }^{\mathrm{*}} $执行聚合解签密问询。
5) 猜测阶段。在进行足够多的问询以后,$ {A}_{1} $输出$ {b}^{'} $,若$ {b}^{'}=b $,则$ {A}_{1} $赢得游戏;否则游戏失败。$ C $可以从$ {L}_{3} $对应的数组中得到$ {\alpha }_{i} $,$ C $从$ {L}_{1} $对应的数组中得到$ {\pi }_{B} $,这样的数组必定存在(否则在解签密问询中游戏终止)。其中,$ {R}_{i}=cP $,最后$ {\alpha }_{i}^{1/{\pi }_{B}} $作为CBDH问题的解。证明如下:
$ {\alpha }_{i}^{1/{\pi }_{B}}=e{\left({D}_{B}, {R}_{i}\right)}^{1/{\pi }_{B}}=e{\left({\pi }_{B}abP, cP\right)}^{1/{\pi }_{B}}=e{(P, P)}^{abc} $
|
在问询阶段中,如果$ {A}_{1} $对$ {u}_{B} $进行过部分私钥问询,以及$ {H}_{2} $、$ {H}_{3} $问询,则$ C $失败。$ {A}_{1} $未进行过部分私钥以及$ {H}_{2} $、$ {H}_{3} $问询的概率至少为$ 1/{q}_{1} $、$ 1/{q}_{2} $、$ 1/{q}_{3} $。在解签密问询中,$ C $拒绝一个有效签密的概率为$ {q}_{\mathrm{u}\mathrm{n}}/{2}^{k} $。因此,$ C $解决CBDH问题的概率为$ \mathrm{s}\mathrm{u}\mathrm{c}{\mathrm{c}}_{{A}_{1}}^{\mathrm{C}\mathrm{B}\mathrm{D}\mathrm{H}}\ge \varepsilon /{q}_{1}{q}_{2}{q}_{3}\left(1-{q}_{\mathrm{u}\mathrm{n}}/{2}^{k}\right) $。因为$ {A}_{1} $是以不可忽略的优势赢得游戏,与定义3相悖,所以在多项式时间内,挑战者$ C $不能解决CBDH问题。因此,本文方案具有机密性。
定理2 在ROM中的CDH问题下,在概率多项式时间内若存在敌手$ {A}_{2} $进行$ {H}_{1} $、$ {H}_{2} $、$ {H}_{3} $、公钥、秘密值、聚合签密、解签密的问询次数至少为$ {{q}_{H}}_{{}_{1}} $、$ {q}_{{H}_{2}} $、$ {q}_{{H}_{3}} $、$ {q}_{k} $、$ {q}_{s} $、$ {q}_{E} $、$ {q}_{\mathrm{u}\mathrm{n}} $,能够以不可忽略的优势$ \varepsilon $赢得游戏IND-CCA2,则可能存在挑战者$ C $以概率$ \mathrm{s}\mathrm{u}\mathrm{c}{\mathrm{c}}_{{A}_{2}}^{\mathrm{C}\mathrm{D}\mathrm{H}}\ge \varepsilon /{q}_{1}{q}_{2}{q}_{3}(1-{q}_{\mathrm{u}\mathrm{n}}/{2}^{k}) $解决CDH问题。
证明 假定敌手$ {A}_{2} $能以不可忽略的优势$ \varepsilon $赢得游戏IND-CCA2,则挑战者$ C $在敌手$ {A}_{2} $的协助下解决CDH困难问题,即挑战者$ C $拥有CDH实例$ \left\{P, aP, cP\right\} $,求解$ a\mathrm{、}c\mathrm{、}P $的值。$ C $将与$ {A}_{2} $进行如下交互:
1) 初始化阶段。由挑战者$ C $进行系统初始化,随机选取$ \theta \in {\mathbb{Z}}_{q}^{\mathrm{*}} $,$ {P}_{\mathrm{p}\mathrm{u}\mathrm{b}}=\theta P $,公开parameters=$ \{{G}_{1}, {G}_{2}, e, P, {P}_{\mathrm{p}\mathrm{u}\mathrm{b}}, $ $ {H}_{1}, {H}_{2}, {H}_{3}\} $,并将$ \theta $传给$ {A}_{2} $。
2) 问询阶段。初始化列表$ {L}_{1} $、$ {L}_{2} $、$ {L}_{3} $、$ {L}_{K} $均为空,$ {A}_{2} $进行以下多项式有界次问询:
(1) $ {H}_{1} $问询。$ C $维护列表$ {L}_{1}=\left\{{u}_{i}, {Q}_{i}\right\} $,当$ {A}_{2} $对$ {H}_{1}\left({u}_{i}\right) $进行问询时,若该问询已存在列表$ {L}_{1} $中,则给$ {A}_{2} $返回对应的$ {Q}_{i} $;否则$ C $给$ {A}_{2} $返回$ {Q}_{i}=bP $,并将$ {Q}_{i} $添加到列表$ {L}_{1} $中。
(2) $ {H}_{2} $问询。$ C $维护列表$ {L}_{2}=\left\{{u}_{B}, {c}_{i}, {U}_{i}, {r}_{i}, {h}_{i}\right\} $,当$ {A}_{2} $对$ {H}_{2}\left({u}_{B}\right|\left|{c}_{i}\right|\left|{U}_{i}\right) $进行问询时,若该问询已存在列表$ {L}_{2} $中,则给$ {A}_{2} $返回对应的$ {h}_{i} $;否则$ C $随机选取$ {r}_{i}\in {\mathbb{Z}}_{q}^{\mathrm{*}} $$ \left(1\le i\le n\right) $并进行$ {H}_{1} $问询得到$ {Q}_{i} $,计算$ {U}_{i}={r}_{i}{Q}_{i} $,任取$ {h}_{i}\in {G}_{2} $返回给$ {A}_{2} $,并将其添加到列表$ {L}_{2} $中。
(3) $ {H}_{3} $问询。$ C $维护列表$ {L}_{3}=\left\{{u}_{B}, {\alpha }_{i}, {R}_{i}, {p}_{p{k}_{B}}, \right. $$ {r}_{i}\mathrm{p}{\mathrm{k}}_{B}, $ $ \left.{T}_{i}\right\},$当$ {A}_{2} $对$ {H}_{3}\left({u}_{B}, {\alpha }_{i}, {R}_{i}, \mathrm{p}{\mathrm{k}}_{B}, {r}_{i}\mathrm{p}{\mathrm{k}}_{B}\right) $进行问询时,若该问询已存在列表$ {L}_{3} $中,则给$ {A}_{2} $返回对应的$ {T}_{i} $;否则任取$ {T}_{i}\in {\left\{\mathrm{0, 1}\right\}}^{\mathrm{l}\mathrm{m}} $返回给$ {A}_{2} $,并将其添加到列表$ {L}_{3} $中。
(4) 秘密值问询。$ C $维护列表$ {L}_{K}=\{{u}_{i}, {\beta }_{i}, \mathrm{p}{\mathrm{k}}_{i}, {g}_{i}\} $,当$ {A}_{2} $输入$ {u}_{i} $进行问询时,若该问询已存在列表$ {L}_{K} $中,则给$ {A}_{2} $返回对应的$ {\beta }_{i} $;否则,若$ {g}_{i}=0 $,则取消问询;若$ {g}_{i}=1 $,$ C $给$ {A}_{2} $返回对应的$ {\beta }_{i} $,否则进行公钥问询。
(5) 公钥问询。当$ {A}_{2} $输入$ {u}_{i} $进行问询时,$ C $查询列表$ {L}_{K} $,若该问询已存在列表$ {L}_{K} $中,则给$ {A}_{2} $返回对应的公钥$ \mathrm{p}{\mathrm{k}}_{i} $;否则,查询列表$ {L}_{K} $获取$ {\beta }_{i} $,若$ {\beta }_{i} $不存在,$ C $随机选取$ {\beta }_{i}\in {\mathbb{Z}}_{q}^{\mathrm{*}} $,并丢硬币选择$ {g}_{i}\in \left\{\mathrm{0, 1}\right\} $,其中$ {g}_{i} $取0的概率为$ \delta $,取1的概率为$ 1-\delta $。若$ {g}_{i}=0 $,返回$ \mathrm{p}{\mathrm{k}}_{i}={\beta }_{i}aP $;若$ {g}_{i}=1 $,则返回$ \mathrm{p}{\mathrm{k}}_{i}={\beta }_{i}P $,并将其添加到列表$ {L}_{K} $中。
(6) 签密问询。当$ {A}_{2} $输入$ \left({u}_{i}, {u}_{B}, {m}_{i}\right) $进行问询时,$ C $查询列表$ {L}_{1} $中的$ {g}_{B} $。若$ {g}_{B}=0 $,则取消问询;若$ {g}_{B}=1 $,按照原签密算法对明文$ {m}_{i} $进行签密,并返回签密结果$ {\sigma }_{i}=\left({R}_{i}, {U}_{i}, {c}_{i}, {v}_{i}\right) $。
(7) 聚合签密问询。当$ {A}_{2} $输入$ ({u}_{1}, {u}_{2}, \cdots , {u}_{n}, {u}_{B}, $ $ {m}_{1}, {m}_{2}, \cdots , {m}_{n}) $进行问询时,$ C $对$ \left({u}_{i}, {m}_{i}, {u}_{B}\right)\left(1\le i\le n\right) $执行签密问询算法得到签密结果$ {\sigma }_{i}=\left({R}_{i}, {U}_{i}, {c}_{i}, {v}_{i}\right) $ $ \left(1\le i\le n\right) $,然后计算$ V=\sum\limits_{i=1}^{n}{v}_{i} $,最后返回$ \sigma =〈{\left\{{R}_{i}, {U}_{i}, {c}_{i}\right\}}_{i=1}^{n}, V〉 $。
(8) 解签密问询。$ C $查询列表$ {L}_{K} $中的$ {u}_{i} $,若存在且$ {g}_{i}=1 $,则查询列表$ {L}_{1} $和列表$ {L}_{K} $中$ {D}_{B} $、$ {\beta }_{B} $,在列表$ {L}_{3} $中查询$ ({u}_{B}, {\alpha }_{i}^{'}, {R}_{i}, \mathrm{p}{\mathrm{k}}_{B}, {\beta }_{B}{R}_{i}) $,计算$ {m}_{i}\left|\right|{u}_{i}={c}_{i} \oplus {{T}_{i}}^{'} $,然后查询列表$ {L}_{1} $和列表$ {L}_{2} $得到$ {Q}_{i} $和$ {h}_{i} $,验证$ e({v}_{i}, P)=e({U}_{i}+{h}_{i}{Q}_{i}, {P}_{\mathrm{p}\mathrm{u}\mathrm{b}}+\mathrm{p}{\mathrm{k}}_{i}) $是否成立。若成立,则返回$ {m}_{i} $,否则游戏终止。若存在$ {g}_{i} $且$ {g}_{i}=0 $,则查询列表$ {L}_{1} $、$ {L}_{2} $、$ {L}_{3} $,存在其对应元组,则返回$ {m}_{i} $,否则游戏终止。
(9) 聚合解签密问询。$ C $查询列表$ {L}_{K} $中的$ {u}_{i} $,若存在且$ {g}_{i}=1 $,则查询列表$ {L}_{1} $和列表$ {L}_{K} $中$ {D}_{B} $、$ {\beta }_{B} $,在列表$ {L}_{3} $中查询$ \left({u}_{B}, {\alpha }_{i}^{'}, {R}_{i}, \mathrm{p}{\mathrm{k}}_{B}, {\beta }_{B}{R}_{i}\right) $,计算$ {m}_{i}\left|\right|{u}_{i}={c}_{i} \oplus {{T}_{i}}^{'} $,然后查询列表$ {L}_{1} $和列表$ {L}_{2} $得知$ {Q}_{i} $和$ {h}_{i} $,验证$ e({v}_{i}, P)=e\left(\sum\limits_{i=1}^{n}({U}_{i}+{h}_{i}{Q}_{i}), {P}_{\mathrm{p}\mathrm{u}\mathrm{b}}+\sum\limits_{i=1}^{n}\mathrm{p}{\mathrm{k}}_{i}\right) $是否成立。若成立,则返回$ {m}_{i} $,否则游戏终止。若存在$ {g}_{i} $且$ {g}_{i}=0 $,则查询列表$ {L}_{1} $、$ {L}_{2} $、$ {L}_{3} $,存在其对应元组,则返回$ {m}_{i} $,否则游戏终止。
3) 挑战阶段。$ {A}_{2} $输出两个长度相同的明文$ {m}_{0} $和$ {m}_{1} $,身份$ \left({u}_{1}, {u}_{2}, \cdots , {u}_{n}\right) $将$ {\sigma }^{\mathrm{*}}=〈{\left\{{{R}_{i}}^{\mathrm{*}}, {{U}_{i}}^{\mathrm{*}}, {{c}_{i}}^{\mathrm{*}}\right\}}_{i=1}^{n}, {V}^{\mathrm{*}}〉 $和$ {u}_{B} $发送给$ C $,$ C $查询列表$ {L}_{1} $中的$ {g}_{B} $。若$ {g}_{B}=1 $,则游戏终止;否则,$ C $随机选取$ b\in \left\{\mathrm{0, 1}\right\} $,通过消息$ {m}_{b} $运行签密算法得到密文$ {{\sigma }_{i}}^{\mathrm{*}}=\left({{R}_{i}}^{\mathrm{*}}, {{U}_{i}}^{\mathrm{*}}, {{c}_{i}}^{\mathrm{*}}, {{v}_{i}}^{\mathrm{*}}\right) $,聚合签密密文,并返回给$ {A}_{2} $。
4) 第二阶段问询。在该阶段,$ {A}_{2} $进行的问询与问询阶段相似,但不允许对$ {u}_{B} $进行秘密值问询,$ {A}_{2} $也不能对密文$ {\sigma }^{\mathrm{*}} $进行聚合解签密问询。
5) 猜测阶段。在进行多次的问询以后,$ {A}_{2} $输出$ {b}^{'} $,若$ {b}^{'}=b $,则$ {A}_{2} $赢得游戏;否则游戏失败。$ C $可以从$ {L}_{3} $对应的数组中得到$ {r}_{i}\mathrm{p}{\mathrm{k}}_{B} $,$ C $从$ {L}_{K} $对应的数组中得到$ {\beta }_{B} $,这样的数组必定存在(否则在解签密问询中游戏终止)。其中,$ S={r}_{i}\mathrm{p}{\mathrm{k}}_{B} $(随机选取$ {r}_{i}\in {\mathbb{Z}}_{\mathrm{q}}^{\mathrm{*}} $)。最后$ {\beta }_{B}^{-1}S $作为CDH问题的解,证明如下:
$ e(S, P)=e(c\mathrm{p}{\mathrm{k}}_{B}, P)=e(c{\beta }_{B}aP, P)\Rightarrow acP={\beta }_{B}^{-1}S $
|
如果$ {A}_{2} $问询阶段对$ {u}_{B} $进行过秘密值问询以及$ {H}_{2} $、$ {H}_{3} $问询,则$ C $失败。$ {A}_{2} $未进行秘密值以及$ {H}_{2} $、$ {H}_{3} $问询的概率至少为$ 1/{q}_{1} $、$ 1/{q}_{2} $、$ 1/{q}_{3} $。在解签密问询中,$ C $拒绝一个有效签密的概率为$ {q}_{\mathrm{u}\mathrm{n}}/{2}^{k} $。因此,$ C $解决CDH问题的概率为$ \mathrm{s}\mathrm{u}\mathrm{c}{\mathrm{c}}_{{A}_{2}}^{\mathrm{C}\mathrm{D}\mathrm{H}}\ge \varepsilon /{q}_{1}{q}_{2}{q}_{3}(1-{q}_{\mathrm{u}\mathrm{n}}/{2}^{k}) $。因为$ {A}_{2} $是以不可忽略的优势赢得游戏的,与定义3相悖,所以在多项式时间内,挑战者$ C $不能解决CDH问题。因此,本文方案具有机密性。
3.2 不可伪造性
不可伪造性是指只有发送方的签名能通过验证。
定理3 在ROM中的CDH问题下,在概率多项式时间内若存在敌手$ {A}_{1} $进行$ {H}_{1} $、$ {H}_{2} $、$ {H}_{3} $、公钥、部分私钥、聚合签密、解签密的问询次数至少为$ {{q}_{H}}_{{}_{1}} $、$ {q}_{{H}_{2}} $、$ {q}_{{H}_{3}} $、$ {q}_{k} $、$ {q}_{s} $、$ {q}_{E} $、$ {q}_{\mathrm{u}\mathrm{n}} $,能够以不可忽略的优势$ \varepsilon $取得游戏EUF-CMA的胜利,则可能存在挑战者$ C $以概率$ \mathrm{s}\mathrm{u}\mathrm{c}{\mathrm{c}}_{{A}_{1}}^{\mathrm{C}\mathrm{D}\mathrm{H}}\ge \varepsilon {\left(1-\delta \right)}^{{q}_{s}+n-1}\delta $解决CDH问题。
证明 假定敌手$ {A}_{1} $能以不可忽略的优势$ \varepsilon $赢得游戏EUF-CMA,则挑战者$ C $能在敌手$ {A}_{1} $的协助下解决CDH困难问题,即挑战者$ C $拥有CDH实例$ \left\{P, aP, bP\right\} $,求解$ a\mathrm{、}b\mathrm{、}P $的值。$ C $与$ {A}_{1} $进行如下交互:
1) 初始化阶段。同定理1的初始化阶段相似。
2) 问询阶段。同定理1的问询阶段相似。
3) 伪造阶段。$ {A}_{1} $输出伪造的密文$ {\sigma }^{\mathrm{*}}=〈\left\{{{R}_{i}}^{\mathrm{*}}, {{U}_{i}}^{\mathrm{*}}, {c}_{i}^{\mathrm{*}}\right\} $$ {}_{i=1}^{n}, $ $ {V}^{\mathrm{*}}〉 $,$ C $查询列表$ {L}_{1} $,若存在任意$ {{g}_{i}}^{\mathrm{*}}=0 $,则输出$ {\sigma }^{\mathrm{*}} $为伪造后的密文;否则,伪造失败。若$ {\sigma }^{\mathrm{*}} $为有效伪造聚合签密密文,必存在$ {{u}_{I}}^{\mathrm{*}} $$ \left(1\le I\le n\right) $未进行过部分私钥问询,$ \left({{u}_{I}}^{\mathrm{*}}, {{m}_{I}}^{\mathrm{*}}\right) $未进行过聚合签密问询。$ {A}_{1} $选择一个用户$ ({u}_{I}^{\mathrm{*}}={u}_{1}^{\mathrm{*}}) $,使得密文$ {\sigma }^{\mathrm{*}} $满足以下等式:
$ \begin{array}{l}e\left({V}^{\mathrm{*}}, P\right)=e\left(\sum\limits_{i=1}^{n}\left({U}_{i}^{\mathrm{*}}+{h}_{i}^{\mathrm{*}}{Q}_{i}^{\mathrm{*}}\right), {P}_{\mathrm{p}\mathrm{u}\mathrm{b}}+\sum\limits_{i=1}^{n}\mathrm{p}{\mathrm{k}}_{i}^{\mathrm{*}}\right)=\\ e\left(\sum\limits_{i=1}^{n}{U}_{i}^{\mathrm{*}}, {P}_{\mathrm{p}\mathrm{u}\mathrm{b}}\right)e\left(\sum\limits_{i=1}^{n}{h}_{i}^{\mathrm{*}}{Q}_{i}^{\mathrm{*}}, {P}_{\mathrm{p}\mathrm{u}\mathrm{b}}\right)e\left(\sum\limits_{i=1}^{n}{U}_{i}^{\mathrm{*}}, \sum\limits_{i=1}^{n}\mathrm{p}{\mathrm{k}}_{i}^{*}\right)\\ e\left(\sum\limits_{i=1}^{n}{h}_{i}^{\mathrm{*}}{Q}_{i}^{\mathrm{*}}, \sum\limits_{i=1}^{n}\mathrm{p}{\mathrm{k}}_{i}^{\mathrm{*}}\right)=e\left(\sum\limits_{i=2}^{n}{r}_{i}^{\mathrm{*}}{\pi }_{i}^{\mathrm{*}}{P}_{\mathrm{p}\mathrm{u}\mathrm{b}}, P\right)e\left({r}_{1}^{\mathrm{*}}{\pi }_{1}^{\mathrm{*}}baP, P\right)\\ e\left(\sum\limits_{i=2}^{n}{h}_{i}^{\mathrm{*}}{\pi }_{i}^{\mathrm{*}}{P}_{\mathrm{p}\mathrm{u}\mathrm{b}}, P\right)e\left({h}_{1}^{\mathrm{*}}{\pi }_{1}^{\mathrm{*}}baP, P\right)e\left(\sum\limits_{i=1}^{n}{U}_{i}^{\mathrm{*}}{\beta }_{i}^{\mathrm{*}}, P\right)\\ e\left(\sum\limits_{i=2}^{n}{h}_{i}^{\mathrm{*}}{\pi }_{i}^{\mathrm{*}}{\beta }_{i}^{\mathrm{*}}P, P\right)e\left({h}_{1}^{\mathrm{*}}{\pi }_{1}^{\mathrm{*}}{\beta }_{1}^{\mathrm{*}}bP, P\right)\Rightarrow {V}^{\mathrm{*}}=\sum\limits_{i=2}^{n}{r}_{i}^{\mathrm{*}}{\pi }_{i}^{\mathrm{*}}{P}_{\mathrm{p}\mathrm{u}\mathrm{b}}+\\ abP{r}_{1}^{\mathrm{*}}{\pi }_{1}^{\mathrm{*}}+\sum\limits_{i=2}^{n}{h}_{i}^{\mathrm{*}}{\pi }_{i}^{\mathrm{*}}{P}_{\mathrm{p}\mathrm{u}\mathrm{b}}+{h}_{1}^{\mathrm{*}}{\pi }_{1}^{\mathrm{*}}baP+\\ \sum\limits_{i=1}^{n}{U}_{i}^{\mathrm{*}}{\beta }_{i}^{\mathrm{*}}+\sum\limits_{i=2}^{n}{h}_{i}^{\mathrm{*}}{\pi }_{i}^{\mathrm{*}}{\beta }_{i}^{\mathrm{*}}P+{h}_{1}^{\mathrm{*}}{\pi }_{1}^{\mathrm{*}}{\beta }_{1}^{\mathrm{*}}bP\Rightarrow abP={\left({h}_{1}^{\mathrm{*}}{\pi }_{1}^{\mathrm{*}}+{r}_{1}^{\mathrm{*}}{\pi }_{1}^{\mathrm{*}}\right)}^{-1}\\ \left[{V}^{\mathrm{*}}-{P}_{\mathrm{p}\mathrm{u}\mathrm{b}}\sum\limits_{i=2}^{n}\left({r}_{i}^{\mathrm{*}}+{h}_{i}^{\mathrm{*}}\right){\pi }_{i}^{\mathrm{*}}-\sum\limits_{i=1}^{n}{U}_{i}^{\mathrm{*}}{\beta }_{i}^{\mathrm{*}}-\sum\limits_{i=2}^{n}{h}_{i}^{\mathrm{*}}{\pi }_{i}^{\mathrm{*}}{\beta }_{i}^{\mathrm{*}}P-{h}_{1}^{\mathrm{*}}{\pi }_{1}^{\mathrm{*}}{\beta }_{1}^{\mathrm{*}}bP\right]\end{array} $
|
因此,$ C $成功解决了CDH问题。
如果$ {A}_{1} $在问询阶段进行部分私钥问询,在伪造阶段伪造出的签密无效,且$ {g}_{1}=0 $,$ {g}_{i}=1\left(2\le i\le n\right) $,则$ C $失败。上述事件的概率分别为$ {\left(1-\delta \right)}^{{q}_{s}} $、$ \varepsilon $和$ \delta {\left(1-\delta \right)}^{n-1} $,因此,$ C $解决CDH问题的概率为$ \mathrm{s}\mathrm{u}\mathrm{c}{\mathrm{c}}_{{A}_{1}}^{\mathrm{C}\mathrm{D}\mathrm{H}\mathrm{P}}\ge \varepsilon (1-\delta $$ {)}^{{q}_{s}+n-1}\delta $。因为$ {A}_{1} $是以不可忽略的优势赢得游戏,与定义4相悖,所以在多项式时间内,挑战者$ C $不能解决CDH问题。因此,本文方案具有不可伪造性。
定理4 在ROM中的CDH问题下,在概率多项式时间内若存在敌手$ {A}_{2} $进行$ {H}_{1} $、$ {H}_{2} $、$ {H}_{3} $、公钥、秘密值、聚合签密、解签密的问询次数至少为$ {{q}_{H}}_{{}_{1}} $、$ {q}_{{H}_{2}} $、$ {q}_{{H}_{3}} $、$ {q}_{k} $、$ {q}_{s} $、$ {q}_{E} $、$ {q}_{\mathrm{u}\mathrm{n}} $,能够以不可忽略的优势$ \varepsilon $取得游戏EUF-CMA的胜利,则可能存在挑战者$ C $以概率$ \mathrm{s}\mathrm{u}\mathrm{c}{\mathrm{c}}_{{A}_{2}}^{\mathrm{C}\mathrm{D}\mathrm{H}}\ge \varepsilon \delta {\left(1-\delta \right)}^{{q}_{s}+n-1} $解决CDH问题。
证明 假定敌手$ {A}_{2} $能以不可忽略的优势$ \varepsilon $赢得游戏EUF-CMA,则挑战者$ C $在敌手$ {A}_{2} $的协助下解决CDH困难问题,即挑战者$ C $拥有CDH实例$ \left\{P, aP, bP\right\} $,求解$ a\mathrm{、}b\mathrm{、}P $的值。$ C $与$ {A}_{2} $进行如下交互:
1) 初始化阶段。同定理2的初始化阶段相似。
2) 问询阶段。同定理2的问询阶段相似。
3) 伪造阶段。$ {A}_{2} $输出伪造的密文$ {\sigma }^{\mathrm{*}}=〈\left\{{{R}_{i}}^{\mathrm{*}}, {{U}_{i}}^{\mathrm{*}}\right. $$ , {c}_{i}^{\mathrm{*}}{\}}_{i=1}^{n}, $ $ {V}^{\mathrm{*}}〉 $,$ C $查询列表$ {L}_{1} $,若存在任意$ {{g}_{i}}^{\mathrm{*}}=0 $,则输出$ {\sigma }^{\mathrm{*}} $为伪造后的密文;否则,伪造失败。若$ {\sigma }^{\mathrm{*}} $为有效伪造聚合签密密文,必存在$ {{u}_{I}}^{\mathrm{*}}\left(1\le I\le n\right) $未进行过秘密值问询,$ \left({{u}_{I}}^{\mathrm{*}}, {{m}_{I}}^{\mathrm{*}}\right) $未进行过聚合签密问询。$ {A}_{2} $选择一个用户$ ({u}_{I}^{\mathrm{*}}={u}_{1}^{\mathrm{*}}) $,使得密文$ {\sigma }^{\mathrm{*}} $满足以下等式:
$ \begin{array}{l}e\left({V}^{\mathrm{*}}, P\right)=e\left(\sum\limits_{i=1}^{n}\left({U}_{i}^{\mathrm{*}}+{h}_{i}^{\mathrm{*}}{Q}_{i}^{\mathrm{*}}\right), {P}_{\mathrm{p}\mathrm{u}\mathrm{b}}+\sum\limits_{i=1}^{n}\mathrm{p}{\mathrm{k}}_{i}^{\mathrm{*}}\right)=\\ e\left(\sum\limits_{i=1}^{n}{U}_{i}^{\mathrm{*}}, {P}_{\mathrm{p}\mathrm{u}\mathrm{b}}\right)e\left(\sum\limits_{i=1}^{n}{h}_{i}^{\mathrm{*}}{Q}_{i}^{\mathrm{*}}, {P}_{\mathrm{p}\mathrm{u}\mathrm{b}}\right)e\left(\sum\limits_{i=1}^{n}{U}_{i}^{\mathrm{*}}, \sum\limits_{i=1}^{n}\mathrm{p}{\mathrm{k}}_{i}^{\mathrm{*}}\right)\\ e\left(\sum\limits_{i=1}^{n}{h}_{i}^{\mathrm{*}}{Q}_{i}^{\mathrm{*}}, \sum\limits_{i=1}^{n}\mathrm{p}{\mathrm{k}}_{i}^{\mathrm{*}}\right)=\\ e\left(\sum\limits_{i=1}^{n}{U}_{i}^{\mathrm{*}}\theta , P\right)e\left(\sum\limits_{i=1}^{n}{h}_{i}^{\mathrm{*}}bP\theta , P\right)e\left(\sum\limits_{i=2}^{n}{U}_{i}^{\mathrm{*}}{\beta }_{i}^{\mathrm{*}}, P\right)\\ e\left({r}_{1}^{\mathrm{*}}{\beta }_{1}^{\mathrm{*}}abP, P\right)e\left(\sum\limits_{i=2}^{n}{h}_{i}^{\mathrm{*}}{\beta }_{i}^{\mathrm{*}}bP, P\right)e\left({h}_{1}^{\mathrm{*}}{\beta }_{1}^{\mathrm{*}}baP, P\right)\Rightarrow \\ {V}^{\mathrm{*}}=\sum\limits_{i=1}^{n}{U}_{i}^{\mathrm{*}}\theta +\sum\limits_{i=1}^{n}{h}_{i}^{\mathrm{*}}bP\theta +\sum\limits_{i=2}^{n}{U}_{i}^{\mathrm{*}}{\beta }_{i}^{\mathrm{*}}+{r}_{1}^{\mathrm{*}}{\beta }_{1}^{\mathrm{*}}abP+\\ \sum\limits_{i=2}^{n}{h}_{i}^{\mathrm{*}}{\beta }_{i}^{\mathrm{*}}bP+{h}_{1}^{\mathrm{*}}{\beta }_{1}^{\mathrm{*}}abP\Rightarrow abP={\left({h}_{1}^{\mathrm{*}}{\beta }_{1}^{\mathrm{*}}+{r}_{1}^{\mathrm{*}}{\beta }_{1}^{\mathrm{*}}\right)}^{-1}\\ \left[{V}^{\mathrm{*}}-\theta \sum\limits_{i=1}^{n}\left({U}_{i}^{\mathrm{*}}+{h}_{i}^{\mathrm{*}}bP\right)-\sum\limits_{i=2}^{n}\left({U}_{i}^{\mathrm{*}}+{h}_{i}^{\mathrm{*}}bP\right){\beta }_{i}^{\mathrm{*}}\right]\end{array} $
|
因此,$ C $成功解决了CDH问题。
如果$ {A}_{2} $在问询阶段进行秘密值问询,在伪造阶段伪造出的签密无效,且$ {g}_{1}=0 $,$ {g}_{i}=1\left(2\le i\le n\right) $,则$ C $失败。上述事件的概率分别为$ {\left(1-\delta \right)}^{{q}_{s}} $、$ \varepsilon $和$ \delta {\left(1-\delta \right)}^{n-1} $,因此,$ C $解决CDH问题的概率为$ \mathrm{s}\mathrm{u}\mathrm{c}{\mathrm{c}}_{{A}_{2}}^{\mathrm{C}\mathrm{D}\mathrm{H}}\ge \varepsilon {\left(1-\delta \right)}^{{q}_{s}+n-1} $$ \delta $。因为$ {A}_{2} $是以不可忽略的优势赢得游戏,与定义4相悖,所以在多项式时间内,挑战者$ C $不能解决CDH问题。因此,本文方案具有不可伪造性。
3.3 可公开验证性
可公开验证性是指在计算验证等式的过程中不涉及通信双方的私有信息,任意第三方均可通过计算验证等式验证签密的有效性。本文方案的验证等式$ e(V, P)=e $$ \left(\sum\limits_{i=1}^{n}({U}_{i}+{h}_{i}{Q}_{i}), {P}_{\mathrm{p}\mathrm{u}\mathrm{b}}+\sum\limits_{i=1}^{n}\mathrm{p}{\mathrm{k}}_{i}\right) $不包含通信双方的秘密信息,满足可公开验证性。文献[24]的验证等式$ R\cdot e\left(S, P\right)=e\left(\sum\limits_{i=1}^{m}{h}_{i}, \mathrm{p}{\mathrm{k}}_{s}\right) $中$ {h}_{i}={H}_{2}({m}_{i}, {r}_{i}) $,$ {r}_{i}=e\left({T}_{i}, {S}_{\mathrm{I}{\mathrm{D}}_{r}}\right) $,需要接收者的私钥$ {S}_{\mathrm{I}{\mathrm{D}}_{r}} $和明文$ {m}_{i} $,第三方不可获取,因此不满足可公开验证性。
4 性能分析
CLASC方案的主要性能是通信效率、计算代价和存储开销。与其他方案相比,一个签密方案具有更少的计算量或更高安全性,则称该方案的性能更优。计算量主要包括发送者和接收者的计算量以及计算过程中的操作总量,其操作包括双线性映射运算、点乘运算和指数运算等。安全性主要包括机密性、不可伪造性。
本文方案与文献[16, 26, 28-30]方案的安全性和可公开验证性的对比如表 1所示,其中,√表示具有安全性和可公开验证性,×表示没有这两种性质。
表 1
(Table 1)
表 1 不同方案的性能对比
Table 1 Performance comparison among different schemes
方案 |
安全性 |
可公开验证性 |
文献[16]方案 |
× |
√ |
文献[26]方案 |
√ |
√ |
文献[28]方案 |
√ |
× |
文献[29]方案 |
√ |
× |
文献[30]方案 |
√ |
√ |
本文方案 |
√ |
√ |
|
下载CSV
表 1 不同方案的性能对比
Table 1 Performance comparison among different schemes
|
不同方案的运算量对比如表 2所示。据文献[7]可知,p(双线性对运算)的运算代价为20.01 ms,e(指数运算)的运算代价为11.20 ms,s(点乘运算)的运算代价为0.83 ms,如哈希、异或等运算相对于无证书聚合密码体制的计算成本可以忽略。假设参与聚合签密的用户有$ n $个,本文方案的签密阶段包括2个运算:1)$ 4n $次点乘运算,$ {R}_{i}={r}_{i}\cdot P(1\le i\le n) $,$ {U}_{i}={r}_{i}\cdot {Q}_{i} $,$ {\alpha }_{i}=e({Q}_{B}, {r}_{i}\cdot {P}_{\mathrm{p}\mathrm{u}\mathrm{b}}) $,$ {T}_{i}={H}_{3}({u}_{B}, {\alpha }_{i}, {R}_{i}, \mathrm{p}{\mathrm{k}}_{B}, $ $ {r}_{i}\cdot \mathrm{p}{\mathrm{k}}_{B}) $;2)$ n $次双线性映射运算,$ {\alpha }_{i}=e({Q}_{B}, {r}_{i}\cdot {P}_{\mathrm{p}\mathrm{u}\mathrm{b}}) $。签密阶段的运算代价为$ (p+4s)n\approx (20.01+4\times 0.83)n= $ $ 23.33n $ ms。解签密阶段包括($ n+2 $)次双线性映射运算:$ {\alpha }_{i}^{\mathrm{'}}=e({D}_{B}, {R}_{i}) $,$ e(V, P)=e\left(\sum\limits_{i=1}^{n}({U}_{i}+{h}_{i}{Q}_{i}), {P}_{\mathrm{p}\mathrm{u}\mathrm{b}}+\sum\limits_{i=1}^{n}\mathrm{p}{\mathrm{k}}_{i}\right) $。$ 2n $次点乘运算:$ {{T}_{i}}^{\mathrm{'}}={H}_{3}\left({u}_{B}, {{\alpha }_{i}}^{'}, {R}_{i}, \mathrm{p}{\mathrm{k}}_{B}, {x}_{B}{R}_{i}\right) $,$ e(V, P)=e $ $ \left(\sum\limits_{i=1}^{n}({U}_{i}+{h}_{i}{Q}_{i}), {P}_{\mathrm{p}\mathrm{u}\mathrm{b}}+\sum\limits_{i=1}^{n}\mathrm{p}{\mathrm{k}}_{i}\right) $。解签密阶段的运算代价为$ (p+2s)n+2p\approx (20.01+2\times 0.83)n+2\times 20.01= $ $ 21.67n+ $ $ 40.02 $ ms。因此,本文方案的总运算代价为$ (2p+ $ $ 6s)n+2p\approx (2\times 20.01+6\times 0.83)n+2\times 20.01=45n+ $$ 40.02 $ms。
表 2
(Table 2)
表 2 不同方案的运算量对比
Table 2 Computation comparison among different schemes
方案 |
签密 |
解签密 |
聚合验证 |
运算总量 |
运算代价/ms |
文献[16]方案 |
— |
— |
2p |
— |
— |
文献[26]方案 |
(p+s)n |
3np+2p |
np+2p |
(4p+s)n+2p |
100.88n+20.01 |
文献[28]方案 |
(4e+s)n |
(4p+4e+3s)n |
(2p+3e+3s)n |
(4p+8e+4s)n |
172.96n |
文献[29]方案 |
(p+5s)n |
(2p+s)n+p |
(p+s)n+p |
(3p+6s)n+p |
65.01n+20.01 |
文献[30]方案 |
(p+2s)n+3s |
(3p+s)n+2p |
2np+2p |
(4p+3s)n+2p+3s |
82.53n+42.51 |
本文方案 |
(p+4s)n |
(p+2s)n+2p |
2p |
(2p+6s)n+2p |
45n+40.02 |
|
下载CSV
表 2 不同方案的运算量对比
Table 2 Computation comparison among different schemes
|
从表 1和表 2可以看出,对数量相同的消息执行聚合签密操作,与文献[26, 28-30]方案相比,本文方案运算代价大幅降低。文献[28]是关于道路状况的车载系统签密方案,签密阶段未使用双线性映射运算,运算效率在所比较的文献中最高,但是聚合验证和解签密阶段均使用了$ 2n $次双线性映射运算,且在聚合验证阶段需使用接收者的私钥信息$ \mathrm{v}\mathrm{s}{\mathrm{k}}_{j, 1} $、$ \mathrm{v}\mathrm{s}{\mathrm{k}}_{j, 2} $,因此,不满足可公开验证性。本文方案与文献[26, 30]方案相比,解签密阶段均减少了$ 2n $次双线性映射运算。文献[29]方案是关于车载系统的匿名异构签密方案,本文方案的解签密阶段相较于文献[29]方案减少了$ n $次双线性映射运算,且文献[29]方案在聚合验证阶段需要用到$ {k}_{j} $的值,$ {k}_{j}={H}_{2}\left({R}_{sj}\right) $,$ {R}_{sj}=e({U}_{j, 1}, {S}_{r}) $,$ {S}_{r}={s}_{2}^{-1}{Q}_{r} $。若通过$ {S}_{r} $计算$ {k}_{j} $需要系统主密钥,系统主密钥不能被任意第三方得知。因此,文献[29]方案不满足可公开验证性。文献[26, 28-30]方案在聚合验证阶段需要的双线性映射运算次数均与用户的数量有关,而本文方案仅需2次双线性映射运算,与用户数量无关。因此,本文方案具有较高的运算效率。
与文献[16]方案相比,本文方案增加了加密的功能,并在签名阶段将接收者的身份信息隐藏其中,能够有效保护用户隐私。在运算代价方面,本文方案与文献[16]方案在聚合验证阶段均需2次双线性映射运算。由于文献[16]方案不具备加密功能,因此其他阶段的运算代价不做对比。在安全性方面,文献[16]方案不满足机密性,仅满足签名方案所需的不可伪造性。因此,本文方案的性能更优。
以上是通过理论推导得到的性能分析,本文还通过仿真实验验证运算效率。仿真实验环境:Intel Core i5-5200@2.20 GHz CPU,4 GB RAM PC,Ubuntu 18.04.5操作系统,Python3.6.9,pypbc库。
在本文方案的仿真实验核心伪代码中,明文$ \left|\left.m\right|\right. $长度随机,$ \left|\left.{\mathbb{Z}}_{q}^{\mathrm{*}}\right|\right. $=512 bit。
系统初始化阶段是生成公开参数,关键代码如下:
$ \mathrm{E}\mathrm{l}\mathrm{e}\mathrm{m}\mathrm{e}\mathrm{n}\mathrm{t}\_\mathrm{r}\mathrm{a}\mathrm{n}\mathrm{d}\mathrm{o}\mathrm{m}\left(\mathrm{s}\right) $//模拟KGC随机选取主密钥$ \mathrm{s} $
$ \mathrm{E}\mathrm{l}\mathrm{e}\mathrm{m}\mathrm{e}\mathrm{n}\mathrm{t}\_\mathrm{r}\mathrm{a}\mathrm{n}\mathrm{d}\mathrm{o}\mathrm{m}\left(\mathrm{P}\right) $//随机生成$ {\mathrm{G}}_{1} $的生成元$ \mathrm{P} $
$ \mathrm{E}\mathrm{l}\mathrm{e}\mathrm{m}\mathrm{e}\mathrm{n}\mathrm{t}\_\mathrm{m}\mathrm{u}\mathrm{l}\_\mathrm{z}\mathrm{n}({\mathrm{P}}_{\mathrm{p}\mathrm{u}\mathrm{b}}, \mathrm{P}, \mathrm{s}) $//$ {\mathrm{P}}_{\mathrm{p}\mathrm{u}\mathrm{b}}=\mathrm{s}\times \mathrm{P} $
密钥生成阶段是生成用户公钥和私钥,关键代码如下:
$ \mathrm{E}\mathrm{l}\mathrm{e}\mathrm{m}\mathrm{e}\mathrm{n}\mathrm{t}\_\mathrm{r}\mathrm{a}\mathrm{n}\mathrm{d}\mathrm{o}\mathrm{m}\left({\mathrm{Q}}_{\mathrm{i}}\right) $//用户利用哈希函数生成$ {\mathrm{Q}}_{\mathrm{i}} $
$ \mathrm{E}\mathrm{l}\mathrm{e}\mathrm{m}\mathrm{e}\mathrm{n}\mathrm{t}\_\mathrm{m}\mathrm{u}\mathrm{l}\_\mathrm{z}\mathrm{n}({\mathrm{D}}_{\mathrm{i}}, \mathrm{s}, {\mathrm{Q}}_{\mathrm{i}}) $//用户部分私钥$ {\mathrm{D}}_{\mathrm{i}}=\mathrm{s}\times {\mathrm{Q}}_{\mathrm{i}} $
$ \mathrm{E}\mathrm{l}\mathrm{e}\mathrm{m}\mathrm{e}\mathrm{n}\mathrm{t}\_\mathrm{r}\mathrm{a}\mathrm{n}\mathrm{d}\mathrm{o}\mathrm{m}\left({\mathrm{x}}_{\mathrm{i}}\right) $//用户随机选取秘密值$ {\mathrm{x}}_{\mathrm{i}} $
$ \mathrm{E}\mathrm{l}\mathrm{e}\mathrm{m}\mathrm{e}\mathrm{n}\mathrm{t}\_\mathrm{m}\mathrm{u}\mathrm{l}\_\mathrm{z}\mathrm{n}(\mathrm{p}{\mathrm{k}}_{\mathrm{i}}, {\mathrm{x}}_{\mathrm{i}}, \mathrm{P}) $//用户公钥$ \mathrm{p}{\mathrm{k}}_{\mathrm{i}}={\mathrm{x}}_{\mathrm{i}}\times \mathrm{P} $
签密阶段是对信息进行签密,关键代码如下:
$ \mathrm{E}\mathrm{l}\mathrm{e}\mathrm{m}\mathrm{e}\mathrm{n}\mathrm{t}\_\mathrm{r}\mathrm{a}\mathrm{n}\mathrm{d}\mathrm{o}\mathrm{m}\left({\mathrm{r}}_{\mathrm{i}}\right) $//用户随机选取$ {\mathrm{r}}_{\mathrm{i}} $
$ \mathrm{E}\mathrm{l}\mathrm{e}\mathrm{m}\mathrm{e}\mathrm{n}\mathrm{t}\_\mathrm{m}\mathrm{u}\mathrm{l}\_\mathrm{z}\mathrm{n}({\mathrm{R}}_{\mathrm{i}}, {\mathrm{r}}_{\mathrm{i}}, \mathrm{P}) $//$ {\mathrm{R}}_{\mathrm{i}}={\mathrm{r}}_{\mathrm{i}}\times \mathrm{P} $
$ \mathrm{E}\mathrm{l}\mathrm{e}\mathrm{m}\mathrm{e}\mathrm{n}\mathrm{t}\_\mathrm{m}\mathrm{u}\mathrm{l}\_\mathrm{z}\mathrm{n}({\mathrm{U}}_{\mathrm{i}}, {\mathrm{r}}_{\mathrm{i}}, {\mathrm{Q}}_{\mathrm{i}}) $//$ {\mathrm{U}}_{\mathrm{i}}={\mathrm{r}}_{\mathrm{i}}\times {\mathrm{Q}}_{\mathrm{i}} $
$ \mathrm{p}\mathrm{a}\mathrm{i}\mathrm{r}\mathrm{i}\mathrm{n}\mathrm{g}\_\mathrm{a}\mathrm{p}\mathrm{p}\mathrm{l}\mathrm{y}({\mathrm{\alpha }}_{\mathrm{i}}, {\mathrm{Q}}_{\mathrm{B}}, {\mathrm{r}}_{\mathrm{i}}\mathrm{*}{\mathrm{P}}_{\mathrm{p}\mathrm{u}\mathrm{b}}) $//$ {\mathrm{\alpha }}_{\mathrm{i}}=\mathrm{e}({\mathrm{Q}}_{\mathrm{B}}, {\mathrm{r}}_{\mathrm{i}}{\mathrm{P}}_{\mathrm{p}\mathrm{u}\mathrm{b}}) $
$ \mathrm{E}\mathrm{l}\mathrm{e}\mathrm{m}\mathrm{e}\mathrm{n}\mathrm{t}\_\mathrm{r}\mathrm{a}\mathrm{n}\mathrm{d}\mathrm{o}\mathrm{m}({\mathrm{T}}_{\mathrm{i}}/{\mathrm{h}}_{\mathrm{i}}) $//利用哈希函数计算$ {\mathrm{h}}_{\mathrm{i}} $和$ {\mathrm{T}}_{\mathrm{i}} $
$ \mathrm{E}\mathrm{l}\mathrm{e}\mathrm{m}\mathrm{e}\mathrm{n}\mathrm{t}\_\mathrm{a}\mathrm{d}\mathrm{d}(\mathrm{t}\mathrm{e}\mathrm{m}{\mathrm{p}}_{1}, \mathrm{u}\mathrm{i}\mathrm{d}, {\mathrm{m}}_{\mathrm{i}}, {\mathrm{T}}_{\mathrm{i}}) $//$ \mathrm{t}\mathrm{e}\mathrm{m}{\mathrm{p}}_{1}=(\mathrm{u}\mathrm{i}\mathrm{d}+{\mathrm{m}}_{\mathrm{i}}) \oplus {\mathrm{T}}_{\mathrm{i}} $
$ \mathrm{E}\mathrm{l}\mathrm{e}\mathrm{m}\mathrm{e}\mathrm{n}\mathrm{t}\_\mathrm{a}\mathrm{d}\mathrm{d}(\mathrm{t}\mathrm{e}\mathrm{m}{\mathrm{p}}_{2}, {\mathrm{r}}_{\mathrm{i}}, {\mathrm{h}}_{\mathrm{i}}) $//$ \mathrm{t}\mathrm{e}\mathrm{m}{\mathrm{p}}_{2}={\mathrm{r}}_{\mathrm{i}}+{\mathrm{h}}_{\mathrm{i}} $
$ \mathrm{E}\mathrm{l}\mathrm{e}\mathrm{m}\mathrm{e}\mathrm{n}\mathrm{t}\_\mathrm{a}\mathrm{d}\mathrm{d}(\mathrm{t}\mathrm{e}\mathrm{m}{\mathrm{p}}_{3}, {\mathrm{x}}_{\mathrm{i}}{\mathrm{Q}}_{\mathrm{i}}, {\mathrm{D}}_{\mathrm{i}}) $//$ \mathrm{t}\mathrm{e}\mathrm{m}{\mathrm{p}}_{3}={\mathrm{x}}_{\mathrm{i}}{\mathrm{Q}}_{\mathrm{i}}+{\mathrm{D}}_{\mathrm{i}} $
$ \mathrm{E}\mathrm{l}\mathrm{e}\mathrm{m}\mathrm{e}\mathrm{n}\mathrm{t}\_\mathrm{m}\mathrm{u}\mathrm{l}\_\mathrm{z}\mathrm{n}({\mathrm{v}}_{\mathrm{i}}, \mathrm{t}\mathrm{e}\mathrm{m}{\mathrm{p}}_{2}, \mathrm{t}\mathrm{e}\mathrm{m}{\mathrm{p}}_{3}) $//$ {\mathrm{v}}_{\mathrm{i}}=\mathrm{t}\mathrm{e}\mathrm{m}{\mathrm{p}}_{2}+\mathrm{t}\mathrm{e}\mathrm{m}{\mathrm{p}}_{3} $
$ \mathrm{E}\mathrm{l}\mathrm{e}\mathrm{m}\mathrm{e}\mathrm{n}\mathrm{t}\_\mathrm{t}\mathrm{e}\mathrm{x}\mathrm{t}({\mathrm{\sigma }}_{\mathrm{i}}, {\mathrm{R}}_{\mathrm{i}}, {\mathrm{U}}_{\mathrm{i}}, {\mathrm{c}}_{\mathrm{i}}, {\mathrm{v}}_{\mathrm{i}}) $//用户输出密文$ {\mathrm{\sigma }}_{\mathrm{i}} $
解签密阶段是对信息进行签密,关键代码如下:
$ \mathrm{p}\mathrm{a}\mathrm{i}\mathrm{r}\mathrm{i}\mathrm{n}\mathrm{g}\_\mathrm{a}\mathrm{p}\mathrm{p}\mathrm{l}\mathrm{y}({\mathrm{\alpha }}_{\mathrm{i}}^{\mathrm{'}}, {\mathrm{D}}_{\mathrm{b}}, {\mathrm{R}}_{\mathrm{i}}) $//$ {\mathrm{\alpha }}_{\mathrm{i}}^{\mathrm{'}}=\mathrm{e}({\mathrm{D}}_{\mathrm{B}}, {\mathrm{R}}_{\mathrm{i}}) $
$ \mathrm{E}\mathrm{l}\mathrm{e}\mathrm{m}\mathrm{e}\mathrm{n}\mathrm{t}\_\mathrm{r}\mathrm{a}\mathrm{n}\mathrm{d}\mathrm{o}\mathrm{m}\left({\mathrm{T}}_{\mathrm{i}}^{\mathrm{'}}\right) $//利用哈希函数计算$ {\mathrm{T}}_{\mathrm{i}}^{\mathrm{'}} $
$ \mathrm{E}\mathrm{l}\mathrm{e}\mathrm{m}\mathrm{e}\mathrm{n}\mathrm{t}\_\mathrm{a}\mathrm{d}\mathrm{d}(\mathrm{t}\mathrm{e}\mathrm{m}{\mathrm{p}}_{1}^{\mathrm{'}}, {\mathrm{c}}_{\mathrm{i}}, {\mathrm{T}}_{\mathrm{i}}^{\mathrm{'}}, \mathrm{u}\mathrm{i}\mathrm{d}) $//$ \mathrm{t}\mathrm{e}\mathrm{m}{\mathrm{p}}_{1}^{\mathrm{'}}=({\mathrm{c}}_{\mathrm{i}}+{\mathrm{T}}_{\mathrm{i}}^{\mathrm{'}}) \oplus \mathrm{u}\mathrm{i}\mathrm{d} $
$ \mathrm{E}\mathrm{l}\mathrm{e}\mathrm{m}\mathrm{e}\mathrm{n}\mathrm{t}\_\mathrm{r}\mathrm{a}\mathrm{n}\mathrm{d}\mathrm{o}\mathrm{m}({\mathrm{Q}}_{\mathrm{i}}/{\mathrm{h}}_{\mathrm{i}}) $//利用哈希函数计算$ {\mathrm{h}}_{\mathrm{i}} $和$ {\mathrm{Q}}_{\mathrm{i}} $
$ \mathrm{p}\mathrm{a}\mathrm{i}\mathrm{r}\mathrm{i}\mathrm{n}\mathrm{g}\_\mathrm{a}\mathrm{p}\mathrm{p}\mathrm{l}\mathrm{y}({\mathrm{v}}_{\mathrm{i}}, \mathrm{P}, \mathrm{p}\mathrm{a}\mathrm{i}\mathrm{r}\mathrm{i}\mathrm{n}\mathrm{g}) $//
$ \mathrm{e}({\mathrm{v}}_{\mathrm{i}}, \mathrm{P})=\mathrm{e}({\mathrm{U}}_{\mathrm{i}}+{\mathrm{h}}_{\mathrm{i}}{\mathrm{Q}}_{\mathrm{i}}, {\mathrm{P}}_{\mathrm{p}\mathrm{u}\mathrm{b}}+\mathrm{p}{\mathrm{k}}_{\mathrm{i}}) $
|
由上述理论推导得到的性能分析可知,本文方案性能的影响因素是运算代价、安全性及可公开验证性。其中,运算代价是指方案在整个计算过程中,双线性映射运算、点乘运算和指数运算操作所花费的时间。本文方案的签密总时间随消息个数的变化曲线如图 6所示。在签密阶段,当消息数$ m $分别为200、400、600、800、1 000、1 200时,签密时间分别约为5.084 s、10.164 s、17.345 s、25.329 s、35.345 s、45.499 s。
在解签密阶段,本文方案使用和未使用聚合签密技术的总解签密时间对比如图 7所示。
当消息数m分别为200、400、600、800、1 000和1 200时,本文方案使用聚合签密技术的解签密时间分别约为2.192 s、4.328 s、6.487 s、8.654 s、10.898 s、13.089 s。若未使用聚合签密技术,$ m $个签密消息逐条进行解密验证所需的时间分别约为10.154 s、20.288 s、30.378 s、40.630 s、50.430 s、61.073 s。从图 6和图 7可以看出,消息的签密时间比解签密时间高出约1倍。当消息数量呈倍数增长时,签密总时间和解签密总时间也以倍数增长。因此,本文方案在解签密阶段使用的运算代价为2次双线性映射运算的聚合验证技术,能够大幅提高解签密的运算效率。
5 应用场景设计
本文方案可应用在物联网(Internet Of Things,IOT)中,IOT经过既定的协议,依赖互联网实现信息共享,将物与物、人与物之间的信息进行交换,达到相互连通的效果。IOT主要由感知节点(Sensory Node,SNi,$ 1\le i\le n $)、网关节点(Gateway Node,GN)、云平台服务器(Cloud Platform Server,CPS)和应用终端(Application Terminal,AT)组成。IOT结构如图 8所示。
SN将收集的数据发送到GN,GN自动保存收集的数据,在一定的时间间隔内将数据周期性地传输至CPS,CPS将得到的数据进行管理和分析,并发送给AT,以供AT使用。其中,GN与GN、CPS与GN、GN与SN之间为无线通信。使用无线传输的数据容易受到网络攻击,如恶意假冒、窃听、数据篡改等,安全方面存在漏洞,导致其发展缓慢。签密技术能够满足IOT中数据传输所需的机密性和不可伪造性。
在IOT中,1个GN通常需要连接多个SN,GN将收到的信息进行聚合并通过CPS传送给AT,要求AT在短时间内验证大量签密消息,对AT的配置、成本要求较高,需要安全、高效、可靠的验证技术用于大批量密文的验证。本文提出的CLASC方案应用在IOT环境中,能够降本增效,保证信息的完整性和安全性。在本文方案中$ n $个签密者对应IOT中的$ n $个SN,接收者对应AT,$ n $个SN产生$ n $个明文消息并发送给GN,GN将接收到的消息进行聚合并通过CPS发送给AT,由AT进行验证并解签密,有效防止篡改消息、假冒消息及泄露消息等。
6 结束语
本文构造可公开验证的高效无证书聚合签密方案。基于无证书密码体制解决密钥托管的问题,并且在ROM下验证该方案的安全性,在对数据的真实性产生质疑时,通过信任第三方公开验证发送者的合法性。分析结果表明,本文方案具有较高的运算效率,仅使用固定次数的双线性映射运算,在保证传输数据安全的同时提高传输效率,使其适用于移动支付、车载系统和电子银行等场景中。下一步将在无证书聚合签密方案中通过随机数重用的方法,减少解密阶段的冗余信息,从而降低系统的存储开销和运算量。