后量子签名设施的状态同步的制作方法

专利查询4月前  34

1.本文描述的主题一般涉及计算机安全的领域,并且更具体地涉及用于后量子密码安全基于散列的签名的代码签名工具,包括但不限于扩展默克尔签名方案(xmss)和leighton/micali(雷顿/米卡利)签名(lms)基于散列的签名和验证算法。
背景技术
::2.现有的公共密钥数字签名算法(诸如rivest-shamir-adleman(李维斯特-沙米尔-阿德尔曼)(rsa)和椭圆曲线数字签名算法(ecdsa))预计不能基于算法(诸如使用量子计算机的shor(肖尔)算法)针对暴力攻击进行保护。因此,密码学研究界和各种标准机构都在努力定义用于针对量子计算机进行保护的算法的新标准。3.因此,管理后量子签名方案的适当应用的技术可以在例如基于计算机的通信系统和方法中找到效用。附图说明4.参照附图描述详细描述。5.图1a和1b分别是一次性基于散列的签名方案和多次基于散列的签名方案的示意性图示。6.图2a-2b分别是一次性签名方案和多次签名方案的示意性图示。7.图3是根据一些示例的签名设备和验证设备的示意性图示。8.图4a是根据一些示例的默克尔树结构的示意性图示。9.图4b是根据一些示例的默克尔树结构的示意性图示。10.图5是根据一些示例的用于实现签名算法的架构中的计算块的示意性图示。11.图6a是根据一些示例的用于实现签名算法中的签名生成的架构中的计算块的示意性图示。12.图6b是根据一些示例的用于实现验证算法中的签名验证的架构中的计算块的示意性图示。13.图7是根据一些示例的用于实现后量子签名设施的状态同步的架构中的计算块的示意性图示。14.图8是图示根据一些示例的用于实现后量子签名设施的状态同步的方法中的操作的流程图。15.图9是图示根据一些示例的用于实现后量子签名设施的状态同步的方法中的操作的流程图。16.图10是根据一些示例的可以适于实现硬件加速的计算架构的示意性图示。具体实施方式17.本文描述的是用于实现有状态的基于散列的签名的稳健的状态同步的示例性系统和方法。在以下描述中,阐述了许多具体细节以提供对各种示例的透彻理解。然而,本领域技术人员应理解,可以在没有具体细节的情况下实践各种示例。在其他情况下,没有详细说明或描述众所周知的方法、过程、组件和电路,以免混淆示例。18.如上文简要描述的,现有的公共密钥数字签名算法(诸如rivest-shamir-adleman(rsa)和椭圆曲线数字签名算法(ecdsa))预计不能基于算法(诸如使用量子计算机的shor(肖尔)算法)针对暴力攻击进行保护。另一方面,基于散列的签名预期承受量子计算机的攻击。基于散列的签名方案的一个示例是扩展默克尔签名方案(xmss)。如本文所使用的,术语xmss应指代xmss方案和xmss-mt方案二者。19.xmss签名过程使用诸如温特尼茨一次性签名(wots)或其派生物(例如,wots+)的一次性签名方案结合安全散列算法(诸如sha2-256)作为主要的底层散列函数来实现基于散列的签名方案(sha)。在一些示例中,xmss签名/验证方案还可以使用sha2-512、sha3-shake-256或sha3-shake-512中的一种或多种作为安全散列函数。xmss特定的散列函数包括伪随机函数(prf)、链散列(f)、树散列(h)和消息散列函数(hmsg)。如本文所使用的,术语wots应指代wots签名方案和/或衍生方案,诸如wots+。20.leighton/micali签名(lms)方案是另一种基于散列的签名方案,其使用leighton/micali一次性签名(lm-ots)作为一次性签名构建块。lms签名基于sha2-256散列函数。21.xmss签名过程包括三个主要操作。第一个主要操作接收输入消息(m)和私有密钥(sk),并利用一次性签名算法(例如,wots+)生成对公共密钥(pk)进行编码的消息代表(m')。在128位后量子安全实现方式中,输入消息m经受散列函数,并且然后被划分成67个消息分量(每个为n字节),每个消息分量经受散列链函数以生成数字签名的对应67个分量。每个链函数调用一系列底层安全散列算法(sha)。22.第二个主要操作是l树计算,其组合wots+(或wots)公共密钥分量(每个n字节)并产生单个n字节值。例如,在128位后量子安全性中,有67个公共密钥分量,每个分量调用在输入块上执行的底层安全散列算法(sha)。23.第三个主要操作是树散列操作,它构建默克尔树。在xmss验证中,作为签名的一部分提供的认证路径和l树操作的输出由树散列操作处理以生成默克尔树的根节点,该根节点应对应于xmss公共密钥。对于具有128位后量子安全性的xmss验证,遍历默克尔树包括执行安全散列操作。在xmss验证中,将树散列操作的输出与已知公共密钥进行比较。如果它们匹配,则接受签名。相反,如果它们不匹配,则拒绝签名。24.所有ots算法和构建在ots技术上的许多基于散列的签名方案的一个重要限制是,使用任何单个私有密钥多于一次使攻击者能够伪造方案中的签名。因此,在持续集成/持续交付(ci/cd)软件开发方法中常见的实现代码的自动签名的系统必要的是,保证hbs签名密钥的单次使用。此外,从可能造成业务连续性中断的设备故障或环境条件中的恢复以保持保证每个私有密钥单次使用的方式被处理。自动签名设施的设计和构造必须考虑到正常操作以确保hbs签名密钥只被使用一次,并且考虑到可能中断hbs私有密钥的使用的正常流程或序列的异常或灾难状况。25.后量子密码学概述后量子密码学(也称为“量子证明”、“量子安全”、“量子抗性”或简称为“pqc”)采用了一种对密码学的未来主义和现实主义方法。它让负责密码学的人和终端用户准备好知道密码学已经过时了;相反,它需要演进以能够成功地使演进的计算设备进入量子计算和后量子计算。26.众所周知,密码学允许保护在个人和实体之间在线通信并使用各种网络存储的数据。这种数据通信可以范围从发送和接收电子邮件、在线购买商品或服务、使用网站访问银行或其他个人信息等。27.在处理量子计算时,传统密码学及其对困难数学场景的典型分解和计算可能无关紧要。这些数学问题,诸如离散对数、整数分解、和椭圆曲线离散对数等,不能承受来自强大的量子计算机的攻击。尽管任何后量子密码学都可以建立在当前密码学的基础上,但新颖的方法将需要足够智能、快速和精确,以抵抗和击败量子计算机的任何攻击。28.图1a和1b分别图示了一次性基于散列的签名方案和多次基于散列的签名方案。如前所述,基于散列的密码学基于比如lamport签名、默克尔签名、扩展默克尔签名方案(xmss)和sphinc方案等的密码系统。随着量子计算的出现及其增长的预期,一直存在关于量子计算可能带来的各种挑战以及如何利用密码学领域来应对这些挑战的担心。29.正在探索以应对量子计算挑战的一个领域是基于散列的签名(hbs),因为这些方案已经存在很长时间并且拥有应对量子计数和后量子计算挑战所必需的基本成分。hbs方案被认为是与快速平台安全引导一起工作的快速签名算法,其被认为是最能抵抗量子和后量子计算攻击的。30.例如,如关于图1a所示,示出了使用默克尔树以及一次性签名(ots)方案100的hbs方案,诸如使用私有密钥来对消息进行签名和对应的公共密钥用于验证ots消息,其中私有密钥仅对单个消息进行签名。31.类似地,如关于图1b所示,示出了另一种hbs方案,其中该方案涉及多次签名(mts)方案150,其中私有密钥可以对多个消息进行签名。32.图2a和2b分别图示了一次性签名方案和多次签名方案。继续图1a的基于hbs的ots方案100和图1b的mts方案150,图2a图示了温特尼茨ots方案200,它由斯坦福大学数学系的罗伯特温特尼茨提供,公布为hw(x)而不是h(x)|h(y),而图2b分别图示xmssmts方案250。33.例如,图2a的wots方案200提供将消息散列和解析到m,其具有[0,1,2,…,15]之间的67个整数,诸如私有密钥sk,205,签名s,210和公共密钥pk,215,其中每个具有各自32字节的67个分量。[0034]图2b图示了xmssmts方案250,其允许图2a的wots方案200和具有xmss默克尔树的xmss方案的组合。如先前关于图2a所讨论的,wot方案200基于一次性公共密钥pk215,其具有各自32字节的67个分量,然后其通过l树压缩算法260以提供经wots压缩的pk来在xmss方案255的xmss默克尔树中占据一席之地。设想到xmss签名验证可以包括计算wots验证和校验以确定经重构的根节点是否与xmss公共密钥匹配,诸如根节点=xmss公共密钥。[0035]后量子密码学图3是根据一些示例的包括第一设备310和第二设备350的安全环境300的高级架构的示意性图示。参考图3,第一设备310和第二设备350中的每一个可以体现为能够执行本文所述的功能的任何类型的计算设备。例如,在一些实施例中,第一设备310和第二设备350中的每一个可以体现为膝上型计算机、平板计算机、笔记本、上网本、超级本tm、智能电话、蜂窝电话、可穿戴计算设备、个人数字助理、移动互联网设备、台式计算机、路由器、服务器、工作站和/或任何其他计算/通信设备。[0036]第一设备310包括一个或多个处理器320和用于存储私有密钥324的存储器322。(多个)处理器320可以体现为能够执行本文所述的功能的任何类型的处理器。例如,(多个)处理器320可以体现为(多个)单核或多核处理器、数字信号处理器、微控制器或其他处理器或处理/控制电路。类似地,存储器322可以体现为能够执行本文所述的功能的任何类型的易失性或非易失性存储器或数据存储装置。在操作中,存储器322可以存储在第一设备310的操作期间使用的各种数据和软件,诸如操作系统、应用、程序、库和驱动器。存储器322通信地耦合到(多个)处理器320。在一些示例中,私有密钥324可以驻留在安全存储器中,所述安全存储器可以是存储器322的一部分或可以与存储器322分离。[0037]第一设备310还包括签名设施330,其包括一个或多个硬件安全模块331,所述一个或多个硬件安全模块331包括存储器322、签名逻辑和验证逻辑336。散列逻辑332被配置为散列(即,将散列函数应用于)消息(m)以生成消息m的散列值(m')。散列函数可以包括但不限于安全散列函数,例如安全散列算法sha2-256和/或sha3-256等。sha2-256可能符合和/或兼容由美国国家标准与技术研究院(nist)于2012年3月发布的题为:“安全散列标准(shs)”的联邦信息处理标准(fips)出版物180-4,和/或本标准的更新和/或相关版本。sha3-256可能符合和/或兼容由nist在2015年8月发布的题为:“sha-3标准:基于排列的散列和可扩展输出功能”的fips出版物202和/或本标准的更新和/或相关版本。[0038]签名逻辑332可以被配置为生成要传送的签名(即传送的签名)和/或验证签名。在其中第一设备310是签名设备的情况下,传送的签名可以包括数量l个传送的签名元素,其中每个传送的签名元素对应于相应的消息元素。例如,对于每个消息元素mi,签名逻辑332可以被配置为对私有密钥sk的每个私有密钥元素ski执行所选择的签名操作相应次数,所述相应次数与包括在消息代表m'中的每个消息元素mi的值相关。例如,签名逻辑332可以被配置为将所选择的散列函数应用于对应的私有密钥元素ski,mi次。在另一个示例中,签名逻辑334可以被配置为将所选择的链函数(包含散列函数)应用于对应的私有密钥元素ski,mi次。因此,所选择的签名操作可以对应于所选择的基于散列的签名方案。[0039]基于散列的签名方案可以包括但不限于温特尼茨(w)一次性签名(ots)方案、增强的温特尼茨ots方案(例如,wots+)、默克尔多次签名方案、扩展的默克尔签名方案(xmss)和/或扩展的默克尔多树签名方案(xmss-mt)等。散列函数可以包括但不限于sha2-256和/或sha3-256等。例如,xmss和/或xmss-mt可以符合或兼容于一个或多个互联网工程任务组(ietf.rtm)信息草案互联网注释,例如由互联网研究任务组、ietf.rtm的加密论坛研究组于2015年4月发布的草案draft-irtf-cfrg-xmss-hash-based-signatures-00),题为“xmss:扩展的基于散列的签名”,和/或本信息草案的更新和/或相关版本,诸如2016年6月发布的草案draft-irtf-cfrg-xmss-hash-based-signatures-06。[0040]温特尼茨ots被配置为生成签名并利用散列函数验证接收到的签名。温特尼茨ots还被配置为使用私有密钥以及因此每个私有密钥元素ski一次。例如,温特尼茨ots可以被配置为将散列函数应用于每个私有密钥元素,mi或n-mi次以生成签名,并将散列函数应用于每个接收到的消息元素n-mi'或mi'次以生成对应的验证签名元素。默克尔多次签名方案是一种基于散列的签名方案,它利用ots并且可以使用公共密钥多于一次。例如,默克尔签名方案可以利用温特尼茨ots作为一次性签名方案。wots+被配置为利用散列函数的族和链函数。[0041]xmss、wots+和xmss-mt是利用链函数的基于散列的签名方案的示例。每个链函数被配置为封装对散列函数的多个调用,并且可以进一步执行附加操作。对链函数中包含的散列函数的调用的数量可以是固定的。链函数可以提高相关联的基于散列的签名方案的安全性。如本文所述,基于散列的签名平衡可以类似地平衡链函数操作。[0042]密码逻辑340被配置为代表签名设备310执行各种密码和/或安全功能。在一些实施例中,密码逻辑340可以体现为密码引擎、签名设备310的独立安全协处理器、并入(多个)处理器320中的密码加速器,或独立的软件/固件。在一些实施例中,密码逻辑340可以生成和/或利用各种密码密钥(例如,对称/非对称密码密钥)以促进加密、解密、签名和/或签名验证。此外,在一些实施例中,密码逻辑340可以促进通过通信链路与远程设备建立安全连接。还应当理解,在一些实施例中,密码模块340和/或第一设备310的另一个模块可以建立可信执行环境或保护本文所述的一部分数据可以存储在其内的飞地(enclave)和/或可以执行其中本文中描述的许多功能。[0043]在如上所述生成签名之后,消息m和签名然后可以由第一设备310例如经由通信逻辑342经由网络通信链路390发送到第二设备350。在实施例中,消息m在传输之前可能未被加密。在实施例中,消息m在传输之前可能被加密。例如,消息m可以由密码逻辑340加密以产生经加密的消息。该消息可由通信逻辑382接收并由密码逻辑380解密。[0044]第二设备350也可以包括一个或多个处理器360和用于存储私有密钥364的存储器362。如上所述,(多个)处理器360可以体现为能够执行本文所述的功能的任何类型的处理器。例如,(多个)处理器360可以体现为(多个)单核或多核处理器、数字信号处理器、微控制器或其他处理器或处理/控制电路。类似地,存储器362可以体现为能够执行本文所述的功能的任何类型的易失性或非易失性存储器或数据存储装置。在操作中,存储器362可以存储在第二设备350的操作期间使用的各种数据和软件,诸如操作系统、应用、程序、库和驱动器。存储器362通信地耦合到(多个)处理器360。[0045]在一些示例中,可以在先前的交换中将公共密钥364提供给验证器设备350。公共密钥pk被配置为包含数量l个公共密钥元素,即pk=[pk1,…,pkl]。公共密钥364可以被存储到例如存储器362。[0046]第二设备350还包括签名设施370,其包括一个或多个硬件安全模块371,所述一个或多个硬件安全模块371包括散列逻辑372、签名逻辑和验证逻辑376。如上所述,散列逻辑372被配置为散列(即,将散列函数应用于)消息(m)以生成散列消息(m')。散列函数可以包括但不限于安全散列函数,例如安全散列算法sha2-256和/或sha3-256等。sha2-256可能符合和/或兼容由美国国家标准与技术研究院(nist)于2012年3月发布的标题为:“安全散列标准(shs)”的联邦信息处理标准(fips)出版物180-4,和/或本标准的更新和/或相关版本。sha3-256可能符合和/或兼容由nist在2015年8月发布的题为:“sha-3标准:基于排列的散列和可扩展输出功能”的fips出版物202和/或本标准的更新和/或相关版本。[0047]在其中第二设备是验证设备的情况下,硬件安全模块371被配置为至少部分地基于从第一设备接收的签名并且至少部分地基于接收到的消息代表(m')而生成验证签名。例如,硬件安全模块371可以被配置为执行相同的签名操作,即,将与硬件安全模块331的散列逻辑332所应用的相同的散列函数或链函数应用于每个接收到的消息元素n-mi(或mi)次以产生验证消息元素。然后可以确定验证签名(即l个验证消息元素中的每一个)是否对应于对应的公共密钥元素pki。例如,验证逻辑376可以被配置为将每个验证消息元素与对应的公共密钥元素pki进行比较。如果每个验证消息元素匹配对应的公共密钥元素pki,则验证对应于成功。换言之,如果所有验证消息元素匹配公共密钥元素pk1、…、pkl,则验证对应于成功。如果任何验证消息元素不匹配对应的公共密钥元素pki,则验证对应于失败。[0048]如下文更详细描述的,在一些示例中,第一设备310的硬件安全模块331包括一个或多个加速器338,其与散列逻辑332、签名逻辑334和/或验证逻辑336协作以加速认证操作。类似地,在一些示例中,第二设备310的硬件安全模块371包括一个或多个加速器378,其与散列逻辑372、签名逻辑374和/或验证逻辑376协作以加速认证操作。在以下段落中并参考附图描述了加速器的示例。[0049]环境300的各种模块可以体现为硬件、软件、固件或其组合。例如,环境300的各种模块、逻辑和其他组件可以形成第一设备310的(多个)处理器320或第二设备350的(多个)处理器360或设备的其他硬件组件的一部分或以其他方式由其建立。这样,在一些实施例中,环境300的模块中的一个或多个可以体现为电子设备的电路或集合(例如,认证电路、密码电路、通信电路、签名电路和/或验证电路)。此外,在一些实施例中,说明性模块中的一个或多个可以形成另一个模块的一部分,和/或说明性模块中的一个或多个可以独立于彼此。[0050]图4a是根据一些示例的图示签名操作的默克尔树结构的示意性图示。参考图4a,xmss签名操作需要使用来自每个叶wots节点410a的本地公共密钥来构造默克尔树400a以生成全局公共密钥(pk)420a。在一些示例中,可以离线计算认证路径和根节点值,使得这些操作不会限制性能。每个wots节点410a具有唯一的秘密密钥“sk”,其用于对消息进行仅一次签名。xmss签名由为输入消息生成的签名和中间树节点的认证路径组成以构造默克尔树的根。[0051]图4b是根据一些示例的在验证期间的默克尔树结构400b的示意性图示。在验证期间,输入消息和签名用于计算wots节点的本地公共密钥420b,其进一步用于使用认证路径计算树根值。成功的验证将计算出的树根值匹配到签名实体所共享的公共密钥pk。wots和l树操作分别占xmss签名/验证延迟的平均82%和16%,从而限定了认证系统的整体性能。本文描述的是各种预计算技术,其可以被实现以加速wots和l树操作,从而提高xmss性能。所述技术适用于其他散列选项,并且良好地扩展用于软件和硬件实现方式二者。[0052]图5是根据一些示例的用于实现签名算法的架构500中的计算块的示意性图示。参考图5,wots+操作涉及16个sha2-256散列函数的67个平行链,每个链都以秘密密钥sk[66:0]作为输入。链中的每个散列操作由2个伪随机函数(prf)组成,其使用sha2-256来生成位掩码和密钥。位掩码与前一个散列进行异或运算,并与密钥级联作为到第三sha2-256散列操作的输入消息。67×32字节的wots公共密钥pk[66:0]是通过在67个散列链上散列秘密密钥sk生成的。对shake128执行类似的功能。[0053]图6a是根据一些示例的用于实现签名算法中的签名生成的架构600a中的计算块的示意性图示。如图6a所示,对于消息签名,输入消息被散列和预处理以计算67×4位值,该值用作索引以选择每个链中的中间散列值。[0054]图6b是根据一些示例的用于实现验证算法中的签名验证的架构600b中的计算块的示意性图示。参考图6b,在验证期间,消息再次被散列以计算签名索引并计算每个链中剩余的散列操作以计算wots公共密钥pk。该值和认证路径用于计算默克尔树的根并与共享公共密钥pk进行比较以验证消息。[0055]后量子签名设施的同步基于散列的签名(hbs)方案,诸如上述xmss方案是有状态的,这意味着需要在签名生成之间安全地存储一些状态(例如,计数器)。如果签名者重复使用相同的计数器(这意味着重复使用相同的一次性签名密钥),这使系统暴露于可伪造性攻击。一些数字签名签名设施利用多个硬件安全模块(hsm)来提高签名系统的可用性。如果hbs方案被集成到这些签名设施中,这些签名设施需要提供一种机制来安全地同步跨设施中可用所有hsm签名者的状态(例如,单调计数器)。[0056]另外,因为在一些演示中的hbs方案具有基于树的大小的有限数量的总签名操作,所以对签名系统的攻击或签名系统中的错误可能导致签名密钥的“磨损”,其中所有可能的计数器都已用完,并且无法再使用签名密钥。在产品的寿命与hbs签名密钥的寿命相关的系统中,这可能导致产品拒绝服务。签名设施必须确保防止签名密钥的这种偶然和恶意的磨损或使他们的影响最小化。[0057]图7是根据一些示例的用于实现后量子签名机构的状态同步的架构中的计算块的示意性图示。参考图7,在一些示例中,签名设施700可以包括可以用于存储签名操作输入和签名操作的中间结果的计算机可读存储器块(或寄存器文件)710、状态同步管理器720、负载平衡器722、被配置为使用公共xmss密钥对740计算签名的多个硬件安全模块730a、730b、…730n(在本文中统称为参考数字730)。[0058]在一些示例中,签名设施700可以通信地耦合到一个或多个可信机构(ta)750a、750b、…750n(在本文中统称为参考数字750)。可信机构750可以包括能够发布数字证书的处理设施,所述数字证书证明证书中命名的所有者对公共密钥的所有权。[0059]在一些示例中,可以实现操作以确保用于计算默克尔树的数字签名的每个硬件安全模块使用唯一的状态同步计数器序列来防止不同的硬件安全模块使用相同的计数器。此外,本文描述的技术保持叶节点被加密以防止未授权使用并实现阈值加密技术(例如,多数投票规则)来对节点进行解密。在一些示例中,每个hsm730可以生成一组公共-私有密钥对。加密操作可能需要整组公共-私有密钥对,而解密可以使用公共-私有密钥对的子集来执行,假设该子集包括阈值数量的密钥对。[0060]图8是图示根据一些示例的用于实现后量子签名机构的状态同步的方法800中的操作的流程图。在一些示例中,图8中描绘的操作可以通过在签名设施700中的一个或多个硬件安全模块730中或通信地耦合到签名设施700中的一个或多个硬件安全模块730的处理电路和一个或多个可信机构750来实现。在图7中描绘的示例架构中,图8的操作可以由状态同步管理器720中的处理电路单独或结合硬件安全模块730来实现。[0061]参考图8,在操作810处,一个或多个硬件安全模块730中的处理电路生成多个(n个)公共-私有密钥对。在操作815处,将在操作810中生成的公共-私有密钥对转发给一个或多个可信机构750。[0062]在操作820处,一个或多个可信机构750从硬件安全模块730接收公共-私有密钥,并且在操作825处,一个或多个可信机构750使用在操作820中接收的公共-私有密钥对生成对应的多个(n个)密码种子。在操作830处,一个或多个可信机构750使用来自在操作820中接收的公共-私有密钥对的公共密钥对在操作825中生成的种子进行加密以生成以下形式的对应的多个(n个)密文:eq1cti=enc(pk1i,…pkni,seedi)。[0063]在操作835处,多个(n个)密文被传输回签名设施700中的一个或多个硬件安全模块730,这结束设置操作。[0064]参考图9,在操作910处,确定可用于执行数字签名过程的硬件安全模块730的数量。在一些示例中,状态同步管理器720可以维护签名设施中可操作并且可用于执行数字签名过程的硬件安全模块730的列表。在操作915处,在签名设施中接收一个或多个密文,如参考操作835所描述的。[0065]在操作920处,选择一个或多个硬件安全模块730以使用在操作915中接收的密文来执行数字签名操作。在一些示例中,状态同步管理器720可以从多个硬件安全模块730中选择包括可操作并且可用于执行数字签名操作的一个或多个硬件安全模块730的子集。在操作925处,接收私有密钥的子集。此外,在一些示例中,负载平衡器722可以监视不同硬件安全模块730的工作负载以促进选择硬件安全模块的子集,使得计算负载以平滑分配给硬件安全模块730的工作负载的方式在可用硬件安全模块730之间分布。[0066]在操作935处,被选择来实现签名操作的硬件安全模块730接收签名设施700中的其他硬件安全模块730的私有密钥的子集。例如,如果硬件安全模块1730a被选择来实现签名操作,则它将被提供签名设施700中的其他硬件安全模块730的私有密钥。在一些示例中,私有密钥可以由状态同步管理器720提供。在一些示例中,私有密钥可以直接由其他硬件安全模块730提供。[0067]在操作930处,确定被选择来实现签名操作的硬件安全模块730是否获得了允许解密种子的阈值数量的私有密钥。在一些示例中,应用多数投票规则,使得被选择来实现签名操作的硬件安全模块730必须已经从签名设施中的大多数硬件安全模块730获得私有密钥,使得阈值可以是作为在签名设施700中操作的硬件安全模块730的数量的函数的变量。在其他示例中,阈值可以是表示硬件安全模块730的固定数量的静态阈值。[0068]如果在操作930处,被选择来实现签名操作的硬件安全模块730从超过阈值的硬件安全模块730的数量获得私有密钥,则控制传递到操作935并且硬件安全模块730生成第一信号,并且响应于第一信号,在操作940处,硬件安全模块730解密密码种子,并且在操作945处,硬件安全模块730生成默克尔树的叶节点。[0069]相反,如果在操作930处,被选择来实现签名操作的硬件安全模块730没有从超过阈值的硬件安全模块730的数量获得私有密钥,则控制传递到操作950并且硬件安全模块730生成第二信号,并且响应于第二信号,在操作955处,硬件安全模块730生成错误消息,其指示硬件安全模块730不能生成默克尔树的叶节点。[0070]因此,本文描述的操作确保流氓或故障硬件安全模块不能使用默克尔树的未授权叶节点,因为解密需要由至少(k-1)个其他硬件安全模块给出的明确授权,其中k代表签名设施700中的硬件安全模块730的数量。此外,本文描述的技术仅在图8中描绘的设置操作期间需要中央认证机构。应当理解,各种不同的规则可以用于确定硬件安全模块730是否表现得恶意或有缺陷。[0071]图10图示可以适合于实现如之前描述的各种实施例的示例性计算架构的实施例。在各种实施例中,计算架构1000可以包括或实现为电子设备的部分。在一些实施例中,计算架构1000可以代表例如实现上述操作环境的一个或多个组件的计算机系统。在一些实施例中,计算架构1000可以代表实现本文描述的一种或多种技术的数字签名签名系统的一个或多个部分或组件。实施例不限于该上下文。[0072]如本技术中所使用的,术语“系统”和“组件”和“模块”意图于指代计算机相关实体,其是硬件、硬件和软件的组合、软件、或执行中的软件,其示例由示例性计算架构1000来提供。例如,组件可以是,但不限于在处理器上运行的过程、处理器、硬盘驱动器、(光学和/或磁性存储介质的)多个存储驱动器、对象、可执行程序(executable)、执行的线程、程序和/或计算机。通过说明的方式,在服务器上运行的应用和服务器二者可以是组件。一个或多个组件可以驻留在过程和/或执行的线程内,并且组件可以局部化在一个计算机上和/或分布在两个或更多个计算机之间。另外,组件可以通过各种类型的通信介质通信地耦合到彼此以协调操作。协调可以涉及信息的单向或双向交换。例如,组件可以以通过通信介质传送的信号的形式传送信息。信息可以实现为分配给各种信号线路的信号。在这样的分配中,每个消息是信号。然而,另外的实施例可以可替换地采用数据消息。这样的数据消息可以在各种连接上发送。示例性连接可以包括并行接口、串行接口和总线接口。[0073]计算架构1000包括各种常见计算元件,诸如一个或多个处理器、多核处理器、协处理器、存储器单元、芯片组、控制器、外设、接口、振荡器、定时设备、视频卡、音频卡、多媒体输入/输出(i/o)组件、电源等等。然而,实施例不限于通过计算架构1000的实现方式。[0074]如图10所示,计算架构1000包括一个或多个处理器1002和一个或多个图形处理器1008,并且可以是单处理器桌面系统、多处理器工作站系统或具有大量处理器1002或处理器核1007的服务器系统。在一个实施例中,系统1000是并入在片上系统(soc或soc)集成电路内用于移动、手持或嵌入式设备的处理平台。[0075]系统1000的实施例可以包括或并入基于服务器的游戏平台、游戏控制台,包括游戏和媒体控制台、移动游戏控制台、手持游戏控制台或在线游戏控制台。在一些实施例中,系统1000是移动电话、智能电话、平板计算设备或移动互联网设备。数据处理系统1000还可以包括、耦合或集成在可穿戴设备内,诸如智能手表可穿戴设备、智能眼镜设备、增强现实设备或虚拟现实设备。在一些实施例中,数据处理系统1000是具有一个或多个处理器1002和由一个或多个图形处理器1008生成的图形界面的电视机或机顶盒设备。[0076]在一些实施例中,一个或多个处理器1002均包括一个或多个处理器核1007以处理指令,当被执行时,该指令执行系统和用户软件的操作。在一些实施例中,一个或多个处理器核1007中的每一个被配置为处理特定指令集1009。在一些实施例中,指令集1009可以促进复杂指令集计算(cisc)、精简指令集计算(risc)或经由甚长指令字(vliw)的计算。多个处理器核1007可以各自处理不同的指令集1009,其可以包括促进其他指令集的仿真的指令。处理器核1007还可以包括其他处理设备,诸如数字信号处理器(dsp)。[0077]在一些实施例中,处理器1002包括高速缓存存储器1004。取决于架构,处理器1002可以具有单个内部高速缓存或多级内部高速缓存。在一些实施例中,高速缓存存储器在处理器1002的各个组件之间共享。在一些实施例中,处理器1002还使用外部高速缓存(例如,3级(l3)高速缓存或最后一级高速缓存(llc))(未示出),其可以使用已知的高速缓存一致性技术在处理器核1007之间共享。寄存器文件1006另外包括在处理器1002中,其可以包括用于存储不同类型数据的不同类型的寄存器(例如,整数寄存器、浮点寄存器、状态寄存器和指令指针寄存器)。一些寄存器可以是通用寄存器,而其他寄存器可以特定于处理器1002的设计。[0078]在一些实施例中,一个或多个处理器1002与一个或多个接口总线1010耦合以在处理器1002和系统中的其他组件之间传输通信信号,诸如地址、数据或控制信号。在一个实施例中,接口总线1010可以是处理器总线,诸如直接媒体接口(dmi)总线的一个版本。然而,处理器总线不限于dmi总线,并且可以包括一个或多个外围组件互连总线(例如,pci、快速pci)、存储器总线或其他类型的接口总线。在一个实施例中,(多个)处理器1002包括集成存储器控制器1016和平台控制器中枢1030。存储器控制器1016促进存储器设备和系统1000的其他组件之间的通信,而平台控制器中枢(pch)1030提供经由本地i/o总线到i/o设备的连接。[0079]存储器设备1020可以是动态随机存取存储器(dram)设备、静态随机存取存储器(sram)设备、闪速存储器设备、相变存储器设备或具有用作过程存储器的合适性能的一些其他存储器设备。在一个实施例中,存储器设备1020可以作为系统1000的系统存储器操作,以存储数据1022和指令1021,以在一个或多个处理器1002执行应用或过程时使用。存储器控制器中枢1016还与可选的外部图形处理器1012耦合,所述外部图形处理器1012可以与处理器1002中的一个或多个图形处理器1008通信以执行图形和媒体操作。在一些实施例中,显示设备1011可以连接到(多个)处理器1002。显示设备1011可以是如在移动电子设备或膝上型设备中的内部显示设备或经由显示接口(例如,显示端口(displayport)等)附着的外部显示设备中的一个或多个。在一个实施例中,显示设备1011可以是头戴式显示器(hmd),诸如用于虚拟现实(vr)应用或增强现实(ar)应用中的立体显示设备。[0080]在一些实施例中,平台控制器中枢1030使外设能够经由高速i/o总线连接到存储器设备1020和处理器1002。i/o外设包括但不限于音频控制器1046、网络控制器1034、固件接口1028、无线收发器1026、触摸传感器1025、数据存储设备1024(例如,硬盘驱动器、闪速存储器等)。数据存储设备1024可以经由存储接口(例如,sata)或经由外围总线(诸如外围组件互连总线(例如,pci、快速pci))来连接。触摸传感器1025可以包括触摸屏传感器、压力传感器或指纹传感器。无线收发器1026可以是wi-fi收发器、蓝牙收发器或诸如3g、4g或长期演进(lte)收发器的移动网络收发器。固件接口1028实现与系统固件的通信,并且可以是例如统一可扩展固件接口(uefi)。网络控制器1034可以实现到有线网络的网络连接。在一些实施例中,高性能网络控制器(未示出)与接口总线1010耦合。在一个实施例中,音频控制器1046是多通道高清晰度音频控制器。在一个实施例中,系统1000包括可选的传统i/o控制器1040,用于将传统(例如,个人系统2(ps/2))设备耦合到系统。平台控制器中枢1030还可以连接到一个或多个通用串行总线(usb)控制器1042连接输入设备,诸如键盘和鼠标1043组合、相机1244或其他usb输入设备。[0081]以下关于另外的示例。[0082]示例1是一种装置,其包括:计算机可读存储器;多个硬件安全模块,所述多个硬件安全模块中的至少第一硬件安全模块包括处理电路,其用于:生成第一多个密码密钥对,所述第一多个密码密钥对包括第一多个私有密钥和第一多个公共密钥;将第一多个公共密钥转发到远程计算设备;从远程计算设备接收第一多个密文,其中多个密文中的每个密文表示利用从多个公共密钥中选择的公共密钥对密码种子的加密;从多个硬件安全模块中的硬件安全模块的子集接收私有密钥的子集;以及生成以下中的至少一个:第一信号,当私有密钥的子集包括超过阈值的私有密钥的数量时;或第二信号,当私有密钥的子集包括不超过阈值的私有密钥的数量时。[0083]在示例2中,示例1的主题可以可选地包括以下协定,其中多个硬件安全模块中的至少第一硬件安全模块包括处理电路,其用于:当私有密钥的子集包括不超过阈值的私有密钥的数量时生成错误消息。[0084]在示例3中,示例1-2的任一个的主题可以可选地包括以下协定,其中多个硬件安全模块中的至少第一硬件安全模块包括处理电路,其用于:当私有密钥的子集包括超过阈值的私有密钥的数量时,对密码种子进行解密。[0085]在示例4中,示例1-3的任一个的主题可以可选地包括以下协定,其中多个硬件安全模块中的至少第一硬件安全模块包括处理电路,其用于:生成用于默克尔树中的第一多个叶节点的第一多个数字签名。[0086]在示例5中,示例1-4的任一个的主题可以可选地包括以下协定,其中阈值是表示硬件安全模块的固定数量的静态阈值。[0087]在示例6中,示例1-5的任一个的主题可以可选地包括以下协定,其中阈值是表示硬件安全模块的可变数量的动态阈值。[0088]在示例7中,示例1-6的任一个的主题可以可选地包括,还包括状态同步管理器,其包括负载平衡器,以选择第一硬件安全模块或第二硬件安全模块中的一个来生成签名。[0089]示例8是一种基于计算机的方法,其包括:从签名设施中的多个硬件安全模块中选择要分配给数字签名过程的一组硬件安全模块,该组硬件安全模块包括至少第一硬件安全模块;以及在至少第一硬件安全模块中,生成第一多个密码密钥对,所述第一多个密码密钥对包括第一多个私有密钥和第一多个公共密钥;将第一多个公共密钥转发到远程计算设备;从远程计算设备接收第一多个密文,其中多个密文中的每个密文表示利用从多个公共密钥中选择的公共密钥对密码种子的加密;从多个硬件安全模块中的硬件安全模块的子集接收私有密钥的子集;以及生成以下中的至少一个:第一信号,当私有密钥的子集包括超过阈值的私有密钥的数量时;或第二信号,当私有密钥的子集包括不超过阈值的私有密钥的数量时。[0090]在示例9中,示例8的主题可以可选地包括当私有密钥的子集包括不超过阈值的私有密钥的数量时生成错误消息。[0091]在示例10中,示例8-9的任一个的主题可以可选地包括,当私有密钥的子集包括超过阈值的私有密钥的数量时,对密码种子进行解密。[0092]在示例11中,示例9-10的任一个的主题可以可选地包括,生成用于默克尔树中的第一多个叶节点的第一多个数字签名。[0093]在示例12中,示例9-11的任一个的主题可以可选地包括以下协定,其中阈值是表示硬件安全模块的固定数量的静态阈值。[0094]在示例13中,示例9-12的任一个的主题可以可选地包括以下协定,其中阈值是表示硬件安全模块的可变数量的动态阈值。[0095]在示例14中,示例9-13的任一个的主题可以可选地包括,选择第一硬件安全模块或第二硬件安全模块中的一个来生成签名。[0096]示例15是一种包括指令的非暂时性计算机可读介质,所述指令当由处理器执行时,将处理器配置为:从签名设施中的多个硬件安全模块中选择要分配给数字签名过程的一组硬件安全模块,该组硬件安全模块包括至少第一硬件安全模块;以及在至少第一硬件安全模块中,生成第一多个密码密钥对,所述第一多个密码密钥对包括第一多个私有密钥和第一多个公共密钥;将第一多个公共密钥转发到远程计算设备;从远程计算设备接收第一多个密文,其中多个密文中的每个密文表示利用从多个公共密钥中选择的公共密钥对密码种子的加密;从多个硬件安全模块中的硬件安全模块的子集接收私有密钥的子集;以及生成以下中的至少一个:第一信号,当私有密钥的子集包括超过阈值的私有密钥的数量时;或第二信号,当私有密钥的子集包括不超过阈值的私有密钥的数量时。[0097]在示例16中,示例15的主题可以可选地包括权利要求15的主题,其包括用于以下的指令:当私有密钥的子集包括不超过阈值的私有密钥的数量时生成错误消息。[0098]在示例17中,示例15-16的任一个的主题可以可选地包括用于以下的指令:当私有密钥的子集包括超过阈值的私有密钥的数量时,对密码种子进行解密。[0099]在示例18中,示例15-17的任一个的主题可以可选地包括用于以下的指令:生成用于默克尔树中的第一多个叶节点的第一多个数字签名。[0100]在示例19中,示例15-18的任一个的主题可以可选地包括以下协定,其中阈值是表示硬件安全模块的固定数量的静态阈值。[0101]在示例20中,示例15-19的任一个的主题可以可选地包括以下协定,其中阈值是表示硬件安全模块的可变数量的动态阈值。[0102]在示例21中,示例15-20的任一个的主题可以可选地包括用于以下的指令:选择第一硬件安全模块或第二硬件安全模块中的一个来生成签名。[0103]以上详细描述包括对形成详细说明的一部分的附图的参考。附图通过说明的方式示出了可以实践的特定实施例。这些实施例在本文中也称为“示例”。此类示例可包括除所示或描述的那些之外的元件。然而,还设想了包括所示或描述的元件的示例。此外,还设想了使用所示或描述的那些元件(或其一个或多个方面)或者关于特定示例(或其一个或多个方面)或关于本文所示或描述的其他示例(或其一个或多个方面)的任何组合或排列的示例。[0104]本文件中提及的出版物、专利和专利文件通过引用整体并入本文,就好像单独通过引用并入一样。在本文件与通过引用并入的那些文件之间的不一致使用的情况下,(多个)并入的参考文献中的使用是对本文件的使用的补充;对于不可调和的不一致,以本文档中的使用为准。[0105]在本文件中,术语“一”或“一个”如在专利文件中很常见的那样用于包括一个或多于一个,独立于“至少一个”或“一个或多个”的任何其他实例或使用。此外,“一组”包括一个或多个元素。在本文档中,术语“或”用于指代非排他性或,使得“a或b”包括“a但不是b”、“b但不是a”和“a和b”,除非另有说明。在随附权利要求中,术语“包括”和“在其中”用作相应术语“包含”和“其中”的简明英语等同物。此外,在以下权利要求中,术语“包括”和“包含”是开放式的;也就是说,包括除在权利要求中的此类术语之后列出的那些之外的元素的系统、设备、制品或过程仍被认为落入该权利要求的范围内。此外,在以下权利要求中,术语“第一”、“第二”和“第三”等仅仅用作标记,并不意图暗示对其对象的数字顺序。[0106]如本文所指的术语“逻辑指令”涉及可由用于执行一个或多个逻辑操作的一个或多个机器理解的表达。例如,逻辑指令可包括可由处理器编译器解释用于对一个或多个数据对象执行一个或多个操作的指令。然而,这仅仅是机器可读指令的示例并且示例不限于这方面。[0107]本文所指的术语“计算机可读介质”涉及能够维护可由一个或多个机器感知的表达的介质。例如,计算机可读介质可以包括用于存储计算机可读指令或数据的一个或多个存储设备。这样的存储设备可以包括存储介质,诸如例如光、磁或半导体存储介质。然而,这仅仅是计算机可读介质的示例并且示例不限于这方面。[0108]本文所指的术语“逻辑”涉及用于执行一个或多个逻辑操作的结构。例如,逻辑可以包括基于一个或多个输入信号提供一个或多个输出信号的电路。这样的电路可以包括接收数字输入并提供数字输出的有限状态机,或响应于一个或多个模拟输入信号而提供一个或多个模拟输出信号的电路。这样的电路可以在专用集成电路(asic)或现场可编程门阵列(fpga)中提供。此外,逻辑可包括存储在存储器中与处理电路相结合以执行此类机器可读指令的机器可读指令。然而,这些仅仅是可以提供逻辑的结构的示例并且示例不限于这方面。[0109]本文描述的一些方法可以体现为计算机可读介质上的逻辑指令。当在处理器上执行时,逻辑指令使处理器被编程为实现所描述方法的专用机器。处理器在由逻辑指令配置以执行本文描述的方法时,构成用于执行所描述的方法的结构。可替代地,本文所述的方法可简化为例如现场可编程门阵列(fpga)、专用集成电路(asic)等上的逻辑。[0110]在描述和权利要求中,可以使用术语“耦合”和“连接”连同其派生词。在特定示例中,“连接”可以用于指示两个或更多元件与彼此直接物理或电学接触。“耦合”可以意为两个或更多元件直接物理或电学接触。然而,“耦合”还可以意为两个或更多元件可以不与彼此直接接触,但仍可以与彼此协作或交互。[0111]本说明书中对“一个示例”或“一些示例”的引用意味着结合示例描述的特定特征、结构或特性被包括在至少一个实现方式中。在说明书中的各种位置中的短语“在一个示例中”的出现可以或可以不全部是指相同的示例。[0112]以上描述旨在说明性而非限制性。例如,上述示例(或其一个或多个方面)可以与其他示例组合使用。其他实施例可以被诸如本领域的普通技术人员在阅读以上描述后使用。摘要用于允许读者快速确定技术公开的性质。在理解所述摘要将不用于解释或限制权利要求的范围或含义的情况下,提交所述摘要。此外,在上述详细描述中,各种特征可以组合在一起以简化本公开。然而,权利要求可能不会阐述本文公开的每个特征,因为实施例可能以所述特征的子集为特征。此外,实施例可以包括比特定示例中公开的那些更少的特征。因此,以下权利要求由此被并入详细描述中,其中每个权利要求独立地作为单独的实施例。本文公开的实施例的范围将参考所附权利要求连同这样的权利要求所赋予的等效物的完整范围来确定。[0113]尽管已经以对结构特征和/或方法技术动作特定的语言描述了示例,但应理解的是所要求保护的主题可能不限于所述特定特征或动作。而是,特定特征和动作被公开为实现所要求保护的主题的样本形式。当前第1页12当前第1页12
技术特征:
1.一种装置,包括:计算机可读存储器;多个硬件安全模块,所述多个硬件安全模块中的至少第一硬件安全模块包括处理电路,其用于:生成第一多个密码密钥对,所述第一多个密码密钥对包括第一多个私有密钥和第一多个公共密钥;将第一多个公共密钥转发到远程计算设备;从远程计算设备接收第一多个密文,其中多个密文中的每个密文表示利用从多个公共密钥中选择的公共密钥对密码种子的加密;从多个硬件安全模块中的硬件安全模块的子集接收私有密钥的子集;以及生成以下中的至少一个:第一信号,当私有密钥的子集包括超过阈值的私有密钥的数量时;或第二信号,当私有密钥的子集包括不超过阈值的私有密钥的数量时。2.根据权利要求1所述的装置,其中多个硬件安全模块中的至少第一硬件安全模块包括处理电路,其用于:当私有密钥的子集包括不超过阈值的私有密钥的数量时生成错误消息。3.根据权利要求1所述的装置,其中多个硬件安全模块中的至少第一硬件安全模块包括处理电路,其用于:当私有密钥的子集包括超过阈值的私有密钥的数量时,对密码种子进行解密。4.根据权利要求3所述的装置,其中多个硬件安全模块中的至少第一硬件安全模块包括处理电路,其用于:生成用于默克尔树中的第一多个叶节点的第一多个数字签名。5.根据权利要求1所述的装置,其中阈值是表示硬件安全模块的固定数量的静态阈值。6.根据权利要求1所述的装置,其中阈值是表示硬件安全模块的可变数量的动态阈值。7.根据权利要求1所述的装置,还包括状态同步管理器,其包括:负载平衡器,以选择第一硬件安全模块或第二硬件安全模块中的一个来生成签名。8.一种基于计算机的方法,其包括:从签名设施中的多个硬件安全模块中选择要分配给数字签名过程的一组硬件安全模块,该组硬件安全模块包括至少第一硬件安全模块;以及在至少第一硬件安全模块中:生成第一多个密码密钥对,所述第一多个密码密钥对包括第一多个私有密钥和第一多个公共密钥;将第一多个公共密钥转发到远程计算设备;从远程计算设备接收第一多个密文,其中多个密文中的每个密文表示利用从多个公共密钥中选择的公共密钥对密码种子的加密;从多个硬件安全模块中的硬件安全模块的子集接收私有密钥的子集;以及生成以下中的至少一个:第一信号,当私有密钥的子集包括超过阈值的私有密钥的数量时;或第二信号,当私有密钥的子集包括不超过阈值的私有密钥的数量时。
9.根据权利要求8所述的方法,还包括:当私有密钥的子集包括不超过阈值的私有密钥的数量时生成错误消息。10.根据权利要求8所述的方法,还包括:当私有密钥的子集包括超过阈值的私有密钥的数量时,对密码种子进行解密。11.根据权利要求9所述的方法,还包括:生成用于默克尔树中的第一多个叶节点的第一多个数字签名。12.根据权利要求8所述的方法,其中阈值是表示硬件安全模块的固定数量的静态阈值。13.根据权利要求8所述的方法,其中阈值是表示硬件安全模块的可变数量的动态阈值。14.根据权利要求13所述的方法,还包括选择第一硬件安全模块或第二硬件安全模块中的一个来生成签名。

技术总结
本发明涉及后量子签名设施的状态同步。一种装置,包括:多个硬件安全模块,所述多个硬件安全模块中的至少第一硬件安全模块包括处理电路,其用于:生成第一多个密码密钥对,所述第一多个密码密钥对包括第一多个私有密钥和第一多个公共密钥;将第一多个公共密钥转发到远程计算设备;从远程计算设备接收第一多个密文,其中多个密文中的每个密文表示利用从多个公共密钥中选择的公共密钥对密码种子的加密;从多个硬件安全模块中的硬件安全模块的子集接收私有密钥的子集。接收私有密钥的子集。接收私有密钥的子集。


技术研发人员:R
受保护的技术使用者:英特尔公司
技术研发日:2021.08.06
技术公布日:2022/3/8

最新回复(0)