用于后量子密码安全XMSS和LMS基于散列的签名和验证的加速器的制作方法

文档序号:23474255发布日期:2020-12-29 13:26阅读:1698来源:国知局
用于后量子密码安全XMSS和LMS基于散列的签名和验证的加速器的制作方法

本文描述的主题总体上涉及计算机安全领域,并且更具体地涉及用于后量子密码安全基于散列的签名和验证的加速器。



背景技术:

现有的公钥数字签名算法,诸如rivest-shamir-adleman(rsa)和椭圆曲线数字签名算法(ecdsa),预计将无法抵御基于使用量子计算机诸如shor算法之类的算法的暴力攻击。因此,密码研究协会和各种标准机构正在努力为针对量子计算机是安全的算法定义新的标准。

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

附图说明

参考附图来描述具体实施方式。

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

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

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

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

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

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

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

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

图7a是根据一些示例的架构中的用于实现hash算法的计算块的示意图。

图7b是根据一些示例的架构中的用于使用伪随机函数(prf)预计算的操作码/密钥实现hash(散列)算法的计算块的示意图。

图7c是根据一些示例的架构中的用于使用伪随机函数(prf)预计算的消息实施hash算法的计算块的示意图。

图7d是根据一些示例的架构中的用于使用函数f操作码预计算实现hash算法的计算块的示意图。

图8是根据一些示例的l-tree结构的示意图。

图9a是根据一些示例的架构中的用于实现rand_hash算法的计算块的示意图。

图9b是根据一些示例的架构中的用于使用预计算实现rand_hash算法的计算块的示意图。

图10是根据一些示例的用于在签名期间生成认证路径的l-tree计算的示意图。

图11是根据一些示例的可适于利用关于激活路径差异的信息来实现神经网络的对抗训练的计算架构的示意图。

具体实施方式

本文描述了用于实现用于后量子密码安全基于散列的签名算法的加速器的示例性系统和方法。在下面描述中,阐述了许多具体细节以提供对各种示例的透彻理解。然而,本领域技术人员将理解,可以在没有具体细节的情况下实践各种示例。在其他情况下,未详细示出或描述公知的方法、过程、组件和电路,以免模糊示例。

如上所述,现有的公钥数字签名算法,诸如rivest-shamir-adleman(rsa)和椭圆曲线数字签名算法(ecdsa),预计将无法抵御基于使用量子计算机诸如shor算法之类的算法的暴力攻击。扩展的merkle签名方案(xmss)和/或扩展的merkle多次签名方案(xmss-mt)是基于散列的签名方案,其可以防止量子计算机的攻击。如本文所使用的,术语xmss应指代xmss方案和xmss-mt方案二者。

xmss签名过程使用一次性签名方案(例如winternitz一次性签名(wots)或其衍生(例如,wots+))结合安全散列算法(sha)(例如sha2-256)作为主要的基础散列函数,来实现基于散列的签名方案。在一些示例中,xmss签名/验证方案还可以使用sha2-512、sha3-shake-256或sha3-shake-512中的一个或多个作为安全散列函数。xmss特定的散列函数包括伪随机函数(prf)、链散列(f)、树散列(h)和消息散列函数(hmsg)。如本文所使用的,术语“wots”应指wots签名方案和/或诸如wots+的派生方案。

leighton/micali签名(lms)方案是另一种基于散列的签名方案,其使用leighton/micali一次性签名(lm-ots)作为一次性签名构建块。lms签名是基于sha2-256散列函数。

xmss签名过程包括三个主要操作。第一个主要操作接收输入消息(m)和私钥(sk),并利用一次性签名算法(例如,wots+)生成对公钥(pk)进行编码的消息代表(m’)。在128位后量子安全性实现中,输入消息m经受散列函数,然后划分为67个消息分量(每个分量n个字节),每个消息分量经受散列链函数以生成相应的67个分量的数字签名。每个链函数调用一系列基础安全散列算法(sha)。

第二个主要操作是l-tree计算,其组合wots+(或wots)公钥分量(每个分量n个字节)并生成单个n字节值。例如,在128位后量子安全性中,有67个公钥分量,每个分量都调用在输入块执行的基础安全散列算法(sha)。

第三个主要操作是树散列操作,其构成merkle树。在xmss验证中,作为签名的一部分提供的认证路径和l-tree操作的输出由树散列操作处理,以生成merkle树的根节点,该根节点应与xmss公钥相对应。对于具有128位后量子安全性的xmss验证,遍历merkle树包括执行安全散列操作。在xmss验证中,将树散列操作的输出与已知的公钥进行比较。如果它们匹配,则签名被接受。相反,如果它们不匹配,则签名被拒绝。

xmss签名过程在计算上是昂贵的。xmss签名过程调用数百甚至数千个散列计算循环。本文描述的主题通过提供实现用于后量子密码安全xmss和lms基于散列的签名和验证的加速器的系统和方法来解决这些和其他问题。

后量子密码概述

后量子密码(也称为“量子验证”,“量子安全”,“抗量子”或简称为“pqc”)采用了一种未来和现实的密码学方法。它使负责密码的人以及最终用户知道密码已经过时;准确地说,它需要演进以能够成功地解决计算设备向量子计算和后量子计算的演进。

众所周知,密码学允许保护个人和实体之间在线通信和使用各种网络存储的数据。数据的通信范围包括发送和接收电子邮件、在线购买商品或服务,使用网站访问银行或其他个人信息等。

当处理量子计算时,传统密码学及其典型的复杂数学场景的因式分解和计算可能并不重要。这些数学问题,例如离散对数、整数因式分解和椭圆曲线离散对数等,无法承受强大的量子计算机的攻击。shor,p.w."algorithmsforquantumcomputation:discretelogarithmsandfactoring".proceedings35thannualsymposiumonfoundationsofcomputerscience.ieeecomput.soc.press.doi:10.1109/sfcs.1994.365700.isbn0818665807。尽管可以在当前的密码学基础上构建任何后量子密码,但是这种新颖的方法仍需要足够智能、快速和精确,以抵抗和击败量子计算机的任何攻击。

当今的pqc主要聚焦在以下方法上:1)基于1979年merkle的散列树公钥签名系统的基于散列的密码,该系统建立在lamport和diffie的一个消息签名思想上;2)基于代码的密码,例如mceliece的隐式goppa代码公钥加密系统;3)基于1998年的hoffstein-pipher-silverman公钥加密系统的基于格的密码;4)基于1996年patarin的隐式场方程(hfe)公钥签名系统的多元二次方程密码,该系统进一步基于matumoto-imai的建议;5)依靠超奇异椭圆曲线和超奇异同构图的超奇异椭圆曲线等值密码;6)对称密钥量子电阻,例如基于散列的签名(hbs)。

图1a和1b分别是一次性基于散列的签名方案和多次基于散列的签名方案的示意图。如前所述,基于散列的加密是基于像lamport签名、merkle签名、扩展merkle签名方案(xmss)、sphincs方案、sphincs+方案等加密体系。随着量子计算的出现以及对其发展的预期,人们关心量子计算可能带来的各种挑战,以及如何使用密码领域来应对这些挑战。

一个正在探索以应对量子计算挑战的领域是基于散列的签名(hbs),因为这些方案已经存在了很长一段时间,并且拥有应对量子计数和后量子计算挑战的必要基本成分,例如依赖于对称密码构建块(例如,散列函数)。hbs方案被认为是与快速平台安全启动一起使用的快速签名算法,快速平台安全启动被认为最有效抵抗量子攻击。

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

类似地,如关于图1b所示,示出了另一hbs方案,其中,该方案涉及多次签名(mts)方案150,其中,私钥可以对多个消息进行签名。

图2a和图2b分别是一次性签名方案和多次签名方案的示意图。继续于图1a的基于hbs的ots方案100和图1b的mts方案150,图2a示出了winternitzots(wots)方案200,该方案由斯坦福大学数学系的robertwinternitz提供,而图2b示出了xmssmts方案250。

例如,图2a的wots方案200提供了将消息散列化和解析为带有[0,1,2,...,15]之间的67个整数的m,例如私钥sk205、签名s210和公钥pk215,每个具有67个分量,每个分量32个字节。

现在,例如,图2b示出了xmssmts方案250,该方案允许图2a的wots方案200和具有xmssmerkle树270的xmss方案255的组合。如先前关于图2a所讨论的,wots方案200基于一次性公钥pk215(该密钥具有67个分量,每个分量32个字节),然后使一次性公钥经受l-tree压缩算法260,以提供wots压缩的pk267,以放入xmss方案255的xmssmerkle树270中。可以预见,xmss签名验证可以包括:计算wots验证,并检查以确定重构的根节点是否与xmss公钥匹配,例如根节点=xmss公钥。

后量子密码加速器

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

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

第一设备310进一步包括认证逻辑330,该认证逻辑330包括存储器332、签名逻辑和验证逻辑336。散列逻辑332被配置为对消息(m)进行散列化(即,向其应用散列函数)以生成消息m的散列值(m')。散列函数可以包括但不限于安全散列函数,例如安全散列算法sha2-256和/或sha3-256等。sha2-256可以符合和/或兼容美国国家标准技术研究院(nist)于2012年3月发布的标题为“securehashstandard(shs)”的联邦信息处理标准(fips)出版物180-4,和/或该标准的更高版本和/或相关版本兼容。sha3-256可以符合和/或兼容nist于2015年8月发布的标题为“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)信息互联网草案,例如,“xmss:extendedhash-basedsignatures”,由互联网研究任务组(irtf)于2018年5月发布,密码论坛研究组,其可以在https://tools.ietf.org/html/rfc8391找到。

wots签名算法可以用于生成签名并利用散列函数来验证接收到的签名。wots进一步配置为使用私钥,并且每个私钥元素ski一次性使用。例如,wots可以被配置为将散列函数应用于每个私钥元素mi或n-mi次以生成签名,并将散列函数应用于每个接收到的消息元素n-mi'或mi'次,以生成相应的验证签名元素。merkle多次签名方案是一种基于散列的签名方案,该方案使用ots,并且可以使用公钥不止一次。例如,merkle签名方案可以利用winternitzots作为一次性签名方案。wots+被配置为利用一组散列函数和链函数。

xmss、wots+和xmss-mt是利用链函数的基于散列的签名方案的示例。每个链函数被配置为封装对散列函数的多个调用,并且可以进一步执行其他操作。在一些示例中,包括在链函数中的散列函数的调用次数可以是固定的。链函数可以提高关联的基于散列的签名方案的安全性。

密码逻辑340被配置为代表签名设备310执行各种密码功能和/或安全功能。在一些实施例中,密码逻辑340可以被实施为密码引擎、签名设备310的独立安全协处理器、并入到处理器320中的密码加速器或独立的软件/固件。在一些实施例中,密码逻辑340可以生成和/或利用各种密码密钥(例如,对称/非对称密码密钥)来促进加密、解密、签名和/或签名验证。另外,在一些实施例中,密码逻辑340可以促进通过通信链路与远程设备建立安全连接。还应该意识到,在一些实施例中,第一设备310的密码逻辑340和/或另一模块可以建立可信任的执行环境或安全区域,在其中可以存储本文描述的数据的一部分和/或可以执行本文描述的许多功能。

在如上所述生成签名之后,消息m和签名然后可以由第一设备310(例如,通信逻辑342)通过网络通信链路390发送到第二设备350。消息m在传输之前可能未加密。在另一个实施例中,消息m可以在传输之前被加密。例如,消息m可以由密码逻辑340加密以生成加密的消息。

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

在一些示例中,可以在先前的交换中将公钥364提供给第二设备350。公钥pk被配置为包含l个的公钥元素,即pk=[pk1,...,pkl]。公钥364可以被存储到例如存储器362。

第二设备350进一步包括认证逻辑370,该认证逻辑370包括散列逻辑372、签名逻辑和验证逻辑376。如上所述,散列逻辑372被配置为对消息(m)进行散列化(即,向其应用散列函数)以生成散列消息(m')。散列函数可以包括但不限于安全散列函数,例如安全散列算法sha2-256和/或sha3-256等。sha2-256可以符合和/或兼容美国国家标准技术研究院(nist)于2012年3月发布的标题为“securehashstandard(shs)”的联邦信息处理标准(fips)出版物180-4,和/或该标准的更高版本和/或相关版本兼容。sha3-256可以符合和/或兼容nist于2015年8月发布的标题为“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包括一个或多个加速器338,该一个或多个加速器338与散列逻辑332、签名逻辑334和/或验证逻辑336合作以加速认证操作。类似地,在一些示例中,第二设备310的认证逻辑370包括一个或多个加速器378,该一个或多个加速器378与散列逻辑372、签名逻辑374和/或验证逻辑376合作以加速认证操作。加速器的示例在以下段落中并参考附图进行描述。

环境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-tree操作分别构成xmss签名/验证时延的重要部分,从而定义认证系统的总体性能。本文描述了各种预计算技术,其可以被实施来加速wots操作和l-tree操作,从而改进xmss性能。该技术适用于其他散列选项,并且可以很好地针对软件和硬件实现进行扩展。

图5是根据一些示例的架构500中的用于实施签名算法的计算块的示意图。参考图5,wots+操作涉及16个sha2-256hash函数的67个并行链,每个均具有密钥sk[66:0]作为输入。链中的每个hash操作均包括2个伪随机函数(prf),该伪随机函数使用sha2-256生成位掩码和密钥。位掩码与先前的散列xor,并与密钥串接作为第三sha2-256散列操作的输入消息。67×32字节的wots公钥pk[66:0]是通过对67条散列链中的密钥sk进行散列化生成的。

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

图6b是根据一些示例的架构600b中的用于在验证算法中实现签名验证的计算块的示意图。参考图6b,在验证期间,该消息再次被散列化以计算签名索引并计算每个链中的其余hash操作以计算wots公钥pk。此值和认证路径用于计算merkle树的根,并与共享公钥pk进行比较以验证消息。

图7a是根据一些示例的架构700a中的用于实施hash算法的计算块的示意图。作为背景,sha256一次性处理输入的64个字节。输入的这64个字节被分为16个32位值,分别表示为w1,w2,…,w16。sha256从这16个值中得出其他48个32位值,分别表示为w17,w18,…,w64。sha256函数有64轮,并且其针对每轮使用1个wi,1≤i≤64。这意味着,如果前16个w是已知的,则能够计算所有64轮。如果所知的少于前16个w,例如15,则只能预计算15轮。

参考图7a,在hash操作中,三个sha2-256函数(即2个prf和一个函数f)调用的输入由128个字节的消息组成,该消息是通过将32个字节的opcode(操作码)、key(密钥)、message(消息)和pad串接而获得的。在本文描述的主题中,可以在不同的预计算技术中使用输入消息的共同特征来加速wots中的散列操作。每个hash操作都可处理3×128字节的消息,因此sha2-256需要384个散列轮,其以1字节/轮的速率消耗消息。整个wots公钥生成需要67×16×384=411,648个散列轮。依赖于签名/验证操作的消息平均需要一半的轮,等于205,824。

图7b是根据一些示例的架构700b中的用于使用伪随机函数(prf)预计算的操作码/密钥实现hash算法的计算块的示意图。参考图7b,在一些示例中,可以将整个wots操作中用于prf函数的操作码设置为固定值,例如固定到“3”的32字节值。此外,prf中消息的key部分是伪随机生成的非机密32字节值,被标识为seed(种子),其对于每个wots操作中的所有prf函数是公共的。由于sha2-256以64字节的块消耗消息并且每个块操作64轮,因此prf函数的前64字节(即opcode和seed)的中间散列可以被计算一次并在wots中的所有1072个hash操作中使用,以加速hash算法的计算。在一些示例中,该修改将prf的迭代轮数从128减少到64,从而使能在274,432个散列循环中生成wots密钥并且在大约137,216个循环中使能签名/验证,从而提高了wots性能。

图7c是根据一些示例的架构700c中的用于使用伪随机函数(prf)预计算消息实现hash算法的计算块的示意图。参考图7c,在一些示例中,prf的输入的消息部分由32字节的ots地址组成,其被分为6×4字节和1×8字节地址字段。由于ots地址的前20个字节对于每个wots操作都是常量,因此可以预计算其散列值以在每个prf函数中消除5轮。此外,ots地址的其余12个字节在密钥和位掩码生成之间仅相差一个位。这可以通过如下方式来使用:通过在密钥生成期间为其余12个字节计算一次中间散列,然后在位掩码生成期间重新使用计算值以从位掩码prf消除额外的3轮。该技术将prf的迭代轮数从128分别减少到59个/56个,从而使得能够在大约260,496个散列循环中生成wots密钥,并在大约130,248个循环中实现签名/验证,从而提高了wots性能。

图7d是根据一些示例的架构700d中的用于使用函数f操作码预计算实现hash算法的计算块的示意图。参考图7d,在一些示例中,散列函数“f”具有128字节的消息,该消息包括32字节的操作码、32字节的prf生成的密钥、32字节的先前散列与位掩码的异或(xor)和32字节的填充。32字节的操作码是常量,并且被设置为值“0”,因此可以预计算并且在wots中的所有hash操作中共享。这将函数f的迭代轮数从128个减少到56个,从而使得能够在大约251,920个散列循环中生成wots密钥,并在大约125,960个循环中实现签名/验证,从而提高了wots性能。

这些预计算优化也可以扩展到其他xmss散列函数,并且可以在软件和硬件实现之间进行扩展。

l-tree预散列化(pre-hash)改进

对xmss时延的另一贡献者是l-tree操作。l-tree生成二叉树,以使用称为rand_hash的键控散列函数将67×32字节的wots公钥压缩为单个32字节的叶节点值。

图8是根据一些示例的l-tree结构800的示意图。参考图8,在一些示例中,rand_hash函数使用prf函数在内部生成本地密钥(pk[n])和两个位掩码值。与左/右子节点求异或的密钥和位掩码被串接并散列化以计算l-tree的新节点值。l-tree中的所有散列操作均在默认的推荐模式下使用sha256,针对prf需要3×128轮,针对函数h需要192轮。

图9a是架构900a中的用于实现rand_hash算法的计算块的示意图。参考图9a,在一些示例中,用于prf函数的opcode和seed对于xmss操作是常量,并且在一些情况下可以被预计算。

图9b是根据一些示例的架构900b中的用于使用预计算实现rand_hash算法的计算块的示意图。如图9b所示,64个字节的opcode||seed可以被预散列化,以将所有三个prf函数的时延减少到64轮。此外,对于l-tree操作,24个字节的地址(addr*)字段是常量,并且可以被预散列化。地址的其余2×4字节字段可以在密钥生成期间被散列化一次,然后通过增加预散列化的摘要值而被重用于位掩码生成。这可以将密钥生成的轮数减少到58,将位掩码生成的轮数减少到56。类似于prf,输入到函数h的opcode也是常量。在所有函数f调用期间,opcode值都被预散列化并重用,从而将轮数减少到184。这些预散列化技术可以显着减少整体l-tree时延。

图10是根据一些示例的在签名期间用于认证路径生成的l-tree计算1000的示意图。l-tree预散列化预计算在xmss签名期间具有重大影响,因为在每次签名生成期间都执行l-tree操作以计算认证路径。由于seed和addr字段对于xmss操作保持不变,因此预计算的值可以在所有签名之间重用,从而可以在10级xmss树中的1024个签名之间共享。对于较高的树(例如,高度为20的树),可能的签名的数量为220,因此,通过此技术实现的节省甚至比在10级情况中更大。wots和l-tree预计算显著改进了整体xmss签名/验证时延,从而支持高性能、高能效的数字签名实现。表1示出了通过本文描述的各种技术实现的性能改进。

表1

技术在lms签名方案中的应用

lms签名和验证方案是对xmss方案的竞争提议。lms不需要xmss中所需的函数f、prf、h、rand_hash。替代地,lms方案允许直接调用基础散列函数sha-256。与xmss中的wots相似,lm-ots一次性签名构建块还对p=67个组块的私钥/签名块进行操作,以生成和验证签名。这些组块中的每个都需要大量的散列调用,其取决于正在被签名/验证的消息。

表2示出了lm-ots签名生成(在左侧)和处理这些组块中每个的签名验证算法的核心部分。这些算法类似于wots算法。首先,从消息中生成消息代表q。然后,for循环遍历p=67个组块中的每个。对于它们中的每一个,散列函数被调用若干次,其取决于从消息代表q中提取的系数a。在签名验证算法中,最后一步将所有p=67个组块压缩为单个32字节值kc。

表2

表2说明了lm-ots签名生成(左侧)和签名验证算法(右侧)的中心部分。在这两种算法中,算法第6行中的内部散列调用(以粗体显示)被平均调用p×(2w-1)/2次。一个有用的参数设置是p=67和w=4,其使得每个签名生成/验证大约进行427次散列调用。此散列调用的输入如下:

i:lms公共/私有密钥对的16字节标识符

q:扩展为32字节的整数

i:扩展为16字节的整数

j:扩展为8字节的整数

tmp:32字节的值

用于lm-ots签名/验证的加速技术可以利用两个事实。第一个是某些输入值对于所有散列调用都是固定的(或在给定数量的散列调用后改变)。第二个事实是sha256一次消耗64个输入字节,并且为这64个字节的输入块中的每个运行64轮。因此,加速技术可以基于识别固定输入的序列以节省sha256轮次计算。

表1中给出的算法的第6行中的散列调用的输入大小为104字节,这意味着输入将被视为两个不同的块(每个64字节,最后一个填充24字节),因此使得要计算2×64=128sha256轮。总体而言,在传统设计中,这将使得每个签名生成/验证进行67×(2^4-1)/2×128=64,320sha256轮。

在一些示例中,加速技术可以利用以下事实:i和q始终相同,这意味着可以预计算处理48个字节输入的轮。这将允许为第一个块预计算12轮sha256。但是,我们指出,值i平均仅在(2w-1)/2≈7散列调用之后改变。这意味着在67×7=469中只有p=67次,它将能仅预计算12轮,而在所有其他情况下,它将能预计算所有64轮。因此,在一些示例中,使用这种预计算技术的第6行中的散列调用的数量为67×(128-12)+67×((2^4-1)/2-1)(128-64)=7,772+27,872=35,644sha256轮。这表示lms的链过程速度的显著提高。由于这是lms签名生成/验证中最昂贵的步骤(即约占总成本的80-90%),因此这表示lms签名生成/验证中的显著增益。

图11示出了可以适合于实现如前所述的各种实施例的示例性计算架构的实施例。在各种实施例中,计算架构1100可以包括或被实现为电子设备的一部分。在一些实施例中,计算架构1100可以表示例如实现上述操作环境的一个或多个组件的计算机系统。在一些实施例中,计算架构1100可以表示实现本文描述的一种或多种技术的深度神经网络(dnn)训练系统的一个或多个部分或组件。实施例不限于此上下文。

如本申请中所使用的,术语“系统”和“组件”以及“模块”旨在指代计算机相关实体,硬件、硬件和软件的组合、软件或执行中的软件,它们的示例可以由示例性计算架构1100提供。例如,组件可以是但不限于在处理器上运行的进程、处理器、硬盘驱动器、多个(光和/或磁存储介质的)存储驱动器、对象、可执行文件、执行线程、程序和/或计算机。作为说明,在服务器上运行的应用和服务器都可以是组件。一个或多个组件可以驻留在进程和/或执行线程内,并且组件可以位于一台计算机上和/或分布在两台或更多台计算机之间。此外,组件可以通过各种类型的通信介质彼此通信地耦合以协同操作。协同可以涉及信息的单向或双向交换。例如,组件可以以在通信介质上传递的信号的形式传递信息。该信息可以被实现为分配给各种信号线的信号。在这些分配中,每个消息都是信号。然而,其他实施例可以替代地采用数据消息。这些数据消息可以通过各种连接发送。示例性连接包括并行接口、串行接口和总线接口。

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

如图11所示,计算架构1100包括一个或多个处理器1102和一个或多个图形处理器1108,并且可以是单处理器台式机系统、多处理器工作站系统或具有大量处理器1102或处理器核1107的服务器系统。在一个实施例中,系统1100是并入片上系统(soc或soc)集成电路内的处理平台,以用于移动设备、手持设备或嵌入式设备。

系统1100的实施例可以包括基于服务器的游戏平台、游戏控制台(包括游戏和媒体控制台、移动游戏控制台、手持游戏控制台或在线游戏控制台),或者并入它们内。在一些实施例中,系统1100是移动电话、智能电话、平板计算设备或移动互联网设备。数据处理系统1100还可以包括、耦合于或集成在可穿戴设备内,例如智能手表可穿戴设备、智能眼镜设备、增强现实设备或虚拟现实设备。在一些实施例中,数据处理系统1100是电视或机顶盒设备,其具有一个或多个处理器1102以及由一个或多个图形处理器1108生成的图形界面。

在一些实施例中,一个或多个处理器1102各自包括一个或多个处理器核1107,以处理指令,该指令在被执行时执行用于系统和用户软件的操作。在一些实施例中,一个或多个处理器核1107中的每一个被配置为处理特定指令集1109。在一些实施例中,指令集1109可以促进复杂指令集计算(cisc)、精简指令集计算(risc)或经由超长指令字(vliw)的计算。多个处理器核1107可以各自处理不同的指令集1109,该指令集1109可以包括促进对其他指令集的仿真的指令。处理器核1107还可以包括其他处理设备,例如数字信号处理器(dsp)。

在一些实施例中,处理器1102包括缓存存储器1104。取决于架构,处理器1102可以具有单个内部缓存或多级内部缓存。在一些实施例中,缓存存储器在处理器1102的各个组件之间共享。在一些实施例中,处理器1102还使用外部缓存(例如,三级(l3)缓存或最后一级缓存(llc))(未示出),它可以使用已知的缓存一致性技术在处理器核1107之间共享。在处理器1102中附加地包括寄存器堆1106,其可以包括用于存储不同类型的数据的不同类型的寄存器(例如,整数寄存器、浮点寄存器、状态寄存器和指令指针寄存器)。一些寄存器可以是通用寄存器,而其他寄存器可以特定于处理器1102的设计。

在一些实施例中,一个或多个处理器1102与一个或多个接口总线1110耦合,以在处理器1102与系统中的其他组件之间传输通信信号,例如地址信号、数据信号或控制信号。在一个实施例中,接口总线1110可以是处理器总线,例如一版本的直接媒体接口(dmi)总线。然而,处理器总线不限于dmi总线,并且可以包括一个或多个外围组件互连总线(例如,pci、pciexpress)、存储器总线或其他类型的接口总线。在一个实施例中,处理器1102包括集成存储器控制器1116和平台控制器中枢1130。存储器控制器1116促进存储器设备与系统1100的其他组件之间的通信,而平台控制器中枢(pch)1130经由本地i/o总线提供至i/o设备的连接。

存储设备1120可以是动态随机存取存储器(dram)设备、静态随机存取存储器(sram)设备、flash存储器设备、相变存储器设备,或者具有适合于用作进程存储器的性能的一些其他存储器设备。在一个实施例中,存储器设备1120可以操作为用于系统1100的系统存储器,以存储数据1122和指令1121,以便在一个或多个处理器1102执行应用或进程时使用。存储器控制器中枢1116还与可选的外部图形处理器1112耦合,外部图形处理器1112可以与处理器1102中的一个或多个图形处理器1108通信,以执行图形和媒体操作。在一些实施例中,显示设备1111可以连接到处理器1102。显示设备1111可以是如在移动电子设备或膝上型设备中的内部显示设备,或者经由显示接口(例如,displayport等)附连的外部显示设备中的一个或多个。在一个实施例中,显示设备1111可以是头戴式显示器(hmd),例如用于虚拟现实(vr)应用或增强现实(ar)应用的立体显示设备。

在一些实施例中,平台控制器中枢1130使得外设能够经由高速i/o总线连接到存储器设备1120和处理器1102。i/o外设包括但不限于音频控制器1146、网络控制器1134、固件接口1128、无线收发机1126、触摸传感器1125、数据存储设备1124(例如,硬盘驱动器、flash存储器等)。数据存储设备1124可以经由存储接口(例如,sata)或经由外设总线(例如,外围组件互连总线(例如,pci、pciexpress))连接。触摸传感器1125可以包括触摸屏传感器、压力传感器或指纹传感器。无线收发机1126可以是wi-fi收发机、蓝牙收发机或移动网络收发机(例如,3g、4g、长期演进(lte)或5g收发机)。固件接口1128使得能够与系统固件进行通信,并且可以是例如统一可扩展固件接口(uefi)。网络控制器1134可以实现至有线网络的网络连接。在一些实施例中,高性能网络控制器(未示出)与接口总线1110耦合。在一个实施例中,音频控制器1146是多通道高清晰度音频控制器。在一个实施例中,系统1100包括可选的传统i/o控制器1140,用于将传统(例如,个人系统2(ps/2))设备耦合到系统。平台控制器中枢1130还可以连接到一个或多个通用串行总线(usb)控制器1142,usb控制器1142连接输入设备,例如键盘和鼠标1143组合、相机1144或其他usb输入设备。

下面涉及其他示例。

示例1是一种装置,所述装置包括:计算机可读存储器;散列逻辑,用于基于输入消息生成消息散列值;签名逻辑,用于生成要与消息关联地发送的签名,所述签名逻辑将基于散列的签名方案应用于私钥以生成包括公钥的签名;以及加速器逻辑,用于预计算所述签名逻辑的至少一组输入。

在示例2中,示例1的主题可以可选地包括一种布置,其中,所述散列逻辑用于:使用安全散列算法(sha2)散列函数计算所述输入消息的消息散列;以及处理所述消息散列,以生成值数组。

在示例3中,示例1-2中任一个的主题可以可选地包括一种布置,其中,所述签名逻辑用于:将链函数应用于所述私钥,所述链函数包括sha2散列操作链,其中,所述sha2散列操作链中的散列操作包括:第一伪随机函数(prf),用于生成位掩码;第二prf,用于生成密钥;异或(xor)逻辑,用于将所述位掩码与来自先前散列函数的散列值求异或,以生成异或输出;以及sha2散列函数,用于接收串接的所述异或输出和所述位掩码作为输入,并生成散列输出。

在示例4中,示例1-3中任一个的主题可以可选地包括一种布置,其中,所述加速器逻辑用于:基于opcode输入和seed输入,预计算第一中间散列值;以及将所述第一中间散列值应用于所述签名逻辑中的所述sha2散列操作链中的第一prf和第二prf。

在示例5中,示例1-4中任一个的主题可以可选地包括一种布置,其中,所述加速器逻辑用于:基于地址输入的一部分,预计算第二中间散列值;以及将所述第二中间散列值应用于所述签名逻辑中的所述sha2散列操作链中的第一prf和第二prf。

在示例6中,示例1-5中任一个的主题可以可选地包括一种布置,其中,所述加速器逻辑用于:基于地址输入的一部分,预计算第三中间散列值;以及将所述第三中间散列值应用于所述签名逻辑中的所述sha2散列操作链中的第一sha2散列函数。

在示例7中,示例1-6中任一个的主题可以可选地包括一种布置,其中,所述签名逻辑用于:应用l-tree操作,所述l-tree操作生成二叉树,以使用一系列键控散列操作将所述公钥压缩为单个叶节点值,其中所述一系列键控散列操作中的散列操作包括:第一伪随机函数(prf),用于生成第一位掩码;第二prf,用于生成第二位掩码;第三prf,用于生成密钥;第一异或(xor)逻辑,用于将所述第一位掩码与第一公钥值求异或,以生成第一异或输出;第二异或(xor)逻辑,用于将所述第二位掩码与第二公钥值求异或,以生成第二异或输出,以及sha2散列函数,用于接收串接的所述第一异或输出、所述第二异或输出、opcode和pad作为输入,并生成散列输出。

在示例8中,示例1-7中任一个的主题可以可选地包括一种布置,其中,所述加速器逻辑用于:基于opcode输入和seed输入,预计算第一中间散列值;以及将所述第一中间散列值应用于所述l-tree操作中的所述一系列sha2散列操作中的第一prf、第二prf和第三prf。

在示例9中,示例1-8中任一个的主题可以可选地包括一种布置,其中,所述加速器逻辑用于:基于地址输入的一部分,预计算第二中间散列值;以及将所述第二中间散列值应用于所述l-tree操作中的所述一系列sha2散列操作中的第一prf、第二prf和第三prf。

在示例10中,示例1-9中任一个的主题可以可选地包括一种布置,其中,所述加速器逻辑用于:基于地址输入的一部分,预计算第三中间散列值;以及将所述第三中间散列值应用于所述l-tree操作中的所述一系列sha2散列操作中的sha2散列函数。

示例11是一种计算机实现的方法,所述方法包括:基于输入消息生成消息散列值;生成要与所述消息关联地发送的签名;将基于散列的签名方案应用于私钥,以生成包括公钥的签名;以及预计算签名逻辑的至少一组输入。

在示例12中,示例11的主题可以可选地进一步包括:使用安全散列算法(sha2)散列函数计算所述输入消息的消息散列;以及处理所述消息散列,以生成值数组。

在示例13中,示例11-12中任一个的主题可以可选地进一步包括:将链函数应用于所述私钥,所述链函数包括sha2散列操作链,其中,所述sha2散列操作链中的散列操作包括:第一伪随机函数(prf),用于生成位掩码;第二prf,用于生成密钥;异或(xor)逻辑,用于将所述位掩码与来自先前散列函数的散列值求异或,以生成异或输出;以及sha2散列函数,用于接收串接的所述异或输出和所述位掩码作为输入,并生成散列输出。

在示例14中,示例11-13中任一个的主题可以可选地进一步包括:基于opcode输入和seed输入,预计算第一中间散列值;以及将所述第一中间散列值应用于所述签名逻辑中的所述sha2散列操作链中的第一prf和第二prf。

在示例15中,示例11-14中任一个的主题可以可选地进一步包括:基于地址输入的一部分,预计算第二中间散列值;以及将所述第二中间散列值应用于所述签名逻辑中的所述sha2散列操作链中的第一prf和第二prf。

在示例16中,示例11-15中任一个的主题可以可选地进一步包括:基于地址输入的一部分,预计算第三中间散列值;以及将所述第三中间散列值应用于所述签名逻辑中的所述sha2散列操作链中的第一sha2散列函数。

在示例17中,示例11-16中任一个的主题可以可选地进一步包括:应用l-tree操作,所述l-tree操作生成二叉树,以使用一系列键控散列操作将所述公钥压缩为单个叶节点值,其中所述一系列键控散列操作中的散列操作包括:第一伪随机函数(prf),用于生成第一位掩码;第二prf,用于生成第二位掩码;第三prf,用于生成密钥;第一异或(xor)逻辑,用于将所述第一位掩码与第一公钥值求异或,以生成第一异或输出;第二异或(xor)逻辑,用于将所述第二位掩码与第二公钥值求异或,以生成第二异或输出,以及sha2散列函数,用于接收串接的所述第一异或输出、所述第二异或输出、opcode和pad作为输入,并生成散列输出。

在示例18中,示例11-17中任一个的主题可以可选地进一步包括:基于opcode输入和seed输入,预计算第一中间散列值;以及将所述第一中间散列值应用于所述l-tree操作中的所述一系列sha2散列操作中的第一prf、第二prf和第三prf。

在示例19中,示例11-18中任一个的主题可以可选地进一步包括:基于地址输入的一部分,预计算第二中间散列值;以及将所述第二中间散列值应用于所述l-tree操作中的所述一系列sha2散列操作中的第一prf、第二prf和第三prf。

在示例20中,示例11-19中任一个的主题可以可选地进一步包括:基于地址输入的一部分,预计算第三中间散列值;以及将所述第三中间散列值应用于所述l-tree操作中的所述一系列sha2散列操作中的sha2散列函数。

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

本文件中引用的出版物、专利和专利文件通过引用整体并入本文,如同通过引用单独地并入。如果本文档与通过引用方式并入的那些文档之间存在不一致的用法,则并入的参考文献中的用法是对本文档的补充;对于不可调和的不一致,以本文档中的用法为准。

在本文件中,术语“一个”或“一种”如专利文件中所常用的那样包括一个或不止一个,而不依赖于“至少一个”或“一个或多个”的任何其他实例或用法。”另外,“一组”包括一个或多个元素。在本文档中,除非另有说明,否则术语“或”用于指非排他性或者使得“a或b”包括“a但不包括b”,“b但不包括a”和“a和b”。在所附权利要求中,术语“包含”和“在其中”被用作相应术语“包括”和“其中”的普通等效词。另外,在所附权利要求中,术语“包含”和“包括”是开放式的;也就是说,除权利要求中在此术语之后列出的元素之外,还包括其他元素的系统、设备、物品或过程仍被认为落入该权利要求的范围。此外,在所附权利要求中,术语“第一”、“第二”、“第三”等仅用作标签,而无意建议其对象的数字顺序。

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

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

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

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

在说明书和权利要求书中,可以使用术语“耦合”和“连接”及其派生词。在特定示例中,连接可用于指示两个或更多个元件彼此直接物理或电接触。耦合可以指两个或多个元素直接物理或电气接触。然而,耦合也可以指两个或多个元素可能不会彼此直接接触,但仍可能彼此协作或交互。

说明书中对“一个示例”或“一些示例”的引用指结合该示例描述的特定特征、结构或特性被至少包括实施方式中。说明书中各个地方出现的短语“在一个示例中”可能或可能不是全部指同一示例。

以上描述旨在是说明性的,而不是限制性的。例如,上述示例(或其一个或多个方面)可以与其他示例结合使用。在回顾上述描述之后,例如可以由本领域的普通技术人员使用其他实施例。摘要是为了使读者能够快速确定本技术公开的性质。提交本文档时,应理解将不会将其用于解释或限制权利要求的范围或含义。另外,在以上详细描述中,各种特征可以被分组在一起以简化本公开。然而,由于实施例可以以所述特征的子集为特征,因此权利要求书不阐述本文公开的每个特征。此外,实施例可以包括比特定示例中公开的特征更少的特征。因此,所附权利要求据此被结合到具体实施方式中,其中每个权利要求独立地作为单独的实施例。本文公开的实施例的范围将参考所附的权利要求书以及这些权利要求书所赋予的等效物的全部范围来确定。

尽管已经以特定于结构特征和/或方法动作的语言描述了示例,但是应当理解,所要求保护的主题可以不限于所描述的特定特征或动作。而是,将特定特征和动作公开为实现所要求保护的主题的示例形式。

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