用于后量子密码学安全的基于哈希的签名和验证的消息索引感知多哈希加速器的制作方法

文档序号:23474254发布日期:2020-12-29 13:26阅读:243来源:国知局
用于后量子密码学安全的基于哈希的签名和验证的消息索引感知多哈希加速器的制作方法



背景技术:

本文中所描述的主题一般涉及计算机安全性领域,并且更特别地,涉及用于后量子密码学安全的基于哈希(hash)的签名和验证的消息索引感知多哈希加速器。

诸如rivest–shamir–adleman(rsa)和椭圆曲线数字签名算法(ecdsa)的现有公共密钥数字签名算法被预期针对基于使用量子计算机的算法(诸如shor的算法)的强力攻击是不安全的。因此,在密码学研究团体中和在各种标准机构中正在努力定义用于针对量子计算机是安全的算法的新标准。

因此,用以加速诸如xmss和lms的签名和验证方案的技术可以例如在基于计算机的通信系统和方法中找到实用。

附图说明

详细描述参考附图来描述。

图1a和1b分别是一次基于哈希的签名方案和多次基于哈希的签名方案的示意图。

图2a-2b分别是一次签名方案和多次签名方案的示意图。

图3是根据一些示例的签名装置和验证装置的示意图。

图4a是根据一些示例的merkle树结构的示意图。

图4b是根据一些示例的merkle树结构的示意图。

图5是根据一些示例的用以实现签名算法的架构中的计算块的示意图。

图6a是根据一些示例的用以在签名算法中实现签名生成的架构中的计算块的示意图。

图6b是根据一些示例的用以在验证算法中实现签名验证的架构中的计算块的示意图。

图7a、7b、7c和7d是根据一些示例的在wots签名验证中被应用于签名组元的链函数的示意图。

图8a是根据一些示例的常规哈希链分布的示意图。

图8b是根据一些示例的索引感知哈希链分布的示意图。

图9是根据一些示例的流程图的示意图,该流程图图示了用以实现索引感知哈希链分布的操作。

图10是根据一些示例的可以适应于实现索引感知哈希链分布的计算架构的示意图。

具体实施方式

本文中所描述的是用以实现用于后量子密码学安全的基于哈希的签名和验证的加速器的示例系统和方法。在下面的描述中,阐述了许多特定的细节以便提供对各种示例的透彻理解。然而,本领域技术人员将理解,可以在没有特定细节的情况下实践各种示例。在其它实例中,未详细地图示或描述众所周知的方法、过程、组元和电路以免使示例难以理解。

如上所简要描述的,诸如rivest–shamir–adleman(rsa)和椭圆曲线数字签名算法(ecdsa)的现有公共密钥数字签名算法预期在针对基于使用量子计算机的算法(诸如shor的算法)的强力攻击是不安全的。因此,在密码研究团体中和在各种标准机构中正在努力定义用于针对量子计算机是安全的算法的新标准。

xmss是与作为主基础哈希函数的sha2-256组合,使用winternitz一次签名(wots)的基于哈希的签名方案,其中winternitz一次签名(wots)是一种一次签名方案。xmss的使用还可以使用sha2-512、sha3-shake-256或sha3-shake-512作为可选哈希函数。常规xmss实现采用通用sha2-256哈希模块来执行xmss特定的哈希函数,诸如伪随机函数(prf)、链哈希(f)、树哈希(h)和消息哈希(h_msg)。lms是使用leighton/micali一次签名(lm_ots)作为一次签名构件(其基于sha2-256哈希函数)的基于哈希的签名方案。

sha2-256算法未被设计成利用在wots/lm-ots操作期间保持恒定或者由在wots/lm-ots内的多个子操作共享的xmss/lms模块输入的部分。作为结果,使用常规sha2-256硬件加速器的基于xmss的签名操作平均花费大约205,824个循环来执行。由于sha硬件未被设计成利用公共wots/lm-ots输入消息块和重新计算可能已经被计算的部分哈希,因此,可带来在性能和能量效率中的相当大开销。

本文中所描述的主题通过提供用以实现用于后量子密码学安全的xmss和lms基于哈希的签名和验证的加速器的系统和方法,解决了这些和其它问题。在一些示例中,标识了用于xmss-wots中函数的公共消息块,为这些消息块预计算了部分哈希值。预计算的值可以跨用于每个签名和/或验证操作的不同xmss函数被共享以降低总哈希操作,由此提高xmss和lms操作的性能。

后量子密码学概述

后量子密码学(也称为“量子证明”、“量子安全”、“量子抵抗”或简称为“pqc”)对密码学采用未来和现实方案。它预备负责密码学的那些及最终用户知道该密码学是过时的;相反,它需要演进成能够成功地将演进计算装置投入量子计算和后量子计算。

很容易理解的是,密码学允许保护在个体与实体之间在线传递并且使用各种网络存储的数据。数据的此传递能够涵盖电子邮件的发送和接收,在线商品或服务的购买,使用网站访问银行业务或其它个人信息等等。

常规密码学及其困难数学情形的典型分解和计算在涉及量子计算时可以是不成问题的。诸如离散对数、整数分解和椭圆曲线离散对数等这些数学问题不能抵挡来自强大的量子计算机的攻击。虽然任何后量子密码学能够被建立在当前密码学之上,但新颖的方案将需要足够智能化、快速和精确才能抵抗和击败量子计算机的任何攻击。

当今的pqc主要集中于以下方案:1)基于1979年merkle的哈希树公共密钥签名系统(其建立在lamport和diffie的“一个消息签名”构想之上)的基于哈希的密码学;2)基于代码的密码学,诸如mceliece的隐藏goppa代码公共密钥加密系统;3)基于1998年的hoffstein-pipher-silverman公共密钥加密系统的基于格的密码学;4)基于1996年的patarin的hfe公共密钥签名系统(其进一步基于matumoto-imai提议)的多变量二次方程密码学;5)依赖超奇异椭圆曲线和超奇异同源图的超奇异椭圆曲线同源密码学;以及6)对称密钥量子抵抗。

图1a和1b分别图示了一次基于哈希的签名方案和多次基于哈希的签名方案。如前面所述,基于哈希的密码学基于像lamport签名、merkle签名、扩展merkle签名方案(xmss)和sphinc方案等的密码系统。随着量子计算的出现及对其增长的预期,已经存在对量子计算可能带来的各种挑战和使用密码学领域能够做些什么来应对此类挑战的关注。

正在被探索以应对量子计算挑战的一个领域是基于哈希的签名(hbs),因为这些方案长久以来一直存在,并且拥有应付量子计数和后量子计算挑战所必要地基本要素。hbs方案被视为与快速平台安全启动合作的快速签名算法,快速平台安全启动被认为是对量子和后量子计算攻击最具抵抗力。

例如,如关于图1a所图示的,示出了hbs的方案,其使用merkle树连同一次签名(ots)方案100,诸如使用私有密钥对消息进行签名并使用对应的公共密钥验证ots消息,其中私有密钥仅对单个消息进行签名。

类似地,如关于图1b所图示的,示出了另一hbs方案,其中此方案与多次签名(mts)方案150有关,在多次签名方案150中私有密钥能够对多个消息进行签名。

图2a和2b分别图示了一次签名方案和多次签名方案。继续图1a的基于hbs的ots方案100和图1b的mts方案150,分别地,图2a图示了winternitzots方案200,其是由stanfordmathematicsdepartment的robertwinternitz提供的,相比于h(x)|h(y)其公布为hw(x),而图2b图示了xmssmts方案250。

例如,图2a的wots方案200规定将消息进行哈希处理并解析成m,带有在[0,1,2,...,15]之间的67个整数,诸如私有密钥sk205、签名s210和公共密钥pk215,其各自具有每个32字节的67个组元。

图2b图示了允许图2a的wots方案200和具有xmssmerkle树的xmss方案255的组合的xmssmts方案250。如前面关于图2a所讨论的,wot方案200基于具有每个32字节的67个组元的一次公共密钥pk215,该一次公共密钥随后经受l-tree压缩算法260以提供wots压缩的pk265以便在xmss方案255的xmssmerkle树中占有位置。设想到的是,xmss签名验证可以包含计算wots验证和进行核对以确定重构的根节点是否匹配xmss公共密钥,诸如根节点=xmss公共密钥。

用于后量子密码学的加速器

图3是根据一些示例的包含第一装置310和第二装置350的安全环境300的高级架构的示意图。参见图3,第一装置310和第二装置350的每一个可以被实施为能执行本文中所描述的功能的任何类型的计算装置。例如,在一些实施例中,第一装置310和第二装置350的每一个可以被实施为膝上型计算机、平板计算机、笔记本、上网本、ultrabook™、智能电话、蜂窝电话、可穿戴计算装置、个人数字助理、移动因特网装置、台式计算机、路由器、服务器、工作站和/或任何其它计算/通信装置。

第一装置310包含一个或多个处理器320和用以存储私有密钥324的存储器322。(一个或多个)处理器320可以被实施为能执行本文中所描述的功能的任何类型的处理器。例如,(一个或多个)处理器320可以被实施为(一个或多个)单核或多核处理器、数字信号处理器、微控制器或其它处理器或处理/控制电路。类似地,存储器322可以被实施为能执行本文中所描述的功能的任何类型的易失性或非易失性存储器或数据存储装置。在操作中,存储器322可以存储在第一装置310的操作期间使用的各种数据和软件,诸如操作系统、应用、程序、库和驱动程序。存储器322被以通信方式耦合到(一个或多个)处理器320。在一些示例中,私有密钥324可以驻留在安全的存储器中,所述安全的存储器可以是部分存储器322或可以与存储器322是分离的。

第一装置310进一步包括鉴权逻辑330,所述鉴权逻辑330包含哈希逻辑332、签名逻辑334和验证逻辑336。哈希逻辑332被配置成对消息(m)进行哈希处理(即,对其应用哈希函数)以生成消息m的哈希值(m’)。哈希函数可以包含但不限于安全哈希函数,例如,安全哈希算法sha2-256和/或sha3-256等。sha2-256可以符合和/或兼容2012年3月由美国国家标准与技术研究院(nist)公布的标题为“securehashstandard(shs)”的联邦信息处理标准(fips)出版物180-4,和/或此标准的以后和/或有关版本。sha3-256可以符合和/或兼容2015年8月由nist公布的标题为:“sha-3standard:permutation-basedhashandextendable-outputfunctions”的fips出版物202,和/或此标准的以后和/或有关版本。

签名逻辑332可以被配置成生成要被传送的签名(即,被传送的签名)和/或验证签名。在其中第一装置310是签名装置的实例中,被传送的签名可以包含数量l个的被传送的签名元素,其中每个被传送的签名元素对应于相应消息元素。例如,对于每个消息元素mi,签名逻辑332可以被配置成在私有密钥sk的每个私有密钥元素ski上将选择的签名操作执行与在消息代表m’中包含的每个消息元素mi的值有关的相应次数。例如,签名逻辑332可以被配置成向对应私有密钥元素ski应用选择的哈希函数mi次。在另一示例中,签名逻辑332可以被配置成向对应私有密钥元素ski应用选择的链函数(其包含哈希函数)mi次。选择的签名操作可因此对应于选择的基于哈希的签名方案。

基于哈希的签名方案可以包含但不限于winternitz(w)一次签名(ots)方案、增强winternitzots方案(例如,wots+)、merkle许多次签名方案、扩展merkle签名方案(xmss)和/或扩展merkle多树签名方案(xmss-mt)等。哈希函数可以包含但不限于sha2-256和/或sha3-256等。例如,xmss和/或xmss-mt可以符合或兼容一个或多个因特网工程任务组(ietf.rtm.)信息草案因特网注释,例如,2015年4月由ietf.rtm.的因特网研究任务组(internetresearchtaskforce)密码论坛研究小组(cryptoforumresearchgroup)发布的标题为“xmss:extendedhash-basedsignatures”的草案draft-irtf-cfrg-xmss-hash-based-signatures-00,和/或此信息草案的以后和/或有关版本,诸如2016年6月发布的草案draft-irtf-cfrg-xmss-hash-based-signatures-06。

winternitzots被配置成生成签名和利用哈希函数来验证收到的签名。winternitzots被进一步配置成使用一次私有密钥并因此每个私有密钥元素ski。例如,winternitzots可以被配置成向每个私有密钥元素应用哈希函数mi或n-mi次以生成签名和向每个收到的消息元素应用哈希函数n-mi'或mi'次以生成对应验证签名元素。merkle许多次签名方案是基于哈希的签名方案,其利用ots并且可以不止一次使用公共密钥。例如,merkle签名方案可以利用winternitzots作为一次签名方案。wots+被配置成利用哈希函数系列和链函数。

xmss、wots+和xmss-mt是利用链函数的基于哈希的签名方案的示例。每个链函数被配置成封装对哈希函数的多个调用,并且可以进一步执行另外的操作。包含在链函数中的对哈希函数的所述多个调用可以是固定的或者可以变化。链函数可以改进关联的基于哈希的签名方案的安全性。

密码学逻辑340被配置成代表签名装置310执行各种密码和/或安全性功能。在一些实施例中,密码学逻辑340可以被实施为密码引擎、签名装置310的独立安全性协同处理器、结合到(一个或多个)处理器320中的密码加速器或独立软件/固件。在一些实施例中,密码学逻辑340可以生成和/或利用各种密码密钥(例如,对称/非对称密码密钥)以促进加密、解密、签名和/或签名验证。另外,在一些实施例中,密码学逻辑340可以促进通过通信链路与远程装置建立安全连接。还应领会的是,在一些实施例中,第一装置310的密码学模块340和/或另一模块可以建立受信任的执行环境或安全飞地,在其内可以存储本文中所描述数据的一部分和/或可以执行本文中所描述的多个功能。

在如上所描述地那样生成签名后,随后可以由第一装置310例如经由通信逻辑342将消息m和签名经由网络通信链路390发送到第二装置350。在实施例中,消息m可以在传输前未被加密。在另一实施例中,消息m可以在传输前被加密。例如,消息m可以由密码学逻辑340加密以产生加密的消息。

第二装置350还可以包含一个或多个处理器360和用以存储公共密钥364的存储器362。如上所描述的,(一个或多个)处理器360可以被实施为能执行本文中所描述的功能的任何类型的处理器。例如,(一个或多个)处理器360可以被实施为(一个或多个)单核或多核处理器、数字信号处理器、微控制器或其它处理器或处理/控制电路。类似地,存储器362可以被实施为能执行本文中所描述的功能的任何类型的易失性或非易失性存储器或数据存储装置。在操作中,存储器362可以存储在第二装置350的操作期间使用的各种数据和软件,诸如操作系统、应用、程序、库和驱动程序。存储器362被以通信方式耦合到(一个或多个)处理器360。

在一些示例中,可以在以前的交换中向验证方装置350提供公共密钥364。公共密钥pk被配置成含有数量l个的公共密钥元素,即,pk=[pk1,...,pkl]。公共密钥364可例如被存储到存储器362。

第二装置350进一步包括鉴权逻辑370,所述鉴权逻辑370包含哈希逻辑372、签名逻辑和验证逻辑376。如上所描述的,哈希逻辑372被配置成对消息(m)进行哈希处理(即,对其应用哈希函数)以生成哈希消息(m’)。哈希函数可以包含但不限于安全哈希函数,例如,安全哈希算法sha2-256和/或sha3-256等。sha2-256可以符合和/或兼容2012年3月由美国国家标准与技术研究院(nist)公布的标题为“securehashstandard(shs)”的联邦信息处理标准(fips)出版物180-4,和/或此标准的以后和/或有关版本。sha3-256可以符合和/或兼容2015年8月由nist公布的标题为:“sha-3standard:permutation-basedhashandextendable-outputfunctions”的fips出版物202,和/或此标准的以后和/或有关版本。

在其中第二装置是验证装置的实例中,鉴权逻辑370被配置成至少部分基于从第一装置收到的签名和至少部分基于收到的消息代表(m’)来生成验证签名。例如,鉴权逻辑370可以被配置成向每个收到的消息元素执行相同签名操作(即,应用与如由鉴权逻辑330的哈希逻辑332所应用的相同哈希函数或链函数)n-mi’(或mi')次以产生验证消息元素。随后可以确定验证签名(即,l个验证消息元素中的每一个)是否对应于对应公共密钥元素pki。例如,验证逻辑370可以被配置成比较每个验证消息元素和对应公共密钥元素pki。如果验证消息元素中的每一个匹配对应公共密钥元素pki,则验证对应于成功。换而言之,如果所有验证消息元素匹配公共密钥元素pk1、...、pkl,则验证对应于成功。如果任何验证消息元素不匹配对应公共密钥元素pki,则验证对应于失败。

如下面更详细所描述的,在一些示例中,第一装置310的鉴权逻辑330包含与哈希逻辑332、签名逻辑334和/或验证逻辑336协作以加速鉴权操作的一个或多个加速器338。类似地,在一些示例中,第二装置310的鉴权逻辑370包含与哈希逻辑372、签名逻辑374和/或验证逻辑376协作以加速鉴权操作的一个或多个加速器378。在下面的段落中并且参考附图描述了加速器的示例。

环境300的各种模块可以被实施为硬件、软件、固件或其组合。例如,环境300的各种模块、逻辑和其它组元可以形成第一装置310的(一个或多个)处理器320或第二装置350的(一个或多个)处理器360或装置的其它硬件组元的一部分,或以其它方式由第一装置310的(一个或多个)处理器320或第二装置350的(一个或多个)处理器360、或装置的其它硬件组元建立。同样地,在一些实施例中,环境300的模块中的一个或多个可以被实施为电气装置的电路或集合(例如,鉴权电路、密码学电路、通信电路、签名电路和/或验证电路)。另外,在一些实施例中,说明性模块的一个或多个可以形成另一模块的一部分和/或说明性模块的一个或多个可以是相互独立的。

图4a是根据一些示例的图示签名操作的merkle树结构的示意图。参照图4a,xmss签名操作要求构造merkle树400a,其使用来自每个叶wots节点410的本地公共密钥来以生成全局公共密钥(pk)420。在一些示例中,能够离线计算鉴权路径和根节点值,使得这些操作不限制性能。每个wots节点410具有被用来对消息进行仅一次签名的独特秘密密钥“sk”。xmss签名由为输入消息生成的签名和用以构造merkle树的根的中间树节点的鉴权路径组成。

图4b是根据一些示例的在验证期间的merkle树结构400b的示意图。在验证期间,输入消息和签名被用来计算wots节点的本地公共密钥420b,所述本地公共密钥420b被进一步用来使用鉴权路径以计算树根值。成功的验证将使计算的树根值与由签名实体共享的公共密钥pk匹配。wots和l树操作构成xmss签名/验证等待时间的相当大的部分,因此限定了鉴权系统的总体系统。本文中所描述的是各种预计算技术,所述预计算技术可以被实现以加快wots和l树操作,由此改进xmss性能。所述技术可适用于其它哈希选项并且很好地扩展用于软件和硬件实现两者。

图5是根据一些示例的用以实现签名算法的架构500中的计算块的示意图。参照图5,wots+操作牵涉到16个sha2-256hash(哈希)函数的67个并行链,各自带有作为输入的秘密密钥sk[66:0]。链中的每个hash操作由使用sah2-256的2个伪随机函数(prf)组成以生成位掩码和密钥。位掩码与以前的哈希进行异或并且与作为到第三sha2-256哈希操作的输入消息的密钥级联。通过跨67个哈希链对秘密密钥sk进行哈希处理,生成了67×32字节wots公共密钥pk[66:0]。

图6a是根据一些示例的用以在签名算法中实现签名生成的架构600a中的计算块的示意图。如图6a中所图示的,对于消息签名,对输入消息进行哈希处理和预处理以计算67×4位值,该值被用作索引以选择在每个链中的中间哈希值。

图6b是根据一些示例的用以在验证算法中实现签名验证的架构600b中的计算块的示意图。参照图6b,在验证期间,再次对消息进行哈希处理以计算签名索引并计算在每个链中的剩余hash操作以计算wots公共密钥pk。此值和鉴权路径被用来计算merkle树的根且与共享公共密钥pk进行比较以验证消息。

如上所提及的,常规多哈希sha2-256实现在wots签名/验证操作期间调度哈希操作时不考虑哈希链的长度。作为结果,链操作的群组中最长wots链确定执行该群组所要求的时间的量。进一步地,由于通常以批模式调度哈希引擎操作,因此,在处理相对较长的哈希链的哈希引擎执行时,处理相对较短的哈希链的哈希引擎保持闲置,由此限制了wots签名/验证算法的总体性能。这导致可用哈希引擎的次佳使用。

本文中所描述的主题通过提供用以实现索引感知哈希调度器的系统和方法解决了这些和其它问题,所述索引感知哈希调度器按哈希链长度分布将哈希链操作分组以最小化或至少降低总体wots签名/验证等待时间。在一些示例中,索引感知哈希分布算法按链长度将哈希链操作排序,并且跨多个sha2-256哈希引擎以协调的方式来调度它们以最小化或至少降低wots签名/验证性能的总体成本。

如上所描述的,xmss签名/验证方案使用wots一次签名方案作为构件。每个xmss签名和验证操作由分别对wots签名和验证算法的一次调用组成,之后是另外的步骤(即,与merkle树有关)。wots密钥生成器(keygen)、签名和验证算法由于它们在各为n字节的l个组元之上操作而全部具有类似的结构,其中l和n是密码系统的参数。每个组元由链函数处理,所述链函数是在因特网工程任务组(ietf)2018rfc-8391中定义的递归函数。对于每个组元,链函数自身调用取决于相同索引的消息组元值的次数,消息组元值在0与15之间(消息值越大,递归深度就越大)。每个链迭代导致对哈希函数(例如,sha2-256)的三次调用。

图7a是具有l个签名组元的wots签名/验证操作700的示意图。为说明此操作要求的哈希调用的次数,考虑指定l=67个签名组元的强制性xmss参数集,sha2-256作为哈希函数(n=32),消息组元值范围在0与15之间,以及哈希消息大小是128字节。假设平均消息组元值为8(即,(15-0)/2=8),此进程要求对sha2-256的67×8×3=1,608个调用,并且由于输入是128字节长,因此,每个哈希调用将要求至少两个sha-256压缩函数调用(即,对sha-256压缩函数的2×1,608=3,216个调用)。因此,wots签名/验证是在计算上昂贵的进程,其如果按照在rfc-8391中所指定的被实现,则不提供材料并行化机会。

本文中所描述的是优化或至少改进xmss签名生成和验证操作的技术。广义上来说,在一些示例中,具有相对接近的关联消息值的签名组元可以被指派到群组并被一起执行。在一些示例中,可以升序来将消息值排序,而在其它示例中,可以降序来将消息值排序。

将参照图9中所图示的流程图和图7b-7c与8a-8b中所图示的图,描述用以实现用于后量子密码学安全的基于哈希的签名和验证的消息索引感知多哈希加速器的技术。在一些示例中,图9中所描述的操作可以由第一装置310的加速逻辑338和/或第二装置350的加速逻辑378来实现。例如,如果第一装置310正在充当签名装置,则加速器逻辑338可以实现操作以加速在签名进程中的wots操作,并且如果第二装置350正在充当验证装置,则加速器逻辑378可以实现操作以加速在验证进程中的wots操作。

为了清晰,将参考由第一装置310执行的wots签名操作来解释操作。参照图9,在操作910,在鉴权逻辑330中接收wots签名操作。在操作915,加速器逻辑338标识在签名操作中各种哈希链的长度,并且在操作920,加速器逻辑338将哈希链操作根据它们相应哈希链消息长度来进行排序。可以以升序或降序来将哈希链操作排序。

在操作925,加速器逻辑338根据哈希链消息长度来将哈希链操作分组,使得具有在长度上类似的消息的哈希操作被指派到(一个或多个)相同群组以便同时执行(操作930)。

在鉴权逻辑330的基于软件的实现中,一旦wots链被选择要在相同批中被处理,便锁定签名逻辑334中的哈希引擎,直至该批中的所有wots链完成。因此,一个目标是最小化或至少降低在签名逻辑334中哈希引擎的闲置时间。图7b图示了在配有四个哈希引擎的实现中应用加速器以将增大的关联消息值的组元分组的益处的示例。在图7b中所描绘的示例中,已基于关联消息组元的升序将签名组元排序到第一批720和第二批730中。如图7b中所图示的,第一批720包括四个消息(msg[i0]、msg[i1]、msg[i2]、msg[i3]),所有消息具有大约相同的消息长度。类似地,第二批730包括四个消息(msg[i4]、msg[i5]、msg[i6]、msg[i7]),所有消息具有大约相同的消息长度。该排序过程产生了索引i的列表,使得msg[ij]≤msg[ij+1],所有j∈[0...(l-1)]。索引i的列表被应用于签名和wpk组元两者。此类排序算法是高度有效的,对于n个输入具有o(nlgn)的复杂性。具体地说,对于其中列表是小的(仅l=67个元素)此情况,因此与xmss签名和/或验证操作的总体计算成本相比较,排序的计算成本是可忽略的。

在图7a和4b中所描述的示例中,在批1720中处理的所有链函数具有大约相同的长度,并且因此应同时终止。类似地,在批2730中处理的所有链函数具有大约相同的长度,并且因此应同时终止。因此,在任何时间不应留有哈希引擎未使用,这代表最佳情况。这是最佳的情况并且它不能保证始终发生,然而,常规xmss参数有利于此情况。强制性xmss参数建议l=67和msg[i]∈[0..15],因此平均67/16=4.18个组元将具有相同消息值。这接近于4,其分割可用于利用4或8个哈希引擎的多引擎哈希实现的缓冲器的通常数量。

图7c图示了在链函数的未排序批740中的最差情况情形。如图7c中所图示的,最短链长度(msg[ij])与最长链长度(msg[im])明显不同,由此对于处理消息msg[ij]、msg[ik]和msh[il]的哈希引擎产生大量的闲置时间。图7d图示了即使在消息值不同时,以增大的顺序将它们排序也降低了在具有最长链长度的消息链与具有最短链长度的链之间的差别。

图8a是根据一些示例的常规哈希链分布的示意图。参照图8a,在常规实现中,哈希链被输入哈希硬件810而不考虑相应哈希链的长度。因此,哈希操作的等待时间受具有最长长度的哈希链限制。图8b是根据一些示例的索引感知哈希链分布的示意图。相比于图8a,图8b中的哈希链已如上所描述的被排序和分组以尝试均衡哈希硬件810的工作负荷,由此降低与哈希操作关联的等待时间。

作为示例,索引感知分布技术可被应用于具有十六(16)个哈希链和四(4)个并行哈希引擎的wots验证操作。假设所述十六个链在验证期间具有基于输入消息的哈希值的以下长度。

在常规有序调度中,哈希链将按顺序被部署在四个并行hash加速器上,如图8a中所图示。wots签名性能受四个引擎的最差等待时间(在此情况中为42)限制。还明显的是,在工作负荷的最快与最慢组合之间存在大约33%差别。

另一常规技术是取决于哪个引擎可用,在运行时间调度链。尽管此技术降低了工作负荷差别中的失配,但调度效率仍不等于理论上的最大值。

如上所描述的,在索引感知哈希调度算法中,将哈希链以它们相应的链长度的顺序进行排序。哈希链随后可以升序和降序交替被部署在四个引擎上。这确保得到最短链的哈希引擎也得到最长链,并且因此尝试均衡跨四个哈希引擎的等待时间。因此,索引感知哈希分布通过限制在最快与最慢工作负荷组合之间的差别而提供了性能改进。

通过将签名链长度排序,能够在wots签名操作期间应用类似的索引感知哈希调度技术。索引感知哈希调度技术能够被延伸到软件和微代码实现及任何基础哈希算法,像sha2-512或shake-128,如在xmss中所指定的。

图10图示了如前面所描述的可以适合用于实现各种实施例的示例性计算架构的实施例。在各种实施例中,计算架构1000可以包括电子装置或者被实现为电子装置的部分。在一些实施例中,计算架构1000可以代表例如实现上面所描述的操作环境的一个或多个组元的计算机系统。在一些实施例中,计算架构1000可以代表实现本文中所描述的一个或多个技术的dnn训练系统的一个或多个部分或组元。实施例不被限制于此上下文中。

在本申请中使用时,术语“系统”和“组元”及“模块”意在指的是计算机有关的实体,或是硬件、硬件和软件的组合、软件、或在执行中的软件,其的示例由示例性计算架构1000提供。例如,组元能够是但不限于是在处理器上运行的进程、处理器、硬盘驱动器、(光和/或磁性存储介质的)多个存储驱动器、对象、可执行文件、执行的线程、程序和/或计算机。通过说明的方式,在服务器上运行的应用和服务器二者均能够是组元。一个或多个组元能够驻留在执行的进程和/或线程内,并且组元能够位于一个计算机上和/或被分布在两个或更多个计算机之间。进一步地,组元可通过各种类型的通信介质在通信上被相互耦合以协调操作。协调可牵涉到信息的单向或双向交换。例如,组元可以采取通过通信介质所传递的信号形式来传递信息。信息能够被实现为分配到各种信号线路的信号。在此类分配中,每个消息是信号。然而,其它实施例可以备选地采用数据消息。可以跨各种连接来发送此类数据消息。示例性连接包含并行接口、串行接口和总线接口。

计算架构1000包含各种常用计算元件,诸如一个或多个处理器、多核处理器、协同处理器、存储器单元、芯片集、控制器、外设、接口、振荡器、定时装置、视频卡、音频卡、多媒体输入/输出(i/o)组元、电源等等。然而,实施例不限于通过计算架构1000的实现。

如图10中所示出的,计算架构1000包含一个或多个处理器1002和一个或多个图形处理器1008,并且可以是单处理器台式系统、多处理器工作站系统或具有大量处理器1002或处理器核1007的服务器系统。在一个实施例中,系统1000是被结合于供在移动装置、手持式装置或嵌入式装置中使用的芯片上系统(soc或soc)集成电路内的处理平台。

系统1000的实施例能够包含基于服务器的游戏平台、游戏控制台(包含游戏和媒体控制台、移动游戏控制台、手持式游戏控制台或在线游戏控制台),或者被结合于它们之内。在一些实施例中,系统1000是移动电话、智能电话、平板计算装置或移动因特网装置。数据处理系统1000也能够包含可穿戴装置(诸如智能手表可穿戴装置、智能护目镜装置、增强现实装置或虚拟现实装置),与可穿戴装置耦合或者集成在可穿戴装置内。在一些实施例中,数据处理系统1000是具有一个或多个处理器1002和由一个或多个图形处理器1008生成的图形接口的电视或机顶盒装置。

在一些实施例中,一个或多个处理器1002各自包含用以处理指令的一个或多个处理器核1007,所述指令在被执行时,执行用于系统和用户软件的操作。在一些实施例中,一个或多个处理器核1007的每一个被配置成处理特定的指令集1009。在一些实施例中,指令集1009可以促进复杂指令集计算(cisc)、精简指令集计算(risc)或经由超长指令字(vliw)的计算。多个处理器核1007可以各自处理不同指令集1009,指令集1009可以包含用以促进对其它指令集的仿真的指令。处理器核1007还可以包含其它处理装置,诸如数字信号处理器(dsp)。

在一些实施例中,处理器1002包含高速缓冲存储器1004。取决于架构,处理器1002能够具有单个内部高速缓存或多个级别的内部高速缓存。在一些实施例中,在处理器1002的各种组元之间共享高速缓冲存储器。在一些实施例中,处理器1002还使用外部高速缓存(例如,3级(l3)高速缓存或末级高速缓存(llc))(未示出),其可以通过使用已知高速缓存一致性技术在处理器核1007之间被共享。寄存器堆1006被另外包含在处理器1002中,处理器1002可以包含用于存储不同类型的数据(例如,整数寄存器、浮点寄存器、状态寄存器和指令指针寄存器)的不同类型的寄存器。一些寄存器可以是通用寄存器,而其它寄存器可以特定于处理器1002的设计。

在一些实施例中,一个或多个处理器1002与一个或多个接口总线1010耦合以在处理器1002与系统中的其它组元之间传送通信信号,诸如地址、数据或控制信号。接口总线1010在一个实施例中能够是处理器总线,诸如直接媒体接口(dmi)总线的某个版本。然而,处理器总线不被限于dmi总线,并且可以包含一个或多个外设组元互连总线(例如,pci、pci高速)、存储器总线或其它类型的接口总线。在一个实施例中,(一个或多个)处理器1002包含集成的存储器控制器1016和平台控制器中枢1030。存储器控制器1016促进在存储器装置与系统1000的其它组元之间的通信,而平台控制器中枢(pch)1030经由本地i/o总线提供到i/o装置的连接。

存储器装置1020能够是动态随机存取存储器(dram)装置、静态随机存取存储器(sram)装置、闪速存储器装置、相变存储器装置或具有适合性能以充当进程存储器的某一其它存储器装置。在一个实施例中,存储器装置1020能够作为用于系统1000的系统存储器操作,以存储数据1022和指令1021以便在一个或多个处理器1002执行应用或进程时使用。存储器控制器中枢1016还与可选外部图形处理器1012耦合,所述外部图形处理器1012可以与处理器1002中的一个或多个图形处理器1008进行通信以执行图形和媒体操作。在一些实施例中,显示装置1011能够连接到(一个或多个)处理器1002。显示装置1011能够是以下中的一项或多项:如在移动电子装置或膝上型装置中的内部显示装置,或经由显示接口(例如,displayport等)附连的外部显示装置。在一个实施例中,显示装置1011能够是头戴式显示器(hmd),诸如供在虚拟现实(vr)应用或增强现实(ar)应用中使用的立体显示装置。

在一些实施例中,平台控制器中枢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包含用于将遗留(例如,个人系统2(ps/2))装置耦合到系统的可选遗留i/o控制器1040。平台控制器中枢1030还能够连接到一个或多个通用串行总线(usb)控制器1042连接输入装置,诸如键盘和鼠标1043组合、摄像机1044或其它usb输入装置。

下述内容涉及其它示例。

示例1是一种设备,包括:计算机可读存储器;至少以下之一:用以生成要与消息关联地被传送的签名的签名逻辑,所述签名逻辑通过使用私有密钥生成包括公共密钥的所述签名来对所述消息应用基于哈希的签名方案,或者用以验证与所述消息关联地收到的签名的验证逻辑,所述验证逻辑应用所述基于哈希的签名方案来通过使用所述公共密钥验证所述签名;以及加速器逻辑,用以对到所述基于哈希的签名方案的输入的至少一个集合应用结构化顺序。

在示例2中,示例1的主题能够可选地包含逻辑用于执行以下操作:将签名分割成多个签名组元;以及对多个签名组元应用安全哈希算法(sha)。

在示例3中,示例1-2的任一个示例的主题能够可选地包含逻辑用以执行以下操作:为多个签名组元中的每个签名组元标识哈希链消息长度;以及根据多个签名组元中每个签名组元的相应哈希链消息长度,将多个签名组元排序成加索引的哈希链列表。

在示例4中,示例1-3的任一个示例的主题能够可选地包含一种布置,其中基于哈希的签名方案利用多个哈希引擎来对多个签名组元应用sha。

在示例5中,示例1-4的任一个示例的主题能够可选地包含逻辑用以执行以下操作:将多个签名组元根据它们相应链消息长度来指派到多个群组中,多个群组对应于多个哈希引擎;以及将多个群组指派到要被同时执行的多个哈希引擎。

在示例6中,示例1-5的任一个示例的主题能够可选地包含逻辑用以执行以下操作:在具有最长链消息长度的签名组元与具有最短链消息长度的签名组元之间交替以将多个签名组元指派到对应多个群组中。

示例8是一种计算机实现的方法,包括执行以下至少之一:经由通过使用私有密钥生成包括公共密钥的签名来对消息应用基于哈希的签名方案,生成要与所述消息关联地被传送的所述签名,或者验证与所述消息关联地收到的签名,所述验证逻辑应用所述基于哈希的签名方案以通过使用所述公共密钥来验证所述签名,并且包括对到所述基于哈希的签名方案的输入的至少一个集合应用结构化顺序。

在示例9中,示例8的主题能够可选地包含将签名分割成多个签名组元;以及对多个签名组元应用安全哈希算法(sha)。

在示例10中,示例8-9的任一个示例的主题能够可选地包含为多个签名组元中的每个签名组元标识哈希链消息长度;以及根据多个签名组元中每个签名组元的相应哈希链消息长度,将多个签名组元排序成加索引的哈希链列表。

在示例11中,示例8-10的任一个示例的主题能够可选地包含一种布置,其中基于哈希的签名方案利用多个哈希引擎来对多个签名组元应用sha。

在示例12中,示例8-11的任一个示例的主题能够可选地包含将多个签名组元根据它们相应链消息长度来指派到多个群组中,多个群组对应于多个哈希引擎;以及将多个群组指派到要被同时执行的多个哈希引擎。

在示例13中,示例8-12的任一个示例的主题能够可选地包含在具有最长链消息长度的签名组元与具有最短链消息长度的签名组元之间交替以将多个签名组元指派到对应多个群组中。

在示例14中,示例8-13的任一个示例的主题能够可选地包含一种布置,其中基于哈希的签名方案包括xmss签名方案。

示例15是一种计算机程序产品,包括存储在非暂态计算机可读介质上的逻辑指令,所述逻辑指令在由控制器执行时,配置控制器执行操作,所述操作包括应用基于哈希的签名方案以执行以下至少之一:使用私有密钥来生成签名,要与消息关联地被传送的所述签名包括公共密钥,或者使用所述公共密钥来验证与所述消息关联地收到的所述签名;并且所述操作包括对到所述基于哈希的签名方案的输入的至少一个集合应用结构化顺序。

在示例16中,示例15的主题能够可选地包含用以配置处理器执行以下操作的指令:将签名分割成多个签名组元;以及对多个签名组元应用安全哈希算法(sha)。

在示例17中,示例15-16的任一个示例的主题能够可选地包含用以配置处理器执行以下操作的指令,所述操作包括:为多个签名组元中的每个签名组元标识哈希链消息长度;以及根据多个签名组元中每个签名组元的相应哈希链消息长度,将多个签名组元排序成加索引的哈希链列表。

在示例18中,示例15-17的任一个示例的主题能够可选地包含一种布置,其中基于哈希的签名方案利用多个哈希引擎来对多个签名组元应用sha。

在示例19中,示例15-18的任一个示例的主题能够可选地包含用以配置处理器以执行以下操作的指令:将多个签名组元根据它们相应链消息长度来指派到多个群组中,多个群组对应于多个哈希引擎;以及将多个群组指派到要被同时执行的多个哈希引擎。

在示例20中,示例15-19的任一个示例的主题能够可选地包含用以配置处理器执行以下操作的指令:在具有最长链消息长度的签名组元与具有最短链消息长度的签名组元之间交替以将多个签名组元指派到对应多个群组中。

在示例21中,示例15-20的任一个示例的主题能够可选地包含一种布置,其中基于哈希的签名方案包括xmss签名方案。

上述具体实施方式包含对形成具体实施方式的一部分的附图的引用。图通过图示示出可实践的特定实施例。这些实施例在本文中也被称为“示例”。此类示例可以包含除所示出或所描述的那些元素外的元素。然而,也设想了包括所示或所述元素的示例。另外,还设想了相对于特定示例(或其一个或多个方面)或者相对于本文中所示出或所描述的其它示例(或其一个或多个方面),使用所示出或所描述的那些元素(或其一个或多个方面)的任何组合或置换的示例。

本文档中引用的出版物、专利和专利文档在本文中以其整体的形式通过引用被并入,好象单独地通过引用被并入一样。在本文档与通过引用被如此地并入的那些文档之间出现不一致使用的情况中,则在所并入的引用中的使用是对本文档的使用的补充;对于不可调和的不一致,本文档中的使用优先。

在此文档中,独立于“至少一个”或“一个或多个”的任何其它实例或使用,如在专利文档中所常见地使用了术语“一”(a或an),以包括一个或不止一个。另外,“...的集合”包含一个或多个元件。在此文档中,除非另有指示,否则,术语“或”用于指非独占,或者使得“a或b”包含“a但无b”、“b但无a”及“a和b”。在随附权利要求中,术语“包含”(including)和“之中”(inwhich)用作相应术语“包括”(comprising)和“其中”(wherein)的简明英语等同物。此外,在下面的权利要求中,术语“包含”和“包括”是开口式的;即,包含除在权利要求中此类术语后所列的那些元素外的元素的系统、装置、制品或过程仍被视为落入该权利要求的范围内。另外,在下面的权利要求中,术语“第一”、“第二”“第三”等只用作标签,并且无意对其对象暗示数字顺序。

如本文中所引用的术语“逻辑指令”涉及可以被一个或多个机器所理解以便执行一个或多个逻辑操作的表达。例如,逻辑指令可以包括可由处理器编译器解释以便在一个或多个数据对象上执行一个或多个操作的指令。然而,这仅仅是机器可读指令的示例,并且示例在此方面不受限制。

如本文中所引用的术语“计算机可读介质”涉及能维持可由一个或多个机器认知的表达的介质。例如,计算机可读介质可以包括用于存储计算机可读指令或数据的一个或多个存储装置。此类存储装置可以包括存储介质,诸如例如,光学、磁性或半导体存储介质。然而,这仅仅是计算机可读介质的示例,并且示例在此方面不受限制。

如本文中所引用的术语“逻辑”涉及用于执行一个或多个逻辑操作的结构。例如,逻辑可以包括基于一个或多个输入信号来提供一个或多个输出信号的电路。此类电路可以包括接收数字输入并提供数字输出的有限状态机,或响应于一个或多个模拟输入信号而提供一个或多个模拟输出信号的电路。此类电路可以被提供在专用集成电路(asic)或现场可编程门阵列(fpga)中。此外,逻辑可以包括存储在存储器中的机器可读指令,所述存储器与处理电路组合以执行此类机器可读指令。然而,这些仅是可以提供逻辑的结构的示例,并且示例在此方面不受限制。

本文中所描述的方法中的一些可以被实施为在计算机可读介质上的逻辑指令。在处理器上被执行时,逻辑指令促使处理器被编程为实现所描述的方法的专用机器。处理器在被逻辑指令配置成执行本文中所描述的方法时,构成用于执行所描述的方法的结构。备选地,本文中所描述的方法可以被简化成在例如现场可编程门阵列(fpga)、专用集成电路(asic)等上的逻辑。

在本描述和权利要求中,可以使用术语“被耦合”和“被连接”以及它们的衍生词。在具体示例中,被连接可被用来指两个或更多个元件相互直接物理或电接触。被耦合可指两个或更多个元件直接物理或电接触。然而,被耦合还可以指两个或更多个元件可以相互不直接接触,但还仍可以相互协作或交互。

本说明书中对“一个示例”或“一些示例”的引用指联系该示例而描述的具体特征、结构或特性被包含在至少一个实现中。说明书中各种位置处词语“在一个示例中”的出现可以全部或可以不全部指同一示例。

上面的描述旨在是说明性的而不是限制性的。例如,上面所描述的示例(或其一个或多个方面)可以与其它示例组合使用。其它实施例可以诸如由本领域技术人员在查看上面的描述后使用。摘要是为了让读者快速认知本技术公开内容的本质。被认为具有这样的理解:它将不被用来解释或限制权利要求的范围或含义。此外,在上面的具体实施方式中,各种特征可被编组在一起以把本公开连成一个整体。然而,权利要求可不阐述本文中所公开的每个特征,因为实施例可以所述特征的子集作为特征。进一步地,实施例可以包含比具体示例中所公开的那些特征更少的特征。因此,下面的权利要求特此被并入具体实施方式中,其中每个权利要求项本身作为单独的实施例。本文中所公开的实施例的范围要参考随附权利要求以及此类权利要求被授权的等同物的完全范围来确定。

虽然用特定于结构特征和/或方法论动作的语言描述了示例,但要理解的是,要求保护的主题可不被限于所描述的特定特征或动作。相反,特定特征和动作作为实现要求保护的主题的样本形式被公开。

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