CN112152784A - 用于基于散列的签名算法的并行处理技术 - Google Patents
用于基于散列的签名算法的并行处理技术 Download PDFInfo
- Publication number
- CN112152784A CN112152784A CN202010223201.3A CN202010223201A CN112152784A CN 112152784 A CN112152784 A CN 112152784A CN 202010223201 A CN202010223201 A CN 202010223201A CN 112152784 A CN112152784 A CN 112152784A
- Authority
- CN
- China
- Prior art keywords
- signature
- hash
- algorithm
- node value
- intermediate node
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
- H04L9/3239—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions involving non-keyed hash functions, e.g. modification detection codes [MDCs], MD5, SHA or RIPEMD
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/06—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols the encryption apparatus using shift registers or memories for block-wise or stream coding, e.g. DES systems or RC4; Hash functions; Pseudorandom sequence generators
- H04L9/0643—Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/006—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols involving public key infrastructure [PKI] trust models
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0816—Key establishment, i.e. cryptographic processes or cryptographic protocols whereby a shared secret becomes available to two or more parties, for subsequent use
- H04L9/0852—Quantum cryptography
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/08—Key distribution or management, e.g. generation, sharing or updating, of cryptographic keys or passwords
- H04L9/0894—Escrow, recovery or storing of secret information, e.g. secret key escrow or cryptographic key storage
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/50—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols using hash chains, e.g. blockchains or hash trees
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L2209/00—Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
- H04L2209/12—Details relating to cryptographic hardware or logic circuitry
- H04L2209/125—Parallelization or pipelining, e.g. for accelerating processing of cryptographic operations
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Power Engineering (AREA)
- Physics & Mathematics (AREA)
- Electromagnetism (AREA)
- Theoretical Computer Science (AREA)
- Mobile Radio Communication Systems (AREA)
- Storage Device Security (AREA)
Abstract
在一个示例中,一种设备包括:计算机可读存储器,用于存储与签名装置关联的公开密钥;通信逻辑,用于从签名装置接收签名块,以及与签名块关联的至少一个第一中间节点值,该签名块是由基于散列的签名算法生成的签名的分量;验证逻辑,用于:执行从签名块开始的第一散列链以产生至少一个第一计算中间节点值,执行从与签名块关联的至少一个中间节点值开始的第二散列链节以产生第一计算最终节点值,并使用第一计算中间节点值和第一计算最终计算节点值来验证由基于散列的签名算法生成的签名。可以描述其他示例。
Description
技术领域
本文描述的主题总体上涉及计算机安全领域,并且更具体地涉及用于基于散列(hash)的签名算法的并行处理技术。
背景技术
基于使用量子计算机的算法诸如Shor算法,预计现有公开密钥数字签名算法诸如Rivest-Shamir-Adleman(RSA)和椭圆曲线数字签名算法(ECDSA)并不安全。结果,密码学研究界和各种标准机构都在努力为针对量子计算机安全的算法定义新的标准。
因此,例如在基于计算机的通信系统和方法中,诸如此类的用于加速后量子签名方案的技术可以找到实用性。
附图说明
参照附图描述详细描述。
图1A和1B分别是一次性基于散列的签名方案和多次性基于散列的签名方案的示意图。
图2A-2B分别是一次性签名方案和多次性签名方案的示意图。
图3是根据一些示例的签名装置和验证装置的示意图。
图4A是根据一些示例的默克尔(Merkle)树结构的示意图。
图4B是根据一些示例的默克尔树结构的示意图。
图5是根据一些示例的在用于实现签名算法的架构中的计算块的示意图。
图6A是根据一些示例的在用于在签名算法中实现签名生成的架构中的计算块的示意图。
图6B是根据一些示例的在用于在验证算法中实现签名验证的架构中的计算块的示意图。
图7是用于计算基于散列的签名的处理序列的示意图。
图8是根据一些示例的用于计算基于散列的签名的处理序列的示意图。
图9是流程图,其说明根据一些示例的用于实现用于基于散列的签名算法的并行处理技术的方法中的操作。
图10是通过默克尔树的处理序列的示意图。
图11是通过默克尔树的处理序列的示意图。
图12是根据一些示例的可以适于实现硬件加速的计算架构的示意图。
具体实施方式
本文描述示例性系统和方法,其用于实现用于后量子密码学安全散列型签名算法的加速器。在以下描述中,阐述许多具体细节以提供对各种示例的透彻理解。然而,本领域技术人员将理解,可以在没有具体细节的情况下实践各种示例。在其他情况下,未详细示出或描述公知的方法、过程、组件和电路,以免混淆示例。
如上文简要描述的那样,预期现有公开密钥数字签名算法诸如Rivest-Shamir-Adleman(RSA)和椭圆曲线数字签名算法(ECDSA)对于基于算法(诸如使用量子计算机的Shor算法)的蛮力攻击不具有安全性。扩展默克尔签名方案(XMSS)和/或扩展默克尔多次性签名方案(XMSS-MT)是基于散列的签名方案,它们可以防止量子计算机的攻击。如本文所使用的,术语XMSS应指代XMSS方案和XMSS-MT方案。
结合作为主要的底层散列函数的安全散列算法(SHA)诸如SHA2-256,使用一次性签名方案诸如Winternitz一次性签名(WOTS)或其衍生版本(例如,WOTS+),XMSS签名过程实现基于散列的签名方案。在某些示例中,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-树计算,它结合WOTS+(或WOTS)公开密钥分量(每个n字节)并产生单个n-字节值。例如,在128位后量子安全性中,有67个公开密钥分量,其中每个都调用对输入块执行的底层安全散列算法(SHA)。
第三个主要操作是树散列操作,其构造默克尔树。在XMSS验证中,作为签名的一部分提供的身份验证路径和L-树操作的输出由树散列操作处理,以生成默克尔树的根节点,该根节点应与XMSS公开密钥对应。对于具有128位后量子安全性的XMSS验证,遍历默克尔树包括执行安全散列操作。在XMSS验证中,将Tree-hash操作的输出与已知的公开密钥进行比较。如果它们匹配,则签名被接受。相反,如果它们不匹配,则签名被拒绝。
XMSS签名过程在计算上很昂贵。XMSS签名过程调用数百甚至数千个散列计算周期。本文描述的主题通过提供系统和方法来解决这些和其他问题,该系统和方法用于实现用于后量子密码学安全XMSS和基于LMS散列的签名和验证的加速器。
后量子密码学概述
后量子密码学(也称为“防量子”、“量子安全”、“抗量子”或简称为“PQC”)采用未来和现实的密码学方法。它使负责密码学的人员以及最终用户做好准备了解密码学已过时,而且,它需要发展以能够成功地将进化中的计算装置寻址到量子计算和后量子计算中。
众所周知,密码学可以允许保护使用各种网络在个人和实体之间在线传送并存储的数据。此类传送的数据的范围包括发送和接收电子邮件,在线购买商品或服务,使用网站访问银行或其他个人信息等。
在处理量子计算时,传统的密码学及其典型的困难数学场景的因式分解和计算可不重要。这些数学问题诸如离散对数、因数分解和椭圆曲线离散对数等无法承受强大量子计算机的攻击。尽管都可以在当前的密码学基础上构建任何后量子密码学,但是新颖方法需要足够智能、快速和精确,以抵抗和击败量子计算机的任何攻击。
当今的PQC主要集中在以下方法:1)基于1979年的默克尔的散列树公开密钥签名系统的基于散列的密码学,该系统建立在Lamport和Diffie的单消息签名构思之上;2)基于代码的密码学,诸如McEliece的hidden-Goppa-code公开密钥加密系统;3)基于1998年的Hoffstein-Pipher-Silverman公开密钥加密系统的基于网格的密码学;4)基于1996年Patarin的HFE公开密钥签名系统的多元二次方程密码学,该系统进一步基于Matumoto-Imai建议;5)超奇异椭圆曲线同种密码学,其依靠超奇异椭圆曲线和超奇异同种曲线图;和6)对称密钥量子电阻。
图1A和1B分别说明一次性基于散列的签名方案和多次性基于散列的签名方案。如上所述,基于散列的密码学是基于密码学系统,诸如Lamport签名、默克尔签名、扩展默克尔签名方案(XMSS)和SPHINC方案等。随着量子计算的出现以及对其发展的期待,人们开始关注量子计算带来的各种挑战,以及如何使用密码学领域来应对这些挑战。
正在被探索以应对量子计算挑战的领域是基于散列的签名(HBS),因为这些方案已经存在很长一段时间并且具有应对量子计数和后量子计算挑战的必要基本要素,因此。HBS方案被视为与快速平台安全启动配合使用的快速签名算法,该快速平台安全启动被认为对量子和后量子计算攻击具有最大抵抗力。
例如,如相对于图1A所说明,示出HBS的方案,其使用默克尔树以及一次性签名(OTS)方案100,诸如使用私人密钥来签署消息和相应公开密钥以验证OTS消息,其中私人密钥仅签署单个消息。
类似地,如关于图1B所说明,示出另一种HBS方案,其中此方案涉及多次签名(MTS)方案150,其中私人密钥可以签署多个消息。
图2A和2B分别说明一次性签名方案和多次性签名方案。继续图1A的基于HBS的OTS方案100和图1B的MTS方案150,图2A说明Winternitz OTS方案200,其由斯坦福大学数学系的Robert Winternitz提供,以hw(x)而不是h(x)|h(y)的形式发布,而图2B分别说明XMSSMTS方案250。
例如,图2A的WOTS方案200将消息的散列计算和解析提供为M,其中在[0,1,2,...,15]之间有67个整数,诸如私人密钥,sk,205,签名,s,210和公开密钥,pk,215,其中每个具有67个分量,每个分量32字节。
图2B说明XMSS MTS方案250,其允许图2A的WOTS方案200和具有XMSS默克尔树的XMSS方案255的组合。如先前关于图2A所论述,WOTS方案200基于一次性公开密钥,pk,215,其具有67个分量,每个分量32字节,该一次性公开密钥然后完成L-树压缩算法260以提供WOTS压缩的pk 265放在XMSS方案255的XMSS默克尔树中。可以预期,XMSS签名验证可以包括计算WOTS验证和检查以确定重构的根节点是否与XMSS公开密钥匹配,诸如根节点=XMSS公开密钥。
后量子密码学算法
图3是根据一些示例的包括第一装置310和第二装置350的安全环境300的高层架构的示意图。参照图3,第一装置310和第二装置350中的每个均可以被体现为能够执行本文描述的函数的任何类型的计算装置。例如,在一些实施例中,第一装置310和第二装置350中的每个可以被体现为膝上型计算机、平板计算机、笔记本、上网本、超极本、智能手机、蜂窝电话、可穿戴计算装置、个人数字助理、移动互联网装置、台式计算机、路由器、服务器、工作站和/或任何其他计算/通信装置。
第一装置310包括一个或多个处理器320和用于存储私人密钥324的存储器322。一个或多个处理器320可以体现为能够执行本文所述函数的任何类型的处理器。例如,一个或多个处理器320可以体现为一个或多个单核或多核处理器、数字信号处理器、微控制器或其他处理器或处理/控制电路。类似地,存储器322可以体现为能够执行本文所述函数的任何类型的易失性或非易失性存储器或数据存储件。在操作中,存储器322可以存储在第一装置310的操作期间使用的各种数据和软件,诸如操作系统、应用程序、程序、库和驱动器。存储器322通信地联接到一个或多个处理器320。在一些示例中,私人密钥324可以驻留在安全存储器中,该安全存储器可以是部分存储器322或者可以与存储器322分开。
第一装置310还包括认证逻辑330,其包括存储器332、签名逻辑和验证逻辑336。散列逻辑332被配置为对消息(M)进行散列运算(即,将对其应用散列函数)以生成消息M的散列值(m')。散列函数可以包括但不限于安全散列函数,例如安全散列算法SHA2-256和/或SHA3-256等。SHA2-256可以遵循和/或兼用于美国国家标准技术研究院(NIST)于2012年3月发布的标题为“安全散列标准(SHS)”的联邦信息处理标准(FIPS)出版物180-4,和/或此标准的后续和/或相关版本。SHA3-256NIST可遵循和/或兼容于NIST于2015年8月发布的标题为“SHA-3标准:基于排列的散列和可扩展输出函数”的FIPS出版物202和/或此标准的后续和/或相关版本。
签名逻辑332可以被配置为生成待被发送的签名,即,被发送的签名。在其中第一装置310是签名装置的情况下,所发送的签名可以包括多个(L个)所发送的签名元素,其中每个所发送的签名元素对应于相应的消息元素。例如,对于每个消息元素mi,签名逻辑332可以被配置为对私人密钥sk的每个私人密钥元素ski执行选择的签名操作,与每个消息元素的值有关的相应次数mi包含在消息代表m'中。例如,签名逻辑332可以被配置为将所选择的散列函数应用到对应的私人密钥元素ski中mi次。在另一个示例中,签名逻辑332可以被配置为将所选择的链函数(包含散列函数)应用于相应的私人密钥元素ski中mi次。因此,所选择的签名操作可以对应于所选择的基于散列的签名方案。
如上所述,基于散列的签名方案可以包括但不限于Winternitz(W)一次性签名(OTS)方案,增强的Winternitz OTS方案(例如,WOTS+),默克尔多次性时间签名方案,扩展的默克尔签名方案(XMSS)和/或扩展的默克尔多树签名方案(XMSS-MT)等。散列函数可以包括但不限于SHA2-256和/或SHA3-256等。例如,XMSS和/或XMSS-MT可遵循或兼容一个或多个互联网工程任务组(IETF.RTM.)信息草案互联网说明,例如,“XMSS:基于扩展散列的签名,其在2018年5月由互联网研究任务组(IRTF),加密论坛研究组发布,可在https://tools.ietf.org/html/rfc8391找到。
可以使用WOTS签名算法来生成签名并利用散列函数来验证所接收的签名。WOTS还被配置为使用私人密钥,并且因此每个私人密钥元素ski使用一次。例如,WOTS可以被配置为将散列函数应用于每个私人密钥元素mi或N-mi次以生成签名,并将散列函数应用于每个接收到的消息元素N-mi'或mi'次,以生成相应验证签名元素。默克尔多次性签名方案是基于散列的签名方案,其利用OTS并且可使用公开密钥超过一次。例如,默克尔签名方案可以利用Winternitz OTS作为一次性签名方案。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,其包括散列逻辑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,和/或此标准的后续和/或相关版本。
在第二装置是验证装置的情况下,认证逻辑370被配置为(至少部分地)基于从第一装置接收的签名并且(至少部分地)基于接收的消息代表(m′)来生成验证签名。例如,认证逻辑370可以被配置为对每个接收到的消息元素执行N-mi'(或mi')次相同签名操作(即,将与认证逻辑330的散列逻辑332所应用的散列函数或链函数相同的散列函数或链函数),以产生验证消息元素。然后可以确定验证签名(即,L个验证消息元素中的每个)是否对应于对应的公开密钥元素pki。例如,验证逻辑370可以被配置为将每个验证消息元素与对应的公开密钥元素pki进行比较。如果验证消息元素中的每个匹配对应公开密钥元素pki,则验证对应于成功。换句话说,如果所有验证消息元素都与公开密钥元素(pk1,...,pkL匹配),则验证对应于成功。如果任何验证消息元素与相对的公开密钥元素pki不匹配,则验证对应于失败。
如以下更详细地描述,在一些示例中,第一装置310的认证逻辑330包括一个或多个加速器338,其与散列逻辑332、签名逻辑334和/或验证逻辑336协作以加速认证操作。类似地,在一些示例中,第二装置310的认证逻辑370包括一个或多个加速器378,其与散列逻辑372、签名逻辑374和/或验证逻辑376协作以加速认证操作。加速器的示例在以下段落中并参考附图进行描述。
环境300的各种模块可以体现为硬件、软件、固件或其组合。例如,环境300的各种模块、逻辑和其他组件可以形成以下的一部分或由其建立:第一装置310的一个或多个处理器320或第二装置350的一个或多个处理器360或装置的其他硬件组件。这样,在一些实施例中,环境300的模块中的一个或多个可以体现为电子装置的电路或集合(例如,认证电路、密码学电路、通信电路、签名电路和/或验证电路)。另外,在一些实施例中,说明性模块中的一个或多个可以形成另一模块的一部分,和/或一个或多个说明性模块可以彼此独立。
图4A是根据一些示例的说明签名操作的默克尔树结构的示意图。参照图4A,XMSS签名操作需要使用来自每叶WOTS节点410的本地公开密钥来构造默克尔树400A,以生成全局公开密钥(PK)420。在一些示例中,认证路径和根节点值可以经离线计算,使得这些操作不限制性能。每个WOTS节点410具有唯一的密钥“sk”,其仅用于签署消息一次。XMSS签名由以下为输入消息生成的签名和中间树节点的验证路径构成,以构造默克尔树的根。
图4B是根据一些示例的在验证期间的默克尔树结构400B的示意图。在一些示例中,所有的WOTS公开密钥都经过L-树过程,该过程生成默克尔树的相应叶节点。在验证期间,输入消息和签名用于计算WOTS节点的本地公开密钥420B,其还用于使用认证路径计算树的根值。成功的验证将使计算的树根值与签名实体共享的公开密钥PK匹配。WOTS和L-树操作分别构成XMSS符号/验证等待时间的重要部分,从而限定身份验证系统的总体性能。本文描述经实施以加速WOTS和L-树操作的各种预计算技术,从而提高XMSS性能。该技术适用于其他散列选项,并且可以很好地针对软件和硬件实现方式进行扩展。
图5是根据一些示例的用于实现签名算法的架构500中的计算块的示意图。参照图5,WOTS+操作涉及16个SHA2-256 HASH函数的67个并行链,每个函数均具有秘密密钥sk[66:0]作为输入。链中的每个HASH操作由2个使用SHA2-256生成位掩码和密钥的伪随机函数(PRF)构成。位掩码与先前散列进行异或运算,并与密钥连接在一起,作为第三SHA2-256散列操作的输入消息。67x32字节的WOTS公开密钥pk[66:0]是通过在67个散列链上对秘密密钥sk进行散列运算生成的。
图6A是根据一些示例的用于在签名算法中实现签名生成的架构600A中的计算块的示意图。如图6A所说明,对于消息签名,对输入消息进行散列运算和预处理以计算67x4位的值,其用作在链函数的每个操作中选择中间散列值的索引。
图6B是根据一些示例的用于在验证算法中实现签名验证的架构600B中的计算块的示意图。参照图6B,在验证期间,消息再次经散列运算以计算签名索引并计算每个链中的其余HASH操作以计算WOTS公开密钥pk。此值和身份验证路径用于计算默克尔树的根,并与共享公开密钥PK进行比较以验证消息。
基于散列的签名算法的并行处理技术
如上所述,基于散列的签名(HBS)算法为后量子数字签名提供有前景的方法。HBS算法诸如XMSS会调用数百个甚至数千个调用,以调用一个或多个底层散列函数,这在计算上非常昂贵。
HBS算法使用一次性签名算法作为构造块。一次性方案的主要局限性在于每个密钥只能签署单个消息。在一些示例中,HBS算法可以通过使用默克尔树将一大组一次性密钥对绑定到单个多次性密钥对。为了签署消息和验证签名,HBS算法处理一次性签名/验证算法,然后进行操作以验证所使用的一次性密钥对是否属于整体默克尔树。
如上所述,在一些示例中,一次性签名密钥生成/签名/验证算法对超过67个块(每个32字节)的消息进行操作。更准确地说,私人密钥由67个块(每个32字节)组成,签名由67个块(每个32字节)组成,并且公开密钥由67个块(每个32字节)组成。为了从私人密钥生成公开密钥,一次性算法将散列链函数应用15次。消息m的签名如下生成。首先,对消息进行散列运算,然后将其编码为0到15之间的67个整数。消息m的签名是将散列链正确地应用mi次私人密钥块ski的结果,其中mi表示第i个整数,其代表(以编码格式)待签署的消息。
图7是用于计算基于散列的签名的处理序列700的示意图,其说明一次性算法中32字节的单个块的处理。私人密钥块ski 710被连续经受mi次散列运算(即,一个散列调用712的输出用作下一个散列调用714的输入)以生成签名块σi 716。字母H上方的指数表示连续调用散列多少次。为了验证签名是真实的,验证者连续准确地(N-mi)次对签名块σi进行散列运算。最后,验证者应恢复与公开密钥块pki匹配的值,该值在密钥生成时作为私人密钥块ski上的N个散列应用程序计算得出。
图7所示的链式过程是固有的顺序过程(即,一个散列计算接着另一个),因为在不有效计算k个连续散列调用情况下无法确定k个散列应用程序的结果。如果此计算有捷径,则散列函数不是密码学上安全的散列函数。
加速HBS算法的一种方法是在平台中实现多个散列引擎并并行计算这些散列调用。然而,HBS算法中的几个步骤实际上是顺序的。在此描述的技术允许在顺序HBS步骤中的并行处理,包括散列链函数和根节点重构函数。
在一些示例中,本文描述的技术将在HBS算法中连续的操作“折叠”为可以并行执行的两个(或更多个)较小的操作。例如,在签名验证所需的散列链计算中,验证者计算从散列链状态1到散列链状态m的一系列连续散列调用,其中m是从已签名的消息衍生的。在一些示例中,签名者可以在(m/2)个散列链调用之后向验证者公开散列状态。知道此中间散列链状态,验证者可以并行处理两个散列链计算线程:从散列链状态1到散列链状态m/2的第一链,和从散列链状态m/2到散列链状态m的第二链。
特别地,签名验证的过程包括从初始状态σi直到状态 应用散列函数。这意指(N-mi)个连续散列调用。在这种情况下,签名者可以向验证者公开散列操作的序列的一个或多个中间节点以及签名。例如,在一个示例中,签名者可以公开中间值 此中间值将散列调用的顺序序列分成相等大小的两个较短序列。
图8是根据一些示例的用于计算基于散列的签名的处理序列800的示意图。如图8所说明,在图7中串行执行的散列函数可被分解为可以在签名验证期间并行执行的散列应用程序的两个线程。第一散列线程从经受散列函数812、814等的初始状态σi 810开始,直到获得其中的中间状态816。并行地,第二线程以经受函数822、824等的中间值开始,直到 的最终状态826,其也等于
验证者以σ和a为起点,且并行执行两个散列链。最终,验证装置进行两件事:第一散列链的结果与a匹配,以及第二个散列链的结果与WOTS公开密钥匹配。
图9是流程图,其说明根据一些示例的用于实现用于基于散列的签名算法的并行处理技术的方法中的操作。参照图9,在操作910,将签名链序列划分为预定数量的子序列。子序列的数量可以经设计选择,并且可以基于包括验证装置的处理能力和/或验证操作的任何速度要求的多个因素来选择。通常,验证处理时间与子序列的预定数量大致线性相关,因此,当将长度为L的操作序列划分为J个子序列时,验证时间比常规串行HBS算法快约J倍。这要求签名者向具有签名的验证者披露(J-1)个不同中间节点。应当注意,签名大小增加相同因数。因此,取决于应用程序要求,可以在签名大小和加速之间实现不同的权衡。
在操作915,签名者计算与使用如上所述的签名算法生成消息签名相关的散列操作,并且在操作920,签名者将每个子序列的中间节点值与签名一起发送给验证者。
在操作930,验证者接收每个子序列的中间节点值和签名。在操作935,验证者并行或基本并行地在分开的线程中计算验证子序列。最后,验证者将第一线程的结果进行比较以确保两个散列链已连接,而第二线程的结果与一个一次性公开密钥进行比较以确保签名真实。
可以从我们的发明中受益的HBS算法的另一个应用是默克尔树的根节点重建步骤。一旦一次性签名验证算法完成,就将调用此过程,从而产生67个公开密钥块,如参考图7和图8所述。这67个块被压缩为单个32字节的值,出于简便起见,该值可以通过通常称为L-树压缩的方法而被称为pk。在pk和认证路径通过Merle树的情况下,验证者可以重构默克尔树的根节点。
图10是通过默克尔树1000的处理序列的示意图。参考图10,如上所述,在默克尔树中,父节点被计算为其两个子节点的并置的散列。同样,此过程是顺序的,因为在步骤i中,验证者将生成步骤i+1中所需的节点。对于允许较大树的XMSS变体诸如XMSS-MT,默克尔树的高度可以高达60层,因此意指60个连续散列调用。
参考图11,以类似于以上关于散列链函数描述的操作的方式,在一些示例中,根节点重构过程的中间节点可以与签名一起公开给验证者。一旦第一线程完成后,验证者将检查a的重新计算值是否与签名者与签名一起提供的中间值匹配。重新计算的值a用作线程2的起点。在签名中提供值a,因此验证者可以从一开始就从a开始构建树。同时,验证者还从pk开始该过程。最后,验证者检查第一子树构建过程的结果是否确实生成a,并且还检查其他结果子树构建过程是否生成预期根。
通常,用于默克尔树的验证处理时间与预定数量的子序列大致线性相关,因此,将长度为L的操作序列划分为J个子序列时,与常规串行HBS算法相比,验证时间大约快J倍。这要求签名者借助签名向验证者披露(J-1)个不同的中间节点。应当注意,签名大小增加相同因数。因此,取决于应用程序要求,可以在签名大小和加速之间实现不同的权衡。
本文描述的技术可以以任何参数配置应用于任何类似默克尔的HBS签名方案。这包括最近发布的IETF标准RFC-8391(XMSS),还包括其他变体,诸如发布为IETF RFC-8554的LMS方案。
图12说明示例性计算架构的实施例,该计算架构可以适合于实现如前所述的各种实施例。在各种实施例中,计算架构1200可以包括或被实现为电子装置的一部分。在一些实施例中,计算架构1200可以代表例如实现上述操作环境的一个或多个分量的计算机系统。在一些实施例中,计算架构1200可以代表实现本文描述的一种或多种技术的DNN训练系统的一个或多个部分或组件。实施例不限于此上下文。
如在本申请中使用的,术语“系统”和“组件”以及“模块”旨在指与计算机有关的实体,可以是硬件、硬件和软件的组合、软件或执行中的软件,其示例由示例性计算架构1200提供。例如,组件可以是但不限于在处理器上运行的进程、处理器、硬盘驱动器、(光学和/或磁存储介质的)多个存储驱动器、对象、可执行文件、执行线程、程序和/或计算机。以说明方式,在服务器上运行的应用程序和服务器都可以是组件。一个或多个组件可以驻留在进程和/或执行线程中,并且一个组件可以位于一台计算机上和/或分布在两台或更多台计算机之间。此外,组件可以通过各种类型的通信介质彼此通信地联接以协调操作。协调可以涉及信息的单向或双向交换。例如,组件可以以在通信介质上传递的信号的形式传递信息。信息可以被实现为分配给各种信号线的信号。在这样的分配中,每个消息都是信号。然而,其他实施例可以替代地采用数据消息。这样的数据消息可以通过各种连接发送。示例性连接包括并行接口、串行接口和总线接口。
计算架构1200包括各种通用计算元件,诸如一个或多个处理器、多核处理器、协处理器、存储器单元、芯片组、控制器、外围装置、接口、振荡器、计时装置、视频卡、音频卡、多媒体输入/输出(I/O)组件、电源等。然而,实施例不限于通过计算架构1200的实现。
如图12所示,计算架构1200包括一个或多个处理器1202和一个或多个图形处理器1208,并且可以是单处理器台式机系统,多处理器工作站系统或具有大量处理器1202或处理器核1207的服务器系统。在一个实施例中,系统1200是结合在片上系统(SoC或SOC)集成电路内的处理平台,以用于移动、手持或嵌入式装置。
系统1200的实施例可以包括或结合在基于服务器的游戏平台中,包括游戏和媒体控制台的游戏控制台,移动游戏控制台,手持游戏控制台或在线游戏控制台。在一些实施例中,系统1200是移动电话、智能电话、平板计算装置或移动互联网装置。数据处理系统1200还可包括可穿戴装置,与可穿戴装置联接或集成在可穿戴装置中,诸如智能手表可穿戴装置、智能眼镜装置、增强现实装置或虚拟现实装置。在一些实施例中,数据处理系统1200是电视或机顶盒装置,其具有一个或多个处理器1202以及由一个或多个图形处理器1208生成的图形界面。
在一些实施例中,一个或多个处理器1202每个包括一个或多个处理器核心1207,以处理指令,其在被执行时执行针对系统和用户软件的操作。在一些实施例中,一个或多个处理器核心1207中的每个被配置为处理特定指令集1209。在一些实施例中,指令集1209可以促进复杂指令集计算(CISC)、精简指令集计算(RISC)或经由超长指令字(VLIW)的计算。多个处理器核心1207可各自处理不同的指令集1209,其可包括有助于仿真其他指令集的指令。处理器核心1207还可以包括其他处理装置,诸如数字信号处理器(DSP)。
在一些实施例中,处理器1202包括高速缓冲存储器1204。根据架构,处理器1202可以具有单个内部高速缓存或多个级别的内部高速缓存。在一些实施例中,高速缓存存储器在处理器1202的各个组件之间共享。在一些实施例中,处理器1202还使用外部高速缓存(例如,三级(L3)高速缓存或最后一级高速缓存(LLC))(未示出),可以使用已知的高速缓存一致性技术在处理器核1207之间共享外部高速缓存。寄存器文件1206另外包括在处理器1202中,其可以包括用于存储不同类型的数据的不同类型的寄存器(例如,整数寄存器、浮点寄存器、状态寄存器和指令指针寄存器)。一些寄存器可以是通用寄存器,而其他寄存器可以专用于处理器1202的设计。
在一些实施例中,一个或多个处理器1202与一个或多个接口总线1210联接,以在处理器1202与系统中的其他组件之间传输通信信号,诸如地址、数据或控制信号。在一个实施例中,接口总线1210可以是处理器总线,诸如直接媒体接口(DMI)总线的版本。然而,处理器总线不限于DMI总线,并且可以包括一个或多个外围组件互连总线(例如,PCI、PCIExpress)、存储器总线或其他类型的接口总线。在一实施例中,一个或多个处理器1202包括集成存储器控制器1216和平台控制器集线器1230。存储器控制器1216促进存储器装置与系统1200的其他组件之间的通信,而平台控制器集线器(PCH)1230经由本地I/O总线提供与I/O装置的连接。
存储装置1220可以是动态随机存取存储器(DRAM)装置、静态随机存取存储器(SRAM)装置、闪存装置、相变存储装置或具有适当性能用作过程存储器的某些其他存储装置。在一个实施例中,存储装置1220可以用作系统1200的系统存储器,以存储在一个或多个处理器1202执行应用程序或过程时使用的数据1222和指令1221。存储器控制器集线器1216还与可选的外部图形处理器1212联接,该外部图形处理器可以与处理器1202中的一个或多个图形处理器1208通信以执行图形和媒体操作。在一些实施例中,显示装置1211可以连接到一个或多个处理器1202。显示装置1211可以是如在移动电子装置或膝上型装置中的内部显示装置中的一个或多个,或者是经由显示器接口(例如DisplayPort等)连接的外部显示装置。在一个实施例中,显示装置1211可以是头戴式显示器(HMD),诸如用于虚拟现实(VR)应用程序或增强现实(AR)应用程序中的立体显示装置。
在一些实施例中,平台控制器集线器1230使外围装置能够经由高速I/O总线连接到存储装置1220和处理器1202。I/O外围装置包括但不限于音频控制器1246、网络控制器1234、固件接口1228、无线收发器1226、触摸传感器1225、数据存储装置1224(例如,硬盘驱动器、闪存等)。数据存储装置1224可以经由存储接口(例如,SATA)或经由外围总线诸如外围组件互连总线(例如,PCI、PCI Express)来连接。触摸传感器1225可以包括触摸屏传感器、压力传感器或指纹传感器。无线收发器1226可以是Wi-Fi收发器、蓝牙收发器或诸如3G,4G或长期演进(LTE)收发器的移动网络收发器。固件接口1228使得能够与系统固件的通信,并且可以是例如统一可扩展固件接口(UEFI)。网络控制器1234可以启用到有线网络的网络连接。在一些实施例中,高性能网络控制器(未示出)与接口总线1210联接。在一个实施例中,音频控制器1246是多通道高清晰度音频控制器。在一个实施例中,系统1200包括可选遗留I/O控制器1240,用于将遗留(例如,个人系统2(PS/2))装置联接到系统。平台控制器集线器1230还可以连接到一个或多个通用串行总线(USB)控制器1242连接输入装置,诸如键盘和鼠标1243组合,摄像机1244或其他USB输入装置。
以下属于其他示例。
示例1是一种设备,包括计算机可读存储器,用于存储与签名装置关联的公开密钥;通信逻辑,用于从所述签名装置接收签名块和与所述签名块关联的至少一个第一中间节点值,所述签名块是由基于散列的签名算法生成的签名的分量;验证逻辑,用于:执行从所述签名块开始的第一散列链以产生至少第一计算中间节点值;执行从与所述签名块关联的所述至少一个中间节点值开始的第二散列链,以产生第一计算最终节点值;和使用所述第一计算中间节点值和所述第一计算最终计算的节点值来验证由所述基于散列的签名算法生成的所述签名。
在示例2中,示例1的所述主题可任选地包括装置,其中,所述基于散列的签名算法包括调用安全散列算法(SHA)散列函数的Winterniz一次性签名(WOTS)算法或WOTS+算法中的至少一个。
在示例3中,示例1-2中任一项的所述主题可任选地包括装置,其中,所述安全散列算法(SHA)括SHA2-256、SHA2-512、SHA3-128或SHA3-256散列函数中的至少一个。
在示例4中,示例1-3中任一项的所述主题可任选地包括装置,其中,所述签名包括总共67个签名分量,其中的每个的长度为32字节。
在示例5中,示例1-4中任一项的所述主题可任选地包括验证逻辑,其用于将所述第一计算中间节点值与从所述签名装置接收的所述第一中间节点值进行比较;和将所述第一计算最终节点值与所述签名装置的所述公开密钥的一部分进行比较。
示例6是一种计算机实现的方法,包括:将与签名装置关联的公开密钥存储在计算机可读介质中;从所述签名装置接收签名块和及与所述签名块关联的至少一个第一中间节点值,所述签名块是由基于散列的签名算法生成的签名的分量;执行从所述签名块开始的第一散列链以产生至少一个第一计算中间节点值;执行从与所述签名块关联的所述至少一个中间节点值开始的第二散列链以产生第一计算最终节点值;和使用所述第一计算中间节点值和所述第一计算最终计算节点值来验证由所述基于散列的签名算法生成的所述签名。
在示例7中,示例6的所述主题可任选地包括装置,其中,所述基于散列的签名算法包括调用安全散列算法(SHA)散列函数的Winterniz一次性签名(WOTS)算法或WOTS+算法中的至少一个。
在示例8中,示例6-7中任一项的所述主题可任选地包括装置,其中,所述安全散列算法(SHA)括SHA2-256、SHA2-512、SHA3-128或SHA3-256散列函数中的至少一个。
在示例9中,示例6-8中任一项的所述主题可任选地包括装置,其中,所述签名包括总共67个签名分量,其中每个的长度为32字节。
在示例10中,示例6-9中任一项的所述主题可任选地包括将所述第一计算中间节点值与从所述签名装置接收的所述第一中间节点值进行比较;以及将所述第一计算最终节点值与所述签名装置的所述公开密钥的一部分进行比较。
示例11是一种包含指令的非暂时性计算机可读介质,当所述指令由处理器执行时,所述指令将所述处理器配置为执行操作,所述操作包括:将与签名装置关联的公开密钥存储在计算机可读介质中;从所述签名装置接收签名块和与所述签名块关联的至少一个第一中间节点值,所述签名块是由基于散列的签名算法生成的签名的分量;执行从所述签名块开始的第一散列链以产生至少一个第一计算中间节点值;执行从与所述签名块关联的所述至少一个中间节点值开始的第二散列链,以产生第一计算最终节点值;以及使用所述第一计算中间节点值和所述第一计算最终计算的节点值来验证由所述基于散列的签名算法生成的所述签名。
在示例12中,示例11的所述主题可任选地包括装置,其中,所述基于散列的签名算法包括调用安全散列算法(SHA)散列函数的温特尼兹一次性签名(WOTS)算法或WOTS+算法中的至少一个。
在示例13中,示例11-12中任一项的所述主题可任选地包括装置,其中,所述安全散列算法(SHA)包括SHA2-256、SHA2-512、SHA3-128或SHA3-256散列函数中的至少一个。
在示例14中,示例11-13中任一项的所述主题可任选地包括装置,其中,所述签名包括总共67个签名分量,其中每个的长度为32字节。
在示例15中,示例11-14中任一项的所述主题可任选地包括指令,所述指令在由所述处理器执行时将所述处理器配置为执行操作,所述操作包括:将所述第一计算中间节点值与从所述签名装置接收的所述第一中间节点值进行比较;以及将所述第一计算最终节点值与所述签名装置的所述公开密钥的一部分进行比较。
示例16是一种设备,包括:计算机可读存储器,其用于存储与签名装置关联的私人密钥;签名逻辑,用于使用基于散列的签名算法和所述私人密钥来生成签名,所述签名包括作为所述签名的分量的至少一个第一签名块和与所述签名块关联的至少一个第一中间节点值;和通信逻辑,用于将所述至少一个第一签名块和与所述签名块关联的所述至少一个第一中间节点值发送到验证装置。
在示例17中,示例16的所述主题可任选地包括装置,其中,所述基于散列的签名算法包括调用安全散列算法(SHA)散列函数的Winterniz一次性签名(WOTS)算法或WOTS+算法中的至少一个。
在示例18中,示例16-17中任一项的所述主题可任选地包括装置,其中,所述安全散列算法(SHA)包括SHA2-256、SHA2-512、SHA3-128或SHA3-256散列函数中的至少一个。
在示例19中,示例16-18中任一项的所述主题可任选地包括装置,其中,所述签名包括总共67个签名分量,其中每个的长度为32字节。
示例20是一种计算机实现的方法,包括:将与签名装置关联的私人密钥存储在计算机可读存储器中;使用基于散列的签名算法和所述私人密钥生成签名,所述签名包括作为所述签名的分量的至少一个第一签名块和与所述签名块关联的至少一个第一中间节点值;以及向所述验证装置发送所述至少一个第一签名块和与所述签名块关联的至少一个第一中间节点值。
在示例21中,示例20的所述主题可任选地包括装置,其中,所述基于散列的签名算法包括调用安全散列算法(SHA)散列函数的Winterniz一次性签名(WOTS)算法或WOTS+算法中的至少一个。
在示例22中,示例20-21中任一项的所述主题可任选地包括装置,其中,所述安全散列算法(SHA)包括SHA2-256、SHA2-512、SHA3-128或SHA3-256散列函数中的至少一个。
在示例23中,示例20-22中任一项的所述主题可任选地包括装置,其中,所述签名包括总共67个签名分量,其中每个的长度为32字节。
示例24是一种包括指令的非暂时性计算机可读介质,当所述指令由处理器执行时,所述指令将所述处理器配置为执行操作,所述操作包括:将与签名装置关联的私人密钥存储在计算机可读存储器中;使用基于散列的签名算法和所述私人密钥生成签名,所述签名包括作为所述签名的分量的至少一个第一签名块和与所述签名块关联的至少一个第一中间节点值;以及将所述至少第一签名块和与所述签名块关联的所述至少一个第一中间节点值发送到所述验证装置。
在示例25,示例24的主题可任选地包括装置,其中,所述基于散列的签名算法包括调用安全散列算法(SHA)散列函数的Winterniz一次性签名(WOTS)算法或WOTS+算法中的至少一个。
在示例26中,示例24-25中任一项的所述主题可任选地包括装置,其中,所述安全散列算法(SHA)包括SHA2-256、SHA2-512、SHA3-128或SHA3-256散列函数中的至少一个。
在示例27中,示例24-26中任一项的所述主题可任选地包括装置,其中,所述签名包括总共67个签名分量,其中每个的长度为32字节。
上面的详细描述包括对附图的引用,这些附图构成详细描述的一部分。附图通过说明的方式示出可以实践的特定实施例。这些实施例在本文中也被称为“示例”。除了所示出或描述的元件之外,这样的示例可以包括元件。然而,还预期包括所示出或描述的元件的示例。此外,还预期使用本文示出或描述的那些元件的任何组合或排列的示例,无论是相对于特定示例(或其一个或多个方面),或者相对于本文所示或所述的其他示例(或其一个或多个方面)。
此文件中引用的出版物、专利和专利文件以全文引用方式并入本文,就好像以引用方式单独地并入那样。在此文档与通过引用方式并入的那些文档之间存在不一致用法的情况下,在一个或多个并入的参考文献中的用法是对本文档的补充;对于不一致的不一致之处,以本文档中的用法为准。
在此文件中,术语“一个(a/an)”如同常用于专利文件中那样,包括一个或多个,独立于“至少一个”或“一个或多个”的任何其他情况或用法。另外,“一组”包括一个或多个元素。在此文档中,除非另有说明,否则术语“或”用于表示非排他性,使得“A或B”包括“A但不包括B”,“B但不包括A”和“A和B”。在所附权利要求中,术语“包括”和“其中”被用作相应术语“包含”和“在其中”的普通英语等效词。另外,在以下权利要求中,术语“包括”和“包含”是开放式的;也就是说,除在权利要求中在此术语之后列出的元素之外,还包括其他元素的系统、装置、制品或过程仍被认为属于所述权利要求的范围。此外,在以下权利要求中,术语“第一”、“第二”、“第三”等仅用作标签,而无意暗示其对象的数字顺序。
如本文所指,术语“逻辑指令”涉及可由用于执行一个或多个逻辑运算的一或多个机器理解的表达。例如,逻辑指令可以包括指令,该指令可由处理器编译器解释以在一个或多个数据对象上执行一个或多个操作。然而,这仅是机器可读指令的示例,并且示例不限于此方面。
如本文所指,术语“计算机可读介质”涉及能够维持由一个或多个机器可感知的表达的介质。例如,计算机可读介质可以包括一个或多个用于存储计算机可读指令或数据的存储装置。这样的存储装置可以包括存储介质,例如光、磁或半导体存储介质。然而,这仅是计算机可读介质的示例,并且示例不限于此方面。
如本文所指,术语“逻辑”涉及用于执行一个或多个逻辑操作的结构。例如,逻辑可以包括基于一个或多个输入信号提供一个或多个输出信号的电路。这种电路可以包括接收数字输入并提供数字输出的有限状态机,或者包括响应一个或多个模拟输入信号而提供一个或多个模拟输出信号的电路。可以在专用集成电路(ASIC)或现场可编程门阵列(FPGA)中提供这种电路。而且,逻辑可以包括存储在存储器中的机器可读指令,以及与执行这种机器可读指令的处理电路相结合。然而,这些仅仅是可以提供逻辑的结构的示例,并且示例不限于此方面。
本文描述的方法中的一些可以体现为计算机可读介质上的逻辑指令。当在处理器上执行时,逻辑指令使得处理器被编程为实现所述方法的专用机器。当处理器由逻辑指令配置为执行本文描述的方法时,该处理器构成用于执行所描述的方法的结构。可选地,本文描述的方法可以被简化为例如现场可编程门阵列(FPGA)、专用集成电路(ASIC)等上的逻辑。
在说明书和权利要求书中,可以使用术语联接和连接以及它们的派生词。在特定示例中,连接可用于指示两个或更多个元件彼此直接物理或电接触。联接可意指两个或多个元件直接物理或电接触。然而,联接也可意指两个或多个元件可不彼此直接接触,但仍可彼此协作或交互。
在说明书中对“一个示例”或“一些示例”的引用意指结合示例描述的特定特征、结构或特性至少包括在实现中。说明书中各个部分出现的短语“在一个示例中”可以是或可以不是全部指相同示例。
以上描述旨在是说明性的,而不是限制性的。例如,上述示例(或其一个或多个方面)可以与其他示例结合使用。例如本领域的普通技术人员在回顾以上描述之后可以使用其他实施例。摘要是为了使读者能够快速确定技术公开的性质。在提交本文档时,应理解为不会将其用于解释或限制权利要求的范围或含义。另外,在以上详细描述中,各种特征可以被分组在一起以简化本公开。然而,由于实施例可以以所述特征的子集为特征,所以权利要求书未阐述本文公开的每个特征。此外,实施例可以包括的特征少于特定示例中公开的特征。因此,以下权利要求据此被并入到详细描述中,其中每个权利要求独立地作为单独的实施例。将参考所附的权利要求书以及这些权利要求书所赋予的等效物的全部范围来确定本文公开的实施例的范围。
尽管已经用专用于结构特征和/或方法动作的语言描述示例,但是应当理解,所要求保护的主题可以不限于所描述的特定特征或动作。而是,将特定特征和动作公开为实现所要求保护的主题的示例形式。
Claims (18)
1.一种设备,包括:
计算机可读存储器,用于存储与签名装置关联的公开密钥;
通信逻辑,用于从所述签名装置接收签名块和与所述签名块关联的至少一个第一中间节点值,所述签名块是由基于散列的签名算法生成的签名的分量;
验证逻辑,用于:
执行从所述签名块开始的第一散列链以产生至少一个第一计算中间节点值;
执行从与所述签名块关联的所述至少一个中间节点值开始的第二散列链以产生第一计算最终节点值;以及
使用所述第一计算中间节点值和所述第一计算最终计算节点值来验证由所述基于散列的签名算法生成的所述签名。
2.根据权利要求1所述的设备,其中,所述基于散列的签名算法包括调用安全散列算法(SHA)散列函数的Winterniz一次性签名(WOTS)算法或WOTS+算法中的至少一个。
3.根据权利要求2所述的设备,其中,所述安全散列算法(SHA)包括SHA2-256、SHA2-512、SHA3-128或SHA3-256散列函数中的至少一个。
4.根据权利要求1所述的设备,其中,所述签名包括总共67个签名分量,其中的每个的长度为32字节。
5.根据权利要求1所述的设备,所述验证逻辑用于:
将所述第一计算中间节点值与从所述签名装置接收的所述第一中间节点值进行比较;以及
将所述第一计算最终节点值与所述签名装置的所述公开密钥的一部分进行比较。
6.一种计算机实现的方法,包括:
将与签名装置关联的公开密钥存储在计算机可读介质中;
从所述签名装置接收签名块和与所述签名块关联的至少一个第一中间节点值,所述签名块是由基于散列的签名算法生成的签名的分量;
执行从所述签名块开始的第一散列链以产生至少一个第一计算中间节点值;
执行从与所述签名块关联的所述至少一个中间节点值开始的第二散列链以产生第一计算最终节点值;和
使用所述第一计算中间节点值和所述第一计算最终计算节点值来验证由所述基于散列的签名算法生成的所述签名。
7.根据权利要求6所述的方法,其中,所述基于散列的签名算法包括调用安全散列算法(SHA)散列函数的Winterniz一次性签名(WOTS)算法或WOTS+算法中的至少一个。
8.根据权利要求6所述的方法,其中,所述安全散列算法(SHA)包括SHA2-256、SHA2-512、SHA3-128或SHA3-256散列函数中的至少一个。
9.根据权利要求6所述的方法,其中,所述签名包括总共67个签名分量,其中每个的长度为32字节。
10.根据权利要求6所述的方法,还包括:
将所述第一计算中间节点值与从所述签名装置接收的所述第一中间节点值进行比较;以及
将所述第一计算最终节点值与所述签名装置的所述公开密钥的一部分进行比较。
11.一种设备,包括:
计算机可读存储器,用于存储与签名装置关联的私人密钥;
签名逻辑,用于使用基于散列的签名算法和所述私人密钥来生成签名,所述签名包括:作为所述签名的分量的至少一个第一签名块和与所述签名块关联的至少一个第一中间节点值;以及
通信逻辑,用于将所述至少一个第一签名块和与所述签名块关联的所述至少一个第一中间节点值发送到验证装置。
12.根据权利要求11所述的设备,其中,所述基于散列的签名算法包括调用安全散列算法(SHA)散列函数的Winterniz一次性签名(WOTS)算法或WOTS+算法中的至少一个。
13.根据权利要求12所述的设备,其中,所述安全散列算法(SHA)包括SHA2-256、SHA2-512、SHA3-128或SHA3-256散列函数中的至少一个。
14.根据权利要求13所述的设备,其中,所述签名包括总共67个签名分量,其中每个的长度为32字节。
15.一种计算机实现的方法,包括:
将与签名装置关联的私人密钥存储在计算机可读存储器中;
使用基于散列的签名算法和所述私人密钥生成签名,所述签名包括:作为所述签名的分量的至少一个第一签名块和与所述签名块关联的至少一个第一中间节点值;以及
向验证装置发送所述至少一个第一签名块和与所述签名块关联的至少一个第一中间节点值。
16.根据权利要求15所述的方法,其中,所述基于散列的签名算法包括调用安全散列算法(SHA)散列函数的Winterniz一次性签名(WOTS)算法或WOTS+算法中的至少一个。
17.根据权利要求16所述的方法,其中,所述安全散列算法(SHA)具有函数包括SHA2-256、SHA2-512、SHA3-128或SHA3-256散列函数中的至少一个。
18.根据权利要求17所述的方法,其中,所述签名包括总共67个签名分量,其中每个的长度为32字节。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US16/456,004 | 2019-06-28 | ||
US16/456,004 US20190319802A1 (en) | 2019-06-28 | 2019-06-28 | Parallel processing techniques for hash-based signature algorithms |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112152784A true CN112152784A (zh) | 2020-12-29 |
Family
ID=68162203
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010223201.3A Pending CN112152784A (zh) | 2019-06-28 | 2020-03-26 | 用于基于散列的签名算法的并行处理技术 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20190319802A1 (zh) |
EP (1) | EP3758290A1 (zh) |
CN (1) | CN112152784A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113395593A (zh) * | 2021-08-17 | 2021-09-14 | 深圳佳力拓科技有限公司 | 减少信息泄漏的数字电视终端的数据发送方法和装置 |
CN113570465A (zh) * | 2021-09-18 | 2021-10-29 | 杭州远境互联科技有限公司 | 基于pos共识机制的区块链签名处理方法 |
CN114840501A (zh) * | 2021-02-02 | 2022-08-02 | 迈凌有限公司 | 使用多个散列引擎对数据集进行散列 |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US12047491B2 (en) | 2021-04-28 | 2024-07-23 | Nxp B.V. | Speeding up hash-chain computations |
CN113645038B (zh) * | 2021-07-30 | 2023-07-11 | 矩阵时光数字科技有限公司 | 一种测量设备无关的量子数字签名系统及方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013138409A (ja) * | 2011-11-30 | 2013-07-11 | Canon Inc | 情報処理装置およびその方法 |
-
2019
- 2019-06-28 US US16/456,004 patent/US20190319802A1/en not_active Abandoned
-
2020
- 2020-03-25 EP EP20165518.0A patent/EP3758290A1/en not_active Withdrawn
- 2020-03-26 CN CN202010223201.3A patent/CN112152784A/zh active Pending
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114840501A (zh) * | 2021-02-02 | 2022-08-02 | 迈凌有限公司 | 使用多个散列引擎对数据集进行散列 |
CN113395593A (zh) * | 2021-08-17 | 2021-09-14 | 深圳佳力拓科技有限公司 | 减少信息泄漏的数字电视终端的数据发送方法和装置 |
CN113395593B (zh) * | 2021-08-17 | 2021-10-29 | 深圳佳力拓科技有限公司 | 减少信息泄漏的数字电视终端的数据发送方法和装置 |
CN113570465A (zh) * | 2021-09-18 | 2021-10-29 | 杭州远境互联科技有限公司 | 基于pos共识机制的区块链签名处理方法 |
Also Published As
Publication number | Publication date |
---|---|
US20190319802A1 (en) | 2019-10-17 |
EP3758290A1 (en) | 2020-12-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11770262B2 (en) | Odd index precomputation for authentication path computation | |
US11770258B2 (en) | Accelerators for post-quantum cryptography secure hash-based signing and verification | |
US11405213B2 (en) | Low latency post-quantum signature verification for fast secure-boot | |
US11575521B2 (en) | Fast XMSS signature verification and nonce sampling process without signature expansion | |
CN112152785A (zh) | 基于sha2和sha3组合的xmss硬件加速器 | |
US12120227B2 (en) | Efficient post-quantum secure software updates tailored to resource-constrained devices | |
EP3758290A1 (en) | Parallel processing techniques for hash-based signature algorithms | |
CN112152787A (zh) | 用于后量子密码学安全的基于哈希的签名和验证的消息索引感知多哈希加速器 | |
US11985226B2 (en) | Efficient quantum-attack resistant functional-safe building block for key encapsulation and digital signature | |
US11575515B2 (en) | Post-quantum secure remote attestation for autonomous systems | |
CN114154174A (zh) | 后量子签名设施的状态同步 | |
CN117882334A (zh) | 经典和后量子签名的高效杂交 | |
US20220100873A1 (en) | Computation of xmss signature with limited runtime storage | |
US20220123949A1 (en) | Side channel protection for xmss signature function | |
CN117581504A (zh) | 用于解决随机化散列和联邦信息处理标准的xmss管理 | |
US20220416998A1 (en) | Side channel protection for sha3 cryptographic functions | |
US12137169B2 (en) | Low latency post-quantum signature verification for fast secure-boot |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |