1.
引言
一个传统的数字签名应该是公开可验证、可传递且不可伪造的,即任意用户都能够验证并相信(或拒绝)某文件的真实性及其签名者的身份信息。然而,这些性质无法满足某些旨在防止验证者对文件内容传播的特殊场景。1989年,Chaum和Van Antwerpen[1 ] 提出的不可否认签名(Undeniable Signature, US)要求验证者在尝试验证前必须向签名者发出在线请求,且不可避免地涉及繁重的零知识证明系统,致使签名效率普遍不高。1996年,Jakobsson等人[2 ] 提出了指定验证者签名(Designated Verifier Signature, DVS),签名者和指定验证者拥有同等级的签名权限,除二者之外的任意第三方均无法确认签名的真实生成者,因此,当双方对签名的真伪产生争议时无法提供任何仲裁手段。1998年,Krawczyk和Rabin[3 ] 提出的变色龙签名(Chameleon Signature, CS)更巧妙地解决了指定验证者对被签名的文件二次传递的问题。
相较于US和DVS, CS同样能够实现不可传递性,且不使用复杂的交互协议,避免了US中为设计零知识证明系统而产生的复杂性。特别地,CS通过在签名算法中嵌入变色龙哈希函数,使得持有该函数陷门的验证者获得伪造签名的能力,进而使得验证者二次传递的签名在第三方面前“失信”。此外,对于指定验证者伪造的签名,签名者有能力说服仲裁者予以拒绝,即满足签名者可拒绝性;而对于签名者真实生成的签名,签名者无法否认,即满足不可抵赖性。1984年,Shamir[4 ] 提出基于身份的密码体制,用户的公钥可根据身份标识公开计算,相应的私钥由私钥生成器(Private Key Generator, PKG)根据身份为其派发,因此不再依赖传统公钥密码系统的数字证书。结合基于身份的密码体制的优点和变色龙签名的安全特性,基于身份的变色龙签名在云医疗系统、版权保护、电子竞拍及在线/离线签名等应用场景中尤为适用[5 -8 ] 。
基于经典数论难题的密码体制无法抵御量子计算机的攻击,这意味着后量子时代大多数现有密码方案将在多项式时间内被攻破[9 ,10 ] 。具备抗量子计算攻击特性的格密码体制之所以脱颖而出,得益于格上轻量级的代数运算,且格上一些困难问题的难度存在平均情况到最坏情况的安全规约。2010年,Cash等人[11 ] 设计出格上变色龙哈希函数。2013年,谢璇等人[12 ] 宣称构造了格上首个CS方案,但是不满足签名者可拒绝性,且签名中必须携带的大尺寸矩阵严重影响了传输效率。2016年,Noh等人[13 ] 构造了格上强指定验证者签名方案,缺陷是无法解决签名者和指定验证者的争议问题。2017年,Xie等人[14 ] 提出了同态变色龙哈希函数的概念,并宣称构造了一个格上有限级数全同态签名方案,缺陷是同态变色龙哈希函数的设计存在天然的计算错误。2021年,Thanalakshmi等人[15 ] 构造了基于哈希的CS方案,缺陷是签名者和指定验证者必须各自存储一个复杂的有向无环图,且签名的生成过程比较繁琐。
进一步地,现有的大多数CS方案在解决签名争议时,往往要求签名者向仲裁者(一个可信的第三方)出示真实的消息和签名,进而与指定验证者的伪造产生变色龙哈希函数的碰撞。由于除指定验证者外任何用户都不具备伪造的能力,这足以证明签名者未对假消息进行过签名。然而,一旦签名者发起对某个伪造的“打假”,也意味着其本欲保护的签名失去了不可传递性。
该文提出了格上基于身份的变色龙签名(Identity-Based CS, IBCS)方案,避免了文献[12 ]中存在的任意第三方可伪造签名和签名者无法拒绝指定验证者伪造的签名的安全性漏洞,并将最终签名的传输开销由平方级降为线性级。在此基础上,给出的变色龙签名方案2能够在签名者不暴露消息内容的条件下辅助仲裁者拒绝任意敌手伪造的签名。假设平均情况下的小整数解(Small Integer Solution, SIS)问题是困难的,在随机预言机模型下严格证明了两个方案满足抗选择身份和自适应性选择消息攻击下强不可伪造性、签名不可传递性、签名者可拒绝性和不可抵赖性,以及方案2的抗消息暴露性。
2.
预备知识
2.1
格理论
定义1[16 ] 设q , n 和m 为正整数,给定矩阵A ∈ Z n × m q 和向量u ∈ Z n q ,有以下定义:
定义2[16 ] 设m 为正整数,给定c ∈ R m 和ρ s , c ( x ) = exp ( − π ‖ x − c ‖ 2 / ‖ x − c ‖ 2 s 2 s 2 ) ,有以下定义:
D Λ , s , c ( x ) = ρ s , c ( x ) / ρ s , c ( x ) ∑ x ∈ Λ ρ s , c ( x ) ∑ x ∈ Λ ρ s , c ( x ) :一个m 维格Λ 上以c 为中心,s ∈ R + 为高斯参数的离散高斯分布。
定义3[16 ,17 ] 给定素数q ,矩阵A ∈ Z n × m q 和实数β > 0 ,小整数解问题S I S q , m , β 定义为:求解齐次线性方程组A ⋅ e = 0 m o d q 的非零小尺寸整数解e ∈ Z m ,满足0 < ‖ e ‖ ≤ β 。
引理1[16 ,17 ] 设整数m ,实数β = p o l y ( n ) ,素数q ≥ β ⋅ ω ( √ n log 2 n ) 和渐进因子γ ≥ β ⋅ ˜ O ( √ n ) ,则平均情况下的S I S q , m , β 问题与最坏情况下的最短独立向量组问题SIV P γ 的困难性是等价的。
引理2[17 -19 ] 设素数q ≥ 2 ,存在概率多项式时间(Probabilistic Polynomial Time, PPT)算法TrapGen ,输入q ,n 和m ≥ 2 n log 2 q ,输出A ∈ Z n × m q 和Λ ⊥ q ( A ) 的一组陷门T A ,其中A 统计接近Z n × m q 上的均匀分布U 。
引理3[16 ] 设素数q ≥ 2 ,整数m ≥ 2 n log 2 q ,参数s ≥ ω ( √ log 2 m ) ,若A ∈ Z n × m q 的列向量可生成Z n q ,则对于任意的e ∈ D Z m , s ,A ⋅ e m o d q 统计接近Z n q 上的均匀分布U 。
引理4[20 ] 设素数q > 2 ,整数m > 2 n log 2 q ,存在PPT算法BasisDel ,输入A ∈ Z n × m q ,R ∈ D m × m ,Λ ⊥ q ( A ) 的陷门T A 和参数s > ‖ ˜ T A ‖ ⋅ s R √ m ⋅ ω ( log 3 / 3 2 2 2 m ) ,输出Λ ⊥ q ( B = A ⋅ R − 1 ) 的陷门T B ∈ Z m × m ,其中D m × m 是Z m × m 上m o d q 可逆且列向量服从D Z m , s R 的分布,s R = √ n log 2 q ⋅ ω ( √ log 2 m ) 。
引理5[20 ] 设素数q > 2 ,整数m > 2 n log 2 q ,存在PPT算法SampleRwithBasis ,输入A ∈ Z n × m q ,输出可逆矩阵R ∈ D m × m 和Λ ⊥ q ( B ) 的陷门T B ,其中B = A ⋅ R − 1 统计接近Z n × m q 上的均匀分布。
引理6[16 ] 设素数q ≥ 2 ,整数m ≥ 2 n log 2 q ,存在PPT算法SamplePre ,输入A ∈ Z n × m q ,Λ ⊥ q ( A ) 的陷门T A ,参数s > ‖ ˜ T A ‖ ⋅ ω ( √ log 2 m ) 和u ∈ Z n q ,输出统计接近D Λ u q ( A ) , s 的短向量e ∈ Z m ,满足u = A ⋅ e m o d q 。
2.2
基于身份的变色龙签名
令消息空间为M ,身份空间为I D ,随机数空间为R 以及签名空间为S 。基于身份的变色龙签名[5 ] 由以下5个多项式时间算法构成:
Setup :由P K G 运行的概率性算法。输入安全参数λ ,输出公共参数p p 和系统主私钥msk 。特别地,p p 是以下算法的一个公共输入。
KeyGen :由P K G 运行的概率性算法。输入主私钥msk 以及身份i d ∈ I D ,输出与i d 相关联的私钥s k i d 。
Sign :由身份为i d S 的用户运行的概率性算法。输入签名者身份i d S ∈ I D ,指定验证者身份i d V ∈ I D ,签名者私钥s k i d S 以及消息μ ∈ M ,输出随机数r ∈ R 和签名值σ ∈ S 。
Verify :由身份为i d V 的用户运行的确定性算法。输入签名者身份i d S ∈ I D ,指定验证者身份i d V ∈ I D ,消息μ ∈ M ,随机数r ∈ R 以及签名值σ ∈ S ,输出1或0。
Forge :由身份为i d V 的用户运行的概率性算法。输入指定验证者身份i d V ∈ I D ,私钥s k i d V ,消息μ ∈ M 以及由签名者i d S ∈ I D 运行算法Sign 生成的随机数r ∈ R 和签名值σ ∈ S ,输出新消息μ ′ ∈ M 和随机数r ′ ∈ R ,满足Verify ( p p , i d S , i d V , μ ′ , r ′ , σ ) → 1 。
一个安全的IBCS方案需满足以下性质:
定义4[5 ] 若对于任意的PPT敌手A 在以下游戏中的优势A d v u n f o r g e a b i l i t y I B C S , A 是可忽略的,则称IBCS是抗选择身份和自适应性选择消息攻击下强不可伪造的。挑战者C 与敌手A 之间的交互游戏如下:
Initial: A 宣布其攻击的目标身份i d S ∗ ∈ I D 和i d V ∗ ∈ I D 。
Setup: C 运行算法Setup 生成公共参数p p 和主私钥msk 。C 秘密持有msk ,并将p p 发送给A 。
Queries: A 向C 发出多项式有界次的以下询问:
(1) Key query: A 适应性地询问任意身份i d ∈ I D (除i d S ∗ 和i d V ∗ 外)的私钥,C 返回s k i d ;
(2) Sign query: A 适应性地询问任意身份i d i ∈ I D 为身份i d j ∈ I D 生成的关于任意消息μ ∈ M 的签名,C 返回( μ , r , σ ) ,其中i d i 和i d j 分别为签名者和指定验证者的身份。
Outputs: A 输出一个伪造( μ ∗ , r ∗ , σ ∗ ) ∈ M × R × S 。A 赢得游戏的前提是以下条件成立:
(1) Verify ( p p , i d S ∗ , i d V ∗ , μ ∗ , r ∗ , σ ∗ ) → 1 ;
(2) A 未曾对i d S ∗ 和i d V ∗ 进行过Key query ,且( μ ∗ , r ∗ , σ ∗ ) 不是Sign query 的返回。
定义5[5 ] 若对于任意的PPT敌手A 在以下游戏中的优势A d v n o n − t r a n s f e r a b i l i t y I B C S , A 是可忽略的,则称IBCS是不可传递的。挑战者C 与敌手A 之间的交互游戏如下:
Setup: 与定义4中相同,C 生成公共参数p p 和主私钥msk ,并将p p 发送给A 。
Challenge: A 选择目标身份i d S ∗ ∈ I D 和i d V ∗ ∈ I D 。C 运行算法KeyGen 生成私钥s k i d S ∗ 和s k i d V ∗ ,随机选取消息μ 0 ∈ M ,运行算法Sign ( p p , i d S ∗ , i d V ∗ , s k i d S ∗ , μ 0 ) 生成随机数r 0 ∈ R 和签名值σ ∈ S ;运行算法Forge ( p p , i d V ∗ , s k i d V ∗ , μ 0 , r 0 , σ ) 生成新消息μ 1 ∈ M 和随机数r 1 ∈ R ;随机选取b ∈ { 0 , 1 } ,并返回( μ b , r b , σ ) 。
Outputs: A 输出b ∗ ∈ { 0 , 1 } 。若b ∗ = b ,则A 赢得游戏。
定义6[5 ] 若签名( μ , r , σ ) ∈ M × R × S 为指定验证者i d V ∗ ∈ I D 伪造,且签名者i d S ∗ ∈ I D 有能力说服仲裁者拒绝该签名,则称IBCS满足签名者可拒绝性;相反地,若( μ , r , σ ) ∈ M × R × S 为签名者i d S ∗ ∈ I D 真实生成,且其无法否认,则称IBCS满足签名者不可抵赖性。上述两个性质可由签名者i d S ∗ 与仲裁者之间的一个公开的拒绝协议(Denial Protocol )来保证:
对于i d V ∗ 运行算法Forge 伪造的( μ , r , σ ) ∈ M × R × S ,i d S ∗ 可向仲裁者提交碰撞( μ ′ , r ′ , σ ) :
(1) 若μ ≠ μ ′ ,且Verify ( p p , i d S ∗ , i d V ∗ , μ ′ , r ′ , σ ) → 1 ,则仲裁者断定( μ , r , σ ) 非i d S ∗ 生成,而是i d V ∗ 伪造;
(2) 否则,仲裁者判定( μ , r , σ ) 为i d S ∗ 生成。
3.
格上基于身份的变色龙签名
令消息空间M = { 0 , 1 } m (任意消息可采用抗碰撞哈希函数映射到M ),身份空间I D = { 0 , 1 } ∗ ,随机数空间R = D Z m , s 以及签名空间S = D Z m , s ,i d S ∈ I D 和i d V ∈ I D 分别对应签名者和指定验证者的身份。
3.1
方案构造
Setup ( 1 λ ) → ( pp , msk ) :输入安全参数λ ,令素数q = p o l y ( λ ) ,整数m = 2 n ⌈ log 2 q ⌉ , n = p o l y ( λ ) ,高斯参数s = ˜ O ( n 2 ) 。P K G 执行以下操作:
(1) 运行T r a p G e n ( q , n , m ) ,生成A ∈ Z n × m q 和Λ ⊥ q ( A ) 的陷门T A ;
(2) 随机选取B ∈ Z n × m q ,作为构造变色龙哈希函数C H 的公共矩阵;
(3) 选取抗碰撞哈希函数H 1 : { 0 , 1 } ∗ → D m × m 和H 2 : { 0 , 1 } ∗ → Z n q ,其中D m × m 见引理4;
(4) 输出公共参数p p = ( A , B , H 1 , H 2 ) 和系统主私钥m s k = T A 。
KeyGen ( p p , m s k , i d ) → ( s k i d ) : 输入参数p p ,主私钥msk 以及身份i d ∈ I D ,P K G 执行以下操作:
(1) 令R id = H 1 ( i d ) ∈ D m × m ,计算F i d = A ⋅ R − 1 i d m o d q ∈ Z n × m q (以下将F i d S 和F i d V 分别简记为F S 和F V );
(2) 运行BasisDel ( A , R i d , T A , s ) ,生成Λ ⊥ q ( F i d ) 的陷门T F i d ;
(3) 输出私钥s k i d = T F i d 。
Sign ( p p , i d S , i d V , s k i d S , μ ) → ( μ , r , σ ) :输入参数p p ,签名者身份i d S ∈ I D ,指定验证者身份i d V ∈ I D ,签名者私钥s k i d S = T F S 以及消息μ ∈ { 0 , 1 } m ,签名者执行以下操作:
(1) 首先查找本地签名库是否存储( i d V , μ , r , σ ) ,若存在,执行步骤(6),否则执行步骤(2);
(2) 令R i d S = H 1 ( i d S ) 和R i d V = H 1 ( i d V ) ,计算F S = A ⋅ R − 1 i d S m o d q 和F V = A ⋅ R − 1 i d V m o d q ;
(3) 随机选取r ∈ R ,计算关于μ 的变色龙哈希值y = C H ( μ , r ) = B ⋅ μ + F V ⋅ r m o d q ;
(4) 令h = H 2 ( i d S , i d V , b i n ( y ) ) ,其中b i n ( y ) ∈ { 0 , 1 } n ⌈ log 2 q ⌉ 为y ∈ Z n q 的二进制表示;
(5) 运行S a m p l e P r e ( F S , T F S , h , s ) ,生成签名值σ ∈ Z m ;
(6) 输出( μ , r , σ ) ,并存储( i d V , μ , r , σ ) 于本地签名库。
Verify ( p p , i d S , i d V , μ , r , σ ) → ( 1 or 0 ) : 输入参数p p ,签名者身份i d S ∈ I D ,指定验证者身份i d V ∈ I D ,消息μ ∈ { 0 , 1 } m ,随机数r ∈ R 以及签名值σ ∈ S ,指定验证者执行以下操作:
(1) 验证0 < ‖ r ‖ , ‖ σ ‖ ≤ s √ m 是否成立;
(2) 令R i d S = H 1 ( i d S ) 和R i d V = H 1 ( i d V ) ,计算F S = A ⋅ R − 1 i d S m o d q 和F V = A ⋅ R − 1 i d V m o d q ;
(3) 计算y = C H ( μ , r ) = B ⋅ μ + F V ⋅ r m o d q ;
(4) 验证F S ⋅ σ = H 2 ( i d S , i d V , b i n ( y ) ) m o d q 是否成立;
(5) 若以上条件全部成立,输出1 ,否则输出0 。
Forge ( p p , i d V , s k i d V , μ , r , σ ) → ( μ ′ , r ′ , σ ) : 输入参数p p ,指定验证者身份i d V ,私钥s k i d V = T F V 以及由签名者生成的( μ , r , σ ) ∈ M × R × S ,指定验证者执行以下操作:
(1) 令R i d V = H 1 ( i d V ) ,计算F V = A ⋅ R − 1 i d V m o d q 和y = C H ( μ , r ) = B ⋅ μ + F V ⋅ r m o d q ;
(2) 选取μ ′ ∈ { 0 , 1 } m 且μ ′ ≠ μ ,计算v = y − B ⋅ μ ′ m o d q ;
(3) 运行SamplePre ( F V , T F V , v , s ) ,生成随机数r ′ ∈ R ;
(4) 输出( μ ′ , r ′ , σ ) 。
3.2
安全性分析
定理1 假设SI S q , m , 2 s √ m 是困难的,则本文方案满足抗选择身份和自适应性选择消息攻击下强不可伪造性。
证明 假设A 为向本文方案发起攻击的PPT敌手,且能够以不可忽略的优势ε 伪造签名,C 为试图求解SI S q , m , 2 s √ m 难题实例A ∗ ⋅ e ∗ = 0 m o d q 的挑战者,其中A ∗ ∈ Z n × m q 。C 与敌手A 之间的交互游戏如下:
Initial: A 宣布其攻击的目标身份i d S ∗ ∈ I D 和i d V ∗ ∈ I D 。
Setup: C 随机选取B ∈ Z n × m q 和可逆矩阵R ∗ ∈ D m × m ,令A = A ∗ ⋅ R ∗ m o d q ,并将( A , B ) 发送给A 。
H 1 q u e r y : A 输入i d i ∈ I D ,若i d i ≠ i d S ∗ ,C 查找本地密钥库是否存储( i d i , R i , F i , T F i ) 。若存在,则返回H 1 ( i d i ) = R i ;否则,运行算法SampleRwithBasis ( A ) ,生成R i ∈ D m × m ,F i ∈ Z n × m q 和Λ ⊥ q ( F i ) 的陷门T F i ,其中F i = A ⋅ R − 1 i m o d q ,将( i d i , R i , F i , T F i ) 保存至本地密钥库,并返回H 1 ( i d i ) = R i 。若i d i = i d S ∗ ,则将( i d S ∗ , R ∗ , A ∗ , ⊥ ) 保存至C 的本地密钥库,并返回H 1 ( i d S ∗ ) = R ∗ 。
H 2 query: A 输入i d i , i d j ∈ I D 和μ ∈ M ,C 查找本地密钥库是否存储( i d i , R i , F i , T F i or ⊥ ) 和本地签名库是否存储( i d i , i d j , μ , r , σ ) 。若存在,则返回H 2 ( i d i , i d j , bin ( y ) ) = F i ⋅ σ m o d q ;否则,采用H 1 q u e r y 生成( i d i ≠ i d S ∗ , R i , F i , T F i ) 或( i d i = i d S ∗ , R ∗ , A ∗ , ⊥ ) ,选取随机数r ∈ R ,计算y = C H ( μ , r ) = B ⋅ μ + F j ⋅ r m o d q ,随机选取σ ∈ D Z m , s ,将( i d i , i d j , μ , r , σ ) 保存至本地签名库,并返回H 2 ( i d i , i d j , bin ( y ) ) = F i ⋅ σ m o d q 。
由引理5知,SampleRwithBasis ( A ) 的输出R i ∈ D m × m ;由引理3知,F i ⋅ σ m o d q 统计接近均匀分布。综上可知,H 1 q u e r y 和H 2 query 的返回值与真实方案中H 1 和H 2 的输出统计不可区分。
Key query: A 输入i d i ∈ I D ,i d i ≠ i d S ∗ ,i d i ≠ i d V ∗ ,C 查找密钥库( i d i , R i , F i , T F i ) ,返回s k i d i = T F i 。
Sign query: A 输入i d i ∈ I D ,i d j ∈ I D (i d i 和i d j 分别对应签名者和指定验证者)和μ ∈ M ,C 查找本地签名库( i d i , i d j , μ , r , σ ) ,返回( μ , r , σ ) ∈ M × R × S 。
不失一般性,假设A 在输出伪造( μ ∗ , r ∗ , σ ∗ ) 之前向C 发起过( i d S ∗ , i d V ∗ , μ ∗ ) 的H 2 query ,则C 已在本地存储( i d S ∗ , i d V ∗ , μ ∗ , r μ ∗ , σ μ ∗ ) 。
Outputs: A 输出i d S ∗ 为i d V ∗ 生成的一个伪造( μ ∗ , r ∗ , σ ∗ ) ∈ M × R × S ,满足:
(1) Verify ( pp , i d S * , i d V ∗ , μ ∗ , r ∗ , σ ∗ ) → 1 ;
(2) A 未曾对i d S ∗ 和i d V ∗ 进行过Key query ,且( i d S ∗ , i d V ∗ , μ ∗ , r ∗ , σ ∗ ) 不是Sign query 的返回。
当A 输出伪造( i d S ∗ , i d V ∗ , μ ∗ , r ∗ , σ ∗ ) 后,C 查找本地签名库( i d S ∗ , i d V ∗ , μ ∗ , r μ ∗ , σ μ ∗ ) ,得到( μ ∗ , r μ ∗ , σ μ ∗ ) 。由于( μ ∗ , r ∗ , σ ∗ ) ∈ M × R × S 是一个成功的伪造,易知F S ∗ ⋅ σ ∗ = F S ∗ ⋅ σ μ ∗ ,因此:
通过以下两种情况来说明A 的伪造( μ ∗ , r ∗ , σ ∗ ) 与C 的本地签名库中( μ ∗ , r μ ∗ , σ μ ∗ ) 不同:
(1) 若A 曾发起过( i d S ∗ , i d V ∗ , μ ∗ ) 的Sign query ,且C 返回( μ ∗ , r μ ∗ , σ μ ∗ ) 。由于A 赢得游戏的条件是输出一个有效的强伪造签名,即( i d S ∗ , i d V ∗ , μ ∗ , r ∗ , σ ∗ ) 不是Sign query 的返回,因此,σ ∗ ≠ σ μ ∗ ;
(2) 若A 未发起过( i d S ∗ , i d V ∗ , μ ∗ ) 的Sign query ,由于A 曾发起过H 2 query ,C 已存储有( μ ∗ , r μ ∗ , σ μ ∗ ) ,且返回H 2 ( i d S ∗ , i d V ∗ , bin ( y ) ) = A ∗ ⋅ σ μ ∗ 。由最小熵性质[14 ] 可知,给定原像采样函数f A ∗ ( e ∗ ) = A ∗ ⋅ e ∗ m o d q ,e ∗ ∈ D Z m , s 的最小熵为ω ( log 2 n ) 。因此,σ ∗ ≠ σ μ ∗ 以压倒性概率1 − 2 − ω ( log 2 n ) 成立。
综上可知,若σ ∗ ≠ σ μ ∗ ,则C 可求得原像采样函数f A ∗ ( e ∗ ) = A ∗ ⋅ e ∗ m o d q 的一个有效碰撞( σ ∗ , σ μ ∗ ) ,即C 能够以优势Adv unforgeability IBCS , A = ( 1 − 2 − ω ( log 2 n ) ) ⋅ ε 输出SI S q , m , 2 s √ m 难题的一个有效解e ∗ = σ ∗ − σ μ ∗ ∈ Z m ,即满足A ∗ ⋅ e ∗ = 0 m o d q ,且0 < ‖ e ∗ ‖ ≤ 2 s √ m 。证毕
定理2 本文方案满足签名不可传递性。
证明 A 选择目标身份i d S ∗ ∈ I D 和i d V ∗ ∈ I D 。C 运行KeyGen 生成( F S ∗ , T F S ∗ ) 和( F V ∗ , T F V ∗ ) ;随机选取μ 0 ∈ M ,运行Sign ( pp , i d S ∗ , i d V ∗ , T F S ∗ , μ 0 ) 生成r 0 ∈ R 和签名值σ ∈ S ;运行Forge ( pp , i d V ∗ , T F V ∗ , μ 0 , r 0 , σ ) 生成新消息μ 1 ∈ M 和随机数r 1 ∈ R ;随机选取b ∈ { 0 , 1 } ,并最终返回( μ b , r b , σ ) ∈ M × R × S 。
在上述过程中,r 0 ∈ D Z m , s ,r 1 为运行算法SamplePre 生成。由引理6知,短向量r 0 和r 1 统计不可区分。对于( μ 0 , r 0 , σ ) 和( μ 1 , r 1 , σ ) ,有C H ( μ 0 , r 0 ) = C H ( μ 1 , r 1 ) ,即B ⋅ μ 0 + F V ∗ ⋅ r 0 = B ⋅ μ 1 + F V ∗ ⋅ r 1 m o d q ;又知当H 2 的输入相同时,其输出也一定相同。因此,算法Verify 中的条件(4)成立,即
综上可知,对敌手A 而言,由挑战者C 返回的关于μ 0 ∈ M 和μ 1 ∈ M 的变色龙签名是统计不可区分的。因此,任意敌手即使能够运行算法 {\text{Verify}} 对签名\left( {{{\boldsymbol{\mu}} _b},{{\boldsymbol{r}}_b},{\boldsymbol{\sigma}} } \right) \in \mathcal{M} \times \mathcal{R} \times \mathcal{S} 进行验证,仍无法判定出真实生成者为 {\text{i}}{{\text{d}}_{{S^ * }}} \in \mathcal{I}\mathcal{D} 或 {\text{i}}{{\text{d}}_{{V^ * }}} \in \mathcal{I}\mathcal{D} ,敌手 \mathcal{A} 的优势是可忽略的,即{\text{Adv}}_{{\text{IBCS}},\mathcal{A}}^{{\text{non-transferability}}} \approx 0 。 证毕
定理3 本文方案满足签名者可拒绝性和不可抵赖性。
证明 对于签名者 {\text{i}}{{\text{d}}_{{S^ * }}} \in \mathcal{I}\mathcal{D} 运行 {\text{Sign}} 生成,并发送给 {\text{i}}{{\text{d}}_{{V^ * }}} \in \mathcal{I}\mathcal{D} 的签名\left( {{\boldsymbol{\mu}} ,{\boldsymbol{r}},{\boldsymbol{\sigma}} } \right) \in \mathcal{M} \times \mathcal{R} \times \mathcal{S} , {\text{i}}{{\text{d}}_{{S^ * }}} 无法对其抵赖。不妨假设 {\text{i}}{{\text{d}}_{{S^ * }}} 为尝试进行抵赖的签名者,根据 {\text{Denial Protocol}} ,签名者 {\text{i}}{{\text{d}}_{{S^ * }}} 需要出示一个伪造\left( {{\boldsymbol{\mu}} ',{\boldsymbol{r'}},{\boldsymbol{\sigma}} } \right) \in \mathcal{M} \times \mathcal{R} \times \mathcal{S} 。若 {\text{i}}{{\text{d}}_{{S^ * }}} 成功输出\left( {{\boldsymbol{\mu}} ' \ne {\boldsymbol{\mu}} ,{\boldsymbol{r'}},{\boldsymbol{\sigma}} } \right) ,则仲裁者可断定\left( {{\boldsymbol{\mu}} ,{\boldsymbol{r}},{\boldsymbol{\sigma}} } \right) 不是 {\text{i}}{{\text{d}}_{{S^ * }}} 生成的,即 {\text{i}}{{\text{d}}_{{S^ * }}} 对其生成的签名抵赖成功。由于\left( {{\boldsymbol{\mu}} ',{\boldsymbol{r'}},{\boldsymbol{\sigma}} } \right) \in \mathcal{M} \times \mathcal{R} \times \mathcal{S} 满足算法 {\text{Verify}} ,则有
综上可知,签名者 {\text{i}}{{\text{d}}_{{S^ * }}} 可求得 {\text{SI}}{{\text{S}}_{q,2m,2s\sqrt m }} 难题实例 \left( {{\boldsymbol{B}},{{\boldsymbol{F}}_{{V^ * }}}} \right) \cdot {\boldsymbol{e}} = 0{\rm {mod}} q 的一个解{\boldsymbol{e}} = \left( {\begin{array}{*{20}{c}} {{\boldsymbol{\mu}} - {\boldsymbol{\mu}} '} \\ {{\boldsymbol{r}} - {\boldsymbol{r'}}} \end{array}} \right) \in {Z^{2m}} ,且 0 < \left\| {\boldsymbol{e}} \right\| \le 2s\sqrt m 。由引理1知,这与 {\text{i}}{{\text{d}}_{{S^ * }}} 没有\varLambda _q^ \bot \left( {{\boldsymbol{B}},{{\boldsymbol{F}}_{{V^ * }}}} \right) 的任何陷门信息仍求得 {\text{SI}}{{\text{S}}_{q,2m,2s\sqrt m }} 难题实例的一个有效解相矛盾,即本文方案满足签名者不可抵赖性。
相反的, {\text{i}}{{\text{d}}_{{S^ * }}} 生成签名\left( {{\boldsymbol{\mu}} ,{\boldsymbol{r}},{\boldsymbol{\sigma}} } \right) \in \mathcal{M} \times \mathcal{R} \times \mathcal{S} ,发送给指定验证者 {\text{i}}{{\text{d}}_{{V^ * }}} ,而 {\text{i}}{{\text{d}}_{{V^ * }}} 运行算法 {\text{Forge}} 生成一个伪造\left( {{\boldsymbol{\mu}} ',{\boldsymbol{r'}},{\boldsymbol{\sigma}} } \right) \in \mathcal{M} \times \mathcal{R} \times \mathcal{S} 。在 {\text{Denial Protocol}} 中, {\text{i}}{{\text{d}}_{{S^ * }}} 可通过出示其真实生成的\left( {{\boldsymbol{\mu}} ,{\boldsymbol{r}},{\boldsymbol{\sigma}} } \right) 来说服仲裁者对伪造\left( {{\boldsymbol{\mu}} ',{\boldsymbol{r'}},{\boldsymbol{\sigma}} } \right) 进行拒绝。由于方案是签名者不可抵赖的,即 {\text{i}}{{\text{d}}_{{S^ * }}} 不具备伪造其真实生成的\left( {{\boldsymbol{\mu}} ,{\boldsymbol{r}},{\boldsymbol{\sigma}} } \right) 的能力,对于 {\text{i}}{{\text{d}}_{{S^ * }}} 出示的\left( {{\boldsymbol{\mu}} ,{\boldsymbol{r}},{\boldsymbol{\sigma}} } \right) ,仲裁者可完全断定是由 {\text{i}}{{\text{d}}_{{S^ * }}} 真实生成的;进一步地,仲裁者由 \mu ' \ne \mu 可完全断定\left( {{\boldsymbol{\mu}} ',{\boldsymbol{r'}},{\boldsymbol{\sigma}} } \right) 为 {\text{i}}{{\text{d}}_{{V^ * }}} 伪造。特别地,由于方案是抗选择身份和自适应性选择消息攻击下强不可伪造的, {\text{i}}{{\text{d}}_{{V^ * }}} 伪造出一个 {\text{i}}{{\text{d}}_{{S^ * }}} 无法拒绝的\left( {{\boldsymbol{\mu}} ',{\boldsymbol{r'}},{\boldsymbol{\sigma}} } \right) \in \mathcal{M} \times \mathcal{R} \times \mathcal{S} 的概率是可忽略的,即本文方案满足签名者可拒绝性。证毕
4.
格上抗消息暴露的基于身份的变色龙签名
大多数变色龙签名方案均不具备抗消息暴露安全性,即若签名者试图拒绝指定验证者伪造的签名,必须在仲裁阶段出示自己真实生成的消息和签名,这将导致签名者原本希望防止二次传递的签名被完全公开,从而造成不可传递性的失效。本节给出格上抗消息暴露的IBCS方案,使得签名者仅需出示某些不暴露真实消息和签名的信息,仍能够辅助仲裁者有效地拒绝指定验证者伪造的签名。
新方案采用对消息的随机分割策略,通过增添拒绝算法 {\text{Denial}} 来实现签名者在仲裁阶段的抗消息暴露性。算法 {\text{Setup}} 和 {\text{KeyGen}} 与已给出的格上IBCS方案中相同,将不再赘述,重点介绍新的算法设计细节。
4.1
方案构造
{\text{Setup}}\left( {{1^\lambda }} \right) \to \left( {{\text{pp}},{\text{msk}}} \right) :输入安全参数 \lambda ,输出公共参数 {\text{pp}} = \left( {{\boldsymbol{A}}{\text{,}}{\boldsymbol{B}},{\mathcal{H}_1},{\mathcal{H}_2}} \right) 和主私钥 {\text{msk}} = {{\boldsymbol{T}}_{\boldsymbol{A}}} 。
{\text{KeyGen}}\left( {{\text{pp}},{\text{msk}},{\text{id}}} \right) \to \left( {{\text{s}}{{\text{k}}_{{\text{id}}}}} \right): 输入参数 {\text{pp}} ,主私钥 {\text{msk}} 以及身份 {\text{id}} \in \mathcal{I}\mathcal{D} ,输出私钥 {\text{s}}{{\text{k}}_{{\text{id}}}} = {{\boldsymbol{T}}_{{{\boldsymbol{F}}_{{\text{id}}}}}} 。
{\text{Sign}}\left( {{\text{pp}},{\text{i}}{{\text{d}}_S},{\text{i}}{{\text{d}}_V},{\text{s}}{{\text{k}}_{{\text{i}}{{\text{d}}_S}}},{\boldsymbol{\mu}} } \right) \to \left( {{{\boldsymbol{\mu}} _0},{{\boldsymbol{\mu}} _1},{{\boldsymbol{r}}_0},{{\boldsymbol{r}}_1},{\boldsymbol{\sigma}} } \right) :输入参数 {\text{pp}} ,签名者身份 {\text{id}}_{S}\in \mathcal{ID} ,指定验证者身份 {\text{id}}_{V}\in \mathcal{ID} ,签名者私钥 {\text{s}}{{\text{k}}_{{\text{i}}{{\text{d}}_S}}} = {{\boldsymbol{T}}_{{{\boldsymbol{F}}_S}}} 以及消息 \mu \in {\left\{ {0,1} \right\}^m} ,签名者执行以下操作:
(1) 首先查找本地签名库是否存储\left( {\text{i}}{{\text{d}}_V},{{\boldsymbol{\mu}} _0},{{\boldsymbol{\mu}} _1}, {{\boldsymbol{r}}_0},{{\boldsymbol{r}}_1},{\boldsymbol{\sigma}} \right) ,其中{{\boldsymbol{\mu}} _0},{{\boldsymbol{\mu}} _1} \in {\left\{ {0,1} \right\}^m} ,且{{\boldsymbol{\mu}} _0} + {{\boldsymbol{\mu}} _1} = {\boldsymbol{\mu}} {\rm {mod}} 2 。若存在,执行(6),否则执行(2);
(2) 令 {{\boldsymbol{R}}_{{\text{i}}{{\text{d}}_S}}} = {\mathcal{H}_1}\left( {{\text{i}}{{\text{d}}_S}} \right) 和 {{\boldsymbol{R}}_{{\text{i}}{{\text{d}}_V}}} = {\mathcal{H}_1}\left( {{\text{i}}{{\text{d}}_V}} \right) ,计算 {{\boldsymbol{F}}_S} = {\boldsymbol{A}} \cdot {\boldsymbol{R}}_{{\text{i}}{{\text{d}}_S}}^{ - 1}{\rm {mod}} q 和 {{\boldsymbol{F}}_V} = {\boldsymbol{A}} \cdot {\boldsymbol{R}}_{{\text{i}}{{\text{d}}_V}}^{ - 1}{\rm {mod}} q ;
(3) 随机选取{{\boldsymbol{\mu}} _0} \in {\left\{ {0,1} \right\}^m} ,计算{{\boldsymbol{\mu}} _1} \,=\, {{\boldsymbol{\mu}} _0} \,+ {\boldsymbol{\mu}} {\rm {mod}} 2 ;
(4) 随机选取 {{\boldsymbol{r}}_0},{{\boldsymbol{r}}_1} \in \mathcal{R} ,计算关于 {{\boldsymbol{\mu}} _0} 和 {{\boldsymbol{\mu}} _1} 的变色龙哈希值{{\boldsymbol{y}}_0} = \mathcal{C}\mathcal{H}\left( {{{\boldsymbol{\mu}} _0},{{\boldsymbol{r}}_0}} \right) = {\boldsymbol{B}} \cdot {{\boldsymbol{\mu}} _0} + {{\boldsymbol{F}}_V} \cdot {{\boldsymbol{r}}_0}{\rm {mod}} q 和 {{\boldsymbol{y}}_1} = \mathcal{C}\mathcal{H}\left( {{\mu _1},{{\boldsymbol{r}}_1}} \right) = {\boldsymbol{B}} \cdot {\mu _1} + {{\boldsymbol{F}}_V} \cdot {{\boldsymbol{r}}_1}{\rm {mod}} q ;
(5) 令 {\boldsymbol{h}} = {\mathcal{H}_2}\left( {{\text{i}}{{\text{d}}_S},{\text{i}}{{\text{d}}_V},{\text{bin}}\left( {{{\boldsymbol{y}}_0},{{\boldsymbol{y}}_1}} \right)} \right) ,运行{{\rm{SamplePre}}} \left( {{{\boldsymbol{F}}_S},{{\boldsymbol{T}}_{{{\boldsymbol{F}}_S}}},{\boldsymbol{h}},s} \right) ,生成签名值 {\boldsymbol{\sigma}} \in {Z^m} ;
(6) 输出\left( {{{\boldsymbol{\mu}} _0},{{\boldsymbol{\mu}} _1},{{\boldsymbol{r}}_0},{{\boldsymbol{r}}_1},{\boldsymbol{\sigma}} } \right) ,并存储\left({\text{i}}{{\text{d}}_V},{{\boldsymbol{\mu}} _0}, {{\boldsymbol{\mu}} _1},{{\boldsymbol{r}}_0}, {{\boldsymbol{r}}_1},{\boldsymbol{\sigma}} \right) 于本地签名库。
{\text{Verify}}\left( {{\text{pp}},{\text{i}}{{\text{d}}_S},{\text{i}}{{\text{d}}_V},{{\boldsymbol{\mu}} _0},{{\boldsymbol{r}}_0},{{\boldsymbol{\mu}} _1},{{\boldsymbol{r}}_1},{\boldsymbol{\sigma}} } \right) \to \left( {1{\text{ or }}0} \right) :输入参数 {\text{pp}} ,签名者身份{\text{id}}_{S}\in \mathcal{ID} ,指定验证者身份{\text{id}}_{V}\in \mathcal{ID} ,比特串{{\boldsymbol{\mu}} _0},{{\boldsymbol{\mu}} _1} \in {\left\{ {0,1} \right\}^m} ,随机数 {{\boldsymbol{r}}_0},{{\boldsymbol{r}}_1} \in \mathcal{R} 以及签名值{\boldsymbol{\sigma}} \in \mathcal{S} ,指定验证者执行以下操作:
(1) 验证0 < \left\| {{{\boldsymbol{r}}_0}} \right\|,\left\| {{{\boldsymbol{r}}_1}} \right\|,\left\| {\boldsymbol{\sigma}} \right\| \le s\sqrt m 是否成立;
(2) 令 {{\boldsymbol{R}}_{{\text{i}}{{\text{d}}_S}}} = {\mathcal{H}_1}\left( {{\text{i}}{{\text{d}}_S}} \right) 和 {{\boldsymbol{R}}_{{\text{i}}{{\text{d}}_V}}} = {\mathcal{H}_1}\left( {{\text{i}}{{\text{d}}_V}} \right) ,计算 {{\boldsymbol{F}}_S} = {\boldsymbol{A}} \cdot {\boldsymbol{R}}_{{\text{i}}{{\text{d}}_S}}^{ - 1}{\rm {mod}} q 和 {{\boldsymbol{F}}_V} = {\boldsymbol{A}} \cdot {\boldsymbol{R}}_{{\text{i}}{{\text{d}}_V}}^{ - 1}{\rm {mod}} q ;
(3) 计算{{\boldsymbol{y}}_0} = \mathcal{C}\mathcal{H}\left( {{{\boldsymbol{\mu}} _0},{{\boldsymbol{r}}_0}} \right) = {\boldsymbol{B}} \cdot {{\boldsymbol{\mu}} _0} + {{\boldsymbol{F}}_V} \cdot {{\boldsymbol{r}}_0}{\rm {mod}} q 和{{\boldsymbol{y}}_1} = \mathcal{C}\mathcal{H}\left( {{{\boldsymbol{\mu}} _1},{{\boldsymbol{r}}_1}} \right) = {\boldsymbol{B}} \cdot {{\boldsymbol{\mu}} _1} + {{\boldsymbol{F}}_V} \cdot {{\boldsymbol{r}}_1}{\rm {mod}} q ;
(4) 验证{{\boldsymbol{F}}_S} \cdot {\boldsymbol{\sigma}} = {\mathcal{H}_2}\left( {{\text{i}}{{\text{d}}_S},{\text{i}}{{\text{d}}_V},{\text{bin}}\left( {{{\boldsymbol{y}}_0},{{\boldsymbol{y}}_1}} \right)} \right) 是否成立;
(5) 若以上条件全部成立,输出 1 ,否则输出 0 。
{\text{Forge}} \left( {{\text{pp}},{\text{i}}{{\text{d}}_V},{\text{s}}{{\text{k}}_{{\text{i}}{{\text{d}}_V}}},{{\boldsymbol{\mu}} _0},{{\boldsymbol{\mu}} _1},{{\boldsymbol{r}}_0},{{\boldsymbol{r}}_1},\sigma } \right) \to \left( {{{\boldsymbol{\mu}} '}_b}, {{\boldsymbol{\mu}} _{1{{ - }}b}}, {{{\boldsymbol{r'}}}_b},{{\boldsymbol{r}}_{1 - b}},{\boldsymbol{\sigma}} \right) :输入参数 {\text{pp}} ,指定验证者身份 {\text{i}}{{\text{d}}_V} ,私钥 {\text{s}}{{\text{k}}_{{\text{i}}{{\text{d}}_V}}} = {{\boldsymbol{T}}_{{{\boldsymbol{F}}_V}}} 以及由签名者生成的\left( {{{\boldsymbol{\mu}} _0},{{\boldsymbol{\mu}} _1},{{\boldsymbol{r}}_0},{{\boldsymbol{r}}_1},{\boldsymbol{\sigma}} } \right) \in {\mathcal{M}^2} \times {\mathcal{R}^2} \times \mathcal{S} ,指定验证者执行以下操作:
(1) 令 {{\boldsymbol{R}}_{{\text{i}}{{\text{d}}_V}}} = {\mathcal{H}_1}\left( {{\text{i}}{{\text{d}}_V}} \right) ,计算{{\boldsymbol{F}}_V} = {\boldsymbol{A}} \cdot {\boldsymbol{R}}_{{\text{i}}{{\text{d}}_V}}^{ - 1} {\rm {mod}} q ;
(2) 选取 b \in \left\{ {0,1} \right\} 和{{\boldsymbol{\mu}} '_b} \in {\left\{ {0,1} \right\}^m} ,其中{{\boldsymbol{\mu}} '_b} \ne {{\boldsymbol{\mu}} _b} ;
(3) 计算{{\boldsymbol{y}}_b} = \mathcal{C}\mathcal{H}\left( {{{\boldsymbol{\mu}} _b},{{\boldsymbol{r}}_b}} \right) = {\boldsymbol{B}} \cdot {{\boldsymbol{\mu}} _b} + {{\boldsymbol{F}}_V} \cdot {{\boldsymbol{r}}_b}{\rm {mod}} q 和 {\boldsymbol{v}} = {{\boldsymbol{y}}_b} - {\boldsymbol{B}} \cdot {\mu '_b}{\rm {mod}} q ;
(4) 运行 {\text{SamplePre}}\left( {{{\boldsymbol{F}}_V},{{\boldsymbol{T}}_{{{\boldsymbol{F}}_V}}},{\boldsymbol{v}},s} \right) ,生成随机数 {{\boldsymbol{r'}}_b} \in \mathcal{R} ;
(5) 输出\left( {{{{\boldsymbol{\mu}} '}_b},{{\boldsymbol{\mu}} _{1{\text{ - }}b}},{{{\boldsymbol{r'}}}_b},{{\boldsymbol{r}}_{1 - b}},{\boldsymbol{\sigma}} } \right) 。
请注意:在上述算法中,指定验证者 {\text{i}}{{\text{d}}_V} 最终伪造的消息为{\boldsymbol{\mu}} ' = {{\boldsymbol{\mu}} _{1{-}b}} + {{\boldsymbol{\mu}} '_b}{\rm {mod}} 2 。事实上, {\text{i}}{{\text{d}}_V} 也可以同时任意选取{{\boldsymbol{\mu}} '_0} \in {\left\{ {0,1} \right\}^m} 和{{\boldsymbol{\mu}} '_1} \in {\left\{ {0,1} \right\}^m} 来进行伪造,此时, {\text{i}}{{\text{d}}_V} 最终伪造的消息为{\boldsymbol{\mu}} ' = {{\boldsymbol{\mu}} '_0} + {{\boldsymbol{\mu}} '_1}{\rm {mod}} 2 。
{\text{Denial}}\left( {{\text{pp}},{\text{i}}{{\text{d}}_S},{\text{i}}{{\text{d}}_V},{{{\boldsymbol{\mu}} '}_0},{{{\boldsymbol{\mu}} '}_1},{{{\boldsymbol{r'}}}_0},{{{\boldsymbol{r'}}}_1},{\boldsymbol{\sigma}} } \right) \to \left( {1{\text{ or }}0} \right) :输入参数 {\text{pp}} ,签名者身份 {\text{i}}{{\text{d}}_S} ,指定验证者身份 {\text{i}}{{\text{d}}_V} 以及由指定验证者伪造的\left( {{{{\boldsymbol{\mu}} '}_0},{{{\boldsymbol{\mu}} '}_1},{{{\boldsymbol{r'}}}_0},{{{\boldsymbol{r'}}}_1},{\boldsymbol{\sigma}} } \right) \in {\mathcal{M}^2} \times {\mathcal{R}^2} \times \mathcal{S} ,签名者和仲裁者执行以下操作:
(1) 签名者查找本地签名库\left( {{\rm{id}}_V},{{\boldsymbol{\mu}} _0},{{\boldsymbol{\mu}} _1},{{\boldsymbol{r}}_0}, {{\boldsymbol{r}}_1},{\boldsymbol{\sigma}} \right) ,其中{{\boldsymbol{\mu}} _0} \ne {{\boldsymbol{\mu}} '_0} 或{{\boldsymbol{\mu}} _1} \ne {{\boldsymbol{\mu}} '_1} ;
(2) 不失一般性,假设{{\boldsymbol{\mu}} _0} \ne {{\boldsymbol{\mu}} '_0} ,签名者输出碰撞\left( {{{\boldsymbol{\mu}} _0},{{\boldsymbol{r}}_0}} \right) ;
(3) 仲裁者验证{{\boldsymbol{\mu}} _0} \ne {{\boldsymbol{\mu}} '_0} 和\mathcal{C}\mathcal{H}\left( {{{\boldsymbol{\mu}} _0},{{\boldsymbol{r}}_0}} \right) = \mathcal{C}\mathcal{H}\left( {{{{\boldsymbol{\mu}} '}_0},{{{\boldsymbol{r'}}}_0}} \right) 是否成立;
(4) 若以上条件全部成立,仲裁者输出1,即断定\left( {{{{\boldsymbol{\mu}} '}_0},{{{\boldsymbol{\mu}} '}_1},{{{\boldsymbol{r'}}}_0},{{{\boldsymbol{r'}}}_1},{\boldsymbol{\sigma}} } \right) 是由指定验证者伪造的,否则输出 0 。
4.2
安全性分析
定理4 假设 {\text{SI}}{{\text{S}}_{q,m,2s\sqrt m }} 是困难的,则本文方案满足抗选择身份和自适应性选择消息攻击下强不可伪造性、签名不可传递性、签名者可拒绝性和不可抵赖性以及抗消息暴露性。
证明 证明思路与已给出的格上IBCS方案的安全性证明思路基本相同;因篇幅所限,将不再赘述。
5.
效率分析
本文提出的两个格上IBCS方案与其他抗量子攻击的不可传递性签名方案在功能、存储与传输成本方面的对比,如表1 所示。
从功能方面看,方案1结合了格密码体制和基于身份的变色龙签名的安全特性,避免了文献[12 ]中任意第三方可伪造签名和签名者无法拒绝指定验证者伪造的签名的安全性漏洞,弥补了格上安全的变色龙签名的空缺;解决了文献[13 ]中签名者与指定验证者关于签名的争议问题。方案2采用了对消息的随机分割策略,增添了新的拒绝算法,解决了方案1在仲裁阶段签名不可传递性失效的问题,获得了抗消息暴露安全性。
从存储和传输成本方面看,方案1将最终签名中的随机矩阵作为公共参数,不再由签名者每次选取后与随机数和签名值一起发送,降低了文献[12 ]中签名的传输代价;公共参数仅包含 Z_q^{n \times m} 上的两个随机矩阵,最终的签名仅包含一个消息 \mu \in \mathcal{M} 和 {\mathcal{D}_{{Z^m},s}} 上的两个短向量,减少了文献[13 -15 ]中公共参数的存储成本,提高了签名的传输效率。方案2的签名过程采用了对消息的随机分割进行两次变色龙哈希计算和一次高斯原像采样,最终的签名仅包含两个比特串 {\mu _0} \in \mathcal{M} 和 {\mu _1} \in \mathcal{M} ,以及 {\mathcal{D}_{{Z^m},s}} 上的3个短向量,即签名长度虽有所增加,但渐进复杂度仍与方案1相同。
综上所述,本文提出的两个方案在功能方面更加全面,获得了抗选择身份和自适应性选择消息攻击下强不可伪造性、签名不可传递性、签名者可拒绝性和不可抵赖性以及抗消息暴露性;在存储和传输成本方面,减少了公共参数的存储成本与签名生成和传输的开销,可满足轻量级设备进行数字签名的实用性需求。
6.
结束语
通过结合抗量子计算攻击的格密码体制和基于身份的变色龙签名的安全特性,本文提出了格上基于身份的变色龙签名方案,弥补了格上安全的变色龙签名方案的空缺;进一步地,针对变色龙签名在仲裁阶段签名不可传递性失效的问题,提出了格上抗消息暴露的基于身份的变色龙签名方案。本文在随机预言机模型下严格证明了两个方案满足抗选择身份和自适应性选择消息攻击下强不可伪造性、签名不可传递性、签名者可拒绝性和不可抵赖性,以及方案2的抗消息暴露性。此外,给出的两个变色龙签名方案也减少了签名生成和传输的开销,符合轻量级签名的实用性需求。