CN105531713A - 从单个数据缓冲器生成多个安全散列 - Google Patents
从单个数据缓冲器生成多个安全散列 Download PDFInfo
- Publication number
- CN105531713A CN105531713A CN201480049656.0A CN201480049656A CN105531713A CN 105531713 A CN105531713 A CN 105531713A CN 201480049656 A CN201480049656 A CN 201480049656A CN 105531713 A CN105531713 A CN 105531713A
- Authority
- CN
- China
- Prior art keywords
- hash
- initial value
- module
- message
- hash digest
- 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.)
- Granted
Links
- 239000000872 buffer Substances 0.000 title claims description 22
- 238000000034 method Methods 0.000 claims description 51
- 238000012856 packing Methods 0.000 claims description 13
- 230000000875 corresponding effect Effects 0.000 description 35
- 230000008569 process Effects 0.000 description 35
- 238000010586 diagram Methods 0.000 description 16
- 238000003860 storage Methods 0.000 description 15
- 238000012545 processing Methods 0.000 description 14
- 230000005540 biological transmission Effects 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 2
- 230000002596 correlated effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 238000005728 strengthening Methods 0.000 description 2
- 230000018199 S phase Effects 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- 239000000945 filler Substances 0.000 description 1
- 238000007667 floating Methods 0.000 description 1
- 230000010365 information processing Effects 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000005192 partition Methods 0.000 description 1
- 238000011112 process operation Methods 0.000 description 1
- 230000011218 segmentation Effects 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 239000012536 storage buffer Substances 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 230000001052 transient effect Effects 0.000 description 1
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/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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
- G06F21/72—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in cryptographic circuits
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30003—Arrangements for executing specific machine instructions
- G06F9/30007—Arrangements for executing specific machine instructions to perform operations on data operands
- G06F9/30036—Instructions to perform operations on packed data, e.g. vector, tile or matrix operations
-
- 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/3242—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 keyed hash functions, e.g. message authentication codes [MACs], CBC-MAC or HMAC
-
- 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
-
- 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
-
- 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/20—Manipulating the length of blocks of bits, e.g. padding or block truncation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Power Engineering (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Storage Device Security (AREA)
- Mobile Radio Communication Systems (AREA)
Abstract
一个实施例提供了装置。该装置包括;单指令多数据(SIMD)散列模块,该SIMD散列模块被配置成用于将长度为L的消息的至少第一部分分派给多个(S)区段,该消息包括多个数据元素序列,每个序列包括S个数据元素,每个序列中的对应数据元素被分派给对应的区段,每个区段包括多个(N)数据元素块,以及并行地对S个区段进行散列,导致S个区段摘要,S个散列摘要至少部分地基于初始值,以及存储S个散列摘要;填充模块,该填充模块被配置成用于填充余数,该余数对应于该消息的第二部分,该第二部分与该消息的长度L、区段数量以及块大小有关;以及非SIMD散列模块,该非SIMD散列模块被配置成用于对经填充的余数进行散列,导致附加散列摘要,以及存储该附加散列摘要。
Description
领域
本公开涉及散列并且更具体地涉及从单个数据缓冲器生成多个安全散列。
背景
密码散列算法经常以链式相关方式在单个数据缓冲器(例如,消息)上起作用。数据缓冲器被划分为块,这些块的大小由散列算法(例如,SHA-1、SHA-256等等)定义。然后根据标准规范串行地处理这些块。所处理的每个块的输出是用作处理缓冲器中的后续数据块的输入(即,初始摘要)的散列摘要,因此串行链式约束。以此方式处理块直到已经处理了数据缓冲器的每个块。与结合处理结果的串行性质执行散列算法相关联的计算强度导致生成密码散列的相对长的时间。
密码散列可用于例如当需要认证文件时安全地加载文件。当操作系统可运行时,这种安全加载可例如在引导序列期间或者在引导序列之后发生但是以限制方式(例如,单线程)。当确定密码散列时的串行链式约束可因此导致与在引导序列期间认证这种文件相关联的不可接受的长持续时间。
单指令多数据(SIMD)技术可用于加速例如SHA-256散列,但是这种技术通常使用可要求多线程环境的多个独立数据缓冲器。这种多线程环境可于是要求生产者-消费者队列和/或应用和处理流程的通常在例如引导序列期间不可行的显著再架构。
附图简要说明
所要求保护的主题的特征和优点将从与其一致的实施例的以下详细说明中变得明显,应当参照附图来考虑该说明书,在附图中:
图1示出根据本公开的各个实施例的计算设备的功能框图;
图2示出将多个数据元素序列分派给S个区段;
图3示出可从对经分派的数据元素的区段并行地并且根据SHA-256进行散列所导致的区段摘要;
图4是根据本公开的各个实施例的散列操作的流程图;
图5是根据本公开的各个实施例的基于散列的消息认证码(HMAC)操作的流程图;以及
图6是根据本公开的一个实施例的基于散列的消息认证码(HMAC)操作的一个示例的流程图。
尽管将参考说明性实施例进行以下详细说明,其许多替代、修改和变化将对本领域普通技术人员明显。
详细描述
通常,本公开涉及散列和消息认证码方法(及系统),其被配置成用于使用单个数据缓冲器并且利用计算设备的SIMD(单指令多数据)架构确定散列摘要和/或基于散列的消息认证码(HMAC)。如在此所使用的,“散列摘要”包括区段摘要、消息摘要和/或其他散列摘要。区段摘要对应于区段的散列摘要。消息摘要对应于消息的散列摘要。可至少部分地基于多个区段摘要确定消息摘要。可并行地计算多个区段摘要。为了从与并行地计算区段摘要相关联的减少的处理时间受益,该多个区段摘要可被存储和/或可用于进一步处理。该多个区段摘要然后可用于例如在存储在数据缓冲器内的消息上生成HMAC。如在此所使用的,“消息”是可对应于数据、命令、文本、应用、所接收的比特流等等中的一个或多个的具有任意长度的数据字节序列。消息的散列摘要(即,消息摘要)是唯一地表示该消息的固定长度比特串。消息认证码(MAC)是使用该消息和被配置成用于允许认证消息的对称密码密钥生成的认证标签。MAC通常附接到该消息并且接收方可然后通过确定使用所接收的消息和对称密钥确定的接收方生成的MAC是否匹配与该消息一起接收的MAC来认证该消息。
使用该消息和一个或多个密码密钥生成HMAC。在HMAC中,对这些密码密钥与该消息一起进行散列并且可再次用相同的或不同的密码密钥对所得消息摘要进行散列。使用一个或多个密码密钥对多个时间进行散列被配置成用于增强HMAC的安全性。
系统和方法被配置成用于将消息的至少一部分分派给多个区段。该消息可包括多个数据元素序列。数据元素大小(即,数据元素中的比特数量)可与特定的散列算法(例如,SHA-256字长)和/或处理器架构(例如,SIMD寄存器的宽度)相关。数据元素序列可被分派,从而使得数据元素与区段数量S相关的交织周期进行交织。可至少部分地基于与被配置成用于确定消息摘要的处理器和/或处理器核相关联的SIMD寄存器的宽度确定区段数量。区段数量S可进一步至少部分地基于特定的散列(和/或HMAC)算法的字长。然后并行地使用SIMD功能处理这些区段以便为每个区段生成对应的区段摘要。
散列算法包括但不限于MD5和/或SHA族(例如,SHA-1、SHA-224、SHA-256、SHA-384、SHA-512、SHA-512/224和SHA-512/256)。MD5算法可符合或兼容由互联网工程任务小组(IETF)发布的标题为“MD5消息摘要算法”的与1992年4月发布的请求注解(RFC)1321和/或该规范的稍后版本。SHA算法可符合或兼容由美国国家标准技术研究所(NIST)信息技术市实验(ITL)发布的标题为“安全散列标准(SHS)”的发布与2012年3月的
联邦信息处理标准(FIPS)公开本180-4和/或该标准的稍后版本。HMAC协议可符合或兼容由NISTITL发布的标题为“密钥散列消息认证码(HMAC)”的发布于2022年3月6日的FIPS公开本190和/或该标准的稍后版本,例如,发布于2008年7月的FIPS公开本198-1。当然,在其他实施例中,安全散列协议和/或HMAC协议可包括定制和/或专用安全散列和/或HMAC协议。
为了处理,可将每个区段划分为块,其中,并行地处理每组块。可基于所使用的特定密码算法确定块的大小,例如,SHA-256,块大小为64字节。消息可通常具有任意长度。因此,消息长度(以及相关联的数据缓冲器大小)可或可不是区段数量乘以块大小的整数倍。该消息可包括余数(即,R个字节),该余数包括未均匀地适配到所定义的区段块中的数据比特和/或数据元素。可如在此所描述的那样处理余数以便产生与余数相关的附加消息摘要。
因此,对于长度为L的消息(以及相关联的数据缓冲器),其包括N个区段块(即,区段数量S乘以与散列算法相关联的块大小B)加上数据缓冲器中的未包括在区段块中的余数R个字节,可为该消息确定S+1个散列摘要。可然后存储S+1个散列摘要。生成并存储S+1个散列摘要被配置成用于为速度折中存储。换言之,当S+1个散列摘要可自身被散列到单个消息摘要中时,附加处理操作可添加到整体处理时间,由此降低操作速度。虽然存储S+1个散列摘要可消耗更多存储,由于散列摘要是受比特限制的,例如128比特,所使用的附加存储可相对于避免对S+1个散列摘要进行散列以便产生单个消息摘要所实现的处理时间节省相对较小。
图1示出根据本公开的各个实施例的计算设备100的功能框图。计算设备100通常包括处理器110、网络控制器115以及存储器120。计算设备100可包括但不限于移动计算设备(例如,膝上计算机、笔记本计算机、平板计算机、特征电话、智能电话、桌上计算机、服务器)和/或被配置成用于认证消息和/或数据的另一个计算设备。网络控制器115被配置成用于管理计算设备100和网络和/或其他计算设备之间的通信。
处理器110包括一个或多个核112a、...、112m、一个或多个通用寄存器114a、...、114n、一个或多个SIMD寄存器116a、...、116p、和/或一个或多个其他寄存器118a、...、118q。每个核(例如,核112a)被配置成用于执行与计算设备100的上电序列相关联的操作,填充消息和/或生成一个或多个散列摘要和/或一个或多个消息认证码,如在此所描述的。每个通用寄存器(例如,通用寄存器114a)被配置成支持例如基本整数算数和/或比特和字节串操作。例如,通用寄存器114a可被配置成用于保持逻辑和算数运算的操作数、地址计算的操作数和/或存储器指针。其他寄存器118a、...、118q可包括例如标志寄存器和/或程序计数器。每个SIMD寄存器(例如,SIMD寄存器116a)被配置成用于支持在整数和/或浮点值上执行单指令多数据操作。例如,SIMD寄存器116a、...、116p可包括一个或多个64比特MMX寄存器、一个或多个128比特XMM寄存器和/或一个或多个256比特YMM寄存器。
每个SIMD寄存器116a、...、116p具有相应的寄存器大小并且被配置成在对应的执行元件中保存至少一个数据元素。执行元件的大小可对应于数据元素类型,即,字节、字、双字(“dword”)或四字。例如,128比特寄存器可包括:16个8比特执行元件,每个执行元件对应于字节数据元素类型;8个16比特执行元件,每个执行元件对应于字数据类型;4个32比特执行元件,每个执行元件对应于数据类型dword;对应于数据类型四字的两个数据元素的2个64比特执行元件;对应于数据类型双四字的一个数据元素的1个128比特执行元件。因此,单个SIMD指令可被配置成用于在保持在对应的执行元件中的至少一个数据元素上操作。例如,对于被配置成用于在4个32比特执行元件上操作的单个SIMD指令而言,相应的128比特SIMD寄存器可保持4个32比特dword(每个dword对应于执行元件)。在本示例中,4个32比特dword可然后并行地由单个SIMD指令操作。
存储器120包括被配置成管理计算设备100的操作的操作系统OS121。OS121可被配置成以受限模式在例如计算设备100上电和/或在恢复操作期间操作。在上电和/或恢复操作期间,OS121可被配置成用于在允许一个或多个模块在计算设备100上操作之前认证该模块。存储器120包括被配置成用于存储消息123。数据缓冲器122的大小(例如,L个字节)对应于所存储的消息的大小。存储器120进一步包括SIMD散列模块124、非SIMD散列模块125、HMAC模块126、填充模块128以及用于多个散列摘要130a、...、130s的存储。存储器120可包括被配置成用于存储一个或多个密码密钥134a、...、134r的安全存储132。这些密码密钥可以与认证消息相关联(例如,在允许模块操作之前的模块)。
SIMD散列模块124被配置成从数据缓冲器122检索消息123的一个或多个块、对所检索的块进行散列以便生成多个区段摘要并且将该多个区段摘要存储在存储器120中,例如,散列摘要130a、...、130s。在某些实施例中,该多个散列摘要130a、...、130s可由MAC模块126使用,如在此所描述的。SIMD散列模块124被配置成用于根据所选择的散列算法对消息123的所检索的块进行散列。每个散列算法可包括与散列算法的性质和/或操作相关的相关联的预定义的散列参数。预定义的散列参数可包括最大消息大小、块大小B、算法字长w和散列摘要大小。例如,对于SHA-256,最大消息大小是264-1比特,块大小是512比特(即,64字节),算法字长是32比特(对应于一个dword)而散列摘要大小是256比特(例如,对应于8个dword)。
SIMD散列模块124被配置成用于将多个数据元素序列分派给S个区段。区段数量S与SIMD寄存器大小和与所选择散列算法相关联的算法字长有关。区段数量S可对应于SIMD寄存器大小除以算法字长。区段数量还可对应于寄存器(例如,SIMD寄存器116a)中的执行元件数量。类似地,数据元素大小dw对应于算法字长。例如,SHA-256被配置成用于处理32比特(即,w=32)算法字。SIMD寄存器的32比特执行元件对应于dword数据类型。因此,对于SIMD散列模块124所使用的被配置成实现SHA-256的256比特SIMD寄存器可被配置有8个32比特执行元件。长度为L个字节的被配置成由SIMD散列模块124使用SHA-256算法进行散列的消息123于是可包括多个32比特数据元素序列(dw=32比特)。对应于执行元件数量的区段数量则可以是8。
每个数据元素序列可以于是包括S个数据元素。该多个数据元素序列可然后通过将每个序列中的对应的数据元素分派给对应的区段而被分派给S个区段。例如,消息123可包括S个数据元素的M个序列(例如,m0(d0、d1、...、dS-1)、m1(d0、d1、...、dS-1)、...、mM-1(d0、d1、...、dS-1)),其中,mi表示序列号i并且dj表示相关联的序列(即,序列号i)中的数据元素j。S个区段可被写为s0、s1、...、sS-1。分派可于是导致区段s0包括m0(d0)、m1(d0)、...、mM-1(d0),区段s1包括m0(d1)、m1(d1)、...、、mM-1(d1),以此类推,直到区段sS-1包括m0(dS-1)、m1(dS-1)、...、mM-1(dS-1)。以此方式的分派被配置成避免置换操作并且由此提高效率并减少处理时间。
图2示出将多个数据元素序列分派给S个区段。
图2中的每个框表示数据元素并且每个框中的数字表示区段号。区段号的范围从0到7,对应于8区段序列。例如,第一数据元素序列包括8个数据元素,例如,数据元素202、数据元素204等等直到数据元素206,并且第二数据元素序列包括8个数据元素,例如,数据元素212、数据元素214等等直到数据元素216。因此,数据元素202和数据元素212与区段0相关联,数据元素204和数据元素214与区段1相关联,并且区段206和区段216与区段7相关联。因此,每个序列中的对应数据元素可被分派给对应的区段。
可被分派的数据元素的数量可至少部分地基于区段块大小。如在此所使用的,区段块大小SB对应于区段数量S与算法参数块大小B的乘积(即,S*B)。长度为L的消息123可被划分为具有余数R的N个区段块,其中,R大于等于0并且小于SB,并且N是整数。可被分派的数据元素的数量等于N乘以块大小(按例如字节计)除以数据元素大小(按例如字节计)。例如,SHA-256具有64字节(即,512比特)的块大小和4字节(即,32比特)的算法字大小。假设区段数量为8(即,寄存器大小除以算法字大小)。因此,本示例的区段块大小是512字节(即,8个区段乘以块大小(即,64字节))。高达512*N/4=128*N个数据元素可被分派,其中,N是满足512*N≤L的最大整数。
因此,至少部分地基于所选择的散列算法,SIMD寄存器大小和消息123大小(以及相应的数据缓冲器122大小)L、区段块的数量N以及余数R可被确定。可至少部分地基于所选择的散列算法和数量N确定区段长度SL。区段长度SL可对应于块大小B乘以N。区段长度对应于例如在数据元素序列已经被分派之后包括在每个区段中的数据元素的字节数量,如在此所描述的。
SIMD散列模块124被配置成根据所选择的散列算法并行地处理S个区段,产生S个区段摘要。根据所选择的散列算法,SIMD散列模块124可被配置成用对应的初始值初始化每个区段摘要。例如,SHA-256规定8个32比特初始值H0-H7。SIMD散列模块124可然后并行地处理S个区段,采用SIMD指令和SIMD寄存器116a、...、116p中的一个或多个寄存器。每个区段可包括数据元素的N个块。当处理完成时,SIMD散列模块124可被配置成将S个区段摘要130a、...、130s存储在存储器120中。例如,每个区段摘要130a、...、130s的长度可以针对SHA-256散列算法是256比特。因此,不是一次处理一个框,SIMD散列模块124被配置成并行地处理S个块并且提供S个区段摘要作为输出。S个区段摘要可然后被存储、用于认证和/或进一步处理。
图3示出可由例如被配置成并行地并且根据SHA-256对图2中示出的经分派数据元素的8个区段进行散列的SIMD散列模块124的操作所导致的区段摘要。SHA-256被配置成用于产生包括8个32比特dword(H0-H7)的256比特散列摘要。因此,第一区段摘要322与区段0相关联,第二区段摘要324与区段1相关联,并且第八区段摘要326与区段7相关联。
填充模块128被配置成用填充比特填充余数R以便实现与所选择的散列算法的P*块大小相对应的填充长度,其中,P是整数。填充被配置成导致与P*块大小相对应的填充长度的最小填充比特数,其中块大小对应于所选择的散列算法。填充比特可具有值(即,0或1)和由所选择的散列算法所定义的顺序。在某些实施例中,填充比特可包括长度参数的二进制表示,例如,消息长度。例如,对于SHA-256,填充包括1比特(即,值为1的比特)、其后是k个0比特、其后是对应于消息长度的二进制表示的64比特块,k可以被确定为R+l+k≡448mod512的最小非负解,其中,512对应于SHA-256算法的比特中的块大小。在实施例中,长度参数可对应于余数按例如比特计的长度。在另一个实施例中,长度参数可对应于消息的按例如比特计的长度L。
在另一个实施例中,填充模块128可被配置成用对应于块大小的多个填充比特填充每个区段。在本实施例中,长度参数的二进制表示可对应于区段长度SL。SIMD散列模块124可然后被配置成处理经填充区段,如在此所描述的。
非SIMD散列模块125被配置成根据所选择的散列算法处理经填充余数,产生附加散列摘要。根据所选择的散列算法,SIMD散列模块124可被配置成用附加初始值初始化附加散列摘要。当处理完成时,非SIMD散列模块125可被配置成将附加散列摘要例如130s存储在存储器120中。附加散列摘要可然后被用于认证和/或进一步处理。
因此,SIMD散列模块124和非SIMD散列模块125各自被配置成处理消息的至少一部分并且产生多个散列摘要。可通过将消息的数据元素序列分派给S个区段并且并行地处理S个区段产生S个散列摘要来减少处理时间,如在此所描述的。消息的余数可然后被填充并处理以便产生附加散列摘要。S+1个散列摘要可然后被存储、用于认证和/或进一步处理。
HMAC模块126被配置成用于至少部分地基于消息(例如,消息123)和密码密钥生成密钥散列消息认证码(MAC)。例如,HMAC模块126可从安全存储132检索一个或多个密码密钥(例如,密钥134a、...、134r)。HMAC模块126可被配置成至少部分地基于密码密钥134a、...、134r生成一个或多个初始值以及向SIMD散列模块124和/或非SIMD模块125提供初始值。SIMD散列模块124和/或非SIMD模块125可被配置成用于使用在处理过程中所提供的初始值而不是与所选择的散列算法相关联的初始值。SIMD散列模块124和/或非SIMD模块125可然后至少部分地基于消息123和初始值产生S+1个散列摘要,如在此所描述的。在某些实施例中,HMAC模块126被配置成至少部分地基于SIMD散列模块124所产生的至少S个区段摘要生成消息123的MAC。
在实施例中,HMAC模块126可检索第一密码密钥(例如,密钥134a)、可至少部分地基于第一密码密钥134a生成第一初始值。HMAC模块126可向SIMD散列模块124提供第一初始值。SIMD散列模块124可然后被配置成利用第一初始值作为S个区段中的每一个区段的初始值。HMAC模块126可类似地向非SIMD散列模块125提供第一初始值,非SIMD散列模块125可然后利用第一初始值作为初始值用于确定附加散列摘要,如在此所描述的。
在另一个实施例中,HMAC模块126可被配置成将第一密码密钥划分为多个部分、生成多个初始值并且向SIMD散列模块124提供S个初始值。SIMD散列模块124可然后被配置成利用对应的初始值作为每个对应的区段的初始值。HMAC模块126可类似地向非SIMD散列模块125提供对应的初始值,非SIMD散列模块125可然后利用对应的初始值作为初始值用于确定附加散列摘要,如在此所描述的。
在另一个实施例中,HMAC模块126可检索第二密码密钥(例如,密钥134b)、可至少部分地基于第二密码密钥134b生成第二初始值。HMAC模块126可被配置成利用第二初始值对有序散列摘要集合进行散列。例如,有序摘要集合可包括SIMD散列模块124至少部分地基于第一密码密钥产生的S个散列摘要的连结。在另一个示例中,有序摘要集合可包括SIMD散列模块124和非SIMD散列模块125至少部分地基于第一密码密钥产生的S+1个散列摘要的连结。
在另一个实施例中,HMAC模块126可被配置成利用第二初始值(至少部分地基于第二密钥134b生成)作为初始值用于S(或S+1)个消息摘要与例如经处理的第一密钥与opad的异或的连结的中间散列操作,如在此所描述的。
在另一个实施例中,HMAC模块126可配置成检索第三密码密钥(例如,密钥134c)、可至少部分地基于第三密码密钥134c生成第三初始值。HMAC模块126可被配置成用于利用第三初始值(至少部分地基于第三密钥134c生成)作为初始值,用于S(或S+1)个消息摘要与例如经处理的第一密钥与opad的异或的连结的中间散列操作,如在此所描述的。
当然,可组合与HAMC模块有关的实施例中的一个或多个实施例。
这种组合可被配置成通过使用多个密码密钥生成初始值提供增强的安全性,如在此所描述的。
前述示例实施例被配置成使用单个数据缓冲器并采用计算设备的SIMD架构确定散列摘要和/或基于散列的消息认证码。可从存储在数据缓冲器中的消息分派多个区段并且可然后并行地确定多个区段摘要。消息的余数可然后被填充并散列,生成附加散列摘要。HMAC过程可包括至少部分地基于一个或多个密码密钥使用一个或多个初始值确定该多个区段摘要。产生并存储该多个区段摘要(以及附加散列摘要)被配置成增加散列操作的速度并且由此减少处理时间。该多个区段摘要和附加散列摘要所使用的附加存储可然后被针对速度增加折中。
图4是根据本公开的各个实施例的散列操作的流程图400。具体地,流程图400示出从消息生成多个区段摘要和附加散列摘要,并行地生成这些区段摘要。本实施例的操作包括将(未填充)长度为L的消息的至少第一部分分派给多个(S)区段402。该消息可包括多个数据元素序列。该多个区段可与寄存器大小(例如,SIMD寄存器116a的大小)相关。每个序列可以包括S个数据元素。每个序列中的对应数据元素可被分派给对应的区段。因此,操作402被配置成将消息数据元素交织为区段,如在此所描述的。在某些实施例中,可在散列之前在操作404填充每个区段。例如,可以用填充块填充每个区段。操作406包括并行地对S个区段进行散列,导致(即,产生)S个区段摘要。每个区段包括数据元素的N个块,每个块具有相关联的块大小。可至少部分地基于至少一个初始值生成S个区段摘要。在某些实施例中,可在操作408存储S个区段摘要。
可在操作410填充余数。余数对应于消息(以及数据缓冲器)的第二部分。第二部分可以与未填充长度L、区段数量S以及块大小有关。操作412包括为经填充余数进行散列,产生附加散列摘要。可在操作414存储附加散列摘要。程序流程可在操作416返回。
流程图400的操作被配置成并行地从消息生成多个区段摘要以及从余数生成附加散列摘要。至少区段摘要可然后用于认证消息。在某些实施例中,流程图400的操作可包括在被配置成用于认证消息的HMAC操作中。
图5是根据本公开的各个实施例的基于散列的消息认证码(HMAC)操作的流程图500。具体地,流程图500示出生成消息认证码(MAC)的一个示例。本实施例的操作包括至少部分地基于第一密码密钥确定至少一个初始值,502。操作504包括至少部分地基于S个散列摘要生成MAC。
流程图500的操作被配置成为消息(例如,消息123)生成基于散列的MAC。操作可包括将消息分派给可然后被并行地处理(例如,散列)的区段,产生多个区段摘要。散列可利用至少部分地基于一个或多个密码密钥确定的一个或多个初始值。至少区段摘要可然后用于生成MAC。与生成MAC有关的操作还可利用至少部分地基于一个或多个密码密钥确定的一个或多个初始值。
图6是根据本公开的一个实施例的基于散列的消息认证码(HMAC)操作的一个示例600的另一个流程图。具体地,流程图600示出利用与一个或多个密码密钥有关的一个或多个初始值生成基于散列的MAC。本实施例的操作包括确定与第一密码密钥K有关的至少一个经预处理密码密钥K0602。预处理被配置成产生具有对应于所选择的散列算法的算法块大小的长度的至少一个K0。因此,第一密码密钥K的至少一部分可例如通过附加比特而被加长、可例如通过然后对附加比特进行散列被缩短或者如果K的至少一部分的长度对应于算法块大小则可不改变,为了产生至少一个K0。该至少一个经预处理密码密钥K0可然后在操作604与内部填充(ipad)进行异或。例如,内部填充可对应于字节(例如,36hex),重复B(即,按字节计的块大小)次。操作604的结果可然后在操作606被散列以便产生至少一个初始值。例如,第一密码密钥K可被预处理以便产生可然后与ipad进行异或以便产生一个初始值的一个K0。在另一个示例中,第一密码密钥K可被划分为至少S个部分,其中,S是区段数量,并且至少S个部分中的每个部分可被预处理、异或并且用ipad散列以便产生至少S个初始值。
操作608包括对消息(例如,消息123)进行散列。操作608可接收该消息和根据操作602、604和606产生的一个或多个初始值作为输入。操作608可包括在流程图200中示出的操作中的一个或多个操作。操作608包括生成S个区段摘要并且可包括生成与消息的余数有关的附加散列摘要,如在此所描述的。在某些实施例中,操作608可包括对至少S个区段摘要的有序集合进行散列以便产生中间散列摘要。例如,操作608可包括对S个区段摘要的有序集合进行散列以便产生中间散列摘要。在另一个示例中,操作608可包括对与消息的余数有关的S个区段摘要的有序集合与附加散列摘要进行散列。对有序集合进行散列的初始值可对应于用作操作608的输入的至少一个初始值中的一个初始值或者可至少部分地基于第二密码密钥生成。利用第二密码密钥被配置成用于增强HMAC过程的安全性。
操作610包括用外部填充(opad)对一个经预处理密码密钥K0进行异或以便产生结果。例如,外部填充可对应于字节(例如,5hex),重复B(即,按字节计的块大小)次。操作612包括连结操作610的结果与操作608的结果。可在操作614对操作610和608的连结结果进行散列。操作614的初始值可对应于用作操作608的输入的至少一个初始值中的一个或多个初始值、可至少部分地基于第二密码密钥被生成或者可至少部分地基于第三密码密钥被生成。操作616包括选择操作614的结果的多个最左侧字节作为消息的消息认证码。
流程图600的操作被配置成生成消息的基于散列的消息认证码,其中,并行地对消息的至少一部分进行散列,如在此所描述的。利用基于多个密码密钥生成的多个初始值被配置成用于增强流程图600所示出的HMAC过程的安全性。
表1包括示例伪随机码,被配置成用于将存储在数据缓冲器中的消息分派给S个区段、并行地处理这些区段、填充余数以及对经填充余数进行散列,如在此所描述的。参数可包括S(区段数量)、w(区段字的宽度,即,算法字和执行元件大小)、B(规定块大小的散列算法)和SB(区段块大小=S*B)。
表1
//在dataPtrhash(dataPtr,digestPtrSIMD,digestPtrFinal,length)开始在数据长度上提供一系列散列摘要的功能{
hashSIMDLen=length/SB//整数值
hashNonSIMDLen=length-(hashSIMDLen*SB)
//根据所选择的散列算法初始化每个区段摘要
specificationinitializeDigestSIMD(digestPtrSIMD)
//数据缓冲器的并行处理
while(hashSIMDLen>0){
hashSIMD(dataPtr,digestPtrSIMD)
dataPtr+=SB//增加dataPtr
hashSIMDLen-//减少循环计数器
//根据规范初始化最终的摘要
initializeDigest(digestPtrFinal)
//根据规定散列数据的剩余部分
hashnonSIMD(dataPtr,digestPtrFinal,hashNonSIMDLen)
//digestPtrSIMD包含S个散列摘要
//digestPtrFinal包含单个散列摘要
Return
例如,对于SHA-256散列算法(32比特字长)和包括256比特SIMD寄存器的计算设备,可并行地处理的区段数量S为8个(即,寄存器宽度/算法字大小)。在本示例中,消息长度和相关联的数据缓冲器长度是L个字节。因此,表1的hashSIMD()函数可在8个区段上操作。
继续本示例,SHA-256算法块大小B是64字节。因此,区段块大小SB按字节计是8*64=512字节。余数的长度于是为R=(LmodSB)字节。数据缓冲器长度可于是为L=SB*N+R字节。区段长度SL按字节计于是为B*N=64*N字节。每个区段可于是通过使用高达512*N字节的消息的每个第八dword(32比特数据元素)形成,其中,N大于0并且512*N小于消息长度(以及相应的缓冲器大小)L。
因此,长度为L的并且包括多个数据元素序列的消息的至少一部分可被分派给多个区段S,其中,每个序列中的对应的数据元素被分派给对应的区段。区段可然后由散列算法(例如,SHA-256)并行地处理,导致S个区段摘要。并行处理被配置成减少与散列消息相关联的处理时间并且由此减少与例如认证相关联的时间。消息的余数可然后被填充然后散列以便生成附加散列摘要,如在此所描述的。
尽管图4、图5和图6的流程图示出了根据各实施例的操作,将要理解的是在图4、图5和/或图6中描绘的所有操作对于其他实施例而言不是全部必需的。附加地,在此充分考虑了在本公开的其他实施例中,在图4、图5和/或图6中描绘的操作和/或在此描述的其他操作可以用未在任何附图中明确示出的方式结合,并且这种实施例可包括比图4、图5和/或图6中示出的操作更少或更多的操作。因此,涉及未在一个附图中准确示出的特征和/或操作的权利要求被认为在本公开的范围和内容内。
前述内容提供了示例系统架构和方法,然而,可对本公开进行修改。例如,计算设备100还可包括主机处理器、芯片组电路和系统存储器。主机处理器可包括一个或多个处理器核并且可被配置成用于执行系统软件。系统软件可包括例如操作系统代码(例如,OS内核代码)和局域网(LAN)驱动程序代码。LAN驱动程序代码可被配置成用于至少部分地控制网络控制器115的操作。系统存储器可包括被配置成用于存储有待由网络控制器115传输或接收的一个或多个数据分组的I/O存储器缓冲器。芯片组电路可通常包括“北桥”电路(未示出)以便控制处理器11、网络控制器115和系统存储器120之间的通信。
计算设备100可进一步包括操作系统(OS),以便管理系统资源并且控制在例如计算设备100上运行的任务。例如,可使用MicrosoftWindows、HP-UX、Linux或UNFX实现OS,尽管可使用其他操作系统。在某些实施例中,OS可由可为在一个或多个处理单元上运行的各种操作系统(虚拟机)提供底层硬件抽象层的虚拟机监视器(或管理程序)替代。操作系统和/或虚拟机可实现一个或多个协议堆栈。协议堆栈可执行一个或多个程序用于处理数据包。协议堆栈的示例是包括一个或多个程序用于处理(例如,处理或生成)数据包以便在网络上传输和/或接收的TCP/IP(传输控制协议/互联网协议)协议堆栈。可替代地,协议堆栈可被包括在专用子系统上,诸如例如TCP分流引擎和/或网络控制器115。TCP分流引擎电路可被配置成用于提供例如分组传输、分组分段、分组重组、错误检查、传输确认、传输重试等等,而不需要涉及主机CPU和/或软件。
系统存储器可包括以下存储器类型中的一种或多种:半导体固件存储器、可编程存储器、非易失性存储器、只读存储器、电可编程存储器、随机存取存储器、闪存、磁盘存储器、和/或光盘存储器。或者附加地或者可替代地,系统存储器可包括其他和/或稍后开发的计算机可读存储器类型。
可在包括一个或多个存储介质的系统中实现在此所描述的操作的实施例,该一个或多个存储介质在其上单独地或结合地存储当被一个或多个处理器执行时执行该方法的指令。处理器可包括例如处理单元和/或可编程电路。存储设备可包括任何类型的有形、非瞬态存储设备,例如任何类型的盘,包括软盘、光盘、致密盘只读存储(CD-ROM)、致密盘可重写(CD-RW)、以及磁光盘,半导体器件,诸如只读存储器(ROM)、随机存取存储器(RAM),诸如动态和静态RAM、可擦可编程只读存储器(EPROM)、电可擦可编程只读存储器(EEPROM)、闪存、磁或光卡、或任何其他类型的适合用于存储电子指令的介质。
如在本文中的任何实施例中所使用的“电路”可单独地或在任何组合中包括例如存储由可编程电路执行的指令的硬连线电路、可编程电路、状态机电路、和/或固件。如在此所使用的“模块”可单独地或以任何组合包括电路和/或代码和/或指令集(例如,软件、固件等等)。
根据本公开的技术的散列和消息认证码方法(及系统)被配置成使用单个数据缓冲器并且利用计算设备的SIMD(单指令多数据)架构确定散列摘要和/或基于散列的消息认证码(HMAC)。可并行地确定多个区段摘要。可至少部分地基于经填充的余数产生附加散列摘要,如在此所描述的。至少该多个区段摘要可然后用于例如在存储在数据缓冲器内的消息上生成HMAC。并行地确定多个区段摘要被配置成用于减少与认证消息相关联的处理时间。
相应地,本公开提供了一种示例装置。该示例装置包括:SIMD散列模块,该SIMD散列模块被配置成用于将长度为L的消息的至少第一部分分派给多个(S个)区段,该消息包括多个数据元素序列,每个序列包括S个数据元素,每个序列中的对应数据元素被分派给对应的区段,每个区段包括N个数据元素块,以及并行地对该S个区段进行散列,导致S个散列摘要,该S个散列摘要至少部分地基于初始值,以及存储S个散列摘要。该示例装置进一步包括填充模块,该填充模块被配置成用于填充余数,该余数对应于该消息的第二部分,该第二部分与该消息的长度L、区段数量以及块大小有关;以及非SIMD散列模块,该非SIMD散列模块被配置成用于对经填充的余数进行散列,导致附加散列摘要,以及存储该附加散列摘要。
本公开还提供了一种示例计算设备。该示例计算设备包括处理器和存储器,该处理器包括至少一个SIMD寄存器,每个SIMD寄存器被配置成用于保持多个数据元素,该存储器包括数据缓冲器,该数据缓冲器被配置成用于存储长度为L的消息。该示例计算设备进一步包括:SIMD散列模块,该SIMD散列模块被配置成用于将长度为L的消息的至少第一部分分派给多个(S个)区段,该消息包括多个数据元素序列,每个序列包括S个数据元素,每个序列中的对应数据元素被分派给对应的区段,每个区段包括N个数据元素块,以及并行地对该S个区段进行散列,导致S个散列摘要,该S个散列摘要至少部分地基于初始值,以及在存储器中存储S个散列摘要。该示例计算设备进一步包括填充模块,该填充模块被配置成用于填充余数,该余数对应于该消息的第二部分,该第二部分与该消息的长度L、区段数量以及块大小有关;以及SIMD散列模块,该SIMD散列模块被配置成用于对经填充的余数进行散列,导致附加散列摘要,以及在存储器中存储该附加散列摘要。
本公开还提供了一种示例方法。该示例方法包括:SIMD散列模块将长度为L的消息的至少第一部分分派给多个(S个)区段,该消息包括多个数据元素序列,每个序列包括S个数据元素,每个序列中的对应数据元素被分派给对应的区段,每个区段包括N个数据元素块;该SIMD散列模块并行地对该S个区段进行散列,导致S个散列摘要,该S个散列摘要至少部分地基于初始值;以及该SIMD散列模块存储S个散列摘要。该示例方法进一步包括填充模块填充余数,该余数对应于该消息的第二部分,该第二部分与该消息的长度L、区段数量以及块大小有关;以及非SIMD散列模块对经填充的余数进行散列,导致附加散列摘要;以及该非SIMD散列模块存储该附加散列摘要。
本公开还提供了一种示例系统,该系统包括其上单独地或结合地存储有指令的一个或多个存储设备,当被一个或多个处理器执行时,该指令导致以下操作,该操作包括;将长度为L的消息的至少第一部分分派给多个(S个)区段,该消息包括多个数据元素序列,每个序列包括S个数据元素,每个序列中的对应数据元素被分派给对应的区段,每个区段包括N个数据元素块,以及并行地对该S个区段进行散列,导致S个散列摘要,该S个散列摘要至少部分地基于初始值;存储该S个散列摘要;填充余数,该余数对应于该消息的第二部分,该第二部分与该消息的长度L、区段数量以及块大小有关;以及对经填充的余数进行散列,导致附加散列摘要,以及存储该附加散列摘要。
已经在此使用的术语和表达被用作描述而非限制术语,并且不旨在使用这种术语和表达时排除所展示和描述的特征的任何等效方案(或其部分),并且认识到在权利要求书的范围内各种修改是可能的。因此,权利要求书旨在覆盖所有这种等效方案。
已经在此描述了各种特征、方面、和实施例。这些特征、方面、和实施例易于与彼此以及变体和修改组合,如本领域普通技术人员将理解的那样。因此,本发明应当被认为包含这种组合、变体、以及修改。
Claims (25)
1.一种装置,包括:
单指令多数据(SIMD)散列模块,所述SIMD散列模块被配置成将长度为L的消息的至少第一部分分派给多个(S个)区段,所述消息包括多个数据元素序列,每个序列包括S个数据元素,每个序列中的对应数据元素被分派给对应的区段,每个区段包括N个数据元素块,以及并行地对所述S个区段进行散列,导致S个散列摘要,所述S个散列摘要至少部分地基于初始值;所述SIMD散列模块被进一步配置成用于存储所述S个散列摘要;
填充模块,所述填充模块被配置成填充余数,所述余数对应于所述消息的第二部分,所述第二部分与所述消息的长度L、区段数量以及块大小有关;以及
非SIMD散列模块,所述非SIMD散列模块被配置成对经填充的余数进行散列,导致附加散列摘要,以及存储所述附加散列摘要。
2.如权利要求1所述的装置,其中,所述填充包括长度参数的表示并且所述长度参数对应于所述余数的长度或对应于所述消息的长度L。
3.如权利要求1或2所述的装置,进一步包括:
基于散列的消息认证码(HMAC)模块,所述HMAC模块被配置成至少部分地基于第一密码密钥确定至少一个初始值以及至少部分地基于至少所述S个散列摘要生成消息认证码(MAC)。
4.如权利要求3所述的装置,其中,所述HMAC模块被进一步配置成确定一个初始值并且所述S个散列摘要至少部分地基于所述一个初始值或者确定至少S个初始值,并且每个散列摘要至少部分地基于对应的初始值。
5.如权利要求3所述的装置,其中,所述HMAC模块被配置成对至少包括所述S个散列摘要的有序集合进行散列,所述散列导致中间散列摘要,所述中间散列摘要至少部分地基于所述第一初始值与第二初始值中的至少一个,所述第二初始值与第二密码密钥相关。
6.如权利要求5所述的装置,其中,所述HMAC模块被进一步配置成至少部分地基于与第三密码密钥相关的第三初始值对所述中间散列摘要进行散列。
7.一种计算设备,包括:
处理器,所述处理器包括至少一个单指令多数据(SIMD)寄存器,每个SIMD寄存器被配置成保持多个数据元素;
存储器,所述存储器包括数据缓冲器,所述数据缓冲器被配置成用于存储长度为L的消息;
SIMD散列模块,所述SIMD散列模块被配置成将所述消息的至少第一部分分派给多个(S个)区段,所述消息包括多个数据元素序列,每个序列包括S个数据元素,每个序列中的对应数据元素被分派给对应的区段,每个区段包括N个数据元素块,以及使用所述至少一个SIMD寄存器并行地对所述S个区段进行散列,导致S个散列摘要,所述S个散列摘要至少部分地基于初始值;所述SIMD散列模块被进一步配置成在存储器中存储所述S个散列摘要;
填充模块,所述填充模块被配置成填充余数,所述余数对应于所述消息的第二部分,所述第二部分与所述消息的长度L、区段数量以及块大小有关;以及
非SIMD散列模块,所述非SIMD散列模块被配置成对经填充的余数进行散列,导致附加散列摘要,以及在存储器中存储所述附加散列摘要。
8.如权利要求7所述的计算设备,其中,所述填充包括长度参数的表示并且所述长度参数对应于所述余数的长度或对应于所述消息的长度L。
9.如权利要求7或8所述的计算设备,进一步包括:
基于散列的消息认证码(HMAC)模块,所述HMAC模块被配置成至少部分地基于第一密码密钥确定至少一个初始值以及至少部分地基于至少所述S个散列摘要生成消息认证码(MAC)。
10.如权利要求9所述的计算设备,其中,所述HMAC模块被进一步配置成确定一个初始值并且所述S个散列摘要至少部分地基于所述一个初始值,或者确定至少S个初始值,并且每个散列摘要至少部分地基于对应的初始值。
11.如权利要求9所述的计算设备,其中,所述HMAC模块被配置成对至少包括所述S个散列摘要的有序集合进行散列,所述散列导致中间散列摘要,所述中间散列摘要至少部分地基于所述第一初始值与第二初始值中的至少一个,所述第二初始值与第二密码密钥相关。
12.如权利要求11所述的计算设备,其中,所述HMAC模块被进一步配置成至少部分地基于与第三密码密钥相关的第三初始值对所述中间散列摘要进行散列。
13.一种方法,包括:
单指令多数据(SIMD)散列模块将长度为L的消息的至少第一部分分派给多个(S个)区段,所述消息包括多个数据元素序列,每个序列包括S个数据元素,每个序列中的对应数据元素被分派给对应的区段,每个区段包括N个数据元素块;
所述SIMD散列模块并行地对所述S个区段进行散列,导致S个散列摘要,所述S个散列摘要至少部分地基于初始值;
所述SIMD散列模块存储所述S个散列摘要;
填充模块填充余数,所述余数对应于所述消息的第二部分,所述第二部分与所述消息的长度L、区段数量以及块大小有关;
非SIMD散列模块对所述经填充余数进行散列,导致附加散列摘要;以及
所述非SIMD散列模块存储所述附加散列摘要。
14.如权利要求13所述的方法,其中,所述填充包括长度参数的表示并且所述长度参数对应于所述余数的长度或对应于所述消息的长度L。
15.如权利要求13或14所述的方法,进一步包括:
基于散列的消息认证码(HMAC)模块至少部分地基于第一密码密钥确定至少一个初始值;以及
所述HMAC模块至少部分地基于至少所述S个散列摘要生成消息认证码(MAC)。
16.如权利要求15所述的方法,其中,确定所述至少一个初始值包括所述HMAC模块确定一个初始值并且所述S个散列摘要至少部分地基于所述一个初始值,或者所述HMAC模块确定至少S个初始值,并且每个散列摘要至少部分地基于对应的初始值。
17.如权利要求15所述的方法,其中,生成所述MAC包括所述HMAC模块对至少包括所述S个散列摘要的有序集合进行散列,所述散列导致中间散列摘要,所述中间散列摘要至少部分地基于所述第一初始值与第二初始值中的至少一个,所述第二初始值与第二密码密钥相关。
18.如权利要求17所述的方法,其中,生成所述MAC进一步包括所述HMAC模块至少部分地基于与第三密码密钥相关的第三初始值对所述中间散列摘要进行散列。
19.一种包括其上单独地或结合地存储有指令的一个或多个存储设备的系统,当被一个或多个处理器执行时,所述指令导致以下操作,所述操作包括:
将长度为L的消息的至少第一部分分派给多个(S个)区段,所述消息包括多个数据元素序列,每个序列包括S个数据元素,每个序列中的对应数据元素被分派给对应的区段,每个区段包括N个数据元素块;
并行地对所述S个区段进行散列,导致S个散列摘要,所述S个散列摘要至少部分地基于初始值;
存储所述S个散列摘要;
填充余数,所述余数对应于所述消息的第二部分,所述第二部分与所述消息的长度L、区段数量以及块大小有关;
对经填充的余数进行散列,导致附加散列摘要;以及
存储所述附加散列摘要。
20.如权利要求19所述的系统,其中,所述填充包括长度参数的表示并且所述长度参数对应于所述余数的长度或对应于所述消息的长度L。
21.如权利要求19或20所述的系统,其中,当由一个或多个处理器执行时,所述指令导致以下附加操作,所述操作包括:
至少部分地基于第一密码密钥确定至少一个初始值;以及
至少部分地基于至少所述S个散列摘要生成消息认证码(MAC)。
22.如权利要求21所述的系统,其中,确定所述至少一个初始值包括确定一个初始值并且所述S个散列摘要至少部分地基于所述一个初始值,或者确定至少S个初始值,并且每个散列摘要至少部分地基于对应的初始值。
23.如权利要求21所述的系统,其中,生成所述MAC包括对至少包括所述S个散列摘要的有序集合进行散列,所述散列导致中间散列摘要,所述中间散列摘要至少部分地基于所述第一初始值与第二初始值中的至少一个,所述第二初始值与第二密码密钥相关。
24.如权利要求23所述的系统,其中,生成所述MAC进一步包括至少部分地基于与第三密码密钥相关的第三初始值对所述中间散列摘要进行散列。
25.一种包括用于执行如权利要求13至18中任一项所述的方法的装置的设备。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US14/050,326 US9425953B2 (en) | 2013-10-09 | 2013-10-09 | Generating multiple secure hashes from a single data buffer |
US14/050,326 | 2013-10-09 | ||
PCT/US2014/057330 WO2015053945A1 (en) | 2013-10-09 | 2014-09-25 | Generating multiple secure hashes from a single data buffer |
Publications (2)
Publication Number | Publication Date |
---|---|
CN105531713A true CN105531713A (zh) | 2016-04-27 |
CN105531713B CN105531713B (zh) | 2018-11-16 |
Family
ID=52776959
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201480049656.0A Active CN105531713B (zh) | 2013-10-09 | 2014-09-25 | 从单个数据缓冲器生成多个安全散列的装置、设备和方法 |
Country Status (4)
Country | Link |
---|---|
US (2) | US9425953B2 (zh) |
EP (1) | EP3055809B1 (zh) |
CN (1) | CN105531713B (zh) |
WO (1) | WO2015053945A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113420250A (zh) * | 2021-07-19 | 2021-09-21 | 卢恩妍 | 一种基于物联网的数据控制方式及系统 |
CN114091121A (zh) * | 2022-01-18 | 2022-02-25 | 苏州浪潮智能科技有限公司 | 一种消息摘要存储方法、系统、存储介质及设备 |
Families Citing this family (30)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10503510B2 (en) | 2013-12-27 | 2019-12-10 | Intel Corporation | SM3 hash function message expansion processors, methods, systems, and instructions |
US9442941B1 (en) * | 2014-03-28 | 2016-09-13 | Emc Corporation | Data structure for hash digest metadata component |
US9317719B2 (en) | 2014-09-04 | 2016-04-19 | Intel Corporation | SM3 hash algorithm acceleration processors, methods, systems, and instructions |
US9658854B2 (en) | 2014-09-26 | 2017-05-23 | Intel Corporation | Instructions and logic to provide SIMD SM3 cryptographic hashing functionality |
US11200549B2 (en) * | 2015-06-25 | 2021-12-14 | Diebold Nixdorf, Incorporated | Automated banking machine firmware flow control |
US10313129B2 (en) | 2015-06-26 | 2019-06-04 | Intel Corporation | Keyed-hash message authentication code processors, methods, systems, and instructions |
KR102307105B1 (ko) * | 2015-08-19 | 2021-09-29 | 인텔 코포레이션 | Simd sm3 암호화 해싱 기능을 제공하기 위한 명령어 및 로직 |
WO2017059282A1 (en) * | 2015-10-01 | 2017-04-06 | Revealo Corp. | System and method for privacy enabled discovery of wireless devices and their location |
EP3378190A4 (en) * | 2015-11-22 | 2019-06-26 | Unbound Tech Ltd | METHOD OF IMPLEMENTING KEY MESSAGE AUTHENTICATION CODE (HMAC) USING A MULTIPARTITE CALCULATION WITHOUT BOOLEAN DOORS |
EP3384406A4 (en) | 2015-12-04 | 2018-11-14 | Hewlett-Packard Enterprise Development LP | Combining hashes of data blocks |
US10152527B1 (en) | 2015-12-28 | 2018-12-11 | EMC IP Holding Company LLC | Increment resynchronization in hash-based replication |
US9857990B1 (en) | 2016-03-24 | 2018-01-02 | EMC IP Holding Company LLC | Fast startup for modular storage systems |
US10324782B1 (en) | 2016-03-24 | 2019-06-18 | Emc Corporation | Hiccup management in a storage array |
US10705907B1 (en) | 2016-03-24 | 2020-07-07 | EMC IP Holding Company LLC | Data protection in a heterogeneous random access storage array |
US10101934B1 (en) | 2016-03-24 | 2018-10-16 | Emc Corporation | Memory allocation balancing for storage systems |
US10223008B1 (en) | 2016-09-30 | 2019-03-05 | EMC IP Holding Company LLC | Storage array sizing for compressed applications |
US10255172B1 (en) | 2016-09-30 | 2019-04-09 | EMC IP Holding Company LLC | Controlled testing using code error injection |
US10152371B1 (en) | 2016-09-30 | 2018-12-11 | EMC IP Holding Company LLC | End-to-end data protection for distributed storage |
IL250657A0 (en) * | 2017-02-19 | 2017-03-30 | Sella Yaron | Cooperative computation of an authentication code based on a cryptographic hash function |
US10833847B2 (en) * | 2017-02-28 | 2020-11-10 | Google Llc | Cryptographic hash generated using data parallel instructions |
US10491377B2 (en) * | 2017-02-28 | 2019-11-26 | Google Llc | Hashing using data parallel instructions |
CN114757734A (zh) * | 2018-11-22 | 2022-07-15 | 创新先进技术有限公司 | 业务订单的处理方法、装置和电子设备 |
KR102567097B1 (ko) * | 2018-12-05 | 2023-08-14 | 삼성전자주식회사 | 임베디드 시스템의 부트 롬 업데이트 방법 및 부팅 방법 |
US11303456B2 (en) * | 2019-02-15 | 2022-04-12 | International Business Machines Corporation | Compute digital signature authentication sign instruction |
US11258585B2 (en) * | 2019-03-25 | 2022-02-22 | Woven Planet North America, Inc. | Systems and methods for implementing robotics frameworks |
CN114721586A (zh) * | 2021-01-06 | 2022-07-08 | 伊姆西Ip控股有限责任公司 | 用于存储管理的方法、电子设备和计算机程序产品 |
CN113704791B (zh) * | 2021-09-01 | 2024-03-15 | 北京兆芯电子科技有限公司 | 处理器、以及哈希信息认证码编码方法 |
US20240053989A1 (en) * | 2022-08-10 | 2024-02-15 | International Business Machines Corporation | Hardware-based message block padding for hash algorithms |
CN116186747A (zh) * | 2023-04-27 | 2023-05-30 | 暗链科技(深圳)有限公司 | 自适应哈希加密方法、非易失性可读存储介质及电子设备 |
CN116186746B (zh) * | 2023-04-27 | 2023-07-14 | 暗链科技(深圳)有限公司 | 并行哈希加密方法、存储介质及电子设备 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100106976A1 (en) * | 2008-10-23 | 2010-04-29 | Samsung Electronics Co., Ltd. | Representation and verification of data for safe computing environments and systems |
WO2013147877A1 (en) * | 2012-03-30 | 2013-10-03 | Intel Corporation | Method and apparatus to process sha-2 secure hashing algorithm |
Family Cites Families (19)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6018778A (en) | 1996-05-03 | 2000-01-25 | Netcell Corporation | Disk array controller for reading/writing striped data using a single address counter for synchronously transferring data between data ports and buffer memory |
US20070294510A1 (en) | 1999-04-09 | 2007-12-20 | Dave Stuttard | Parallel data processing apparatus |
DE19957594B4 (de) | 1999-11-30 | 2004-08-26 | OCé PRINTING SYSTEMS GMBH | Verfahren zum Synchronisieren von threads eines Computerprogramms |
CA2343437A1 (en) | 2001-04-06 | 2002-10-06 | Ibm Canada Limited-Ibm Canada Limitee | Method and system for cross platform, parallel processing |
US7818356B2 (en) | 2001-10-29 | 2010-10-19 | Intel Corporation | Bitstream buffer manipulation with a SIMD merge instruction |
KR100473449B1 (ko) | 2002-08-21 | 2005-03-10 | 이광엽 | 병렬 연산구조를 갖는 엠디5 해쉬함수 연산 방법 |
US7529979B2 (en) | 2003-12-12 | 2009-05-05 | International Business Machines Corporation | Hardware/software based indirect time stamping methodology for proactive hardware/software event detection and control |
US8028189B2 (en) | 2004-11-17 | 2011-09-27 | International Business Machines Corporation | Recoverable machine check handling |
US7734674B2 (en) | 2005-08-08 | 2010-06-08 | Freescale Semiconductor, Inc. | Fast fourier transform (FFT) architecture in a multi-mode wireless processing system |
US20070088988A1 (en) | 2005-10-14 | 2007-04-19 | Dell Products L.P. | System and method for logging recoverable errors |
US7594144B2 (en) | 2006-08-14 | 2009-09-22 | International Business Machines Corporation | Handling fatal computer hardware errors |
US7738454B1 (en) | 2008-09-30 | 2010-06-15 | Juniper Networks, Inc. | Methods and apparatus related to packet classification based on range values |
US7847710B2 (en) | 2008-11-10 | 2010-12-07 | Samsung Electronics Co., Ltd. | Integrating hashing and decompression of compressed data for safe computing environments and systems |
US8996556B2 (en) | 2009-06-05 | 2015-03-31 | Microsoft Technology Licensing, Llc | Parallel processing of an ordered data stream |
US8566841B2 (en) | 2010-11-10 | 2013-10-22 | International Business Machines Corporation | Processing communications events in parallel active messaging interface by awakening thread from wait state |
GB2497070B (en) | 2011-11-17 | 2015-11-25 | Advanced Risc Mach Ltd | Cryptographic support instructions |
US8914641B2 (en) | 2012-07-11 | 2014-12-16 | Intel Corporation | Method for signing and verifying data using multiple hash algorithms and digests in PKCS |
US9292283B2 (en) | 2012-07-11 | 2016-03-22 | Intel Corporation | Method for fast large-integer arithmetic on IA processors |
US10203934B2 (en) | 2012-07-11 | 2019-02-12 | Intel Corporation | Parallell processing of a single data buffer |
-
2013
- 2013-10-09 US US14/050,326 patent/US9425953B2/en active Active
-
2014
- 2014-09-25 WO PCT/US2014/057330 patent/WO2015053945A1/en active Application Filing
- 2014-09-25 CN CN201480049656.0A patent/CN105531713B/zh active Active
- 2014-09-25 EP EP14852401.0A patent/EP3055809B1/en active Active
-
2016
- 2016-08-08 US US15/231,595 patent/US9917689B2/en active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100106976A1 (en) * | 2008-10-23 | 2010-04-29 | Samsung Electronics Co., Ltd. | Representation and verification of data for safe computing environments and systems |
WO2013147877A1 (en) * | 2012-03-30 | 2013-10-03 | Intel Corporation | Method and apparatus to process sha-2 secure hashing algorithm |
Non-Patent Citations (2)
Title |
---|
INTEL: "《Multi-Hash A Family of Cryptographic Hash Algorithm Extensions》", 31 July 2012 * |
SHAY GUERON ET AL.: ""Parallelizing message schedules to accelerate the cpmputations of hash hunctions"", 《INTERNATIONAL ASSOCIATION FOR CRYPTOLOGIC RESEARCH》 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113420250A (zh) * | 2021-07-19 | 2021-09-21 | 卢恩妍 | 一种基于物联网的数据控制方式及系统 |
CN114091121A (zh) * | 2022-01-18 | 2022-02-25 | 苏州浪潮智能科技有限公司 | 一种消息摘要存储方法、系统、存储介质及设备 |
CN114091121B (zh) * | 2022-01-18 | 2022-04-26 | 苏州浪潮智能科技有限公司 | 一种消息摘要存储方法、系统、存储介质及设备 |
Also Published As
Publication number | Publication date |
---|---|
EP3055809B1 (en) | 2019-10-23 |
WO2015053945A1 (en) | 2015-04-16 |
US9917689B2 (en) | 2018-03-13 |
US20160352512A1 (en) | 2016-12-01 |
EP3055809A4 (en) | 2017-05-31 |
EP3055809A1 (en) | 2016-08-17 |
US20150098563A1 (en) | 2015-04-09 |
US9425953B2 (en) | 2016-08-23 |
CN105531713B (zh) | 2018-11-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN105531713A (zh) | 从单个数据缓冲器生成多个安全散列 | |
CN107667499B (zh) | 带密钥散列消息认证码处理器、方法、系统和指令 | |
Blass et al. | Toward robust hidden volumes using write-only oblivious RAM | |
US11750403B2 (en) | Robust state synchronization for stateful hash-based signatures | |
US11750402B2 (en) | Message index aware multi-hash accelerator for post quantum cryptography secure hash-based signing and verification | |
KR20190039850A (ko) | 비트-믹서들로부터 안전한 해시 함수를 구성하는 방법 | |
EP3758275A1 (en) | Post quantum public key signature operation for reconfigurable circuit devices | |
US9800407B2 (en) | Methods and apparatuses for prime number generation and storage | |
US10536264B2 (en) | Efficient cryptographically secure control flow integrity protection | |
CN106326751A (zh) | 一种可信道系统及其实现方法 | |
WO2020119037A1 (zh) | 一种身份验证配置方法、装置及计算机可读存储介质 | |
US20230291542A1 (en) | Implementing resilient deterministic encryption | |
CN114154174A (zh) | 后量子签名设施的状态同步 | |
CN114595466A (zh) | 实现对经加密的数据的机会认证 | |
Fei et al. | A secure and efficient file protecting system based on SHA3 and parallel AES | |
US8832450B2 (en) | Methods and apparatus for data hashing based on non-linear operations | |
WO2024098613A1 (zh) | 一种hmac算法处理系统、方法、设备及非易失性可读存储介质 | |
US20220416996A1 (en) | Block Cipher Encryption Pipeline | |
KR20150105405A (ko) | 컴퓨팅 가능하고, 대형이며, 가변적이며 안전한 치환 박스를 위한 방법 및 장치 | |
CN110266500A (zh) | 一种哈希值的安全加固生成方法及系统 | |
JP4212339B2 (ja) | メッセージダイジェスト生成回路およびパディング回路 | |
Atighehchi et al. | An efficient parallel algorithm for skein hash functions | |
WO2023216077A1 (zh) | 一种验证方法、装置和系统 | |
CN116208322A (zh) | 秘钥软硬切换实现的方法、装置、设备和存储介质 | |
US11651086B2 (en) | Method for executing a computer program by means of an electronic apparatus |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |