用于安全弹性分布式生成具有主动安全性的基于椭圆曲线数字签名算法(ECDSA)的数字签名的方法与流程

文档序号:11162054阅读:617来源:国知局
用于安全弹性分布式生成具有主动安全性的基于椭圆曲线数字签名算法(ECDSA)的数字签名的方法与制造工艺

这是2014年4月17日提交的标题为“A Method for Secure and Resilient Distributed Generation of Elliptic Curve Digital Signature Algorithm(ECDSA)Based Digital Signature with Proactive Security”的美国第61/981,191号临时专利申请的非临时申请,在此以引证的方式将该申请的全文并入。

技术领域

本发明涉及用于生成基于椭圆曲线数字签名算法(ECDSA)的数字签名的系统,更具体地涉及用于以分布式方式生成基于ECDSA的数字签名的系统。



背景技术:

数字签名对安全分布式系统的操作以及认证和访问控制是重要的。基于椭圆曲线数字签名算法(ECDSA)的数字签名例如用于确保在线传输数据的完整性,可以用于在线认证数据和实体,并且还用于各种数字货币和金融交易中。

存在描述生成用于安全系统的数字签名的一些以前的方法。在所并入参考文献列表的第15号参考文献中,协议和算法仅考虑被动攻击方且并不提供主动安全性。被动攻击方仅能够监视被损坏的节点,这与恶意攻击方相反,恶意攻击方能够监视被损坏的节点且使得它们如攻击方期望的发送任意消息。主动安全性使得能够在恶劣环境中以安全、分布式的方式存储信息。在第8号参考文献中,协议和算法考虑针对恶意攻击方的阈值n/3并且不提供主动安全性。

由此,持续需要用使数字签名的计算和存储主动化的一组协议,其中在仍然维持数字签名的机密性和正确性的同时更高阈值的服务器可以被损坏或破坏。



技术实现要素:

本发明涉及一种用于生成基于椭圆曲线数字签名算法(ECDSA)的数字签名的系统,更具体地涉及一种用于以分布式方式生成基于ECDSA的数字签名的系统。该系统包括:一个或更多个处理器和存储器,该存储器具有指令,使得在指令被执行时,一个或更多个处理器执行多个操作。在客户端C与一组n个服务器之间初始化Secret-Share协议,其中,所述客户端C在所述一组n个服务器中共享私匙s的一组共享份额。所述一组n个服务器在不重构或揭示所述私匙s的情况下使用所述私匙s的所述一组共享份额来初始化协议以在消息m上生成数字签名。所述一组n个服务器在所述私匙s的各共享份额上定期初始化Secret-Redistribute协议以使所述一组共享份额重新随机化。

在另一个方面中,初始化Secret-Open协议,以向预期接收方揭示私匙s,其中,所述私匙s用于计算所述数字签名。

在另一个方面中,攻击方为了取得所述私匙s,所述攻击方必须破坏所述一组n个服务器中的多个服务器。

在另一个方面中,所述一组n个服务器中多达n/2的阈值t服务器个可以被完全损坏或破坏,同时所述私匙s的机密性和所述数字签名的正确性保持未被破坏。

在另一个方面中,如果所述私匙s的所述一组共享份额中的大部分未被损坏,那么所述一组n个服务器联合恢复任何被损坏的共享份额。

在另一个方面中,被损坏的服务器被恢复为未损坏状态。

在另一个方面中,本发明还包括一种用于使处理器执行这里所述的操作的方法。

最后,在又一个方面中,本发明还包括一种计算机程序产品,该计算机程序产品包括存储在非瞬时计算机可读介质上的计算机可读指令,该计算机可读指令可由具有处理器的计算机执行以使得处理器执行这里所述的操作。

附图说明

本发明的目的、特征以及优点将从本发明的各种方面的以下具体实施方式连同参照以下附图而清晰,附图中:

图1是描绘了根据本发明的原理的、用于生成基于椭圆曲线数字签名算法(ECDSA)的数字签名的系统的部件的框图;

图2是根据本发明的原理的计算机程序产品的例示图;

图3是根据本发明的原理的、客户端将私匙s的共享份额上传到一组服务器的例示图;

图4是根据本发明的原理的、一组服务器在不揭示私匙s的情况下使用服务器对私匙s的共享份额在消息上生成签名的例示图;

图5是根据本发明的原理的、一组服务器定期执行Proactive-Refresh协议以修正可能已经被损坏的任意共享份额的例示图;以及

图6是例示了是根据本发明的原理的、分布式生成具有主动安全性的基于椭圆曲线数字签名算法(ECDSA)的数字签名的流程图。

具体实施方式

本发明涉及一种用于生成基于椭圆曲线数字签名算法(ECDSA)的数字签名的系统,更具体地涉及一种用于以分布式方式生成基于ECDSA的数字签名的系统。

以下描述被提出为使得本领域普通技术人员能够进行并使用本发明并将本发明并入特定应用的环境中。各种修改以及不同应用中的各种使用将对本领域技术人员容易地清晰,并且这里所定义的一般原理可以应用于宽范围的方面。由此,本发明不旨在限于所提出的方面,而是符合与这里所公开的原理和新型特征一致的最宽范围。

在以下具体实施方式中,为了提供本发明的更彻底理解,阐述了大量具体细节。然而,将对本领域技术人员显而易见的是,本发明可以在不必限于这些具体细节的情况下实践。在其他情况下,为了避免使本发明模糊,以框图形式而不是详细示出公知结构和装置。

读者的注意力贯注于与本规范同时提交且与本规范一起对公众审查公开的所有文献,并且此处以引证的方式将所有这种文献的内容并入。本规范(包括任意所附权利要求、摘要以及附图)中所公开的所有特征可以用供相同、等效或类似目的使用的另选特征来替换,除非另外明确叙述。由此,除非另外明确叙述,所公开的各特征仅为通用系列的等效或类似特征的一个示例。

此外,权利要求中未明确叙述用于执行指定功能的“装置”或用于执行特定功能的“步骤”的任何元素不被解释为如35U.S.C第112章节第6段落中指定的“装置”或“步骤”条款。具体地,这里权利要求中“的步骤”或“的动作”的使用不旨在涉及35U.S.C 112第6段落中的规定。

请注意,如果使用,标记左、右、前、后、顶、底、向前、倒退、顺时针以及逆时针仅用于方便目的且不旨在暗示任何特定固定方向。相反,它们用于反映对象的各种部分之间的相对位置和/或方向。由此可见,随着改变本发明,上述标记可以改变它们的定向。

在详细描述本发明之前,首先提供描述中所用的所列举参考文献的列表。接着,提供本发明的各种主要方面的描述。最后,提供本发明的具体细节,以给出特定方面的理解。

(1)所并入参考文献的列表

贯穿本申请并入并列举以下参考文献。为了清晰和方便起见,参考在这里被列出为读者的中心资源。以下参考文献在此犹如被完全包括的以引证的方式并入。参考文献通过如下参考对应的参考文献号来列举在申请中:

1.D.Beaver.Efficient multiparty protocols using circuit randomization.In CRYPTO’91,LNCS 576,pp.420–432,1991.

2.Eli Ben-Sasson,Serge Fehr,and Rafail Ostrovsky.Near-linear unconditionally-secure multiparty computation with a dishonest minority.Cryptology ePrint Archive,Report 2011/629,2011.

3.Zuzana Beerliova-Trubiniova and Martin Hirt.Efficient multi-party computation with dispute control.In TCC,pages 305–328,2006.

4.Ivan Damgard and Jesper Buus Nielsen.Scalable and unconditionally secure multiparty computation.In CRYPTO,pages 572–590,2007.

5.Federal Information Processing Standards Publication.The Digital Signature Standard(DSS)(FIPS 186-4).

6.P.Feldman.A Practical Scheme for Non-Interactive Verifiable Secret Sharing.In Proc.Of the 28th IEEE Symposium on the Foundations of Computer Science,pages 427-437,1987.

7.Steven Goldfeder,Joseph Bonneau,Edward W.Felten,Joshua A.Kroll,Arvind Narayanan,“Securing Bitcoin Wallets via Threshold Signatures”.

8.Ibrahim,M.H.;Ali,I.A.;Ibrahim,I.I.;El-Sawi,A.H.,A robust threshold elliptic curve digital signature providing a new verifiable secret sharing scheme,Circuits and Systems,2003IEEE 46th Midwest Symposium on,vol.1,no.,pp.276,280Vol.1,30-30 Dec.2003.

9.Amir Herzberg,Stanislaw Jarecki,Hugo Krawczyk,and Moti Yung.Proactive secret sharing or:How to cope with perpetual leakage.In CRYPTO,pages 339–352,1995.

10.Don Johnson,Alfred Menezes,Scott Vanstone,The Elliptic Curve Digital Signature Algorithm(ECDSA),In International Journal of Information Security,Volume 1,Issue 1,pages 36-63,2001.

11.Rafail Ostrovsky and Moti Yung.How to withstand mobile virus attacks.In Proceedings of the tenth annual ACM symposium on Principles of distributed computing,pages 51–59.ACM Press,1991.

12.Torben P.Pedersen.Non-interactive and information-theoretic secure verifiable secret sharing.In CRYPTO,volume 576of Lecture Notes in Computer Science,pages 129–140.Springer,1991.

13.David Schultz.Mobile Proactive Secret Sharing.PhD thesis,Massachusetts Institute of Technology,2007.

14.Adi Shamir.How to share a secret.Commun.ACM,22(11):612–613,1979.

15.Hao Wang,Zhongfu Wu,Xin Tan.A New Secure Authentication Scheme Based Threshold ECDSA For Wireless Sensor Network.In Security and Management,pages129-133,2006.

16.Working Draft,American National Standard X9.62-1998Public Key Cryptography For The Financial Services Industry:The Elliptic Curve Digital Signature Algorithm(ECDSA),pgs.7-13,1998.

(2)主要方面

本发明具有三个“主要方面”。第一主要方面为一种用于生成基于椭圆曲线数字签名算法(ECDSA)的数字签名的系统,更具体地为一种用于以分布式方式生成基于ECDSA的数字签名的系统。系统通常为运行软件的计算机系统的形式或“硬编码”指令集的形式。该系统可以并入提供不同功能的各种装置中。第二主要方面为一种通常以软件的形式使用数据处理系统(计算机)操作的方法。第三主要方面为一种计算机程序产品。计算机程序产品通常代表非瞬时计算机可读介质(诸如光存储装置(例如,光盘或数字化通用光盘(DVD))或磁存储装置(诸如软盘或磁带))上所存储的计算机可读指令。另外,计算机可读介质的非限制性示例包括硬盘、只读存储器(ROM)以及闪存存储器。下面将更详细地描述这些方面。

图1中提供了描绘了本发明的系统(即,计算机系统100)的示例的框图。计算机系统100被构造成执行与程序或算法关联的计算、处理、操作和/或功能。在一个方面中,这里所讨论的特定处理和步骤被实现为位于计算机可读存储器单元内且由计算机系统100的一个或更多个处理器执行的一系列指令(例如,软件程序)。当被执行时,指令诸如这里所述的使得计算机系统100执行特定动作并展示特定行为。

计算机系统100可以包括被构造成传递信息的地址/数据总线102。另外,一个或更多个数据处理单元(诸如处理器104(或多个处理器))与地址/数据总线102耦接。处理器104被构造成处理信息和指令。在方面中,处理器104为微处理器。另选地,处理器104可以为不同类型的处理器(诸如并行处理器或现场可编程门阵列)。

计算机系统100被构造成使用一个或更多个数据存储单元。计算机系统100可以包括与地址/数据总线102耦接的易失性存储器单元106(例如,随机存取存储器(“RAM”)、静态RAM、动态RAM等),其中,易失性存储器单元106被构造成存储用于处理器104的信息和指令。计算机系统100还可以包括与地址/数据总线102耦接的非易失性存储器单元108(例如,只读存储器(“ROM”)、可编程ROM(“PROM”)、可擦可编程ROM(“EPROM”)、电可擦可编程ROM(“EEPROM”)、闪速存储器等),其中,非易失性存储器单元108被构造成存储用于处理器104的静态信息和指令。另选地,计算机系统100诸如在“云”计算中可以执行从在线数据存储单元取得的指令。在方面中,计算机系统100还可以包括与地址/数据总线102耦接的一个或更多个接口(诸如接口110)。一个或更多个接口被构造成使得计算机系统100能够与其他电子装置和计算机系统接口连接。由一个或更多个接口实施的通信接口可以包括有线(例如,串行电缆、调制解调器、网络适配器等)和/或无线(例如,无线调制解调器、无线网络适配器等)通信技术。

在一个方面中,计算机系统100可以包括与地址/数据总线102耦接的输入装置112,其中,输入装置112被构造成向处理器100传递信息和命令选择。根据一个方面,输入装置112为可以包括字母数字和/或功能键的字母数字输入装置(诸如键盘)。另选地,输入装置112可以为除了字母数字输入装置之外的输入装置。在方面中,计算机系统100可以包括与地址/数据总线102耦接的光标控制装置114,其中,光标控制装置114被构造成向处理器100传递用户输入信息和/或命令选择。在方面中,光标控制装置114使用诸如鼠标、追踪球、追踪垫、光学追踪装置或触摸屏的装置来实施。尽管有前述内容,但在方面中,光标控制装置114经由来自输入装置112的输入(诸如响应于与输入装置112关联的特定键和键顺序命令的使用)来指导和/或启动。在另选方面中,光标控制装置114被构造成由语音命令来指导或引导。

在方面中,计算机系统100还可以包括与地址/数据总线102耦接的一个或更多个可选计算机可用数据存储装置(诸如存储装置116)。存储装置116被构造成存储信息和/或计算机可执行指令。在一个方面中,存储装置116为诸如磁或光盘驱动器(例如,硬盘驱动器(“HDD”))、软盘、光盘只读存储器(“CD-ROM”)、数字化通用光盘(“DVD”)等的存储装置。依据一个方面,显示装置118与地址/数据总线102耦接,其中,显示装置118被构造成显示视频和/或图形。在方面中,显示装置118可以包括阴极射线管(“CRT”)、液晶显示器(“LCD”)、场发射显示器(“FED”)、等离子体显示器或适于显示用户可识别的视频和/或图形图像以及字母数字字符的任意其他显示装置。

这里所提出的计算机系统100为根据方面的示例计算环境。然而,计算机系统100的非限制性示例不严格限于计算机系统。例如,一个方面规定:计算机系统100代表一种类型的可以根据这里所述的各种方面使用的数据处理分析。而且,还可以实施其他计算系统。实际上,本技术的精神和范围不限于任何单个数据处理环境。由此,在方面中,本技术的各种方面中的一个或更多个操作使用由计算机执行的计算机可执行指令(诸如程序模块)来控制或实施。在一个实施方案中,这种程序模块包括被构造成执行特定任务或实施特定抽象数据类型的例程、程序、对象、部件和/或数据结构。另外,方面规定:本技术的一个或更多个方面通过使用一个或更多个分布式计算环境(诸如任务由借助通信网络链接的远程处理装置来执行的环境或诸如各种程序模块位于包括存储-储存装置的本地和远程计算机存储介质中的环境)来实施。

图2中描绘了具体实施本发明的计算机程序产品(即,存储装置)的例示图。计算机程序产品被描绘为软盘200或光盘202(诸如CD或DVD)。然而,如之前所提及的,计算机程序产品通常代表任何可兼容非瞬时计算机可读介质上所存储的计算机可读指令。如这里关于本发明所用的术语“指令”通常指示要在计算机上执行的一组操作,并且可以代表整个程序或独立、可分离软件模块的部分。“指令”的非限制性示例包括计算机程序代码(源代码或目标代码)和“硬编码的”电子器件(即,被编码到计算机芯片中的计算机操作)。“指令”存储在任意非瞬时计算机可读介质上(诸如存储在计算机的存储器中或软盘、CD-ROM以及闪盘驱动器上)。在任何一种情况下,指令被编码在非瞬时计算机可读介质上。

(3)本发明的具体细节

描述了一种允许一组服务器代表客户端数字地对消息签名的系统。消息使用椭圆曲线数字签名算法(ECDSA)来签名。第6号参考文献中描述了ECDSA。ECDSA签名使用私匙来生成,并且签名使用对应的公匙来验证。使用私匙s在消息m上的签名被表示为ECDSA_s(m)。算法是使得持有公匙的任何人可以容易的验证ECDSA_s(m)为消息m上的签名,但没人可以在不知道s的情况下生成ECDSA_s(m)。

客户端300(计算机硬件或软件)首先如图3所示使用密匙共享算法将他/她的私匙s的共享份额上传至一组服务器302。这被进行,使得攻击方仅在他/她掌握大多数共享份额时才可以掌握私匙s。服务器302然后可以如图4描绘的在不重构或揭示私匙的情况下使用它们的共享份额联合地来在消息402上生成签名400。如图5所示,在协议的过程中,一组共享份额500中的共享份额中的一些可能由于偶然错误或恶意行为二者之一而变得损坏(形成被损坏的共享份额502)。由此,服务器302定期执行Proactive-Refresh协议504,以修正可能已经被损坏的任意共享份额。只要任意给定私匙的大多数共享份额500未被损坏,这就将允许服务器302将被损坏的共享份额502联合恢复为未损坏状态。

描述了允许一组n个服务器凭借以下安全弹性保证以分布式方式生成基于ECDSA的数字签名的算法和协议。n个服务器中多达n/2的阈值(t)(即,t<n/2)个服务器可能被恶意或完全损坏或破坏,而用于生成签名的私匙的机密性将不被破坏。此外,所生成签名的正确性将不被破坏。第10号参考文献中定义了数字签名的正确性。

另外,用于生成ECDSA签名的分布式(密匙共享)私匙被定期刷新,以确保针对移动攻击方的长期安全性(即,协议实施主动安全性保障)。主动安全性还针对恶意攻击方来保障,而不只是针对被动或半诚实攻击方。恶意攻击方能够监视被损坏的节点并使得它们如攻击方期望的发送任意消息。为了本发明的目的,主动安全性意味着在存在可能最终全部损坏节点(或服务器)中的移动攻击方存在时系统是安全的,但在任意给定时间不多于阈值数量可能被损坏。下面将进一步详细描述这些方面中的每一个。

(3.1)初步措施

下面为用于这里所述的协议中的符号表。

令n表示服务器的数量,并且由表示一组服务器。定期重新分配(即,刷新)私匙。相邻重新分配之间的时段称为阶段。同样,第一重新分配之前的时段为阶段,并且最后一次重新分配之后的时段为阶段。令t表示损坏阈值(即,攻击方可在当前阶段期间损坏的服务器的最大数量)。攻击方可能随机适应性地损坏和修复服务器,只要每个阶段损坏的数量不超过阈值。在密匙重新分配期间损坏的任意服务器被认为在两个相邻阶段中损坏。需要在各阶段t<n/2。令Corr表示由要损坏的每一个已知的一组服务器;初始假定

假定具有安全广播通道的同步网络模型。点到点通信将不用于协议描述,但协议的任意实施方案将很可能使用广播协议模仿点到点通道上的广播通道。还假定安全擦除,这意味着各服务器可以以以下这种方式来擦除它的数据:如果攻击方稍后损坏该服务器,则攻击方无法可行地掌握关于被擦除内容的任何信息。

用于根据本发明的原理的系统中的密匙共享方案基于密匙(这里所述的ECDSA情况中的私匙)的共享份额为多项式上的点的沙米尔(Shamir’s)密匙共享方案(针对沙米尔密匙共享方案的描述,请参见第14号参考文献),多项式的常数项为密匙。由d表示用于分配密匙的多项式的次数。因此,已知多项式上的任意d+1个点允许人插值出密匙,但已知d个或更少个点不揭示关于密匙的任何信息。对于存储私匙的多项式,设置d=t。

密匙将使用派得森承诺(第12号参考文献中描述该承诺),并且在一些情况下,费尔德曼承诺来共享(第16号参考文献中描述该承诺)。为了该目的,使q为大质数,并且使g为某一椭圆曲线上的阶q元素,使得离散对数假设适用<g>(其中,<g>为由g生成的组)。此外,令h∈<g>,使得没有服务器302知道h的离散对数。即,没有服务器302知道k∈Zq使得kg=h。如果人希望与多项式u∈Zq[x]共享密匙(即,n(0)为密匙),则辅助多项式v∈Zq[x]也被创建。令αi表示评价点Pi,各服务器Pi将它的密匙的共享份额uαi连同vαi一起接收。令uk表示ux中的系数xk(并且对于vk也是一样)。然后,当密匙被共享时,用于各k的值ukg+vkh(称为派得森承诺)被广播。这意味着u(αi)g+v(αi)h也为公共知识(因为它们可以根据ukg+vkh计算)。这允许服务器验证它们接收的共享份额与由经销商广播的承诺一致。除了辅助多项式为零之外,费尔德曼承诺与派得森承诺相同。

假定各服务器具有公匙加密方案,并且服务器Pi的消息的加密被表示为ENCPi(MESSAGE)。各服务器还具有公匙签名方案,并且消息上Pi的签名被表示为SIGPi(MESSAGE)。RAND用于表示任意随机值。

(3.2)系统概述

系统如图6所示如下操作。客户端C通过用服务器执行Secret-Share协议600(t,C,s,P∪{C},Corr)来在服务器中分配他/她的私匙s的共享份额。在进行该初始设置之后,服务器可以运行Robust-Sig-Gen协议(图6中的Robust-Signature协议602)(t,P,Corr,[s],m)或Client-Sig-Gen协议(t,P,Corr,[s],m)的实例,以在消息m上生成签名。哪些消息将在什么时间签名的问题可以由与客户端的互动来确定,或者可以根据一些预定安排或来自另一个信任系统的触发或信号而发生。

为了使共享份额重新随机化,服务器对私匙的各共享份额[s]定期运行Secret-Redistribute协议604(t,P,Corr,[s]),从而维持所存储值的隐私并确保长期机密性。重新分配将根据一些预定安排(例如,每晚午夜)或响应于任意外部或内部信号或触发(例如,响应于由系统管理员发布的命令)来进行。本发明提供执行这种重新分配的协议和算法;什么时间和为什么执行重新分配可以由各种其他装置来确定,并且全部可以与根据本发明的原理的系统无缝集成。

服务器302定期执行Proactive-Rresh协议504,以修正可能已经被损坏的任意共享份额。最后,初始化Secret-Open协议606,以向预期接收方揭示私匙s,其中,私匙s用于计算数字签名。

(3.3)Robust Signature Generation协议

下面是标准ECDSA签名方案的签名算法(即,该算法在单个服务器上计算,并且在该算法中,不在多个服务器中共享私匙s)的描述。第5号和第10号参考文献中描述了标准ECDSA签名方案。

为了在消息m上生成签名,签名者必须如第5号和第10号参考文献所述的执行如下步骤:

1.计算e=SHA-1(m),并且使用第16号参考文献中的方案转换成整数。

2.选择随机整数k,使得1≤k≤q-1。

3.计算(x1,y1)-k.g。

4.使用第16号参考文献中的方案将x1转换成整数。计算r=x1mod q。如果r=0,则返回到步骤2。

5.计算z=k-1(e+sr)mod q。如果z=0,则返回到步骤2。

6.使用密匙s在消息m上的签名为对(r,z)(即,ECDSAs(m)=(r,z))。

以下协议允许服务器在未重构并揭示私匙的情况下根据私匙的共享来生成ECDSA签名。协议使用下面定义的子协议。

(3.3.1)Robust-Sig-Gen(t,P,Corr,[s],m)

为了用私匙s在(为全部n个服务器所知的)消息m上生成签名,执行以下步骤:

1.各服务器计算e=SHA-1(m),并且使用第16号参考文献中的方案将e转换成整数。

2.n个服务器执行GenPoly(t,P,Corr,1,d),以用派得森承诺生成密匙随机值[v],并且并行地,服务器执行GenPoly(t,P,Corr,1,d)的费尔德曼版本,以用费尔德曼承诺生成密匙随机值[k]。

3.令(x1,y1)表示作为对在GenPoly协议的调用中生成的[k]的共享份额的常系数的承诺的k.g。使用第16号参考文献中的方案将x1转换成整数。

4.设置r=x1mod q。如果r=0,则转到步骤2。

5.服务器计算[vk]←Multiply(t,P,Corr,[v],[k])。

6.服务器运行Secret-Open(t,P,[vk]),以揭示vk。如果vk=0,那么转到步骤2。

7.服务器在本地计算[k-1]=(vk)-1[v]mod q。

8.服务器计算[vk]←Multiply(t,P,Corr,[s],[k-1])。

9.服务器在本地计算[z]=[k-1]e+[w]r,使得所共享的值为z=k-1(e+rs)mod q。

10.服务器运行Secret-Open(t,P,[z]),以揭示z。如果z=0,那么转到步骤2。

11.所共享私匙s下的最终ECDSA签名为ECDSAs(m)=(r,z)。

Robust-Sig-Gen协议的通信复杂度为O(n2)(被测量为广播域元素的数量)。Robust-Sig-Gen协议采用35轮通信(除非具有微不足道的概率)。以下Client-Sig-Gen协议与Robust-Sig-Gen协议的类似在于它允许服务器使用私匙的共享来生成ECDSA签名。不同在于客户端C(服务器代表该客户端C存储私匙)与服务器互动,这允许提高效率。

(3.3.2)Client-Sig-Gen(t,P,Corr,C,[s],m)

为了用私匙s在消息m上生成客户端C的签名,执行以下步骤:

1.客户端C计算e=SHA-1(m),并且使用第16号参考文献中的方法将e转换成整数。

2.客户端向服务器广播e。

3.客户端从zq选择3个随机值a、b以及k≠0,并且计算k-1和c=ab。客户端选择这些值,使得步骤6和步骤11中(分别)定义的值r和z这两者不为零。

4.客户端和服务器执行Secret-Share协议(t,C,s,P U{C},Corr)的4个实例,以生成a、b、c以及k-1的共享份额。如果发现客户端在执行期间损坏,则协议终止。

5.客户端广播k.g=(x1,y1)。使用第16号参考文献中的方案将x1转换成整数。

6.设置r=x1mod q。如果r=0,则协议终止。

7.服务器在本地计算[α]=[s]+[a]和[β]=[k-1]+[b]。

8.服务器并行调用Secret-Open协议(t,P,[α])和Secret-Open协议(t,P,[β])。

9.服务器在本地计算[w]←αβ←α[b]←β[a]+[c]。

10.服务器在本地计算[z]=[k-1]e+[w]r,使得所共享的值为z=k-1(e+rs)mod q。

11.服务器运行Secret-Open(t,P,[z]),以揭示z。如果z=0,则协议终止。

12.所共享私匙s下的最终ECDSA签名为ECDSAs(m)=(r,z)。

Client-Sig-Gen协议的通信复杂度为O(n)。如果客户端未被损坏,则采取7轮通信

(3.4)密匙共享、重新分配以及公开

使用来自美国第14/207,321号专利申请的Secret-Share协议、Genpoly协议、Secret-Redistribute协议以及Secret-Open协议的修改版本,在此以引证的方式犹如这里完全阐述的将该申请并入。这些将实施属于密匙共享的基本任务。为完整起见,下面概述这些协议的细节。

密匙s的共享由[s]来表示。注意,服务器可以通过对密匙的共享执行对应的操作来在本地对密匙执行仿射操作。比如,假设密匙已经被共享,并且服务器希望对于一些公开已知的常数计算的共享份额。将服务器Pi的共享份额s(j)写为Pi可以将他r的共享份额ri计算为如果所有服务器在本地执行该操作,则该操作被写为因为使用派得森承诺,所以还必须对于辅助多项式进行这些操作,并且对各多项式的承诺执行对应的操作。

(3.4.1)密匙共享

以下协议允许经销商PD使用派得森承诺共享密匙s。还描述了使用费尔德曼承诺的协议的变体,该变体等效于辅助多项式为零的派得森承诺。每当调用该协议(或下面的GenPoly协议)时,假定使用派得森版本,除非明确叙述使用费尔德曼版本。

Secret-Share(t,PD,s,P,Corr)

1.共享份额/承诺分配

1.1PD拾取随机度d-1多项式并设置PD还拾取随机度d多项式v(x)=v0+v1x+…+vdxd。如果这是协议的费尔德曼版本,则需要v为全零多项式。

1.2PD对于各k=0,…,d计算∈k=ukg+vkh,并且广播

以及

2.错误检测

2.1各对由PD发送的消息进行解密,以找到u(αi),v(αi)并验证如果这是协议的费尔德曼版本,则Pi还验证v(αi)=0。

2.2在步骤2.1中检测到错误的任意广播和

2.3对于步骤2.2中进行的各适当签名的指控(来自服务器Pi),PD广播D,defense,i,[u(αi),v(αi)],RANDi),其中,RANDi为用于在步骤1.2中加密Pi的消息的随机性。

2.4各服务器检查,以看看步骤2.3中所广播的防御是否正确(即,良好形成防御,对在使用给定随机性时加密成步骤1.2中广播的同一消息,并且对通过步骤2.1中的检查)。对于用正确防御驳回的各指控,将控告者添加到Corr。如果没有正确驳回任何指控,则将PD添加到Corr。如果未发现PD损坏,则协议成功终止。

Secret-Share协议的通信复杂度为O(n)个域元素。Secret-Share协议采用三轮通信。可以在不影响轮复杂度的情况下并行运行Secret-Share协议的多个实例。注意,如果经销商损坏,则协议不必成功终止。

(3.4.2)生成随机多项式

使V为具有n行和n-t列的范特蒙德矩阵,并且使M=VT。假设x为坐标中的n-t个具有一致的随机分配且另外t个坐标具有独立于n-t个坐标的随机分配的n维向量。第4号参考文献中示出:在这些假设下,Mx的所有坐标具有一致的随机分配。假定存在对于协议的各阶段固定的公开已知M。

下面描述了一种用于使用派得森承诺并行创建个随机多项式的协议。与Secret-Share协议相同,还描述了费尔德曼版本。该协议生成次数D的多项式。注意,人可以使D≠d。

GenPoly(t,P,Corr,D)

1.建议分配

1.1定义各服务器生成具有的个随机多项式书写(并且用于γ(k)i的系数类似地为)。如果这是协议的费尔德曼版本,则需要各γ(k)i为全零多项式。

1.2各服务器计算然后,Pi广播和

1.3将在之前步骤中不产生适当签名的消息的各服务器添加到Corr。

2.错误检测

2.1各服务器对于在之前步骤中接收的各对检查如果这是协议的费尔德曼版本,则Pi还检查该

2.2如果Pi用对在之前步骤中检测到错误,则他广播和Pi对于各Pm广播指控不多于一次,但每k可以存在多于一个指控。

2.3如果在之前步骤中指控Pi,则Pi将他(宣称的)值对连同用于在步骤1.2中加密Pi的随机性RANDi,m,k一起广播:

2.4各服务器检查,以看看步骤2.3中所广播的防御是否正确(即,良好形成防御,对在使用给定随机性时加密成步骤1.2中广播的同一消息,并且对通过步骤2.1中的检查)。对于用正确防御驳回的各指控,将控告者添加到Corr。对于未正确驳回的各指控,将所指控的服务器添加到Corr。

3.本地共享操纵

对于各服务器和各k,将定义为全零多项式。n个多项式中的各批次k将被如下转换成n-t个多项式的批次:

γ(k)同样用于构建用于R(s)的辅助多项式。各服务器在本地计算用于这些多项式的派得森(或费尔德曼)承诺。输出为一组共享份额连同对应辅助多项式的共享份额。

GenPoly的通信复杂度为个域元素(假定D=O(n))。GenPoly采取三轮通信。注意,即使在所生成多项式的次数不同,也可以并行调用GenPoly协议的多个实例。

(3.4.3)密匙重新分配

以下协议允许服务器重新分配密匙。这重新随机化共享,使得旧共享份额无法与新共享份额组合,以掌握密匙(由此提供针对移动攻击方的安全)。另外,密匙重新分配允许服务器修正它们持有的、可能已经被攻击方改变的共享份额。

Secret-Redistribute(t,P,Corr,[s])

假定密匙s已经与多项式u和辅助多项式v(都为次数d)正确地共享,并且这些多项式的派得森承诺为P中的全部服务器所知。

1.多项式生成

并行调用GenPoly(t,P,Corr,n+1,d-1),以分别生成Q和具有辅助多项式γ的次数为d-1的以及Q的第k个系数为qk,对于R(j)、γ、ζ(j)也是一样。

2.承诺转移

2.1各广播用于旧密匙共享份额多项式的承诺(即,和)。

2.2各Pi通过支持大多数来确定用于之前步骤中所广播的承诺的正确值;Pi因此更新它的承诺。

3.共享份额转移和插值

3.1各Pi计算θi,j=u(αi)+αiQ(αi)+(αij)R(j)i)和φi,j=v(αi)+αiγ(αi)+(αij(j)i),并且广播和思想是对于Pj,服务器用多项式xQ(x)+(x-αj)R(j)x遮蔽u,并且对于v也是一样。

3.2各Pi考虑到公开已知的派得森承诺检查步骤3.1中所广播的值是否正确。即,Pi检查是否

3.3将新共享份额多项式定义为u’(x)=u(x)+xQ(x),并且类似地新辅助多项式为v’(x)=v(x)+xγ(x)。因为(x-αj)R(j)x在x=αj时估计为零,所以Pi可以根据由服务器发送给他的u’(x)+(x-αj)R(j)x上的点推断u’(αj)(并且对于v’(αj)也是一样)。因此各Pj使用通过步骤3.2中的检查的全部共享份额来插值出他的新共享份额u’(αj)以及v’(αj)。服务器使用对u、Q、v以及γ公开已知的承诺计算对u’和v’的承诺。

4.数据擦除

各Pi将它们对u、Q、v以及γ的共享份额与各R(j)和ζ(j)连同对应的承诺一起擦除,并且设置Corr=φ。

Secret-Redistribute协议的通信复杂度为O(n2)个域元素。Secret-Redistribute协议采取6轮通信。

(3.4.4)密匙公开

以下协议允许服务器公开已经用派得森承诺共享的密匙。

Secret-Open(t,P,[s])

假定密匙s已经与多项式u和辅助多项式v(都为次数d)共享。如果u的第k个系数为uk(并且对于vk也是一样),那么假定用于各k=0,…,d的派得森承诺∈k=ukg+vkh是公开已知的。

1.各服务器Pi广播他的共享份额和

2.各服务器对于之前步骤中所接收的各点对u(αj),v’(αj)检查

3.各服务器使用通过步骤2中的检查的全部点来插值出密匙s=u(0)。

Secret-Open协议的通信复杂度为O(n)个域元素。Secret-Open协议采取一轮通信。可以在仍然仅采取一轮通信的同时并行调用Secret-Open协议的多个实例。

(3.5)乘法

所共享密匙的乘法三倍数需要以可验证方式来生成。第4号参考文献中用于生成乘法三倍数的协议将随机数r的次数d共享连同同一值的次数2d共享一起使用。使用2d共享对于根据本发明的原理的协议将成问题,因此相反使用两个随机共享[r]和[s],并且当想要r的次数2d共享时,服务器在本地计算[r]+xd[s]。

作为来自美国第14/207,483号专利申请(在此以引证的方式犹如这里完全阐述的将该申请并入)的协议的修改版本的以下协议Multiplication-Triple(t,P,Corr,[a],[y],)使用共享份额[a],[y],来生成(正确的)共享份额[b]和[c],使得c=ab。

Multiplication-Triple(t,P,Corr,[a],[y],)

在下文中,使用用于共享份额由对应小写字母表示的密匙的多项式的大写字母(即,A(0)=a,R(i)(0)=r(i)等)。辅助多项式将具有上划线(例如,A的辅助多项式为)。对于各服务器并行执行以下步骤。

1.生成被乘数

Pi随机选择两个值b(i)和然后并行调用Secret-Share(t,Pi,b(i),P,Corr)和Secret-Share(t,Pi,P,Corr)。用于共享份额b(i)的多项式由B(i)来表示(辅助多项式为),并且用于共享份额的多项式由来表示(辅助多项式为)。如果Pi在调用Secret-Share时被添加到Corr,那么对于Pi不执行以下步骤。

2.公开被遮蔽的乘积

2.1各服务器将[a][b(i)]+[r(i)]+xd[s(i)]和[y]的共享份额连同对应的辅助多项式的共享份额一起广播。不使用[y]的共享,直到步骤

5.3为止。在这里简单地广播[y]的共享份额,以降低轮复杂度。

2.2 Pi对于之前步骤中所广播的各(θjj)检查唤回Pi可以使用公开已知的承诺计算对a、r(i)以及s(i)的派得森承诺。

2.3对于未通过之前步骤中的检查的任何对(θjj),Pi广播和其中,RANDi,j为用于在步骤1中调用Secret-Share时加密Pj的共享份额的随机性。

2.4如果Pi广播针对Pj的正确指控(即,值在使用给定随机性时加密成在步骤1中调用Secret-Share时发送的同一消息,并且这些值不对应于步骤2.1中所广播的值(θjj)),那么将j添加到Corr。如果Pi广播针对Pj的错误指控,那么将Pi添加到Corr。

3.揭示损坏服务器的共享份额

3.1服务器调用GenPoly(t,P,Corr,3n,d-|Corr|)的一个实例(即,不对于各Pi运行该步骤,而是对于全部Pi运行一次)。这生成具有辅助多项式的多项式

3.2由和来定义多项式各服务器Pj广播和

3.3与之前步骤并行,Pi随着广播

3.4各服务器对于步骤3.2中所广播的各对检查它对应于公开已知的派得森承诺。通过检查的共享份额用于将属于Corr中的服务器的共享[a]、[r(i)]以及[s(i)]连同之前步骤中所广播的共享份额一起插值,这些用于计算损坏服务器ab(i)+r(i)的共享。

4.步骤2和步骤3还被执行为分配并检查的共享。这些步骤的两个执行要并行执行。

5.检查乘法三倍数

5.1各服务器插值步骤2.1中所广播的、未在Corr中全部服务器的共享份额和步骤3.4中所计算的、Corr中的服务器的共享份额的D(i)=ab(i)+r(i)

5.2各服务器在本地计算

5.3服务器插值对应于承诺的、来自步骤2.1中所广播的共享的y。

5.4调用以获得

5.5调用以获得

5.6如果z(i)≠0,那么将Pi添加到Corr。

定义[b]=Σ[b(i)]和[c]=Σ[c(i)],其中,在所有i上求和,使得服务器在本地(随着它们的派得森承诺)计算这些共享,并且乘法三倍数被当作([a],[b],[c]),c=ab。

Multiplication-Triple协议的通信复杂度为O(n2)个域元素。Multiplication-Triple协议采取11轮通信。

以下协议在给定x的共享份额和y的共享份额的情况下计算xy的共享份额。该协议将Multiplication-Triple协议用作子协议,并且采用比弗乘法技术。第1号文献参考中描述了比弗乘法技术。乘法被用作Robust-Sig-Gen协议中的子协议。

Multiply(t,P,Corr,[x],[y])

1.服务器调用GenPoly(t,P,Corr,2+4n,d),以生成随机值的2+4n个共享份额。

2.服务器将之前步骤中所生成的2+4n个随机共享份额用作输入来调用Multiplication-Triple;将输出三倍数表示为([a],[b],[c]),c=ab。

3.服务器在本地计算[α]=[x]+[a]和[β]=[y]+[b]。

4.并行调用Secret-Open(t,P,[α])和Secret-Open(t,P,[β])。

5.服务器在本地将协议的输出计算为[xy]=αβ-α[b]-β[a]+[c]。

Multiply协议的计算复杂度为O(n2)个域元素。Multiply协议采取15轮通信。

因为根据本发明的原理以分布式方式计算ECDSA签名随着攻击方为了取得用于计算数字签名或影响其计算的私匙而必须破坏多个服务器来消除单个错误/破坏点(即,单个服务器),所以保证显著提高的安全性。另外,因为在之前周期中从服务器获得的全部信息在随着生成钥匙的新随机化共享而执行主动刷新周期时不相关,所以这种破坏必须发生在两个主动刷新周期之间。这些新共享份额无法与旧共享份额一起用于重构私匙。

在FEDERAL INFORMATION PROCESSING STADARDS PUBLICATION,FIPS PUB186-4:Digital Signature Standard(DSS)(参见第5号参考文献)中标准化的ECDSA签名用于生成确保所传输再现数据的完整性的数字签名,可以用于在线数据和实体认证,并且还用于各种数字货币和金融交易(例如,比特币、莱特币、瑞波币以及其他数字货币)中。本发明由此具有可以应用本发明的一大组应用。

比如,公司可以使用本发明来设计并实施对因特网使能/连接车辆的远程访问。接近车辆的个人可以在没有破坏他们私匙(该私匙可以以分布式方式存储在用户的移动装置、安全令牌和/或后端服务器)的情况下这样做。如果用户的装置或后端服务器或其算子被破坏,则将不揭示私匙。需要用于认证的私匙将保证没有适当访问的个人将不能访问车辆。除了私匙以外,还可以以分布式方式存储生物识别(例如,指纹、手掌静脉扫描),并且基于ECDSA的数字签名和生物识别数据这两者可以用于认证。

另外,未来连接的车辆可能在它们的操作中需要公匙证书。制造商将需要生成这种证书并将它们加载到车辆中。这些证书必须由必须安全存储的制造商的私匙(或多个钥匙)来签名。根据本发明的原理的系统将允许制造商和/或其供应商保护私匙并以分布式方式计算这种签名。使用密匙共享的私匙有效执行分布式计算的能力是保护连接车辆的未来基础设施的非常重要的步骤。

进一步地,公司可以将这里所述的系统用于访问非常灵敏设施的设施。这种设施可能不希望存储可以访问特定房间的个人的列表,诸如灵敏的被分隔的信息设施(SCIF)。本发明将仅允许被授权用户在不将用户的整个识别信息和私匙存储在设施处的情况下访问这种设施。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1