CN112906039B - 一种无证书分布式签名方法、装置、介质和电子设备 - Google Patents
一种无证书分布式签名方法、装置、介质和电子设备 Download PDFInfo
- Publication number
- CN112906039B CN112906039B CN202110327808.0A CN202110327808A CN112906039B CN 112906039 B CN112906039 B CN 112906039B CN 202110327808 A CN202110327808 A CN 202110327808A CN 112906039 B CN112906039 B CN 112906039B
- Authority
- CN
- China
- Prior art keywords
- signature
- private key
- parameter
- public key
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Software Systems (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Bioethics (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Databases & Information Systems (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本公开实施例公开了一种无证书分布式签名方法,终端设备向密钥生成中心发送签名私钥请求;密钥生成中心依据签名私钥请求中携带的用户身份信息和用户公钥信息,计算得到公钥生成参数和部分签名私钥。终端设备根据不同的签名类型与无证书分布式签名计算规则,利用与签名私钥请求对应的目标无证书分布式签名计算规则以及部分签名私钥、公钥生成参数,对输入的消息计算签名结果。本公开给出了一种通用的适用于椭圆曲线上的无证书签名技术,并在此基础上进行了分布式扩展,可实现在无证书情况下验证设备身份、生成签名验证公钥,验证签名,同时分布式签名扩展可保证签名私钥由多个用户掌握,提升了签名私钥的安全性和可用性。
Description
技术领域
本公开涉及信息安全技术领域,具体地,涉及一种无证书分布式签名方法、装置、计算机可读存储介质和电子设备。
背景技术
公钥基础设施(Public Key Infrastructure,PKI)是一种遵循标准的利用公钥加密技术为电子商务的开展提供一套安全基础平台的技术和规范。其中,密钥和证书管理是PKI系统运作的基础。无证书签名方案摒弃传统PKI机制中复杂的证书管理,可避免标识密码机制的私钥托管问题,在保证用户签名私钥的安全性的同时可提高应用效率。
但是目前的无证书签名方案,只能由单个用户实现对消息的签名。一旦单个用户的私钥泄露或者丢失,将会极大的影响签名的安全性。
可见,如何提升签名私钥的安全性,是本领域技术人员需要解决的问题。
发明内容
本公开实施例的目的是提供一种无证书分布式签名方法、装置、计算机可读存储介质和电子设备,可以提升签名的安全性。
为了实现上述目的,本公开提供一种无证书分布式签名方法,适用于终端设备,所述方法包括:
向密钥生成中心发送签名私钥请求;其中,所述签名私钥请求中携带有用户身份信息和用户公钥信息;
接收所述密钥生成中心反馈的公钥生成参数和部分签名私钥;其中,所述公钥生成参数和所述部分签名私钥由所述密钥生成中心依据用户身份信息和用户公钥信息计算得到;
从预先建立的签名类型与分布式签名计算规则的对应关系库中,调用与所述签名私钥请求所属的签名类型相匹配的目标分布式签名计算规则;
利用所述目标分布式签名计算规则以及所述部分签名私钥、所述公钥生成参数,对输入的消息设置签名结果。
可选地,当所述签名私钥请求所属的签名类型为两方无证书签名时,相应的,所述利用所述目标分布式签名计算规则以及所述部分签名私钥、所述公钥生成参数,对输入的消息设置签名结果包括:
利用第一随机数的私钥杂凑值以及椭圆曲线参数对输入的消息进行处理,得到第一私钥参数;
将所述第一私钥参数、所述消息、自身的第一身份信息以及第一公钥生成参数传输至与其关联的第二终端设备;以便于所述第二终端设备利用第二随机数的私钥杂凑值以及所述椭圆曲线参数对所述消息进行处理,得到第二私钥参数;按照预先设定的哈希取余规则,对所述第一私钥参数、所述消息、所述第一身份信息、所述第一公钥生成参数、所述第二私钥参数以及所述第二终端设备自身的第二身份信息以及第二公钥生成参数进行处理,以得到第二签名私钥;
接收所述第二终端设备传输的所述第二私钥参数、所述第二签名私钥、所述第二身份信息以及所述第二公钥生成参数;
按照所述哈希取余规则,对所述第一私钥参数、所述消息、所述第一身份信息、所述第一公钥生成参数、所述第二私钥参数以及所述第二终端设备自身的第二身份信息以及第二公钥生成参数进行处理,以得到第一签名私钥;
将所述第一私钥参数、所述第二私钥参数以及所述第一私钥签名以及所述第二私钥签名作为所述消息的签名结果。
可选地,当所述签名私钥请求所属的签名类型为多方联合无证书签名时,相应的,所述利用所述目标分布式签名计算规则以及所述部分签名私钥、所述公钥生成参数,对输入的消息设置签名结果包括:
利用随机数的私钥杂凑值以及椭圆曲线参数对输入的消息进行处理,得到私钥参数;
将所述私钥参数、自身的身份信息以及公钥生成参数向外公布;
按照哈希取余规则,对所述消息以及多方联合中各用户的私钥参数、身份信息以及公钥生成参数进行处理,以得到签名私钥;并向外公布所述签名私钥;
将所述多方联合中各用户的签名私钥的和值以及所述多方联合中各用户的私钥参数的和值作为所述消息的签名结果。
可选地,当所述签名私钥请求所属的签名类型为门限无证书签名时,相应的,所述利用所述目标分布式签名计算规则以及所述部分签名私钥、所述公钥生成参数,对输入的消息设置签名结果包括:
将自身的身份信息与其余各签名参与方的身份信息执行拉格朗日插值计算,以得到自身的拉格朗日系数;
按照预先设定的门限签名私钥协商规则,对自身的部分签名私钥以及各参与方的身份信息进行处理,以得到门限签名私钥和联合验证公钥;
利用随机数的私钥杂凑值以及椭圆曲线参数对输入的消息进行处理,得到私钥参数,并将所述私钥参数向外公布;
按照哈希取余规则,对所述消息以及自身的拉格朗日系数、门限签名私钥、联合验证公钥进行处理,以得到签名私钥;并向外公布所述签名私钥;
将各参与方的签名私钥的和值以及各参与方的私钥参数的和值作为所述消息的签名结果。
可选地,所述按照预先设定的门限签名私钥协商规则,对自身的部分签名私钥以及各参与方的身份信息进行处理,以得到门限签名私钥和联合验证公钥包括:
按照预先设定的随机多项式计算规则,对自身的部分签名私钥以及参与门限签名的参与方的身份信息进行处理,以得到各参与方对应的初始门限签名私钥;
将所述初始门限签名私钥发送至各参与方的终端设备;
将与自身的身份信息对应的所有初始门限签名私钥的累加和值作为自身的门限签名私钥;
依据自身的门限签名私钥以及椭圆曲线参数,计算出自身的公钥;依据自身的部分签名私钥以及初始签名私钥,计算得到组合私钥;将所述自身的公钥以及所述组合私钥进行公布;
将各参与方的组合私钥的累加和值作为联合验证公钥。
可选地,当所述签名私钥请求所属的签名类型为两方无证书SM2签名时,相应的,所述利用所述目标分布式签名计算规则以及所述部分签名私钥、所述公钥生成参数,对输入的消息设置签名结果包括:
根据选取的随机数以及自身的部分签名私钥,计算得到初始SM2签名参数;
将所述初始SM2签名参数传输至与其对应的联合终端设备,以便于所述联合终端设备根据所述初始SM2签名参数、自身的部分签名私钥以及输入的消息,计算得到SM2联合签名参数;
按照预设的SM2联合签名规则,对所述SM2联合签名参数进行处理,以得到所述消息的签名值。
可选地,还包括:
根据用户身份信息及其对应的公钥生成参数,计算得到验证参数;
判断所述验证参数是否符合验证规则;其中,所述验证规则为所述签名私钥请求所属的签名类型相匹配的验证规则;
若所述验证参数不符合所述验证规则,则展示签名不可靠的提示信息。
本公开提供一种签名装置,适用于终端设备,所述装置包括发送单元、接收单元、调用单元和设置单元;
所述发送单元,用于向密钥生成中心发送签名私钥请求;其中,所述签名私钥请求中携带有用户身份信息和用户公钥信息;
所述接收单元,用于接收所述密钥生成中心反馈的公钥生成参数和部分签名私钥;其中,所述公钥生成参数和所述部分签名私钥由所述密钥生成中心依据用户身份信息和用户公钥信息计算得到;
所述调用单元,用于从预先建立的签名类型与分布式签名计算规则的对应关系库中,调用与所述签名私钥请求所属的签名类型相匹配的目标分布式签名计算规则;
所述设置单元,用于利用所述目标分布式签名计算规则以及所述部分签名私钥、所述公钥生成参数,对输入的消息设置签名结果。
可选地,当所述签名私钥请求所属的签名类型为两方无证书签名时,相应的,所述设置单元包括计算子单元、传输子单元、接收子单元、处理子单元和作为子单元;
所述计算子单元,用于利用第一随机数的私钥杂凑值以及椭圆曲线参数对输入的消息进行处理,得到第一私钥参数;
所述传输子单元,用于将所述第一私钥参数、所述消息、自身的第一身份信息以及第一公钥生成参数传输至与其关联的第二终端设备;以便于所述第二终端设备利用第二随机数的私钥杂凑值以及所述椭圆曲线参数对所述消息进行处理,得到第二私钥参数;按照预先设定的哈希取余规则,对所述第一私钥参数、所述消息、所述第一身份信息、所述第一公钥生成参数、所述第二私钥参数以及所述第二终端设备自身的第二身份信息以及第二公钥生成参数进行处理,以得到第二签名私钥;
所述接收子单元,用于接收所述第二终端设备传输的所述第二私钥参数、所述第二签名私钥、所述第二身份信息以及所述第二公钥生成参数;
所述处理子单元,用于按照所述哈希取余规则,对所述第一私钥参数、所述消息、所述第一身份信息、所述第一公钥生成参数、所述第二私钥参数以及所述第二终端设备自身的第二身份信息以及第二公钥生成参数进行处理,以得到第一签名私钥;
所述作为子单元,用于将所述第一私钥参数、所述第二私钥参数以及所述第一私钥签名以及所述第二私钥签名作为所述消息的签名结果。
可选地,当所述签名私钥请求所属的签名类型为多方联合无证书签名时,相应的,所述设置包括计算子单元、公布子单元、处理子单元和作为子单元;
所述计算子单元,用于利用随机数的私钥杂凑值以及椭圆曲线参数对输入的消息进行处理,得到私钥参数;
所述公布子单元,用于将所述私钥参数、自身的身份信息以及公钥生成参数向外公布;
所述处理子单元,用于按照哈希取余规则,对所述消息以及多方联合中各用户的私钥参数、身份信息以及公钥生成参数进行处理,以得到签名私钥;所述公布子单元还用于向外公布所述签名私钥;
所述作为子单元,用于将所述多方联合中各用户的签名私钥的和值以及所述多方联合中各用户的私钥参数的和值作为所述消息的签名结果。
可选地,当所述签名私钥请求所属的签名类型为门限无证书签名时,相应的,所述设置单元包括计算子单元、第一处理子单元、第二处理子单元、公布子单元、第三处理子单元和作为子单元;
所述计算子单元,用于将自身的身份信息与其余各签名参与方的身份信息执行拉格朗日插值计算,以得到自身的拉格朗日系数;
所述第一处理子单元,用于按照预先设定的门限签名私钥协商规则,对自身的部分签名私钥以及各参与方的身份信息进行处理,以得到门限签名私钥和联合验证公钥;
所述第二处理子单元,用于利用随机数的私钥杂凑值以及椭圆曲线参数对输入的消息进行处理,得到私钥参数;
所述公布子单元,用于并将所述私钥参数向外公布;
所述第三处理子单元按照哈希取余规则,对所述消息以及自身的拉格朗日系数、门限签名私钥、联合验证公钥进行处理,以得到签名私钥;所述公布子单元还用于并向外公布所述签名私钥;
所述作为子单元,用于将各参与方的签名私钥的和值以及各参与方的私钥参数的和值作为所述消息的签名结果。
可选地,所述第一处理子单元用于按照预先设定的随机多项式计算规则,对自身的部分签名私钥以及参与门限签名的参与方的身份信息进行处理,以得到各参与方对应的初始门限签名私钥;将所述初始门限签名私钥发送至各参与方的终端设备;将与自身的身份信息对应的所有初始门限签名私钥的累加和值作为自身的门限签名私钥;依据自身的门限签名私钥以及椭圆曲线参数,计算出自身的公钥;依据自身的部分签名私钥以及初始签名私钥,计算得到组合私钥;将所述自身的公钥以及所述组合私钥进行公布;将各参与方的组合私钥的累加和值作为联合验证公钥。
可选地,当所述签名私钥请求所属的签名类型为两方无证书SM2签名时,相应的,所述设置包括第一计算子单元、第二计算子单元和处理子单元;
所述第一计算子单元,用于根据选取的随机数以及自身的部分签名私钥,计算得到初始SM2签名参数;
所述第二计算子单元,用于将所述初始SM2签名参数传输至与其对应的联合终端设备,以便于所述联合终端设备根据所述初始SM2签名参数、自身的部分签名私钥以及输入的消息,计算得到SM2联合签名参数;
所述处理子单元,用于按照预设的SM2联合签名规则,对所述SM2联合签名参数进行处理,以得到所述消息的签名值。
可选地,还包括计算单元、判断单元和提示单元;
所述计算单元,用于根据用户身份信息及其对应的公钥生成参数,计算得到验证参数;
所述判断单元,用于判断所述验证参数是否符合验证规则;其中,所述验证规则为所述签名私钥请求所属的签名类型相匹配的验证规则;
所述提示单元,用于若所述验证参数不符合所述验证规则,则展示签名不可靠的提示信息。
本公开提供一种签名方法,适用于密钥生成中心,所述方法包括:
获取签名私钥请求;其中,所述签名私钥请求中携带有用户身份信息和用户公钥信息;
利用预先设定的密钥计算规则,对所述用户身份信息以及所述用户公钥信息进行转换,以得到公钥生成参数和部分签名私钥;
将所述公钥生成参数和所述部分签名私钥传输至终端设备。
可选地,当所述签名私钥请求所属的签名类型为两方无证书签名、多方联合无证书签名或者门限无证书签名时,相应的,所述利用预先设定的密钥计算规则,对所述用户身份信息以及所述用户公钥信息进行转换,以得到公钥生成参数和部分签名私钥包括:
对所述用户身份信息以及设定的公开参数执行哈希运算,以得到第一公钥参数;
将所述第一公钥参数及其对应的用户公钥信息的和值作为公钥生成参数;
按照设定的哈希取余规则,对所述公钥生成参数进行处理,以得到部分签名私钥。
可选地,当所述签名私钥请求所属的签名类型为两方无证书SM2签名时,相应的,所述利用预先设定的密钥计算规则,对所述用户身份信息以及所述用户公钥信息进行转换,以得到公钥生成参数和部分签名私钥包括:
获取两个联合终端设备发送的身份信息、用户公钥信息以及联合公钥信息;
对所述两个联合终端设备的用户身份信息以及设定的公开参数执行哈希运算,以得到第一公钥参数;
将所述第一公钥参数与所述联合公钥信息的和值作为第一公钥生成参数;
按照设定的SM2公钥生成规则,对所述第一公钥生成参数进行处理,以得到第二公钥生成参数;
根据所述第一公钥生成参数、所述两个联合终端设备的用户身份信息以及选取的第一SM2随机数和第二SM2随机数,计算得到第一部分签名私钥和第二部分签名私钥。
本公开提供一种签名装置,适用于密钥生成中心,所述装置包括获取单元、转换单元和传输单元;
所述获取单元,用于获取签名私钥请求;其中,所述签名私钥请求中携带有用户身份信息和用户公钥信息;
所述转换单元,用于利用预先设定的密钥计算规则,对所述用户身份信息以及所述用户公钥信息进行转换,以得到公钥生成参数和部分签名私钥;
所述传输单元,用于将所述公钥生成参数和所述部分签名私钥传输至终端设备。
可选地,当所述签名私钥请求所属的签名类型为两方无证书签名、多方联合无证书签名或者门限无证书签名时,相应的,所述转换单元包括计算子单元、作为子单元和处理子单元;
所述计算子单元,用于对所述用户身份信息以及设定的公开参数执行哈希运算,以得到第一公钥参数;
所述作为子单元,用于将所述第一公钥参数及其对应的用户公钥信息的和值作为公钥生成参数;
所述处理子单元,用于按照设定的哈希取余规则,对所述公钥生成参数进行处理,以得到部分签名私钥。
可选地,当所述签名私钥请求所属的签名类型为两方无证书SM2签名时,相应的,所述转换单元包括获取子单元、第一计算子单元、作为子单元、第二计算子单元和第三计算子单元;
所述获取子单元,用于获取两个联合终端设备发送的身份信息、用户公钥信息以及联合公钥信息;
所述第一计算子单元,用于对所述两个联合终端设备的用户身份信息以及设定的公开参数执行哈希运算,以得到第一公钥参数;
所述作为子单元,用于将所述第一公钥参数与所述联合公钥信息的和值作为第一公钥生成参数;
所述第二计算子单元,用于按照设定的SM2公钥生成规则,对所述第一公钥生成参数进行处理,以得到第二公钥生成参数;
所述第三计算子单元,用于根据所述第一公钥生成参数、所述两个联合终端设备的用户身份信息以及选取的第一SM2随机数和第二SM2随机数,计算得到第一部分签名私钥和第二部分签名私钥。
本公开提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任一项所述方法的步骤。
本公开提供一种电子设备,包括:
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现上述任一项所述方法的步骤。
通过上述技术方案,终端设备向密钥生成中心发送签名私钥请求;其中,签名私钥请求中携带有用户身份信息和用户公钥信息;密钥生成中心依据用户身份信息和用户公钥信息计算得到公钥生成参数和部分签名私钥,减少了对随机数的使用,提升了密钥生成的效率。终端设备接收密钥生成中心反馈的公钥生成参数和部分签名私钥。终端设备获取到公钥生成参数和部分签名私钥之后,可以根据不同的签名类型与无证书分布式签名计算规则,利用与签名私钥请求对应的目标分布式签名计算规则以及部分签名私钥、公钥生成参数,对输入的消息设置签名结果。本公开给出了一种通用的适用于椭圆曲线上的无证书签名技术,并在此基础上进行了分布式扩展,可实现在无证书情况下验证设备身份、生成签名验证公钥,验证签名,同时分布式签名扩展可保证签名私钥由多个用户掌握,提升了签名私钥的安全性和可用性。
本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:
图1为本公开实施例提供的一种签名方法的信令图;
图2为本公开实施例提供的一种适用于终端设备的无证书签名的确定性密钥生成算法流程示意图;
图3为本公开实施例提供的一种以用户Q和用户P为例实现两方无证书EdDSA签名的流程示意图;
图4为本公开实施例提供的一种以用户Q、用户P和KGC交互实现无证书分布式SM2签名私钥生成的流程示意图;
图5为本公开实施例提供的一种以用户Q和用户P为例实现两方无证书SM2签名的流程示意图;
图6为本公开实施例提供的一种适用于终端设备的签名装置的结构示意图;
图7为本公开实施例提供的一种密钥生成中心为终端设备生成签名私钥和公钥信息的结构示意图;
图8为本公开实施例提供的一种电子设备的框图;
图9为本公开实施例提供的一种基于服务器侧的电子设备的框图。
具体实施方式
以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。
为了使本技术领域的人员更好地理解本公开方案,下面结合附图和具体实施方式对本公开作进一步的详细说明。
接下来,详细介绍本公开实施例所提供的一种签名方法。图1为本公开实施例提供的一种签名方法的信令图,该方法包括:
S101:终端设备向密钥生成中心发送签名私钥请求。
密钥生成中心(KGC)选取随机数k0作为私钥。按照标准RCF8032计算私钥杂凑值:H(k0)=(h0,h1,...,h{2b-1}),s0=2{2b-1}+∑{3≤i≤b-3}2ihi。生成主公钥:MPK=[s0]G,并将生成的主公钥公布。G表示椭圆曲线上的基点。
在实际应用中,KGC使用的杂凑运算生成的值也可使用两个随机比特串代替。
当终端设备需要对消息执行签名操作或者对签名进行验证时,可以向密钥生成中心发送签名私钥请求。其中,签名私钥请求中携带有用户身份信息和用户公钥信息。
每个用户有其对应的终端设备,用户通过终端设备生成自身的用户私钥信息和用户公钥信息的方式相同。以用户Q为例,IDQ表示用户Q的身份信息。在实际应用中,用户Q的终端设备可以生成随机数sk1作为用户私钥信息,生成用户公钥信息PK1=[sk1]G。在实际应用中,也可以按照标准RCF8032计算私钥杂凑值,从而生成用户公钥信息。
S102:密钥生成中心获取签名私钥请求,利用预先设定的密钥计算规则,对用户身份信息以及用户公钥信息进行转换,以得到公钥生成参数和部分签名私钥。
本公开实施例给出了一种通用的适用于椭圆曲线上的无证书签名技术,并在此基础上进行了分布式扩展,保证签名私钥由多个用户掌握,单个用户的签名私钥泄露或者丢失不影响签名的安全性和可用性。
通用的适用于椭圆曲线上的无证书签名技术的实现方法如图2所示,用户Q的终端设备可以选取随机数sk1作为用户私钥信息,生成用户公钥信息PK1=[sk1]G,并向密钥生成中心发送携带用户身份信息IDQ和用户公钥信息PK1的签名私钥请求。
密钥生成中心选取随机数k0作为私钥,计算主私钥s0和主公钥MPK。密钥生成中心可以在验证终端设备发送的用户身份信息和消息的正确性后,按照如下公式计算得到第一公钥参数R,
ZQ=H(ENTLKGC,IDQ,a,b,xG,yG,xMPK,yMPK),
r=H(hb,...,h2b-1,ZQ),
R=[r]G。
其中,H(·)表示哈希运算,ENTLKGC、a和b均表示公开参数,IDQ表示用户Q的用户身份信息,xG表示椭圆曲线上的基点G的横坐标,yG表示椭圆曲线上的基点G的纵坐标,xMPK表示主公钥MPK在椭圆曲线上的横坐标,yMPK表示主公钥MPK在椭圆曲线上的纵坐标,ZQ和r为计算第一公钥参数的中间参数。
密钥生成中心将第一公钥参数及其对应的用户公钥信息的和值作为公钥生成参数即W=R+PK1。
在本公开实施例中,可以基于EdDSA算法的实现原理设置哈希取余规则,按照如下公式计算得到部分签名私钥s,
e=H(W,ZQ),s=r+e·s0modq。
其中,s0表示密钥生成中心按照标准RCF8032计算得到的私钥杂凑值,q表示椭圆曲线上的一个点值。
用户Q的终端设备接收密钥生成中心传输的公钥生成参数W和部分签名私钥s,可以根据公式计算自己的签名私钥SK=s+sk1,
按照如下公式计算得到验证参数e,
ZQ=H(ENTLKGC,IDQ,a,b,xG,yG,xMPK,yMPK),
验证等式[s]·G=W-PK1+[e]MPK是否成立,若等式成立,则说明签名正确。
上述无证书密钥生成算法可适用于SM2签名算法、EdDSA签名算法、ECDSA签名算法,以及Schnorr签名算法。由于各种签名算法的实现原理的差异性,因此KGC在不同的算法机制下,生成公钥生成参数和签名私钥的方式存在差异。基于上述无证书密钥生成算法生成的公私钥对,可直接生成无证书的SM2签名算法、EdDSA签名算法、ECDSA签名算法,以及Schnorr签名算法,并且终端签名私钥和终端身份唯一对应。
在本公开实施例中,可以根据不同的签名算法,设置相对应的密钥计算规则。密钥计算规则包含了对用户身份信息以及用户公钥信息进行转换的具体实现方式。依据不同的签名算法进行无证书分布式签名的方式可以参见后续内容中以EdDSA算法实现分布式无证书签名为例和以SM2算法实现分布式无证书签名为例的介绍,在此不再赘述。
S103:密钥生成中心将公钥生成参数和部分签名私钥传输至终端设备。
公钥生成参数和部分签名私钥是用户的终端设备实现对消息的签名以及验证签名所需的参数信息。
S104:终端设备接收密钥生成中心反馈的公钥生成参数和部分签名私钥,从预先建立的签名类型与分布式签名计算规则的对应关系库中,调用与签名私钥请求所属的签名类型相匹配的目标分布式签名计算规则。
在实际应用中,可以在签名私钥请求中携带不同的标识符,用于区分不同类型的签名方式。在本公开实施例中,针对于不同类型的签名方式设置了其对应的分布式签名计算规则。
S105:终端设备利用目标分布式签名计算规则以及部分签名私钥、公钥生成参数,对输入的消息设置签名结果。
分布式签名计算规则中包含了依赖于公钥生成参数和部分签名私钥对消息设置签名的具体实现方式。分布式签名计算规则有多种形式,在本公开实施例中,可以将与签名私钥请求所属的签名类型相匹配的分布式签名计算规则称作目标分布式签名计算规则。
通过上述技术方案,终端设备向密钥生成中心发送签名私钥请求;其中,签名私钥请求中携带有用户身份信息和用户公钥信息;密钥生成中心依据用户身份信息和用户公钥信息计算得到公钥生成参数和部分签名私钥,减少了对随机数的使用,提升了密钥生成的效率。终端设备接收密钥生成中心反馈的公钥生成参数和部分签名私钥。终端设备获取到公钥生成参数和部分签名私钥之后,可以根据不同的签名类型与无证书分布式签名计算规则,利用与签名私钥请求对应的目标分布式签名计算规则以及部分签名私钥、公钥生成参数,对输入的消息设置签名结果。本公开给出了一种通用的适用于椭圆曲线上的无证书签名技术,并在此基础上进行了分布式扩展,可实现在无证书情况下验证设备身份、生成签名验证公钥,验证签名,同时分布式签名扩展可保证签名私钥由多个用户掌握,提升了签名私钥的安全性和可用性。
以EdDSA算法实现分布式无证书签名为例,其对应的分布式无证书签名的类型可以包括两方无证书签名、多方联合无证书签名和门限无证书签名。以SM2算法实现分布式无证书签名为例,其对应的分布式无证书签名的类型包括两方无证书SM2签名。
接下来将以两方无证书签名、多方联合无证书签名、门限无证书签名以及两方无证书SM2签名为例,依次介绍密钥生成中心生成公钥生成参数和部分签名私钥的实现方式,以及终端设备依赖于公钥生成参数和部分签名私钥对消息设置签名的实现方式。
以EdDSA算法实现分布式无证书签名为例,在实际应用中,密钥生成中心可以对用户身份信息以及设定的公开参数执行哈希运算,以得到第一公钥参数;将第一公钥参数及其对应的用户公钥信息的和值作为公钥生成参数;按照设定的哈希取余规则,对公钥生成参数进行处理,以得到部分签名私钥。
以用户Q发送签名私钥请求为例,密钥生成中心在获取到携带有用户的身份信息和用户公钥信息的签名私钥请求之后,可以按照如下公式计算得到第一公钥参数R
ZQ=H(ENTLKGC,IDQ,a,b,xG,yG,xMPK,yMPK),
r=H(hb,...,h2b-1,ZQ),
R=[r]G。
其中,H(·)表示哈希运算,ENTLKGC、a和b均表示公开参数,IDQ表示用户Q的用户身份信息,xG表示椭圆曲线上的基点G的横坐标,yG表示椭圆曲线上的基点G的纵坐标,xMPK表示主公钥MPK在椭圆曲线上的横坐标,yMPK表示主公钥MPK在椭圆曲线上的纵坐标,ZQ和r为计算第一公钥参数的中间参数。
将第一公钥参数及其对应的用户公钥信息的和值作为公钥生成参数即W=R+PK1。
在本公开实施例中,可以基于EdDSA算法的实现原理设置哈希取余规则,按照如下公式计算得到部分签名私钥s,
e=H(W,ZQ),s=r+e·s0modq。
其中,s0表示密钥生成中心按照标准RCF8032计算得到的私钥杂凑值,q表示椭圆曲线上的一个点值。
以签名私钥请求所属的签名类型为两方无证书签名为例,对输入的消息设置签名结果包括:利用第一随机数的私钥杂凑值以及椭圆曲线参数对输入的消息进行处理,得到第一私钥参数;将第一私钥参数、消息、自身的第一身份信息以及第一公钥生成参数传输至与其关联的第二终端设备;以便于第二终端设备利用第二随机数的私钥杂凑值以及椭圆曲线参数对消息进行处理,得到第二私钥参数;按照预先设定的哈希取余规则,对第一私钥参数、消息、第一身份信息、第一公钥生成参数、第二私钥参数以及第二终端设备自身的第二身份信息以及第二公钥生成参数进行处理,以得到第二签名私钥;接收第二终端设备传输的第二私钥参数、第二签名私钥、第二身份信息以及第二公钥生成参数;按照哈希取余规则,对第一私钥参数、消息、第一身份信息、第一公钥生成参数、第二私钥参数以及第二终端设备自身的第二身份信息以及第二公钥生成参数进行处理,以得到第一签名私钥;将第一私钥参数、第二私钥参数以及第一私钥签名以及第二私钥签名作为消息的签名结果。
如图3所示为以用户Q和用户P为例实现两方无证书签名的流程示意图,Q获取到消息M,按照如下公式计算得到第一私钥参数R1,
r1=H(h1b,...,h{1(2b-1)},M),R1=[r1]G,
P按照如下公式计算得到第二私钥参数R2,
r2=H(h2b,...,h{2(2b-1)},M),R2=[r2]G。
P按照如下公式计算得到第二签名私钥S2
R=R1+R2=[r1]G+[r2]G,
S2=(r2+H(R,PK,M)SKP)modq,
其中,q为公开参数,
Q按照如下公式计算得到第一签名私钥S1,
R=R1+R2=[r1]G+[r2]G,
S1=(r1+H(R,PK,M)SKQ)modq,
S=S1+S2=(r1+r2+H(R,PK,M)·(SKP+SKQ))modq,
最终的签名结果为(R,S)。
以签名私钥请求所属的签名类型为多方联合无证书签名为例,对输入的消息设置签名结果包括:利用随机数的私钥杂凑值以及椭圆曲线参数对输入的消息进行处理,得到私钥参数;将私钥参数、自身的身份信息以及公钥生成参数向外公布;按照哈希取余规则,对消息以及多方联合中各用户的私钥参数、身份信息以及公钥生成参数进行处理,以得到签名私钥;并向外公布签名私钥;将多方联合中各用户的签名私钥的和值以及多方联合中各用户的私钥参数的和值作为消息的签名结果。
以参与多方联合无证书签名中的任意一个用户Pi为例,Pi获取到消息M,按照如下公式计算得到私钥参数Ri,
r1=H(hib,...,h{i(2b-1)},M),Ri=[ri]G,
Pi按照如下公式,计算得到签名私钥Si,
Si=(ri+H(R,PK,M)SKi)modq,
并向外公布签名私钥Si,其中,n表示参与多方联合无证书签名的用户总数。
最终的签名结果为(R,S)。
以签名私钥请求所属的签名类型为门限无证书签名为例,对输入的消息设置签名结果包括:将自身的身份信息与其余各签名参与方的身份信息执行拉格朗日插值计算,以得到自身的拉格朗日系数;按照预先设定的门限签名私钥协商规则,对自身的部分签名私钥以及各参与方的身份信息进行处理,以得到门限签名私钥和联合验证公钥;利用随机数的私钥杂凑值以及椭圆曲线参数对输入的消息进行处理,得到私钥参数,并将私钥参数向外公布;按照哈希取余规则,对消息以及自身的拉格朗日系数、门限签名私钥、联合验证公钥进行处理,以得到签名私钥;并向外公布签名私钥;将各参与方的签名私钥的和值以及各参与方的私钥参数的和值作为消息的签名结果。
其中,对于门限签名私钥和联合验证公钥的生成过程,终端设备可以按照预先设定的随机多项式计算规则,对自身的部分签名私钥以及参与门限签名的参与方的身份信息进行处理,以得到各参与方对应的初始门限签名私钥;将初始门限签名私钥发送至各参与方的终端设备;将与自身的身份信息对应的所有初始门限签名私钥的累加和值作为自身的门限签名私钥;依据自身的门限签名私钥以及椭圆曲线参数,计算出自身的公钥;依据自身的部分签名私钥以及初始签名私钥,计算得到组合私钥;将自身的公钥以及组合私钥进行公布;将各参与方的组合私钥的累加和值作为联合验证公钥。
门限无证书签名指的是以n个用户中的任意t个用户参与消息的签名,其中,t≤n。
Pi选取t-1次随机多项时fi(x)=SKi+ai1x+···+ai(t-1)xt-1modq,根据其它参与方的身份idj,i≠j,计算初始门限签名私钥fi(idj),并通过安全信道将初始门限签名私钥发送给对应参与方。
Pi获取到消息M,按照如下公式计算得到私钥参数Ri,
r1=H(hib,...,h{i(2b-1)},M),Ri=[ri]G,
将Ri向外公布,以便于其它参与多方联合无证书签名的用户可以获取到公布的信息。
Pi按照如下公式,计算得到签名私钥Si,
R=R1+R2+···+Rt=[r1]G+[r2]G+···+[rt]G,
Si=(ri+H(R,PK,M)·Li·di)modq,
并向外公布签名私钥Si。
Pi可组合签名
S=S1+S2···+St=(r1+r2+···+rt+H(R,PK,M)·(L1·d1+L2·d2+···+Lt·dt))modq
最终的签名结果为(R,S)。
以SM2算法实现分布式无证书签名为例,在实际应用中,密钥生成中心可以获取两个联合终端设备发送的身份信息、用户公钥信息以及联合公钥信息;对两个联合终端设备的用户身份信息以及设定的公开参数执行哈希运算,以得到第一公钥参数;将第一公钥参数与联合公钥信息的和值作为第一公钥生成参数;按照设定的SM2公钥生成规则,对第一公钥生成参数进行处理,以得到第二公钥生成参数;根据第一公钥生成参数、两个联合终端设备的用户身份信息以及选取的第一SM2随机数和第二SM2随机数,计算得到第一部分签名私钥和第二部分签名私钥。
如图4所示为以用户Q、用户P和KGC交互实现无证书SM2签名的流程示意图,为了便于描述,以下均以Q表示用户Q的终端设备,P表示用户P的终端设备。
Q可以选取随机数s1作为私钥,生成公钥PKQ=[s1]G;P可以选取随机数s2作为私钥,生成公钥PKP=[s2]G。
Q将公钥PKQ和身份IDQ发送给P;P将公钥PKP和身份IDP发送给Q;Q计算PKQP=[s2·s2]G,将公钥PKQP,身份IDQ,以及PKQP发送给KGC。
P计算PKQP=[s2·s2]G,将公钥PKP,身份IDP,以及PKQP发送给KGC。
KGC可以按照如下公式,计算得到第一公钥参数R,
ZQP=H(ENTLKGC,IDQ,IDP,a,b,xG,yG,xMPK,yMPK),
r=H(hb,...,h2b-1,ZQP),
R=[r]G。
将第一公钥参数R与联合公钥信息PKQP的和值作为第一公钥生成参数即Y=R+PKQP。
按照如下公式,计算得到第二公钥参数X,
e=H(Y,ZQP),
t=r+e·s0modq,
dQ=kmodq,
dP=k-1·tmodq,
X=[k]PKP+[k-1·t]PKQ,
其中,k为密钥生成中心选取的随机数。
KGC可以选取第一SM2随机数u1和第二SM2随机数u1,参与部分签名私钥的计算,按照如下公式计算第一部分签名私钥v1和第二部分签名私钥v2,
U1=[u1]PKP,U2=[u2]PKQ,
e'=H(X,U1,U2,e),
v1=u1+e'·k,
v2=u2+e'·k-1·t。
KGC可以将X,Y,dQ,[dP]G,v1,v2,U1,U2发送给Q,将X,Y,dP,[dQ]G,v1,v2,U1,U2发送给P。
Q和P均可以计算ZQP=H(ENTLKGC,IDQ,IDP,a,b,xG,yG,xMPK,yMPK),e=H(Y,ZQP),验证[dQ·dP]G=[t]G=Y-PKQP+[e]MPK是否成立,若成立,则说明KGC生成的部分签名私钥正确,以及第一公钥生成参数Y的正确性。
Q和P均可以计算e'=H(X,U1,U2,e),验证[v1]PKP+[v2]PKQ=U1+U2+[e']X是否成立,若成立,则说明KGC生成第二公钥生成参数X的正确性。
在本公开实施例中,通过更改密钥的生成方式,从而降低无证书签名中对随机数的使用,提高了密钥的生成效率。
以签名私钥请求所属的签名类型为两方无证书SM2签名为例,对输入的消息设置签名结果包括:根据选取的随机数以及自身的部分签名私钥,计算得到初始SM2签名参数;将初始SM2签名参数传输至与其对应的联合终端设备,以便于联合终端设备根据初始SM2签名参数、自身的部分签名私钥以及输入的消息,计算得到SM2联合签名参数;按照预设的SM2联合签名规则,对SM2联合签名参数进行处理,以得到消息的签名值。
如图5所示为以用户Q和用户P为例实现两方无证书SM2签名的流程示意图,Q的部分签名私钥为sQ=s1+dQ=k+s1modq,P的部分签名私钥为sP=s2+dP=k-1·t+s2modq。
在执行SM2签名时,Q选取随机数k1,计算初始SM2签名参数G1=[sQ·k1]G,并将G1发送给P。
P选取随机数k2,按照如下公式,计算初始SM2签名参数r,
[k2·sP]G+[sP]G1=[k2·sP]G+[sP·sQ·k1]G=(rx,ry),
r=H(m)+rx,
Q按照如下公式计算SM2联合签名参数,
则签名v=(1+d)-1(k+r)-r=(1+d)-1(k-r·d)。
在实际应用中,可以按照SM2标准签名验证算法验证签名值,验证通过则输出SM2标准形式的签名值(r,v)。
在本公开实施例中,各终端设备根据获取的用户身份信息及其对应的公钥生成参数,可以计算得到验证参数;依据验证参数实现对签名的正确性的验证。在实际应用中,可以判断验证参数是否符合验证规则;其中,验证规则为签名私钥请求所属的签名类型相匹配的验证规则。
若验证参数不符合验证规则,则说明签名可靠,符合安全性要求。若验证参数不符合验证规则,则说明签名不可靠,为了便于用户直观的了解签名验证的结果,当验证参数不符合验证规则时可以展示签名不可靠的提示信息。
在本公开实施例中,以EdDSA算法实现分布式无证书签名和以SM2算法实现分布式无证书签名所对应的签名验证方式有所不同。
将计算出的联合签名公钥PK作为验证参数,计算等式S·G=R+H(R,PK,M)·PK是否成立,若等式成立,则说明书签名正确;若等式不成立,则说明签名不正确。
以多方联合无证书签名为例,Pi对消息设置签名(R,S),可以验证S·G=R+H(R,PK,M)·PK是否成立,若等式成立,则说明书签名正确;若等式不成立,则说明签名不正确。此外,参与多方联合无证书签名的用户可通过计算是否成立,验证Pi是否为具有签名参与权限的参与方,其签名结果是否正确。
以门限无证书签名为例,可以验证S·G=R+H(R,PK,M)·PK是否成立,若等式成立,则说明书签名正确;若等式不成立,则说明签名不正确。此外,可计算Sj·G=Rj+H(R,PK,M)·Lj·[dj]G是否成立,验证Pj是否为具有签名参与权限的参与方,其签名结果是否正确。
以两方无证书SM2签名为例,Q和P均可以计算ZQP=H(ENTLKGC,IDQ,IDP,a,b,xG,yG,xMPK,yMPK),e=H(Y,ZQP),验证[dQ·dP]G=[t]G=Y-PKQP+[e]MPK是否成立,若成立,则说明KGC生成的部分签名私钥正确,以及第一公钥生成参数Y的正确性。
Q和P均可以计算e'=H(X,U1,U2,e),验证[v1]PKP+[v2]PKQ=U1+U2+[e']X是否成立,若成立,则说明KGC生成第二公钥生成参数X的正确性。
通过对签名进行验证,可以保证签名的正确性,便于用户及时的发现不正确的签名,从而及时调整对消息的签名,避免错误签名在后续对签名的消息执行处理时造成的影响。
图6为本公开实施例提供的一种签名装置的结构示意图,适用于终端设备,装置包括发送单元61、接收单元62、调用单元63和设置单元64;
发送单元61,用于向密钥生成中心发送签名私钥请求;其中,签名私钥请求中携带有用户身份信息和用户公钥信息;
接收单元62,用于接收密钥生成中心反馈的公钥生成参数和部分签名私钥;其中,公钥生成参数和部分签名私钥由密钥生成中心依据用户身份信息和用户公钥信息计算得到;
调用单元63,用于从预先建立的签名类型与分布式签名计算规则的对应关系库中,调用与签名私钥请求所属的签名类型相匹配的目标分布式签名计算规则;
设置单元64,用于利用目标分布式签名计算规则以及部分签名私钥、公钥生成参数,对输入的消息设置签名结果。
可选地,当签名私钥请求所属的签名类型为两方无证书签名时,相应的,设置单元包括计算子单元、传输子单元、接收子单元、处理子单元和作为子单元;
计算子单元,用于利用第一随机数的私钥杂凑值以及椭圆曲线参数对输入的消息进行处理,得到第一私钥参数;
传输子单元,用于将第一私钥参数、消息、自身的第一身份信息以及第一公钥生成参数传输至与其关联的第二终端设备;以便于第二终端设备利用第二随机数的私钥杂凑值以及椭圆曲线参数对消息进行处理,得到第二私钥参数;按照预先设定的哈希取余规则,对第一私钥参数、消息、第一身份信息、第一公钥生成参数、第二私钥参数以及第二终端设备自身的第二身份信息以及第二公钥生成参数进行处理,以得到第二签名私钥;
接收子单元,用于接收第二终端设备传输的第二私钥参数、第二签名私钥、第二身份信息以及第二公钥生成参数;
处理子单元,用于按照哈希取余规则,对第一私钥参数、消息、第一身份信息、第一公钥生成参数、第二私钥参数以及第二终端设备自身的第二身份信息以及第二公钥生成参数进行处理,以得到第一签名私钥;
作为子单元,用于将第一私钥参数、第二私钥参数以及第一私钥签名以及第二私钥签名作为消息的签名结果。
可选地,当签名私钥请求所属的签名类型为多方联合无证书签名时,相应的,设置包括计算子单元、公布子单元、处理子单元和作为子单元;
计算子单元,用于利用随机数的私钥杂凑值以及椭圆曲线参数对输入的消息进行处理,得到私钥参数;
公布子单元,用于将私钥参数、自身的身份信息以及公钥生成参数向外公布;
处理子单元,用于按照哈希取余规则,对消息以及多方联合中各用户的私钥参数、身份信息以及公钥生成参数进行处理,以得到签名私钥;公布子单元还用于向外公布签名私钥;
作为子单元,用于将多方联合中各用户的签名私钥的和值以及多方联合中各用户的私钥参数的和值作为消息的签名结果。
可选地,当签名私钥请求所属的签名类型为门限无证书签名时,相应的,设置单元包括计算子单元、第一处理子单元、第二处理子单元、公布子单元、第三处理子单元和作为子单元;
计算子单元,用于将自身的身份信息与其余各签名参与方的身份信息执行拉格朗日插值计算,以得到自身的拉格朗日系数;
第一处理子单元,用于按照预先设定的门限签名私钥协商规则,对自身的部分签名私钥以及各参与方的身份信息进行处理,以得到门限签名私钥和联合验证公钥;
第二处理子单元,用于利用随机数的私钥杂凑值以及椭圆曲线参数对输入的消息进行处理,得到私钥参数;
公布子单元,用于并将私钥参数向外公布;
第三处理子单元按照哈希取余规则,对消息以及自身的拉格朗日系数、门限签名私钥、联合验证公钥进行处理,以得到签名私钥;公布子单元还用于并向外公布签名私钥;
作为子单元,用于将各参与方的签名私钥的和值以及各参与方的私钥参数的和值作为消息的签名结果。
可选地,第一处理子单元用于按照预先设定的随机多项式计算规则,对自身的部分签名私钥以及参与门限签名的参与方的身份信息进行处理,以得到各参与方对应的初始门限签名私钥;将初始门限签名私钥发送至各参与方的终端设备;将与自身的身份信息对应的所有初始门限签名私钥的累加和值作为自身的门限签名私钥;依据自身的门限签名私钥以及椭圆曲线参数,计算出自身的公钥;依据自身的部分签名私钥以及初始签名私钥,计算得到组合私钥;将自身的公钥以及组合私钥进行公布;将各参与方的组合私钥的累加和值作为联合验证公钥。
可选地,当签名私钥请求所属的签名类型为两方无证书SM2签名时,相应的,设置包括第一计算子单元、第二计算子单元和处理子单元;
第一计算子单元,用于根据选取的随机数以及自身的部分签名私钥,计算得到初始SM2签名参数;
第二计算子单元,用于将初始SM2签名参数传输至与其对应的联合终端设备,以便于联合终端设备根据初始SM2签名参数、自身的部分签名私钥以及输入的消息,计算得到SM2联合签名参数;
处理子单元,用于按照预设的SM2联合签名规则,对SM2联合签名参数进行处理,以得到消息的签名值。
可选地,还包括计算单元、判断单元和提示单元;
计算单元,用于根据用户身份信息及其对应的公钥生成参数,计算得到验证参数;
判断单元,用于判断验证参数是否符合验证规则;其中,验证规则为签名私钥请求所属的签名类型相匹配的验证规则;
提示单元,用于若验证参数不符合验证规则,则展示签名不可靠的提示信息。
图6所对应实施例中特征的说明可以参见图1所对应实施例的相关说明,这里不再一一赘述。
通过上述技术方案,终端设备向密钥生成中心发送签名私钥请求;其中,签名私钥请求中携带有用户身份信息和用户公钥信息,以便于密钥生成中心依据用户身份信息和用户公钥信息计算得到公钥生成参数和部分签名私钥,减少了对随机数的使用,提升了密钥生成的效率。终端设备接收密钥生成中心反馈的公钥生成参数和部分签名私钥。为了实现分布式签名,针对于每种类型的签名可以建立对应的分布式签名计算规则。终端设备获取到公钥生成参数和部分签名私钥之后,可以从预先建立的签名类型与分布式签名计算规则的对应关系库中,调用与签名私钥请求所属的签名类型相匹配的目标分布式签名计算规则;利用目标分布式签名计算规则以及部分签名私钥、公钥生成参数,对输入的消息设置签名结果。本公开在无证书签名的基础上提出了分布式签名的设置方式,保证签名私钥由多个用户掌握,单个用户私钥泄露或者丢失不影响签名的安全性和可用性。
图7为本公开实施例提供的一种签名装置的结构示意图,适用于密钥生成中心,装置包括获取单元71、转换单元72和传输单元73;
获取单元71,用于获取签名私钥请求;其中,签名私钥请求中携带有用户身份信息和用户公钥信息;
转换单元72,用于利用预先设定的密钥计算规则,对用户身份信息以及用户公钥信息进行转换,以得到公钥生成参数和部分签名私钥;
传输单元73,用于将公钥生成参数和部分签名私钥传输至终端设备。
可选地,当签名私钥请求所属的签名类型为两方无证书签名、多方联合无证书签名或者门限无证书签名时,相应的,转换单元包括计算子单元、作为子单元和处理子单元;
计算子单元,用于对用户身份信息以及设定的公开参数执行哈希运算,以得到第一公钥参数;
作为子单元,用于将第一公钥参数及其对应的用户公钥信息的和值作为公钥生成参数;
处理子单元,用于按照设定的哈希取余规则,对公钥生成参数进行处理,以得到部分签名私钥。
可选地,当签名私钥请求所属的签名类型为两方无证书SM2签名时,相应的,转换单元包括获取子单元、第一计算子单元、作为子单元、第二计算子单元和第三计算子单元;
获取子单元,用于获取两个联合终端设备发送的身份信息、用户公钥信息以及联合公钥信息;
第一计算子单元,用于对两个联合终端设备的用户身份信息以及设定的公开参数执行哈希运算,以得到第一公钥参数;
作为子单元,用于将第一公钥参数与联合公钥信息的和值作为第一公钥生成参数;
第二计算子单元,用于按照设定的SM2公钥生成规则,对第一公钥生成参数进行处理,以得到第二公钥生成参数;
第三计算子单元,用于根据第一公钥生成参数、两个联合终端设备的用户身份信息以及选取的第一SM2随机数和第二SM2随机数,计算得到第一部分签名私钥和第二部分签名私钥。
图7所对应实施例中特征的说明可以参见图1所对应实施例的相关说明,这里不再一一赘述。
通过上述技术方案,密钥生成中心获取签名私钥请求;其中,签名私钥请求中携带有用户身份信息和用户公钥信息;密钥生成中心依据用户身份信息和用户公钥信息计算得到公钥生成参数和部分签名私钥,减少了对随机数的使用,提升了密钥生成的效率。密钥生成中心将公钥生成参数和部分签名私钥传输至终端设备,以便于终端设备从预先建立的签名类型与分布式签名计算规则的对应关系库中,调用与签名私钥请求所属的签名类型相匹配的目标分布式签名计算规则;利用目标分布式签名计算规则以及部分签名私钥、公钥生成参数,对输入的消息设置签名结果。本公开在无证书签名的基础上提出了分布式签名的设置方式,保证签名私钥由多个用户掌握,单个用户私钥泄露或者丢失不影响签名的安全性和可用性。
本公开实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述任一项实施例所述的签名方法的步骤。
图8是根据一示例性实施例示出的一种电子设备800的框图。如图8所示,该电子设备800可以包括:处理器801,存储器802。该电子设备800还可以包括多媒体组件803,输入/输出(I/O)接口804,以及通信组件805中的一者或多者。
其中,处理器801用于控制该电子设备800的整体操作,以完成上述的签名方法中的全部或部分步骤。存储器802用于存储各种类型的数据以支持在该电子设备800的操作,这些数据例如可以包括用于在该电子设备800上操作的任何应用程序或方法的指令,以及应用程序相关的数据,例如联系人数据、收发的消息、图片、音频、视频等等。该存储器802可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,简称EPROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),只读存储器(Read-Only Memory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。多媒体组件803可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器802或通过通信组件805发送。音频组件还包括至少一个扬声器,用于输出音频信号。I/O接口804为处理器801和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。通信组件805用于该电子设备800与其他设备之间进行有线或无线通信。无线通信,例如Wi-Fi,蓝牙,近场通信(Near FieldCommunication,简称NFC),2G、3G或4G,或它们中的一种或几种的组合,因此相应的该通信组件805可以包括:Wi-Fi模块,蓝牙模块,NFC模块。
在一示例性实施例中,电子设备800可以被一个或多个应用专用集成电路(Application Specific Integrated Circuit,简称ASIC)、数字信号处理器(DigitalSignal Processor,简称DSP)、数字信号处理设备(Digital Signal Processing Device,简称DSPD)、可编程逻辑器件(Programmable Logic Device,简称PLD)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述的签名方法。
在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,该程序指令被处理器执行时实现上述的签名方法的步骤。例如,该计算机可读存储介质可以为上述包括程序指令的存储器802,上述程序指令可由电子设备800的处理器801执行以完成上述的签名方法。
图9是根据一示例性实施例示出的一种基于服务器侧的电子设备900的框图。例如,电子设备900可以被提供为一服务器。参照图9,电子设备900包括处理器922,其数量可以为一个或多个,以及存储器932,用于存储可由处理器922执行的计算机程序。存储器932中存储的计算机程序可以包括一个或一个以上的每一个对应于一组指令的模块。此外,处理器922可以被配置为执行该计算机程序,以执行上述的签名方法。
另外,电子设备900还可以包括电源组件926和通信组件950,该电源组件926可以被配置为执行电子设备900的电源管理,该通信组件950可以被配置为实现电子设备900的通信,例如,有线或无线通信。此外,该电子设备900还可以包括输入/输出(I/O)接口958。电子设备900可以操作基于存储在存储器932的操作系统,例如Windows ServerTM,Mac OSXTM,UnixTM,LinuxTM等等。
在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,该程序指令被处理器执行时实现上述的无证书分布式签名方法的步骤。例如,该计算机可读存储介质可以为上述包括程序指令的存储器932,上述程序指令可由电子设备900的处理器922执行以完成上述的签名方法。
以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,本公开对各种可能的组合方式不再另行说明。
此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。
Claims (14)
1.一种无证书分布式签名方法,其特征在于,适用于终端设备,所述方法包括:
向密钥生成中心发送签名私钥请求;其中,所述签名私钥请求中携带有用户身份信息和用户公钥信息;
接收所述密钥生成中心反馈的公钥生成参数和部分签名私钥;其中,所述公钥生成参数和所述部分签名私钥由所述密钥生成中心依据用户身份信息和用户公钥信息计算得到,具体为:所述密钥生成中心对所述用户身份信息以及设定的公开参数执行哈希运算,以得到第一公钥参数:将所述第一公钥参数及其对应的用户公钥信息的和值作为公钥生成参数:按照设定的哈希取余规则,对所述公钥生成参数进行处理,以得到部分签名私钥;
从预先建立的签名类型与分布式签名计算规则的对应关系库中,调用与所述签名私钥请求所属的签名类型相匹配的目标分布式签名计算规则;
利用所述目标分布式签名计算规则以及所述部分签名私钥、所述公钥生成参数,对输入的消息设置签名结果。
2.根据权利要求1所述的无证书分布式签名方法,其特征在于,当所述签名私钥请求所属的签名类型为两方无证书签名时,相应的,所述利用所述目标分布式签名计算规则以及所述部分签名私钥、所述公钥生成参数,对输入的消息设置签名结果包括:
利用第一随机数的私钥杂凑值以及椭圆曲线参数对输入的消息进行处理,得到第一私钥参数;
将所述第一私钥参数、所述消息、自身的第一身份信息以及第一公钥生成参数传输至与其关联的第二终端设备;以便于所述第二终端设备利用第二随机数的私钥杂凑值以及所述椭圆曲线参数对所述消息进行处理,得到第二私钥参数;按照预先设定的哈希取余规则,对所述第一私钥参数、所述消息、所述第一身份信息、所述第一公钥生成参数、所述第二私钥参数以及所述第二终端设备自身的第二身份信息以及第二公钥生成参数进行处理,以得到第二签名私钥;
接收所述第二终端设备传输的所述第二私钥参数、所述第二签名私钥、所述第二身份信息以及所述第二公钥生成参数;
按照所述哈希取余规则,对所述第一私钥参数、所述消息、所述第一身份信息、所述第一公钥生成参数、所述第二私钥参数以及所述第二终端设备自身的第二身份信息以及第二公钥生成参数进行处理,以得到第一签名私钥;
将所述第一私钥参数、所述第二私钥参数以及所述第一私钥签名以及所述第二私钥签名作为所述消息的签名结果。
3.根据权利要求1所述的无证书分布式签名方法,其特征在于,当所述签名私钥请求所属的签名类型为多方联合无证书签名时,相应的,所述利用所述目标分布式签名计算规则以及所述部分签名私钥、所述公钥生成参数,对输入的消息设置签名结果包括:
利用随机数的私钥杂凑值以及椭圆曲线参数对输入的消息进行处理,得到私钥参数;
将所述私钥参数、自身的身份信息以及公钥生成参数向外公布;
按照哈希取余规则,对所述消息以及多方联合中各用户的私钥参数、身份信息以及公钥生成参数进行处理,以得到签名私钥;并向外公布所述签名私钥;
将所述多方联合中各用户的签名私钥的和值以及所述多方联合中各用户的私钥参数的和值作为所述消息的签名结果。
4.根据权利要求1所述的无证书分布式签名方法,其特征在于,当所述签名私钥请求所属的签名类型为门限无证书签名时,相应的,所述利用所述目标分布式签名计算规则以及所述部分签名私钥、所述公钥生成参数,对输入的消息设置签名结果包括:
将自身的身份信息与其余各签名参与方的身份信息执行拉格朗日插值计算,以得到自身的拉格朗日系数;
按照预先设定的门限签名私钥协商规则,对自身的部分签名私钥以及各参与方的身份信息进行处理,以得到门限签名私钥和联合验证公钥;
利用随机数的私钥杂凑值以及椭圆曲线参数对输入的消息进行处理,得到私钥参数,并将所述私钥参数向外公布;
按照哈希取余规则,对所述消息以及自身的拉格朗日系数、门限签名私钥、联合验证公钥进行处理,以得到签名私钥;并向外公布所述签名私钥;
将各参与方的签名私钥的和值以及各参与方的私钥参数的和值作为所述消息的签名结果。
5.根据权利要求4所述的无证书分布式签名方法,其特征在于,所述按照预先设定的门限签名私钥协商规则,对自身的部分签名私钥以及各参与方的身份信息进行处理,以得到门限签名私钥和联合验证公钥包括:
按照预先设定的随机多项式计算规则,对自身的部分签名私钥以及参与门限签名的参与方的身份信息进行处理,以得到各参与方对应的初始门限签名私钥;
将所述初始门限签名私钥发送至各参与方的终端设备;
将与自身的身份信息对应的所有初始门限签名私钥的累加和值作为自身的门限签名私钥;
依据自身的门限签名私钥以及椭圆曲线参数,计算出自身的公钥;依据自身的部分签名私钥以及初始签名私钥,计算得到组合私钥;将所述自身的公钥以及所述组合私钥进行公布;
将各参与方的组合私钥的累加和值作为联合验证公钥。
6.根据权利要求1所述的无证书分布式签名方法,其特征在于,当所述签名私钥请求所属的签名类型为两方无证书SM2签名时,相应的,所述利用所述目标分布式签名计算规则以及所述部分签名私钥、所述公钥生成参数,对输入的消息设置签名结果包括:
根据选取的随机数以及自身的部分签名私钥,计算得到初始SM2签名参数;
将所述初始SM2签名参数传输至与其对应的联合终端设备,以便于所述联合终端设备根据所述初始SM2签名参数、自身的部分签名私钥以及输入的消息,计算得到SM2联合签名参数;
按照预设的SM2联合签名规则,对所述SM2联合签名参数进行处理,以得到所述消息的签名值。
7.根据权利要求1-6任意一项所述的无证书分布式签名方法,其特征在于,还包括:
根据用户身份信息及其对应的公钥生成参数,计算得到验证参数;
判断所述验证参数是否符合验证规则;其中,所述验证规则为所述签名私钥请求所属的签名类型相匹配的验证规则;
若所述验证参数不符合所述验证规则,则展示签名不可靠的提示信息。
8.一种无证书分布式签名装置,其特征在于,适用于终端设备,所述装置包括发送单元、接收单元、调用单元和设置单元;
所述发送单元,用于向密钥生成中心发送签名私钥请求;其中,所述签名私钥请求中携带有用户身份信息和用户公钥信息;
所述接收单元,用于接收所述密钥生成中心反馈的公钥生成参数和部分签名私钥;其中,所述公钥生成参数和所述部分签名私钥由所述密钥生成中心依据用户身份信息和用户公钥信息计算得到;
所述调用单元,用于从预先建立的签名类型与分布式签名计算规则的对应关系库中,调用与所述签名私钥请求所属的签名类型相匹配的目标分布式签名计算规则;
所述设置单元,用于利用所述目标分布式签名计算规则以及所述部分签名私钥、所述公钥生成参数,对输入的消息设置签名结果。
9.一种无证书分布式签名方法,其特征在于,适用于密钥生成中心,所述方法包括:
获取签名私钥请求;其中,所述签名私钥请求中携带有用户身份信息和用户公钥信息;
利用预先设定的密钥计算规则,对所述用户身份信息以及所述用户公钥信息进行转换,以得到公钥生成参数和部分签名私钥,具体为:
对所述用户身份信息以及设定的公开参数执行哈希运算,以得到第一公钥参数:将所述第一公钥参数及其对应的用户公钥信息的和值作为公钥生成参数:按照设定的哈希取余规则,对所述公钥生成参数进行处理,以得到部分签名私钥;
将所述公钥生成参数和所述部分签名私钥传输至终端设备。
10.根据权利要求9所述的无证书分布式签名方法,其特征在于,所述签名私钥请求所属的签名类型为两方无证书签名、多方联合无证书签名或者门限无证书签名。
11.根据权利要求9所述的无证书分布式签名方法,其特征在于,当所述签名私钥请求所属的签名类型为两方无证书SM2签名时,相应的,所述利用预先设定的密钥计算规则,对所述用户身份信息以及所述用户公钥信息进行转换,以得到公钥生成参数和部分签名私钥包括:
获取两个联合终端设备发送的身份信息、用户公钥信息以及联合公钥信息;
对所述两个联合终端设备的用户身份信息以及设定的公开参数执行哈希运算,以得到第一公钥参数;
将所述第一公钥参数与所述联合公钥信息的和值作为第一公钥生成参数;
按照设定的SM2公钥生成规则,对所述第一公钥生成参数进行处理,以得到第二公钥生成参数;
根据所述第一公钥生成参数、所述两个联合终端设备的用户身份信息以及选取的第一SM2随机数和第二SM2随机数,计算得到第一部分签名私钥和第二部分签名私钥。
12.一种无证书分布式签名装置,其特征在于,适用于密钥生成中心,所述装置包括获取单元、转换单元和传输单元;
所述获取单元,用于获取签名私钥请求;其中,所述签名私钥请求中携带有用户身份信息和用户公钥信息;
所述转换单元,用于利用预先设定的密钥计算规则,对所述用户身份信息以及所述用户公钥信息进行转换,以得到公钥生成参数和部分签名私钥;
所述传输单元,用于将所述公钥生成参数和所述部分签名私钥传输至终端设备。
13.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现权利要求1-7和/或权利要求9-11中任一项所述方法的步骤。
14.一种电子设备,其特征在于,包括:
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现权利要求1-7和/或权利要求9-11中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110327808.0A CN112906039B (zh) | 2021-03-26 | 2021-03-26 | 一种无证书分布式签名方法、装置、介质和电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110327808.0A CN112906039B (zh) | 2021-03-26 | 2021-03-26 | 一种无证书分布式签名方法、装置、介质和电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112906039A CN112906039A (zh) | 2021-06-04 |
CN112906039B true CN112906039B (zh) | 2023-01-06 |
Family
ID=76109271
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110327808.0A Active CN112906039B (zh) | 2021-03-26 | 2021-03-26 | 一种无证书分布式签名方法、装置、介质和电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112906039B (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113837756A (zh) * | 2021-09-23 | 2021-12-24 | 航天信息股份有限公司 | 一种电子发票验证方法和系统 |
CN114070556B (zh) * | 2021-11-15 | 2023-07-25 | 成都卫士通信息产业股份有限公司 | 一种门限环签名方法、装置、电子设备及可读存储介质 |
CN115378623B (zh) * | 2022-03-17 | 2024-05-07 | 中国移动通信集团有限公司 | 身份认证方法、装置、设备及存储介质 |
CN114374523B (zh) * | 2022-03-23 | 2022-05-31 | 南京易科腾信息技术有限公司 | 签名验签方法、装置及存储介质 |
CN116506233A (zh) * | 2023-06-29 | 2023-07-28 | 积至网络(北京)有限公司 | 一种基于分布式群体协同的身份认证模型 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110380862A (zh) * | 2019-06-25 | 2019-10-25 | 济南晟安信息技术有限公司 | 签名验证方法、装置、计算机设备和存储介质 |
CN111783136A (zh) * | 2020-06-17 | 2020-10-16 | 联想(北京)有限公司 | 一种数据保护方法、装置、设备和存储介质 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104052608B (zh) * | 2014-07-07 | 2017-04-19 | 西安电子科技大学 | 云应用中基于第三方的无证书远程匿名认证方法 |
CN108809658B (zh) * | 2018-07-20 | 2021-06-01 | 武汉大学 | 一种基于sm2的身份基的数字签名方法与系统 |
CN108989053B (zh) * | 2018-08-29 | 2021-05-14 | 武汉珈港科技有限公司 | 一种基于椭圆曲线的无证书公钥密码体制实现方法 |
US11044105B2 (en) * | 2019-03-13 | 2021-06-22 | Digital 14 Llc | System, method, and computer program product for sensitive data recovery in high security systems |
CN110213042B (zh) * | 2019-05-09 | 2021-02-02 | 电子科技大学 | 一种基于无证书代理重加密的云数据去重方法 |
CN110601859B (zh) * | 2019-10-12 | 2022-05-10 | 武汉珈港科技有限公司 | 一种基于25519椭圆曲线的无证书公钥密码签名方法 |
CN110990896B (zh) * | 2019-12-03 | 2023-01-06 | 成都卫士通信息产业股份有限公司 | 基于sm2白盒的数字签名装置、方法、存储介质及设备 |
-
2021
- 2021-03-26 CN CN202110327808.0A patent/CN112906039B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110380862A (zh) * | 2019-06-25 | 2019-10-25 | 济南晟安信息技术有限公司 | 签名验证方法、装置、计算机设备和存储介质 |
CN111783136A (zh) * | 2020-06-17 | 2020-10-16 | 联想(北京)有限公司 | 一种数据保护方法、装置、设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112906039A (zh) | 2021-06-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112906039B (zh) | 一种无证书分布式签名方法、装置、介质和电子设备 | |
CN107948189B (zh) | 非对称密码身份鉴别方法、装置、计算机设备及存储介质 | |
CN108667625B (zh) | 协同sm2的数字签名方法 | |
CN113507374B (zh) | 门限签名方法、装置、设备以及存储介质 | |
CN112003696B (zh) | Sm9密钥生成方法、系统、电子设备、装置及存储介质 | |
CN107425971B (zh) | 无证书的数据加/解密方法和装置、终端 | |
CN111901111B (zh) | Sm9密钥生成方法、装置、系统及可读存储介质 | |
WO2019047418A1 (zh) | 数字签名方法、装置和系统 | |
CN112906038B (zh) | 基于sm9密钥的门限化处理方法、装置、设备及存储介质 | |
CN114070556B (zh) | 一种门限环签名方法、装置、电子设备及可读存储介质 | |
CN106789087B (zh) | 确定消息的数据摘要、基于多方的数字签名的方法及系统 | |
CN114301594B (zh) | 一种不经意传输方法、多方安全计算平台和用于不经意传输的装置 | |
CN114301609B (zh) | 一种不经意传输方法、多方安全计算平台和用于不经意传输的装置 | |
CN111654481B (zh) | 一种身份认证方法、装置和存储介质 | |
CN115396115B (zh) | 区块链数据隐私保护方法、装置、设备及可读存储介质 | |
CN107888385B (zh) | Rsa模数生成方法、rsa密钥生成方法、计算机设备及介质 | |
CN112926075B (zh) | 一种sm9密钥生成方法、装置、设备及存储介质 | |
CN108964906B (zh) | 协同ecc的数字签名方法 | |
CN111224783A (zh) | 一种支持密钥刷新的两方椭圆曲线数字签名算法 | |
CN110971404A (zh) | 一种面向安全跨域通信的无证书群密钥协商方法 | |
CN114785508B (zh) | 一种异构认证密钥协商方法和系统 | |
CN112804062B (zh) | 一种基于sm2算法的无证书签名方法、装置、设备及介质 | |
KR20120071015A (ko) | 제어가능 연결성을 제공하는 그룹서명 장치 및 방법 | |
Kumar et al. | Design of efficient id-based group key agreement protocol suited for pay-tv application | |
Lee | Cryptanalysis of Zhu et al.’s Identity-Based Encryption with Equality Test without Random Oracles |
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 | ||
CP01 | Change in the name or title of a patent holder | ||
CP01 | Change in the name or title of a patent holder |
Address after: No. 333, Yunhua Road, high tech Zone, Chengdu, Sichuan 610041 Patentee after: China Electronics Technology Network Security Technology Co.,Ltd. Address before: No. 333, Yunhua Road, high tech Zone, Chengdu, Sichuan 610041 Patentee before: CHENGDU WESTONE INFORMATION INDUSTRY Inc. |