一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于多方安全计算的隐私签名方法和计算机系统与流程

2022-04-14 03:25:36 来源:中国专利 TAG:


1.本技术涉及信息安全领域,尤其是涉及一种基于多方安全计算的隐私签名方法、计算机系统和区块链系统。


背景技术:

2.隐私计算(privacy computing)是一种由两个或多个参与方联合计算的技术和系统,参与方在不泄露各自数据的前提下通过协作对他们的数据进行联合机器学习和联合分析。多方安全计算(secure multi-party computation,简称为mpc)为隐私计算的其中一种实现方式,它的核心思想是设计特殊的加密算法和协议,基于密码学原理实现在无可信第三方的情况下,在多个参与方输入的隐私数据之上直接进行计算。
3.虽然基于mpc的隐私签名方法能够保护签名各方的隐私信息不被其他任何一方知道,但是由于mpc采用分布式的方式进行签名,签名各方分布在网络的不同位置,且为了防止签名各方的私钥泄露,签名各方的私钥基于秘密分享算法按照固定时间刷新。因此,当签名各方中任何一方存在不在线、网络传输故障或密钥刷新延迟等问题,都会导致签名失败。而如果长期不刷新签名各方的私钥,一旦签名各方的私钥被泄露则将导致签名被伪造。


技术实现要素:

4.本技术提供一种基于多方安全计算的隐私签名方法、计算机系统和区块链系统,以至少解决无可信第三方的隐私签名的私钥长期不刷新导致的安全性低的问题。
5.第一方面,本技术实施例提供了一种基于多方安全计算的隐私签名方法,包括:步骤1,参与签名的多个节点分别选取各节点的隐私数据,基于多方安全计算生成公钥以及各节点的私钥;步骤2,所述多个节点中第一节点使用所述第一节点的私钥对消息签名,得到所述第一节点的签名碎片,并将所述第一节点的签名碎片发送给所述多个节点中的第二节点;步骤3,所述第二节点对所述签名碎片的正确性进行验证,在所述签名碎片正确的情况下,向所述多个节点发起公钥以及各节点的私钥的重新生成;步骤4,所述多个节点重新生成公钥以及各节点的私钥,分别使用各节点的私钥对所述消息签名,得到各节点的签名碎片,并将所述各节点的签名碎片发送给所述第二节点;步骤5,所述第二节点根据所述各节点的签名碎片,生成所述消息的签名。
6.在其中的一些实施例中,步骤1中生成的公钥以及各节点的私钥设置有第一生存周期,当所述第一生存周期到达时,执行步骤1以重新生成公钥以及各节点的私钥,且重新生成的公钥以及各节点的私钥仍设置有所述第一生存周期。
7.在其中的一些实施例中,步骤4中重新生成的公钥以及各节点的私钥设置有第二生存周期,当所述第二生存周期到达时,返回执行步骤1,其中,所述第二生存周期大于所述第一生存周期。
8.在其中的一些实施例中,所述步骤4中重新生成的公钥以及各节点的私钥未设置
生存周期。
9.在其中的一些实施例中,所述多个节点中的第三节点设置有签名代理,所述步骤4还包括:所述第三节点判断所述消息是否满足预设规则,在所述消息满足预设规则的情况下,使用所述第三节点的私钥自动对所述消息签名,得到所述第三节点的签名碎片。
10.在其中的一些实施例中,在步骤4中所述第一节点重新生成私钥时选取的隐私数据与步骤1中所述第一节点生成私钥时选取的隐私数据不相同。
11.第二方面,本技术实施例提供了一种计算机系统,包括分布在通信网络中的多个节点,其中,所述多个节点基于第一方面所述的基于多方安全计算的隐私签名方法以获得签名和公钥。
12.第三方面,本技术实施例提供了一种区块链系统,包括:区块链、智能合约模块,以及如第二方面所述的计算机系统,其中,所述计算机系统,用于生成消息的签名和公钥,并将所述签名和公钥传输到所述区块链上;所述智能合约模块,用于根据所述公钥对所述消息的签名进行验证,并在验证通过的情况下,执行与所述消息对应的智能合约。
13.综上所述,本技术实施例提供的基于多方安全计算的隐私签名方法、计算机系统和区块链系统,提高了无可信第三方的隐私签名的安全性。
附图说明
14.图1是本技术实施例提供的基于多方安全计算的隐私签名方法的流程图。
15.图2是本技术实施例提供的计算机系统的结构示意图。
16.图3是本实施例提供的区块链系统的结构示意图。
具体实施方式
17.为更清楚地理解本技术的目的、技术方案和优点,下面结合附图和实施例,对本技术进行了描述和说明。
18.为更清楚地理解本技术的目的、技术方案和优点,下面结合附图和实施例,对本技术进行了描述和说明。然而,本领域的普通技术人员应该明白,可以在没有这些细节的情况下实施本技术。在一些情形下,为了避免不必要的描述使本技术的各方面变得晦涩难懂,对已经在较高的层次上描述了众所周知的方法、过程、系统、组件和/或电路将不作过多赘述。对于本领域的普通技术人员来说,显然可以对本技术所公开的实施例作出各种改变,并且在不偏离本技术的原则和范围的情况下,本技术中所定义的普遍原则可以适用于其他实施例和应用场景。因此,本技术不限于所示的实施例,而是符合与本技术所要求保护的范围一致的最广泛范围。
19.除另作定义外,本技术所涉及的技术术语或者科学术语应具有本技术所属技术领域具备一般技能的人所理解的一般含义。本技术所使用的术语仅出于描述特定实施例的目的,而不旨在于对本技术的限制。如本技术所使用的“一”、“一个”、“一种”、“该”、“这些”等类似的词并不表示数量上的限制,它们可以是单数或者复数。在本技术中所涉及的术语“包括”、“包含”、“具有”及其任何变体,其目的是涵盖不排他的包含;例如,包含一系列步骤或
模块(单元)的过程、方法和系统、产品或设备并未限定于列出的步骤或模块(单元),而可包括未列出的步骤或模块(单元),或者可包括这些过程、方法、产品或设备固有的其他步骤或模块(单元)。
20.在本技术中所涉及的“多个”是指两个或两个以上。通常情况下,字符“/”表示前后关联的对象是一种“或”的关系。在本技术中所涉及的术语“第一”、“第二”、“第三”等,只是对相似对象进行区分,并不代表针对对象的特定排序。
21.本技术所涉及的术语“系统”、“引擎”、“单元”、“模块”和/或“块”是一种用于按级别区分不同级别的不同组件、元件、零件、部件、装配件、或功能的一种方法。这些术语可以被其他能够达到相同目的的表达替换。通常,本技术涉及的“模块”、“单元”或“块”是指硬件或者固件中体现的逻辑或软件指令的集合。本技术描述的“模块”、“单元”或“块”可以作为软件和/或硬件实现,并且在作为软件实现的情形下,他们可以被存储在任何类型的非易失性计算机可读存储介质或存储设备中。
22.在一些实施例中,软件模块/单元/块可以被编译并被链接到可执行程序中。将意识到,软件模块可以是可从其他模块/单元/块或从其自身调用的,和/或可以响应于检测到的事件或中断而被调用。配置为在计算设备上执行的软件模块/单元/块可以设置在计算机可读存储介质上,例如光盘、数字视频盘、闪存驱动器、磁盘、或任何其他有形媒体,或作为数字下载(并且可以最初以压缩或可安装的格式存储,该格式需要在执行之前进行安装、解压或解密)。这样的软件代码可以部分地或全部地存储在正在执行的计算设备的存储设备上,并应用在计算设备的操作之中。软件指令可以被嵌入到固件,例如eprom中。还将意识到,硬件模块/单元/块可以被包括在连接的逻辑组件中,例如门和触发器,和/或可以被包括在可编程单元中,例如可编程门阵列或处理器。本文描述的模块/单元/块或计算设备功能可以被实现为软件模块/单元/块,还可以以硬件或固件来表示。通常,本文描述的模块/单元/块,它们可以与其他模块/单元/块组合,或者尽管它们是物理组织或存储的,但也可以被划分为子模块/子单元/子块。该描述可以适用于系统、引擎或其一部分。
23.将理解的是,当单元、引擎、模块或块被称为在另一单元、引擎、模块或块“上”、“连接”或“耦合至”另一单元、引擎、模块或块时,其可以直接在其它单元、引擎、模块或块上,与其连接或耦合或与之通信,或者可以存在中间单元、引擎、模块或块,除非上下文另有明确说明。在本技术中,术语“和/或”可包括任何一个或以上相关所列条目或其组合。
24.本实施例提供了一种基于多方安全计算的隐私签名方法。其中,参与签名的多个节点分布于通信网络中的不同位置,这些节点之中没有可信的节点,在这些节点之外也没有可信的第三方节点(例如可信的服务器)。图1是本技术实施例提供的基于多方安全计算的隐私签名方法的流程图,如图1所示,该流程包括如下步骤:步骤s101,参与签名的多个节点分别选取各节点的隐私数据,基于多方安全计算生成公钥以及各节点的私钥。
25.步骤s102,多个节点中第一节点使用第一节点的私钥对消息签名,得到第一节点的签名碎片,并将第一节点的签名碎片发送给多个节点中的第二节点。
26.步骤s103,第二节点对签名碎片的正确性进行验证,在签名碎片正确的情况下,向多个节点发起公钥以及各节点的私钥的重新生成。
27.步骤s104,多个节点重新生成公钥以及各节点的私钥,分别使用各节点的私钥对
消息签名,得到各节点的签名碎片,并将各节点的签名碎片发送给第二节点。
28.步骤s105,第二节点根据各节点的签名碎片,生成消息的签名。
29.相对于相关技术中按照固定时间刷新参与签名的各个节点的私钥和公钥的方式而言,在本实施例中通过多个节点中的任一节点(例如上述的第一节点)发起第一次签名,但多个节点中的签名合成者(即上述的第二节点)在首次接收到某个节点发送的签名碎片时,并不是直接生成最终的签名,而是将所有节点的私钥和公钥进行重新生成(即刷新)。对于恶意节点而言,要从所有的节点盗取每个节点的私钥已经是一件比较困难的事情,若要在私钥和公钥刷新之后重新盗取每个节点的私钥,大大降低了私钥泄露的风险,因此,采用上述步骤可以避免恶意节点盗取原有的私钥伪造签名碎片,提高了隐私签名的安全性。
30.在本实施例中,多方安全计算采用的加密算法和协议并不作限制,可以是相关技术中任意一种可以用于无可信第三方节点的多方安全计算生成隐私签名的私钥和公钥的算法和协议。下面将通过一个示例对本实施例的隐私签名过程进行说明。
31.本实施例的隐私签名可以分为三个阶段,分别为:公私密钥生成阶段、签名碎片生成和验证阶段,以及签名生成和验证阶段。在下述的示例中,p和q是两个大的素数,q是p-1的素因子,生成元(在素域zp上的阶为q),p、q和g为公开的参数,h为单向函数;消息为m;所有参与签名的节点,相应身份信息为;签名合成者为dc。
32.步骤s101和步骤s104均包括公私密钥生成阶段。在公私密钥生成阶段,首先每个节点选择随机数和t-1次多项式:;将秘密地发送给。然后计算,,广播和。定义的私钥:;的公钥:;合成私钥:;合成公钥:。
33.在本示例中,步骤s101和步骤s104中生成公私密钥的方法均采用上述方法,区别在于随机数和多项式的选取不相同。
34.在签名碎片的生成和验证阶段,任意t个节点参与签名,组成集合。每个节点执行如下步骤:选择随机数,计算,广播;收到所有后计算;计算:;其中,,即为节点对消息m的签名。
35.其中,签名碎片通过下列的方式验证其正确性:若等式
成立,则签名碎片正确。
36.在签名生成和验证阶段,dc验证所有的签名碎片正确性后,计算和。则合成签名即为。签名合成者将签名发送给签名接收者,签名接收者根据下列等式验证签名:。
37.步骤s101中生成的公钥以及各节点的私钥如果长期不更新,则可能增加各节点的私钥被泄露的风险,尤其是在秘密分享算法存在缺陷的情形下,恶意节点可能根据泄露的私钥破解得到生成公私密钥的各参数。为此,在本实施例中,对于步骤s101中生成的公钥以及各节点的私钥设置有第一生存周期,当第一生存周期到达时,执行步骤s101以重新生成公钥以及各节点的私钥,且重新生成的公钥以及各节点的私钥仍设置有第一生存周期。通过上述方式,保证了各节点的私钥按照第一生存周期不断更新。其中,第一生存周期的时长可以根据实际需要,例如网络的复杂程度、网络中存在威胁的程度等设置,例如可以设置为每数分钟或者每数小时进行一次更新,以所有节点的私钥中大部分的私钥不容易被恶意节点盗取为目标。
38.然而,在各节点的私钥频繁被刷新的情形下,由于各个节点生成的私钥以及最终生成的公钥都与每个节点所选择的隐私数据相关,且在私钥和公钥的生成过程中各个节点之间需要进行多次通信。另外,在各个节点生成签名碎片时,如果某个节点因不在线、网络传输故障或者其他原因导致的密钥刷新延迟等问题,则该节点将会采用已经失效的私钥生成签名碎片,从而导致最终签名失败。为此,在本实施例中,即使步骤s101中仍按照一定的生存周期刷新公钥和私钥,但在步骤s104中各个节点重新生成的公钥以及私钥可以不设置生存周期,即步骤s104生成的公钥及私钥在本次签名过程中不会失效,直至本次签名成功之后,再重新刷新所有节点的公钥和私钥,以提高碎片签名以及合成签名过程中对网络环境的容忍度,提高签名成功率。
39.上述实施例对于签名各方中任意一方不在线的情况能够很好地适用,使得签名各方有充足的时间准备保持同时在线,并最终完成签名的合成。而对于网络传输故障或密钥刷新延迟而言,延迟时间通常为不到一秒钟或者数分钟,因此,在这种情形下,也可以将步骤s104中重新生成的公钥以及各节点的私钥设置有第二生存周期,当第二生存周期到达时,返回执行步骤s101,即在一次签名中如果没有及时完成签名,则将重新刷新公钥和私钥,并开始进行下一次的签名。其中,将第二生存周期设置为大于第一生存周期,以适应网络延迟,提高签名成功率。
40.在一些领域,比如金融领域,实现一笔交易可以设置相应的交易规则,例如小额支付功能,对于不满100元的网络支付请求可以免密支付。为了实现上述功能,在本实施例中,多个节点中的第三节点设置有签名代理,在其中一些实施例的步骤s104中,第三节点将会根据消息的内容判断消息是否满足预设规则。例如,在本示例中,消息表明这笔交易不超过100元,第三方节点签署了预设规则,该预设规则表明不超过100元的网络支付将会免密支付。因此,在第三节点判断到消息满足预设规则的情况下,第三节点的签名代理将会使用第三节点的私钥自动对消息进行签名,得到第三节点的签名碎片。其中,签名代理具有一个安
全的存储区域,用于存储第三节点的私钥以避免私钥泄露。
41.在其中一些是事例中,步骤s104中第一节点重新生成私钥时选取的隐私数据与步骤s101中第一节点生成私钥时选取的隐私数据不相同,以进一步提高安全性能。
42.其中,本实施例中的隐私数据可以是数字或字符口令,也可以是人体生物识别特征等隐私信息。采用多方安全计算的方式生成私钥的优势在于每个参与签名的节点都不知道其他节点的隐私信息,且每个节点最多能够得到其他节点的签名碎片,而得不到其他节点的私钥。对于最终得到的签名而言,相当于用一个“合成的私钥”对消息进行签名获得的,然而“真实的私钥”自始至终都未被重建过,因此,这个“真实的私钥”不存在被泄露的可能性。最终生成的签名对于上层应用来说,验签方法与相关技术中公私密钥加密的验签方式几乎相同,因此签名的应用场景很容易适配,不需要进行特别的改造。
43.本实施例还提供了一种计算机系统。图2是本技术实施例提供的计算机系统的结构示意图,如图2所示,该计算机系统包括分布在通信网络中的多个节点。
44.在公私密钥生成阶段,多个节点分别选取各节点的隐私数据,基于多方安全计算生成公钥以及各节点的私钥。
45.在签名碎片生成和验证阶段,多个节点中第一节点使用第一节点的私钥对消息签名,得到第一节点的签名碎片,并将第一节点的签名碎片发送给多个节点中的第二节点;第二节点对签名碎片的正确性进行验证,在签名碎片正确的情况下,向多个节点发起公钥以及各节点的私钥的重新生成;在签名生成和验证阶段,多个节点重新生成公钥以及各节点的私钥,分别使用各节点的私钥对消息签名,得到各节点的签名碎片,并将各节点的签名碎片发送给第二节点;第二节点根据各节点的签名碎片,生成消息的签名。
46.在其中的一些实施例中,公私密钥生成阶段中生成的公钥以及各节点的私钥设置有第一生存周期,当第一生存周期到达时,执行公私密钥生成阶段以重新生成公钥以及各节点的私钥,且重新生成的公钥以及各节点的私钥仍设置有第一生存周期。
47.在其中的一些实施例中,签名生成和验证阶段中重新生成的公钥以及各节点的私钥设置有第二生存周期,当第二生存周期到达时,返回执行公私密钥生成阶段,其中,第二生存周期大于第一生存周期。
48.在其中的一些实施例中,签名生成和验证阶段中重新生成的公钥以及各节点的私钥未设置生存周期。
49.在其中的一些实施例中,多个节点中的第三节点设置有签名代理,签名生成和验证阶段还包括:第三节点判断消息是否满足预设规则,在消息满足预设规则的情况下,使用第三节点的私钥自动对消息签名,得到第三节点的签名碎片。
50.在其中的一些实施例中,在签名生成和验证阶段中第一节点重新生成私钥时选取的隐私数据与公私密钥生成阶段中第一节点生成私钥时选取的隐私数据不相同。
51.本实施例还提供了一种区块链系统。图3是本实施例提供的区块链系统的结构示意图,如图3所示,该系统包括:区块链31、智能合约模块32以及图3所示的计算机系统33,其中,计算机系统33,用于生成消息的签名和公钥,并将签名和公钥传输到区块链31上;智能合约模块32,用于根据公钥对消息的签名进行验证,并在验证通过的情况下,执行与消息对应的智能合约。
52.应该理解的是,虽然附图的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,其可以以其他的顺序执行。而且,附图的流程图中的至少一部分步骤可以包括多个子步骤或者多个阶段,这些子步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,其执行顺序也不必然是依次进行,而是可以与其他步骤或者其他步骤的子步骤或者阶段的至少一部分轮流或者交替地执行。
53.以上所述仅是本技术的部分实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本技术原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本技术的保护范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献