张艳硕 刘 宁 罗乐琦
北京电子科技学院,北京市 100070
随着电子商务领域的不断发展,各类应用开始推行用户匿名功能,以达到在保护用户身份信息的前提下实现相应投票、选举等功能。 但现在市场上匿名功能的实现大多都建立在管理员知情的情况下,这就给用户身份信息安全带来了潜在威胁,甚至造成不可估量的损失。 故如何在足够安全的情况下,实现对用户信息的真正匿名便成为了一个十分重要的问题。
用户要想在认证过程中不让自己的身份及认证信息被其他用户或攻击者得到,那么方案就要满足匿名性,而对于大部分方案来说,要想达到保密目的,最基本的要求就是满足它的安全性,即一个方案允许被算法或敌手攻破,只要被攻破的概率是可忽略的即可。 可见要想解决这一问题,安全性和匿名性是两个需关注的方面。
在安全性方面,随着1977 年Rivest、Shamir和Adleman[1]提出的基于大整数分解问题[2][3][4]的RSA 公钥密码系统的问世,密码学找到了一个新的发展方向。 1989 年,刚兴起的互联网采用了RSA 加密软件。 2005 年,RSA 开始占据消费者身份保护市场。 两年以后,RSA再一次为消费者身份保护领域增加了基于知识的验证解决方案[5]。 但是随着各方面技术的发展,依赖于大整数因子分解的传统RSA 算法开始遭受威胁。 为解决这一威胁,相关领域专家开始从增加素数个数、加入随机数以及将公钥、私钥同时隐藏等多个方面着手进行研究[6][7]。2017 年,Tang-avel 和Varalakshmi[8]提出了比RSA 算法更安全的ISRSAC 算法。 ISRSAC 算法主要是在Thangavel 和Varalakshmi[9]提出的利用四个素数提高安全性从而增强RSA 密钥安全的ESRKGS 算法基础上由Thangavel 和Varalakshmi 修改而成的。 由此可见,ISRSAC 算法大幅度提高了公共密钥的安全性。
在匿名性方面,就不得不提能够隐藏真实签名者的身份信息,从而达到保护隐私效果的环签名。 环签名作为一种特殊的数字签名,2001 年首次由Rivest 给出了相关的环签名定义[10]。 环签名即签名者根据所需随机选择多个用户,利用所选用户的公钥以及自己的公私钥对对相应文件进行签名[11]的一种签名算法。 2003-2004年,学者们在对环签名概念和模型有了深层次理解后,开始引入多种新的环签名方案,并提出了新的环签名发展理念。 2005 年,密码学者们开始注重环签名的实际应用研究[10]。 由于各领域对环签名应用需求的不同,环签名以不同属性为重点提出多种签名方案,根据环签名的不同属性特征,可以将现有的环签名分为门限环签名[12]、关联环签名[13]、可撤销性匿名环签名[14]和可否认的环签名[15]四大类。
还有一些学者根据密钥生成方式的不同,将环签名分为基于PKI 的环签名[16]、基于IBC 的环签名[17]和基于CLC 的环签名[18]三大类。
基于证书公开密钥体系(PKI)的环签名是一种采用证书机制实现用户的身份和用户的钥匙之间的安全对应的环签名;基于身份标识密码技术(IBC)的环签名是一种非对称的公钥密码体系下的环签名;基于无证书密码体制(CLC)的环签名是一种介于传统PKI 和标识密码技术之间的环签名。 其中PKI 体系下经典的环签名主要有基于RSA 签名算法的RST 环签名算法[19],但是安全性基于大整数因式分解的RSA 算法存在着很大的安全隐患,于是出现了能够在一定程度上提高方案安全性的改进算法——基于ISRSAC 的环签名。 本文便在杨滕[20]设计的基于ISRSAC 的数字签名的基础上,构造出了基于ISRSAC 的环签名方案,为环签名提供了一种新的研究方案,同时也为那些对匿名性等功能有较高需求的领域提供新的研究方向。
本文整体结构如下:第2 节介绍了ISRSAC算法和基于ISRSAC 算法的数字签名[20],并将ISRSAC 算法与RSA 算法进行了对比,更直观地表现出了ISRSAC 算法的优势所在;第3 节介绍了环签名算法及其性质,包括无条件匿名性、不可伪造性、自发性和正确性,同时构造出了基于ISRSAC 的环签名方案;第4 节对本文构造方案的安全性进行了分析,并将本方案与基于ISRSAC 算法的其他签名方案和其他体制下的环方案方案分别进行对比分析,展示出了本方案所特有的性质,也进一步证明了基于ISRSAC 的环签名在一些对用户信息匿名要求相对较高的领域可以有很好的应用市场和发展前景;第5 节给出了本文的总结。
ISRSAC 算法主要通过利用增加随机数以及增大正整数n的分解难度的方法来提高算法的破解难度。 ISRSAC 算法由三阶段组成:密钥生成算法、加密算法和解密算法。
具体算法流程如下:
(1) 密钥生成算法
1) 随机选取两个大素数p和q,其中p≠q,p >3,q >3;
2) 计算n=p·q·(p-1)·(q-1),m=p·q;
4) 随机选取一个数e, 同时满足1<e <α(n) 和gcd(e,α(n))= 1;
5) 计算d,满足d·e≡1(modα(n))。
通过上述计算,确定出公钥(e,n)和私钥(d,m)。
(2) 加密算法
假设原文为M, 则可以通过公钥得到加密后的密文C=Memodn。
(3) 解密算法
已知私钥(d,m) 的情况下,可将密文C还原得到明文M=Cdmodm。
算法的安全性很大程度决定了对应签名方案的安全性,与传统的RSA 算法相比,ISRSAC算法的安全性有了很大程度的提高,主要体现在以下三方面:
(1) 整数n的分解难度提升。 在ISRSAC算法中正整数n的分解难度提高,由RSA 算法中分解为两个素数提升到分解为两个素数外加两个整数。 这就让攻击者很难利用现有方法在给定的多项式时间内进行因式分解,从而找到两个素数p,q。
(2) 引入随机数,提高随机性。 在ISRSAC算法中,攻击者要想获得私钥除了需要准确找到p,q外还需要确定随机因子r。 由于随机因子r值的确定具有随机性,攻击者很难在分解出两个素数的基础上再去确定一个随机数的具体值。
(3) 定义了一个新的安全函数α(n)。 ISRSAC 算法增加了一个新的安全函数α(n),α(n)中涉及随机数r,这就让攻击者即便能够正确分解出p,q,也很难再进一步进行攻击。
但是自Tangavel 和Varalakshmi 在2017 年提出ISRSAC 算法[8]以来,有关ISRSAC 算法在数字签名上的研究还较少,其中在2021 年提出了基于ISRSAC 算法的数字签名方案[20],并在此基础上构造了代理数字签名方案、有序多重数字签名方案和广播多重数字签名方案。
数字签名是保证交互双方传输数据完整性以及确保交互双方身份认证的关键核心技术。通过数字签名技术可以将现实生活中手写签字或印章的功能在数字社会中得以实现[21]。
基于ISRSAC 算法的数字签名由三阶段构成:密钥生成算法、签名生成算法、签名验证算法[20]。
具体算法流程如下:
(1) 密钥生成算法
1) 随机选取两个大素数p和q,其中p≠q,p >3,q >3;
2) 计算n=p·q·(p-1)·(q-1),m=p·q;
4) 随机选取一个数e, 同时满足1<e <α(n) 和gcd(e,α(n))= 1;
5) 计算d,满足d·e≡1(modα(n))。
通过上述计算,确定出公钥(e,m) 和私钥(d,n)。
(2) 签名生成算法
由于大多数明文的字符长度较长,在签名之前先要对明文进行压缩。 哈希函数作为一个确定性函数,主要通过散列算法将任意长度的输入转换成固定长度的输出。 在考虑到算法的不可逆性、正向快速性和抗碰撞性等性质后,在选择哈希算法时,选用了中华人民共和国政府采用的密码散列函数标准SM3[22]。 在本文中,假设原文为M, 哈希函数为H, 明文M的哈希值为H(M)。 为了对H(M) 进行签名,在加入私钥d和n后进行签名,生成:
S≡H(M)dmodm
(3) 签名验证算法
为验证签名S,在计算出M的哈希值H(M)后,加入公钥e和m,验证方程:
H(M) ≡Semodm
是否正确。 如果正确则输出accept,否则输出reject。
2017 年,M.Thangaval 提出了ISRSAC 算法,ISRSAC 算法主要通过增加模n 值分解的复杂性对RSA 算法进行了安全改进。
文献[20]使用暴力攻击,对RSA 下的数字签名算法和IRSAC 下的数字签名算法进行了安全对比,对比结果如图1 所示。
图1 安全性对比
显然,ISRSAC 算法下的数字签名方案要比RSA 算法下的数字签名方案需要更多的攻击时间,因此安全性也较高。 并且随着消息长度的增加,安全性也有所提高。 所以ISRSAC 算法下签名方案的安全性明显优于RSA 算法下的签名方案的安全性。
环签名作为一种匿名签名技术自2001 年被提出以来,很多密码界人士开始对其进行研究。
环签名主要包含四个算法[23]:系统初始化算法、密钥生成算法、环签名生成算法和环签名验证算法。 具体算法流程如下:
(1) 系统初始化算法:
即params←Setup(λ),这是一个概率多项式时间(PPT)算法,在输入一个安全参数λ以后,输出一组安全参数params。
(2) 密钥生成算法:
即(pk,sk) ←KeyGen(λ,params), 一个PPT 算法,输入安全参数λ和安全参数组params后,输出公钥pk和私钥sk。
(3) 环签名生成算法:
即σ←RSign(M,n,S,skπ), 一个PPT 算法,输入待签名信息M、n个环成员公钥所构成的集合S= {pk1,pk2,...,pkn} 和签名者的私钥skπ后,输出签名值σ。
(4) 环签名验证算法:
即accept/reject←RVerify(M,S,σ),输入已签名信息M、n个环成员公钥所构成的集合S={pk1,pk2,...,pkn} 和签名值σ, 如果σ是M的有效输出,则输出accept,否则输出reject。
自环签名算法被提出以来,环签名研究取得了很大的进步,近几年,除了涌现出很多安全高效的环签名方案之外,还出现了很多将环签名与其他特殊数字签名方案结合的新的环签名方案。
Glodwasser 和Micali 在1984 年提出了安全性定义。 这一安全性定义一般通过一种挑战者C 和攻击者A 之间的虚拟游戏形象化定义。 在这一安全模型定义下,规定攻击者A 可以访问以下谕言机:
(1) 加入(Setup)谕言机。 挑战者C 通过执行给定的算法,生成相应的密钥对,并将其中新生成的公钥pk发送给攻击者A,对应私钥sk自己进行保存。
(2) 查询(Inquire)谕言机。 攻击者A 可以通过公钥环S= {pk1,pk2,…,pkn} 和消息M 进行相关数字签名查询,每当挑战者收到(S,M)后,都会生成一个有效的数字签名值σ,并将数字签名值σ发送给攻击者C。
(3) 输出(Output)谕言机。 当攻击者A 认为查询阶段结束以后,输出对应的(M*,σ*)。
一般一个环签名方案为了保证安全,需要满足正确性、不可伪造性、无条件匿名性和安全性,本节给出以上性质的相关定义。
定义1 正确性
一个环签名方案是正确的,即签名者在签名结束后,得到的签名值可以在签名验证阶段得以验证,都有RVerify(M,S,σ) →accept。
定义2 不可伪造性
一个环签名方案是不可伪造的,即攻击者在对任何环成员的私钥一无所知的情况下,即使能够通过一些渠道获得任意消息的签名情况,但其能够真正生成与签名者一样的合法环签名值,赢得下述游戏的概率是忽略不计的。
具体游戏步骤如下:
(1) 挑战者C 生成系统参数params, 并将其发送给攻击者A;
(2) 攻击者A 可自主查询以上谕言机;
(3) 攻击者A 输出签名消息M*、公钥环S*={pk1,pk2,…,pkn} 以及伪造的签名σ*,其中σ*不是通过查询(Inquire)谕言机查询得到的;
(4) 若RVerify(M*,S*,σ*) 输出accept,则游戏胜利,否则游戏失败。
定义3 无条件匿名性
一个环签名方案是无条件匿名的,即在任意的多项式时间内,攻击者A 无法确定真正签名者的身份,赢得下述游戏的概率低于1/n, 其中n代表整个群体的个体数。
具体的游戏步骤如下:
(1) 挑战者C 生成系统参数params, 并将其发送给攻击者A;
(2) 攻击者A 可以自主查询以上谕言机;
(3) 攻击者A 将签名消息M*以及公钥环S*= {pk1,pk2,…,pkn} 发送给挑战者C;
(4) 挑战者C 随机选取一个π(1 ≤π≤n),计算σπ←RSign(M*,n,S*,skπ),并将σπ发送给攻击者A;
(5) 攻击者A 猜测对应π′ 的值,若π′ ≡π,游戏胜利,否则游戏失败。
定义4 安全性
一个环签名方案如果满足无条件匿名性、不可伪造性和正确性,就称该签名方案是安全的,环中的每一位成员成为真正签名者的条件是一样的,它们之间的地位是平等的。
正是由于环签名以上几个性质,让环签名在电子邮件、数据交换、电子交易和电子货币等领域[10],以及那些需要匿名举报等功能的应用中得到了广泛应用。 此外,环签名在环中可以在不经过用户同意的情况下就任意选择一个用户进行签名,这在很大程度上提高了环签名的效率性以及隐私安全性。
随着技术的进步,传统的数字签名方案已经不能满足现在各领域对安全性的要求及各类差异化需求。 环签名作为一种特殊的数字签名,因其可以很好的隐藏签名者身份信息,从而得到了广泛应用。 本节在基于ISRSAC 的数字签名算法[20]的基础上,设计了一种基于ISRSAC 的环签名方案,这一方案主要包含三个算法:密钥生成算法、环签名生成算法、环签名验证算法。
(1) 密钥生成算法
1) 随机选取两个大素数p和q,其中p≠q,p >3,q >3;
2) 计算
n=p·q·(p- 1)·(q- 1),m=p·q;
4) 随机选取一个数e, 同时满足1<e <α(n) 和gcd(e,α(n))= 1;
5) 计算d,满足d·e≡1(modα(n))。
通过上述计算,确定出公钥(e,m) 和私钥(d,n)。
(2) 环签名生成算法
签名者通过随机n- 1 个用户的公钥,以及自己的公钥形成一个公钥环L= {P1,P2,P3,...,Pn},其中Pi= (ei,mi),i= 1,2,...n, 签名者为其中第π(1 ≤π≤n) 个用户,再利用自身私钥(dπ,nπ) 和公钥环L 通过算法1 生成对消息M的环签名。
算法1 ISRSAC 环签名生成算法(1) 计算Sπ = H1(M)dπ· ∏n i=1,i≠πH1(M) -ei2(modn);(2) 计算Si = H1(M)eπei(mod n),其中i = 1,2,…,π-1,π+ 1,…,n;(3) 输出关于M 的环签名(S1,S2,...,Sn)。
在算法1 中,H1(M):{0,1}*→Zm,Si经过H1(·) 运算构成环状结构。
(3) 环签名验证算法
验证者在收到消息M′以及环签名值(S1′,S2′,...,Sn′) 后进行以下步骤:
1) 计算出H1(M′) 的值;
3) 判断是否
若满足则输出“accept”, 否则输出“reject”。 有关这一方案的正确性证明将在4.1节安全性分析中给出。
接下来依次对环签名方案的正确性、不可伪造性和匿名性进行证明。
定理1 基于ISRSAC 的环签名方案满足正确性。
安全性得以证明。 这一方案的正确性说明了这一方案不会产生二义性,保证了方案可以输出正确结果。
定理2 基于ISRSAC 的环签名方案具有不可伪造性。
证明:当基于ISRSAC 的环签名的不可伪造性是通过挑战者C 与攻击者A 之间的虚拟游戏来定义时,游戏的具体步骤如下:
(1) 挑战者C 生成系统参数params,并将其发送给攻击者A;
(2) 攻击者A 可自主查询以上谕言机;
(3) 攻击者A 输出签名消息M*、公钥环L*= {P1,P2,P3,...,Pn} 以及伪造的签名σ*,其中σ*不是通过查询(Inquire)谕言机查询得到的;
(4) 若RVerify(M*,L*,σ*) 输出accept,则游戏胜利,否则游戏失败。
在游戏过程中,攻击者A 生成的签名值σ*是消息M*的有效签名值;公钥环L*={P1,P2,P3,...,Pn} 中的公钥Pi都是通过加入谕言机得出的;攻击者A 没有得到任何环成员的私钥;攻击者A 生成的签名值σ*不是通过挑战者C 给出的四个条件。 在上述基于ISRSAC 的环签名方案中,环签名值(S1,S2,...,Sn) 中Sπ是由
生成的,很明显在Sπ的生成中,涉及到了签名者的私钥dπ。 假设攻击者A 成功伪造了签名环,那么攻击者A 需要知道环成员的私钥,而攻击者破解环成员私钥是基于大整数分解的困难问题的,所以说攻击者成功伪造签名σ*, 使得RVerify(M*,L*,σ*) 输出为accept的概率可以忽略不计,不可伪造性得以确认。
正是由于环签名方案的不可伪造性才让环中其他成员不能伪造真实签名者的签名,攻击者即使在获得某个有效环签名的基础上也不能以不可忽略的优势成功伪造一个新消息的合法签名。
定理3 基于ISRSAC 的环签名方案满足无条件匿名性。
证明:当基于ISRSAC 的环签名的匿名性是通过挑战者C 与攻击者A 之间的虚拟游戏来定义时,具体的游戏步骤如下:
(1) 挑战者C 生成系统参数params,并将其发送给攻击者A;
(2) 攻击者A 可以自主查询以上谕言机;
(3) 攻击者A 将签名消息M*以及公钥环L*= {P1,P2,P3,...,Pn} 发送给挑战者C;
(4) 挑战者C 随机选取一个π(1 ≤π≤n),计算σπ←RSign(M*,n,L*,skπ),并将σπ发送给攻击者A;
(5) 攻击者A 猜测对应π′ 的值,若π′ ≡π,游戏胜利,否则游戏失败。
也正是基于这一方案的匿名性,使得验证者只能验证签名为群体中某个成员所签,但并不能知道为哪个成员,签名者的信息被完美的隐藏在了环中,即便验证者出现了问题,真正的签名者也不会暴露,达到了签名者匿名的作用。
定理4 基于ISRSAC 的环签名方案满足安全性。
证明:通过定理1、定理2 和定理3 可以说明基于ISRSAC 的环签名方案满足正确性、不可伪造性和无条件匿名性,故基于ISRSAC 的环签名方案满足安全性。
自ISRSAC 算法在2017 年被提出以来,基于ISRSAC 算法的相关研究也开始相继出现,杨滕在2021 年提出了基于ISRSAC 的代理数字签名方案、基于ISRSAC 的有序多重数字签名方案和基于ISRSAC 的广播多重数字签名方案,接下来将本文提出的基于ISRSAC 的环签名方案分别与这三种数字签名进行对比分析。
(1) 基于ISRSAC 的代理数字签名方案
基于ISRSAC 的代理数字签名方案主要是原始签名者A 使用自己的私钥(dA,nA) 和代理签名者B 的公私钥对,对消息M 进行处理以后生成授权签名SA,然后原始签名者A 将消息M以及授权签名SA一起传输给代理签名者B,在代理签名者B 使用公钥验证其真实性以后,对授权签名SA进行进一步处理生成代理签名SB,最终代理签名者B 将生成的代理签名SB和M一起发送给接收者的一种签名算法。
这种签名方案在对代理签名进行验证时,主要涉及到了原始签名者和代理签名者的公钥。与基于ISRSAC 的环签名方案相比,这一方案必须建立在原始签名者充分信任代理签名者的前提下才可以进行,并且原始签名者的身份信息是公开的,这也决定了代理数字签名方案主要功能是为了同时满足原始签名者、代理签名者和接收方三方之间的一种安全便利需求性,而非隐藏原始签名者的身份信息。
(2) 基于ISRSAC 的有序多重数字签名方案
在这一方案中,需要反复进行“签名认证签名”的循环,即在签名生成的过程中需要进行n次的签名和验证。 不同于传统的数字签名方案,该方案中的用户必须按照某一规定的签名顺序进行签名,不能出现用户乱序签名或者几个用户同时进行签名的情况,所以这一方案很好地实现了多用户之间按序签名,缺一不可的功能特性。
(3) 基于ISRSAC 的广播多重数字签名方案
基于ISRSAC 的广播多重数字签名方案是多个签名者各自进行签名以后,将其部分签名值传给签名收集方,由签名收集方根据这些部分签名值生成多重签名消息,然后发送给验证者进行验证的一种签名方案。 在这一方案中,签名收集方不仅需要利用每个用户Ui按照规定算法生成广播值K,还需要各用户在接收到广播的K值后,根据某一规定算法生成中间值Di,并将中间值Di传给签名收集方,最后由签名收集方根据各用户传来的Di生成最后签名值中的部分值D。 相比与顺序多重数字签名方案,广播多重数字签名各用户之间的灵活度有所提升,更适用于一些常需要对用户签名进行修改的相关应用。
通过上述分析,下面将四种数字签名方案的对比分析通过表1 给出。
表1 基于ISRSAC 的数字签名方案对比分析
其中文献[20]中基于ISRSAC 的代理数字签名方案、有序多重数字签名方案和广播多重数字签名方案分别用方案1、方案2 和方案3 表示,n 表示签名者个数。
通过表1 可以看出,只有本方案可以隐藏签名者信息,且用户之间互不影响,这也展现出了本方案的优势。 此外在几种方案中,在同样基于ISRSAC 算法的情况下,环签名方案的主要功能是在环成员处于平等地位的基础上实现对真实签名者的信息隐藏保护;代理数字签名方案主要功能是满足原始签名者、代理签名者和接收方三方之间的一种安全便利需求;有序多重数字签名方案的主要功能是在保证所有签名用户缺一不可的情况下实现多用户之间的按序签名;广播多重数字签名方案的主要功能是在各签名用户各自生成部分信息后,实现对同一信息的共同签名。
在本节中,主要将本文的环签名方案分别与文献[11]、文献[24]、文献[25]的环签名方案进行比较分析,如表2 所示。
表2 环签名方案对比分析
通过表2 可看出,本方案在密钥生成算法中引入的随机数个数为4n,范青和韩宝杰的环签名方案中引入随机数个数为n, 王晓兰的环签名方案中引入随机数个数为2n。 显然,本方案引入的随机数个数大于范青、韩宝杰和王晓兰提出的环签名方案中引入的随机数个数,除此之外基于ISRSAC 的环签名方案还引入了安全函数α(n),所以在破解难度上基于ISRSAC的环签名方案远比其他三个环签名方案的难度要高,这也进一步展现出了本方案所特有的优势。
本节从计算量角度出发,分别给出上节提到的方案4、方案5 和方案6 以及本方案的环成员数量与计算量之间的关系,如表3 所示,其中n表示环成员数量,Tpm、Tpa分别表示循环群G上一次点乘、点加运算所消耗的时间,Th表示一次哈希运算所消耗的时间,Tzi表示Zq上一次逆运算所消耗的时间,Tmul、Tadd、Tinv分别表示Zn* 上的一次模乘、模加、模除运算所消耗的时间,Tzm、Tza分别表示Zn* 上的一次点乘、点加运算所消耗的时间,ZFm、ZFa分别表示多变量方程组F上一次点乘、点加运算所消耗的时间。
表3 不同环签名方案的计算量
通过表3 可以看出,本方案的签名生成时间为(n+1)Th+nTmu l,签名验证时间为Th+(n-1)Tzm;方案4 的签名生成时间为(2n- 1)Tpm+(n- 1)Tpa+nTh+Tzi+ 2Tmul+ 2Tadd,签名验证时间为2nTpm+nTpa+nTh;方案5 的签名生成时间为(n+ 1)TFa+ (n+ 1)Tza+Th+ 3Tzm,签名验证时间为(n- 1)Tza+Th;方案6 的签名生成时间为2TFm+Tza+nTh,签名验证时间为nTh。
本文在基于ISRSAC 算法的基础上构造了一个环签名方案。 通过分析表明,所提出的方案满足正确性、匿名性、不可伪造性等安全性要求。此外,将本方案与文献[20]的数字签名方案,以及文献[11]、文献[24]和文献[25]的环签名方案分别进行了对比分析,并给出环签名成员数量与计算量的关系,进一步展现出了本方案同时提高了攻击者破解难度和保护签名者身份信息的特性,也说明了本方案在那些对用户信息匿名要求较高的领域可以有很好的应用市场和发展前景。