CN110034936B - 一种可刺穿的数字签名方法 - Google Patents

一种可刺穿的数字签名方法 Download PDF

Info

Publication number
CN110034936B
CN110034936B CN201910279881.8A CN201910279881A CN110034936B CN 110034936 B CN110034936 B CN 110034936B CN 201910279881 A CN201910279881 A CN 201910279881A CN 110034936 B CN110034936 B CN 110034936B
Authority
CN
China
Prior art keywords
algorithm
signature
update
message
key
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201910279881.8A
Other languages
English (en)
Other versions
CN110034936A (zh
Inventor
徐静
李新宇
张振峰
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Institute of Software of CAS
Original Assignee
Institute of Software of CAS
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Institute of Software of CAS filed Critical Institute of Software of CAS
Priority to CN201910279881.8A priority Critical patent/CN110034936B/zh
Publication of CN110034936A publication Critical patent/CN110034936A/zh
Application granted granted Critical
Publication of CN110034936B publication Critical patent/CN110034936B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0816Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
    • H04L9/0819Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s)
    • H04L9/0825Key transport or distribution, i.e. key establishment techniques where one party creates or otherwise obtains a secret value, and securely transfers it to the other(s) using asymmetric-key encryption or public key infrastructure [PKI], e.g. key signature or public key certificates
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/08Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
    • H04L9/0891Revocation or update of secret information, e.g. encryption key update or rekeying
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
    • H04L9/3247Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Storage Device Security (AREA)

Abstract

本发明提供一种可刺穿的数字签名方法,该方法使用布隆过滤器完成刺穿操作进而实现密钥更新,使用SM9算法实现签名和验证功能。支持对消息任意预设定位置字符串的刺穿,更新后的密钥无法对任意包含刺穿字符串的消息做签名。密钥更新操作仅需常数代价,且能够保持底层SM9算法的签名和验证效率,整体效率较高。所有操作均可在实际中部署,实用性较强。本方法可以应用到基于权益证明的区块链协议中,以抵抗密钥泄露带来的长距离攻击。

Description

一种可刺穿的数字签名方法
技术领域
本发明属于计算机技术与信息安全技术领域,涉及一种利用布隆过滤器和基于身份的签名构造的可刺穿签名方法。
背景技术
数字签名是一项重要的认证技术,签名者使用私钥对消息做签名,验证者使用公钥对签名做有效性验证。数字签名具有不可抵赖性质,即攻击者无法冒充私钥拥有者进行签名。数字签名目前广泛地应用于各类密码协议中,常见的数字签名标准如ECDSA等。
长期密钥泄露是目前认证协议安全性分析中经常考虑的一种攻击场景,这种考虑具有现实意义,即敌手可能在现阶段无法获取密钥,但经过一段时间敌手的攻击能力增强之后,这种攻击便成为可能。长期密钥即签名私钥泄漏后,敌手可以冒充签名者,传统签名方案将完全被攻破。在基于权益证明的区块链协议中,密钥泄露(通过敌手的贿赂等手段)带来的长距离攻击可以允许敌手篡改区块链历史,从而造成双花费攻击,是一种严重的安全威胁。
可刺穿签名考虑长期密钥泄漏对已有签名的安全性影响,提供对签名消息的刺穿功能,保证敌手即便获取私钥仍然无法伪造对已签名消息的签名。简单地说,刺穿功能对应密钥更新操作,以刺穿消息和当前密钥作为输入,输出的更新密钥将无法对包含刺穿消息的内容做签名。方案构造中,刺穿消息可以是签名消息的整体也可以是签名消息的任意指定字段。
可刺穿签名可以用于基于权益证明的区块链协议中抵抗密钥泄露带来的长距离攻击,即区块发布者在某一位置发布区块后,对该位置信息做刺穿操作,更新后的密钥无法在该位置做新的签名,使得敌手无法篡改区块链历史。除此之外,可刺穿签名还可以用于异步通信中,比如在线交易等。这类场景中,发送者向接收者(非交互地)发送签名的交易信息,但由于网络不同步以及接收者可能未在线,密钥泄露会造成发送者的签名受到篡改,交易的完整性得不到保证。刺穿签名可以通过在交易ID处做刺穿,使得敌手无法篡改对应ID的交易内容,从而实现对完整性的保证。随着异步网络的发展以及安全性需求的不断升级,刺穿签名将得到更加广泛的应用。
发明内容
本发明的目的在于提供一种可刺穿的数字签名方法,本发明基于布隆过滤器和国产密码标准SM9(已被ISO/IEC 14888-3收录成为国际标准),可应用到基于权益证明的区块链协议中,可以抵抗密钥泄露带来的长距离攻击,且运行效率高。
为实现上述目的,本发明采用如下技术方案:
一种可刺穿的数字签名方法,包括以下步骤:
步骤1:密钥初始化,利用SM9算法为每个位置身份i∈[l]分发对应的私钥ski
步骤2:签名算法,选取位置身份
Figure BDA0002020134210000021
处的私钥对消息m做签名,输出签名σ;
步骤3:刺穿算法,对字符串str做刺穿,完成对当前密钥的更新;
步骤4:签名验证算法,利用公钥vk,验证消息m的签名σ。
优选地,步骤1具体包括:
1)首先产生双线性映射的参数(p,e,ψ,G1,G2,GT,P1,P2),运行({Hj}j∈[k],T)←Gen(l,k)生成布隆过滤器BF=(BF.Gen,BF.Update,BF.Check)实例,选取哈希函数
Figure BDA0002020134210000022
Figure BDA0002020134210000023
2)随机地选择
Figure BDA0002020134210000024
作为主密钥,并为每一个位置身份i∈[l]分发私钥
Figure BDA0002020134210000025
系统公钥为vk=(Ppub,g,{Hj}j∈[k]),其中Ppub=sP2,g=e(P1,Ppub)。
优选地,步骤2具体包括:
1)系统预设定消息的刺穿信息,包括位置信息和长度信息。
2)检测BF.Check({Hj}j∈[k],T,str)是否等于1,其中字符串str为消息m的刺穿字段,如果等于1,则签名失败,输出⊥。否则,挑选一个随机的
Figure BDA0002020134210000026
满足
Figure BDA0002020134210000027
Figure BDA0002020134210000028
3)随机地选取
Figure BDA0002020134210000029
计算r=gx,h=h2(m,r),
Figure BDA00020201342100000210
4)输出对消息m的签名
Figure BDA00020201342100000211
优选地,步骤3具体包括:
1)计算T′=Update({Hj}j∈[k],T,str),更新布隆过滤器状态位。
2)对于任意的i∈[l],更新私钥为
Figure BDA00020201342100000212
优选地,步骤4具体包括:
验证
Figure BDA0002020134210000031
是否成立,其中字符串str为消息m的刺穿字段且Sstr={Hj(str):j∈[k]},如果成立,则签名有效,输出“1”,否则输出“0”。
一种可刺穿的数字签名系统,包括存储器和处理器,该存储器存储计算机程序,该程序被配置为由该处理器执行,该程序包括用于执行上述方法中各步骤的指令。
本发明基于布隆过滤器与SM9签名算法,提供对签名消息的刺穿功能,保证敌手即便获取私钥仍然无法伪造对已刺穿消息的签名,具体地包括以下两个重要的方面:
一、可刺穿签名方案的构造
本发明的可刺穿签名方案由系统建立Setup、刺穿Puncture、签名Sign和验证Verify四个算法组成,安全性基于τ-SDH困难假设。
该刺穿签名方案具备以下性质:1)可以实现对消息任意字段的刺穿功能;2)密钥更新过程中只需更新私钥,无需更新公钥,更符合实际应用场景;3)方案实际可用,所有操作均可实际部署;4)签名/验证算法能够保持底层基本签名/验证算法的效率;5)密钥更新操作高效,仅需常数代价。
二、将本发明应用到基于权益证明的区块链协议中
可刺穿签名可以用来在基于权益证明的区块链协议中发布区块,通过对区块消息中的时间字段做刺穿,能够抵抗密钥泄露带来的长距离攻击。
具体实施方式
为使本发明的上述特征和优点能更明显易懂,下面通过具体实施例,对本发明的技术方案做进一步说明。
一、符号说明
λ代表安全参数,[n]表示整数集合{1,...,n},
Figure BDA0002020134210000032
(p为素数)表示集合{1,...,p-1},∩和∪分别代表集合求交集、求并集运算符。对于任意的数组T∈{0,1}n,用T[i](i≤n)代表T的第i个元素。
二、布隆过滤器
布隆过滤器(Bloom Filter,BF)可以用来检索一个元素是否在一个集合S中,其中:S中的元素均属于集合U。简单来说,如果输入的元素s满足s∈S,则BF输出“1”,否则以较大的概率输出“0”。布隆过滤器由参数生成算法Gen、更新算法Update和检测算法Check组成:
·Gen(l,k):输入两个整数l和k,Gen算法首先选取k个独立的哈希函数H1,...,Hk,其中Hj:U→[l](j∈[k])。定义H={Hj}j∈[k],T=0l(T是一个l比特的数组,所有比特初始为0)。输出(H,T)。
·Update(H,T,u):输入H={Hi}i∈[k],T∈{0,1}l和u∈U,Update算法首先设置更新后的状态T'为T'=T,之后对于任意的i∈[k]令T'[Hi(u)]=1,并返回T'。
·Check(H,T,u):输入H={Hi}i∈[k],T∈{0,1}l和u∈U,Check算法返回b=∩i∈[k]T[Hi(u)]。
对于任意的元素集合S={s1,…,sn}∈Un,首先运行(H,T0)←Gen(l,k),然后对于i∈[n]运行Ti=Update(H,Ti-1,si)。BF具有如下性质:(1)对于任意s∈S有Pr[Check(H,Tn,s)=1]=1;(2)对于任意
Figure BDA0002020134210000045
有Pr[Check(H,Tn,s)=1]≈(1-ekn/l)k。也就是说,对于集合中包含的元素,BL总输出1,否则以一定的容错概率pr=(1-ekn/l)k输出1。
三、双线性映射
G1,G2和GT是三个阶均为素数p的群,P1和P2分别是G1和G2的生成元,存在G2到G1的同态映射ψ:G2→G1使得ψ(P2)=P1。双线性映射e:G1×G2→GT满足如下条件:
·双线性性:对任意的(P,Q)∈G1×G2
Figure BDA0002020134210000041
有e(aP,bQ)=e(P,Q)ab
·非退化性:e(P1,P2)≠1。
·可计算性:对任意的(P,Q)∈G1×G2,存在有效的算法计算e(P,Q)。
四、可刺穿签名方案
在本发明中,可刺穿签名方案基于BF和国产密码标准SM9(ISO/IEC 14888-3国际标准)。方案描述过程中,假设消息的刺穿位置是系统预先设定的。
令参数(p,e,ψ,G1,G2,GT,P1,P2)选取满足双线性映射定义,BF=(BF.Gen,BF.Update,BF.Check)为布隆过滤器。
Figure BDA0002020134210000042
Figure BDA0002020134210000043
为哈希函数。可刺穿签名方案由系统建立算法Setup、刺穿算法Puncture、签名算法Sign和验证算法Verify组成:
·Setup(1λ,l,k):首先运行({Hj}j∈[k],T)←Gen(l,k)生成BF实例,然后随机地选取
Figure BDA0002020134210000044
并输出私钥sk和公钥vk:
sk=(T,{ski}i∈[l]),vk=(Ppub,g,{Hj}j∈[k]),
其中
Figure BDA0002020134210000051
Ppub=sP2,g=e(P1,Ppub)。
·Puncture(sk,str):输入私钥sk=(T,{ski}i∈[l])和字符串str,其中
Figure BDA0002020134210000052
或者⊥,首先计算T′=Update({Hj}j∈[k],T,str),然后对于任意的i∈[l]定义:
Figure BDA0002020134210000053
其中T′[i]代表数组T′的第i比特。最终,算法返回sk′=(T′,{ski′}i∈[l])。
·Sign(sk,m):输入私钥sk=(T,{ski}i∈[l])和消息m,其中m的刺穿字段为字符串str。算法首先检查是否BF.Check({Hj}j∈[k],T,str)=1,如果是则输出⊥。否则,注意到BF.Check({Hj}j∈[k],T,str)=0意味着至少存在一个ij∈{i1,...,ik}满足
Figure BDA0002020134210000054
其中ij=Hj(str)(j∈[k]),因此挑选一个随机的
Figure BDA0002020134210000055
对应位置的私钥为
Figure BDA0002020134210000056
算法随机地选取
Figure BDA0002020134210000057
并计算r=gx,然后计算h=h2(m,r),
Figure BDA0002020134210000058
最终,算法输出对消息m的签名为
Figure BDA0002020134210000059
·Verify(vk,m,σ):输入公钥vk=(Ppub,g,{Hj}j∈[k]),消息m和签名
Figure BDA00020201342100000510
其中m的刺穿字段为字符串str。算法验证以下条件是否成立:
Figure BDA00020201342100000511
其中Sstr={Hj(str):j∈[k]},如果“是”,则算法输出“1”(接受),否则输出“0”(拒绝)。
五、本发明在基于权益证明的区块链协议中的应用
在基于权益证明的区块链协议中,区块发布者在当前时间段slot处发布区块时,利用可刺穿签名对消息做签名,之后进入下一个时间段。待签名的消息包括当前时间段slot、交易信息和当前区块状态等信息,签名结束后对消息的slot部分执行刺穿操作得到更新后的密钥。根据可刺穿签名的性质,更新后的密钥将无法再对相同的slot做签名,从而保证了敌手无法更改区块链的历史。
以上实施例仅用以说明本发明的技术方案而非对其进行限制,本领域的普通技术人员可以对本发明的技术方案进行修改或者等同替换,本发明的保护范围应以权利要求所述为准。

Claims (10)

1.一种可刺穿的数字签名方法,其特征在于,包括以下步骤:
利用SM9算法产生双线性映射的参数,生成布隆过滤器实例,选取哈希函数,并利用主密钥为每个位置身份分发私钥;
根据消息m的预设定刺穿字段str,检查对应位置的私钥是否存在,检查对应位置的私钥是否存在的方法为:检测BF.Check({Hj}j∈[k],T,str)是否等于0,如果等于0,则存在私钥,私钥的对应位置为
Figure FDA0002887985410000011
满足
Figure FDA0002887985410000017
其中,BF.Check为布隆过滤器的检测算法,Hj为哈希函数,k为整数,T为数组;
如果存在,则随机选取一位置身份
Figure FDA0002887985410000012
处的私钥,对消息m进行签名;
对刺穿字段str做刺穿,完成对当前私钥的更新;
利用公钥验证消息m的签名。
2.如权利要求1所述的方法,其特征在于,所述双线性映射的参数为(p,e,ψ,G1,G2,GT,P1,P2),其中,G1,G2和GT是三个阶均为素数p的群,P1和P2分别是G1和G2的生成元,存在G2到G1的同态映射ψ:G2→G1使得ψ(P2)=P1,双线性映射e:G1×G2→GT;该双线性映射e:G1×G2→GT满足如下条件:
双线性性:对任意的(P,Q)∈G1×G2
Figure FDA0002887985410000013
Figure FDA0002887985410000014
表示集合{1,...,p-1},有e(aP,bQ)=e(P,Q)ab
非退化性:e(P1,P2)≠1;
可计算性:对任意的(P,Q)∈G1×G2,存在有效的算法计算e(P,Q)。
3.如权利要求2所述的方法,其特征在于,运行({Hj}j∈[k],T)←Gen(l,k)生成布隆过滤器BF=(BF.Gen,BF.Update,BF.Check)实例,选取哈希函数
Figure FDA0002887985410000015
Figure FDA0002887985410000016
其中l和k为整数,Hj为哈希函数,T为一个l比特的数组,N为自然数集合,Gen为参数生成算法,Update为更新算法,Check为检测算法。
4.如权利要求3所述的方法,其特征在于,所述布隆过滤器由参数生成算法Gen、更新算法Update和检测算法Check组成;其中,
Gen(l,k):输入两个整数l和k,Gen算法首先选取k个独立的哈希函数H1,...,Hk,其中Hj:U→[l](j∈[k]),U为元素集合;定义H={Hj}j∈[k],T=0l,T是一个l比特的数组,所有比特初始为0;输出(H,T);
Update(H,T,u):输入H={Hi}i∈[k],T∈{0,1}l和u∈U,Update算法首先设置更新后的状态T'为T'=T,之后对于任意的i∈[k]令T'[Hi(u)]=1,并返回T';
Check(H,T,u):输入H={Hi}i∈[k],T∈{0,1}l和u∈U,Check算法返回b=∩i∈[k]T[Hi(u)]。
5.如权利要求3所述的方法,其特征在于,随机地选择
Figure FDA0002887985410000021
作为主密钥,根据哈希函数
Figure FDA0002887985410000022
为每一个位置身份i∈[l]分发私钥
Figure FDA0002887985410000023
6.如权利要求5所述的方法,其特征在于,所述消息m的预设定刺穿信息包括位置信息和长度信息;
检测BF.Check({Hj}j∈[k],T,str)是否等于1,其中字符串str为消息m的刺穿字段,如果等于1,则签名失败,范围为⊥。
7.如权利要求6所述的方法,其特征在于,所述对消息m进行签名的步骤具体如下:
随机地选取
Figure FDA0002887985410000024
计算r=gx,h=h2(m,r),
Figure FDA0002887985410000025
其中g=e(P1,Ppub),Ppub=sP2
输出对消息m的签名
Figure FDA0002887985410000026
8.如权利要求7所述的方法,其特征在于,所述公钥vk=(Ppub,g,{Hj}j∈[k]),其中Ppub=sP2,g=e(P1,Ppub);
利用公钥验证消息m的签名方法为:验证
Figure FDA0002887985410000027
,是否成立,其中Sstr={Hj(str):j∈[k]},如果成立,则签名有效,输出“1”,否则输出“0”。
9.如权利要求6所述的方法,其特征在于,所述当前私钥的更新方法如下:
计算T′=Update({Hj}j∈[k],T,str),更新布隆过滤器状态位;
对于任意的i∈[l],更新私钥为
Figure FDA0002887985410000028
10.一种可刺穿的数字签名系统,其特征在于,包括存储器和处理器,该存储器存储计算机程序,该程序被配置为由该处理器执行,该程序包括用于执行权利要求1至9中任一所述方法中各步骤的指令。
CN201910279881.8A 2019-04-08 2019-04-08 一种可刺穿的数字签名方法 Active CN110034936B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910279881.8A CN110034936B (zh) 2019-04-08 2019-04-08 一种可刺穿的数字签名方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910279881.8A CN110034936B (zh) 2019-04-08 2019-04-08 一种可刺穿的数字签名方法

Publications (2)

Publication Number Publication Date
CN110034936A CN110034936A (zh) 2019-07-19
CN110034936B true CN110034936B (zh) 2021-04-30

Family

ID=67237671

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910279881.8A Active CN110034936B (zh) 2019-04-08 2019-04-08 一种可刺穿的数字签名方法

Country Status (1)

Country Link
CN (1) CN110034936B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110837659B (zh) * 2019-09-26 2021-10-15 中国科学院软件研究所 带标签的私钥可更新数字签名方法及其在PoS区块链协议中的应用
CN111062721B (zh) * 2019-12-31 2023-12-12 南京金宁汇科技有限公司 一种应用于区块链的签名方法、系统及存储介质
CN112241526B (zh) * 2020-10-26 2024-03-19 北京华大信安科技有限公司 一种基于sm9数字签名的批量验证方法和系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104102714A (zh) * 2014-07-16 2014-10-15 上海交通大学 基于累加器和布隆过滤器的外包数据查询验证方法及系统

Also Published As

Publication number Publication date
CN110034936A (zh) 2019-07-19

Similar Documents

Publication Publication Date Title
US10944575B2 (en) Implicitly certified digital signatures
EP2533457B1 (en) Secure implicit certificate chaining
CN108809658A (zh) 一种基于sm2的身份基的数字签名方法与系统
EP2372948A1 (en) Method, device, and system for an identity-based forward-secure digital signature
CN1922816B (zh) 单向认证
CN102739401B (zh) 一种基于身份公钥密码体制的私钥安全管理方法
CN110034936B (zh) 一种可刺穿的数字签名方法
US20160352525A1 (en) Signature protocol
CN109687965A (zh) 一种保护网络中用户身份信息的实名认证方法
CN106487786B (zh) 一种基于生物特征的云数据完整性验证方法及系统
CN112532394B (zh) 一种区块链抗签名可追踪的无证书盲签名生成方法
CN113301022A (zh) 基于区块链和雾计算的物联网设备身份安全认证方法
CN106936584A (zh) 一种无证书公钥密码系统的构造方法
CN108768975A (zh) 支持密钥更新和第三方隐私保护的数据完整性验证方法
US20150006900A1 (en) Signature protocol
CN110661816B (zh) 一种基于区块链的跨域认证方法与电子设备
CN116566626A (zh) 环签名方法和设备
CN108667619B (zh) 一种sm9数字签名的白盒实现方法与装置
WO2016187689A1 (en) Signature protocol
CN114844643A (zh) 一种基于双线性映射获取适配器签名的方法和电子设备
KR20010017358A (ko) 공정한 은닉 서명 방법
CA2892318C (en) Signature protocol
CN114003654A (zh) 一种信任根签名中提高安全性的方法
CN116346327A (zh) 双向认证密钥协商方法及采用该方法的用电信息采集系统
CN117439761A (zh) 电子证明处理方法、装置、计算机设备和存储介质

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant