CN104012032B - 处理sha‑1安全散列算法的方法和设备 - Google Patents

处理sha‑1安全散列算法的方法和设备 Download PDF

Info

Publication number
CN104012032B
CN104012032B CN201180075752.9A CN201180075752A CN104012032B CN 104012032 B CN104012032 B CN 104012032B CN 201180075752 A CN201180075752 A CN 201180075752A CN 104012032 B CN104012032 B CN 104012032B
Authority
CN
China
Prior art keywords
sha
instruction
operand
message
processor
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.)
Active
Application number
CN201180075752.9A
Other languages
English (en)
Other versions
CN104012032A (zh
Inventor
K·S·雅普
G·M·沃尔里齐
J·D·吉尔福德
V·戈帕尔
E·奥兹图科
S·M·格尔雷
W·K·费格哈利
M·G·迪克森
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Intel Corp
Original Assignee
Intel Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Intel Corp filed Critical Intel Corp
Publication of CN104012032A publication Critical patent/CN104012032A/zh
Application granted granted Critical
Publication of CN104012032B publication Critical patent/CN104012032B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/602Providing cryptographic facilities or services
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/30003Arrangements for executing specific machine instructions
    • G06F9/30007Arrangements for executing specific machine instructions to perform operations on data operands
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/06Cryptographic 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/0643Hash functions, e.g. MD5, SHA, HMAC or f9 MAC
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/32Cryptographic 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/3236Cryptographic 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/3239Cryptographic 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L2209/00Additional information or applications relating to cryptographic mechanisms or cryptographic arrangements for secret or secure communication H04L9/00
    • H04L2209/12Details relating to cryptographic hardware or logic circuitry
    • H04L2209/122Hardware reduction or efficient architectures

Abstract

处理器包括接收处理SHA‑1散列算法的第一指令的指令解码器,所述第一指令具有存储SHA‑1状态的第一操作数,存储多个消息的第二操作数,以及指定散列函数的第三操作数;以及,耦合到指令解码器的执行单元,所述执行单元,使用在所述第三操作数中指定的所述散列函数,对在所述第一操作数中指定的所述SHA‑1状态,以及所述第二操作数中指定的所述多个消息,执行多轮所述SHA‑1散列算法。

Description

处理SHA-1安全散列算法的方法和设备
技术领域
本发明的各实施例一般涉及指令处理设备。更具体而言,本发明的各实施例涉及处理SHA-1安全散列算法的指令处理设备。
背景
SHA代表安全散列算法。它包括由国家安全局(National Security Agency:NSA)设计并国家标准与技术协会(NIST)发布的五个散列函数。在所有散列函数中,SHA-1是最流行的一个。SHA-1为具有最大长度264的消息产生160比特消息摘要。消息摘要是消息的固定长度输出。然后,消息摘要被输入到数字签名算法(DSA),该数字签名算法随后将生成消息的签名。对消息摘要进行签名代替对消息进行签名提供了改善的性能,因为消息摘要比消息小得多。消息的接收方将使用相同散列算法来验证该签名。在中转过程中发生的任何改变都将导致不同的消息摘要,如此,签名将不会通过验证。一旦它被验证为真的,接收方就能够解锁该消息。此方法防止未经授权的用户查看不是发往他们的消息。
当计算消息摘要时,SHA-1处理512比特的块。消息摘要的总长度将是512的倍数。图1是示出了SHA-1操作的典型迭代的框图。图2A和2B示出了示出了诸轮SHA-1操作中所分别使用的函数和常量。利用SHA-1散列算法对512比特/64字节的数据块的处理包括执行80轮(重复)的轮式(round)算法。对于每一轮,都要求32比特的消息输入,其中,对于头16轮消息数据输入,直接使用正在被散列的512比特的块,并且通过根据由SHA-1标准所指定的“消息调度”函数组合先前消息输入,来导出17到80轮的消息输入。
具体地,根据SHA-1标准,使用填充的消息,来计算消息摘要。计算使用两个缓冲器,每个缓冲器都包括五个32比特字,以及八十个32比特字的序列。第一5字(word)缓冲器的字被标记为A、B、C、D,以及E。第二5字缓冲器的字被标记为H0、H1、H2、H3,以及H4。80字序列的字被标记为W0,W1,...,W79。还使用单字缓冲器TEMP。为生成消息摘要,按顺序处理标准中所定义的16字块M1,M2,...,Mn。对每一个Mi的处理涉及80个步骤。在处理任何块之前,按如下方式初始化{Hi}:H0=0x67452301;H1=0xEFCDAB89;H2=0x98BADCFE;H3=0x10325476;以及H4=0xC3D2E1F0。
然后,处理M1,M2,...,Mn。为处理Mi,执行下列操作:
a).将Mi划分成16个字W0,W1,...,W15,其中,W0是最左边的字。
b).For t=16到79,令Wt=S1(Wt-3XOR Wt-8XOR Wt-14XOR Wt-16).
c).令A=H0,B=H1,C=H2,D=H3,E=H4.
d).Fort=0到79do
TEMP=S5(A)+ft(B,C,D)+E+Wt+Kt
E=D;D=C;C=S30(B);B=A;A=TEMP;
e).令H0=H0+A,H1=H1+B,H2=H2+C,H3=H3+D,H4=H4+E。
在处理Mn之后,消息摘要是通过5个字H0、H1、H2、H3,以及H4来表示的160比特字符串。
可另选地,根据SHA-1标准,上文假设序列W0,…,W79实现为八十个32比特字的阵列。从执行时间的最小化的观点来看,这是有效率的,因为轻松地计算步骤(b)中的Wt-3,...,Wt-16的地址。如果空间非常宝贵,则替代方案是将{Wt}视为循环队列,这可以使用十六个32比特字W[0],...W[15]来实现。在此情况下,假设MASK=0x0000000F,那么,对Mi的处理如下:
a).将Mi划分成16个字W[0],...,W[15],其中,W[0]是最左边的字。
b).令A=H0,B=H1,C=H2,D=H3,E=H4.
c).For t=0至79do
s=t^MASK;
if(t>=16)W[s]=S1(W[(s+13)^MASK]XOR W[(s+8)
AND MASK]XOR W[(s+2)^MASK]XOR W[s]);
TEMP=S5(A)+f1(B,C,D)+E+W[s]+Kt
E=D;D=C;C=S30(B);B=A;A=TEMP;
d).令H0=H0+A,H1=H1+B,H2=H2+C,H3=H3+D,H4=H4+E。
可以在由联邦信息处理标准出版社出版的安全散列标准中发现涉及SHA-1规范的进一步的详细信息(FIPS PUB180-19954月17日)。
常规软件解决方案使用标准32比特指令和32比特寄存器/存储器。轮式计算需要四个32比特加法,两个32比特旋转,逻辑函数和移动。第17到80轮的每一个消息输入都需要旋转和3个互斥OR(或)(XOR:异或)。对于80轮/消息遍历(pass)中的每一个,利用四个32比特加法,3个旋转,以及多个逻辑函数,甚至对在多个执行单元处理器下,也要求多个周期来处理一轮。缺乏高效方式来执行上面的操作。
附图简述
本发明的各实施例是作为示例说明的,而不仅限于各个附图的图形,在附图中,类似的参考编号表示类似的元件。
图1是示出了SHA-1标准算法的典型过程的框图。
图2A和2B是示出了SHA-1标准算法中所使用的函数和常量的图示。
图3是示出了根据一实施例的处理器的示例的框图。
图4是示出了根据一实施例的执行SHA-1算法的过程的框图。
图5是示出了根据一实施例的执行执行SHA-1一轮操作的方法的流程图。
图6是示出了根据一实施例的执行SHA-1消息调度操作的方法的流程图。
图7是示出了根据另一实施例的执行SHA-1消息调度操作的方法的流程图。
图8A和8B是根据一实施例的表示由处理器接收到的执行SHA-1算法的代码的序列的伪代码。
图9是示出了根据一实施例的数据处理系统的示例的框图。
图10是示出了根据另一实施例的数据处理系统的示例的框图。
具体实施方式
下面将参考下面所讨论的细节来描述本发明的各实施例并各方面,各个附图将示出各实施例。下面的描述和图形只是本发明的说明,而不作为对本发明的限制。描述了很多具体细节,以便全面地理解本发明的各实施例。然而,在某些实例中,没有描述已知的或常规的细节,以便提供对本发明的各实施例的简洁的讨论。
在本说明书中对“一个实施例”或“实施例”的引用意思指和该实施例一起描述的特定特征、结构或特征可以被包括在本发明的至少一个实施例中。在本说明书中的不同位置出现短语“在一个实施例中”不一定都是指同一个实施例。
根据某些实施例,响应于单个指令,使用新指令集体系结构(ISA)来执行上文所描述的多个SHA-1操作,以提高SHA-1计算的效率。性能可以通过缩短执行SHA-1轮式函数所需的时间同时推导第17到80轮的消息输入来优化,以使得执行SHA-1算法的速度主要受轮式计算支配。在一个实施例中,使用具有至少160个比特的寄存器来存储SHA-1状态变量(例如,状态变量A、B、C、D,以及E)和多个消息输入(例如,四个消息输入),以便可以由诸如向量启用处理器之类的处理器响应于单个指令并行地执行多轮(例如,四轮)SHA-1轮式散列操作。另外,还使用具有至少128个比特的寄存器来基于先前消息输入,为下一周期或迭代(例如,下四轮)准备多个消息输入。
图3是示出了根据一个实施例的处理器的示例的框图。参考图3,处理器100可以表示任何类型的指令处理设备。例如,处理器101可以是通用处理器。处理器100可以是各种复杂指令集计算(CISC)处理器、各种精简指令集计算(RISC)处理器、各种超长指令字(VLIW)处理器中的任何一种,其各种混合型,或其他类型的处理器。在一个实施例中,处理器100包括接收和解码指令106的指令解码器101。指令解码器101生成并输出一个或多个微操作、微代码、入口点、微指令、其他指令或其他控制信号,它们反映、或来源于指令106。指令解码器101可以使用各种不同的机制来实现。合适的机制的示例包括,但不仅限于,微代码只读存储器(ROM)、查找表、硬件实现、可编程逻辑阵列(PLA)、等等。
处理器100还包括一个或多个执行单元102,该执行单元102可以包括算术逻辑单元、或能够基于指令106来执行操作的另一种类型的逻辑单元。作为指令解码器101解码指令106的结果,执行单元102可以接收一个或多个微操作、微代码入口点、微指令、其他指令,或其他控制信号,它们反映,或来源于指令106。执行单元102可以作为指示一个或多个源操作数(SRC)108的指令106的结果而可操作,并可操作用于将结果存储到由指令106指出的寄存器组105的一个或多个目的地操作数(DEST)109中。执行单元102可以包括的电路或其他执行逻辑(例如,与硬件和/或固件相结合的软件),其可操作用以执行指令或从指令106导出的其他控制信号并相应地执行操作。执行单元102可以表示诸如逻辑单元、算术逻辑单元(ALU)、算术单元、整数单元等等之类的任何类型的执行单元。
在一个实施例中,指令106可以隐式地指示和/或显式地指定(例如,通过一个或多个专用字段或比特集合)源和目的地操作数。操作数的合适的源和/或目的地的示例包括寄存器、存储器、指令的立即数(immediate),以及其组合。在各实施例中,源和目的地操作数可以是8比特、16比特、32比特,或64比特操作数,但是这不是必需的。
在一个实施例中,源和目的地操作数中的某些和/或全部可以存储在寄存器集和/或存储器105的寄存器中。寄存器集可以是寄存器组(register file)连同潜在可能的诸如状态寄存器、标志寄存器等等之类的其他寄存器的一部分。寄存器可以是可以被用来存储数据的存储位置或设备。寄存器组常常可以在物理上位于带有执行单元的管芯中。寄存器可以从处理器的外部或从编程器的角度可见。例如,指令可以指定存储在寄存器中的操作数。各种不同类型的寄存器都是合适的,只要它们能够存储和提供如此处所描述的数据。寄存器可以被重命名,或者可以不被重命名。合适的寄存器的示例包括但不仅限于专用物理寄存器、使用寄存器重命名的动态地分配的物理寄存器、专用和动态地分配的物理寄存器的组合,等等。可另选地,源和目的地操作数中的一个或多个可以存储在存储位置,而不是寄存器中,诸如,例如,系统存储器中的位置。
根据一个实施例,执行单元102包括一个或多个SHA-1单元106,用于响应于由指令解码器101接收到的并提供的第一指令,使用诸如SHA-1状态、消息输入,以及在一个或多个寄存器104(例如,具有至少160个比特的寄存器)中指定的散列函数之类的数据110,来执行多轮SHA-1轮式操作。响应于作为单指令多数据(SIMD)指令的单个指令,执行多轮SHA-1轮式操作。在一个实施例中,第一指令包括三个操作数。第一操作数表示作为多个SHA-1轮式操作的结果存储当前SHA-1状态和下一SHA-1状态的源/目的地寄存器。第二操作数表示存储用于轮式操作的多个消息输入的寄存器/存储器。第三操作数表示用于轮式操作的诸如如图2A所示的散列函数中的一个之类的散列函数。在执行多个SHA-1轮式操作之后,SHA-1状态被更新并存储回由第一操作数所指定的寄存器。在一个实施例中,响应于单个SIMD指令,执行至少四轮SHA-1轮式操作,其中所涉及的寄存器具有用于存储SHA-1状态变量和消息输入的至少160个比特。
根据另一实施例,响应于第二指令,SHA-1单元106被配置成执行SHA-1消息调度操作,以为下一周期(例如,下一SIMD指令周期中的多个SHA-1轮式操作)产生多个消息输入。在一个实施例中,为下一SIMD周期准备消息输入可能需要两个指令。为支持至少四轮SHA-1轮式操作,第一指令包括存储至少12个先前消息输入的三个操作数,并且在执行第一指令之后,生成中间结果,并且返回在一个操作数中指定的寄存器。第二指令获取从第一指令生成的中间结果作为一个操作数中的输入。第二指令的另一操作数指定至少3个先前消息输入。最终结果表示下一SIMD周期的4个消息输入。在一个实施例中,消息调度操作中涉及的寄存器具有至少128个比特。
为了说明,假设四轮SHA-1轮式操作是在单个SIMD周期中执行的。可以理解,多一些或少一些轮的SHA-1轮式操作也可以在单个SIMD周期内执行,只要有诸如带有足够的比特的寄存器之类的所需的资源可用。根据某些实施例,本发明的各实施例包括新指令和数据路径,该数据路径使用YMM SIMD寄存器(该寄存器具有256比特,并与来自位于加利福尼亚州圣克拉拉的Intel公司的AVX处理器兼容)作为SHA-1状态的160比特的源/目的地操作数。另一YMM寄存器或存储器位置被用作第二源操作数来存储消息输入,加接下来四轮SHA-1的常数K值。使用立即操作数来指定轮1-20、21-40、41-60以及61-80所需的不同的组合逻辑函数“F”,如图2A所示。
根据一实施例,SHA-1轮式指令,此处称为SHA1RNDS4(SHA-14轮),可以按如下方式定义:
SHA1RNDS4 YMM1,YMM2/m128,immd
SHA1RNDS4指令需要3个周期来从YMM1寄存器读取SHA-1状态,以及从YMM2/m128读取Kmessage(K消息)输入(例如,消息输入加常数K,其中,K如图2B所示的那样定义),利用在立即操作数“imp”中指定的F函数执行4轮SHA-1,如图4所示。利用四轮SHA-1的三周期等待时间,吞吐率大约是1和1/3轮每周期,或60周期每512比特块。SHA1RNDS4指令每3个周期使用SIMD端口一次,从而提供SIMD指令槽(slot)以将常数K值添加到块输入数据,并执行第17到80轮的消息调度,包括与合适的K值的相加,而不会减慢SHA-1轮式操作。
在一个实施例中,SHA1RNDS4指令利用四轮SHA-1迭代(其中用于所有四轮的F函数由立即操作数指定)之后的结果所得的新状态来更新目的地YMM1寄存器。YMM2是带有四个新消息输入和预先添加的轮常量(此处称为KW0到KW3)的源寄存器。在一个实施例中,第0轮输入KW0处于YMM2[31:00];第1轮输入KW1处于YMM2[63:32];轮2输入KW2处于YMM2[95:64];而第3轮输入KW3处于YMM2[127:96]。在一个实施例中,SHA-1状态变量A、B、C、D,以及E可以按如下方式存储在YMM寄存器中:
A=YMM[255:224]
B=YMM[223:192]
C=YMM[191:160]
D=YMM[159:128]
E=YMM[127:96]
根据一个实施例给定当前轮“i”,第17到80轮的消息调度函数可以被定义为如下:
w[i]=(w[i-3]XOR w[i-8]XOR w[i-4]XOR w[i-16])向左旋转1
可以使用SIMD指令来计算四个消息输入:w[i+3]、w[i+2]、w[i+1],以及w[i]。对于w[32]到w[80],假若是SIMD循环指令,则可以在五指令预算中计算消息输入。消息输入16到31的计算可能不会跟上SHA-1轮式指令SHA1RNDS4,甚至给定了SIMD旋转。
根据一实施例,可以在不使用所有五个SIMD指令槽的情况下,通过使用下列两个指令实现w[i]函数,来达成SHA-1的消息调度,而:
MSG1SHA1 XMM0,XMM1,XMM2
MSG2SHA1 XMM0,XMM1
根据一实施例,XMM寄存器具有至少128个比特,其可以与来自Intel公司的AVX兼容的处理器的XMM寄存器兼容。
消息调度指令在对SHA-1数据块的处理中确保最佳性能。给定上文所描述的由SHA1RNDS4指令计算出的w[i],在一个实施例中,MSG1SHA1导致处理器执行下列操作:
Word0=w[i-8]XOR w[i-14]XOR w[i-16]
Word1=w[i-7]XOR w[i-13]XOR w[i-15]
Word1=w[i-6]XOR w[i-12]XOR w[i-14]
Word1=w[i-5]XOR w[i-11]XOR w[i-13]
通过XMM0寄存器,返回MSG1SHA1指令的中间结果。
根据一实施例,MSG1SHA1导致处理器作为SHA-1消息调度操作的第一部分执行,对于下面的SHA-11消息输入的中间计算。第16到79轮的SHA-1调度消息输入可以被定义为:
w(i)=(w(i-3)XOR w(i-8)XOR w(i-14)XOR w(i-16))<<1
msg1=w(i-8)XOR w(i-14)XOR w(i-16)
其中,操作“<<”表示逻辑向左旋转操作。
在一个实施例中,XMM2寄存器按如下方式存储消息w(i-13)、w(i-14)、w(i-15),以及w(i-16):
XMM2[127:96]=w(i-13)
XMM2[95:64]=w(i-14)
XMM2[63:32]=w(i-15)
XMM2[31:00]=w(i-16)
在一个实施例中,XMM1寄存器按如下方式存储消息w(i-9)、w(i-10)、w(i-11),以及w(i-12):
XMM1[127:96]=w(i-9)
XMM1[95:64]=w(i-10)
XMM1[63:32]=w(i-11)
XMM1[31:00]=w(i-12)
在一个实施例中,XMM0寄存器按如下方式存储消息w(i-5)、w(i-6)、w(i-7),以及w(i-8):
XMM0[127:96]=w(i-5)
XMM0[95:64]=w(i-6)
XMM0[63:32]=w(i-7)
XMM0[31:00]=w(i-8)
在一个实施例中,指令MSG1SHA1的输出存储在XMM0中,如:w(i-5)XOR w(i-11)XORw(i-13),w(i-6)XOR w(i-12)XOR w(i-14),w(i-7)XOR w(i-13)XOR w(i-15),w(i-8)XOR w(i-14)XOR w(i-16)。在特定实施例中,结果可以存储在XMM0寄存器中,如下所示:
XMM0[127:96]=w(i-5)XOR w(i-11)XOR w(i-13);w(i+3)的Msg1
XMM0[95:64]=w(i-6)XOR w(i-12)XOR w(i-14);w(i+2)的Msg1
XMM0[63:32]=w(i-7)XOR w(i-13)XOR w(i-15);w(i+1)的Msg1
XMM0[31:00]=w(i-8)XOR w(i-14)XOR w(i-16);w(i)的Msg1
基于由MSG1SHA1指令所生成的中间结果,根据一个实施例,MSG2SHA1指令导致处理器执行下列操作:
Word0=w[i]=(w[i-3]XOR MSG1SHA1的Word0)向左旋转1
Word1=w[i+1]=(w[i-2]XOR MSG1SHA1的Word1)向左旋转1
Word2=w[i+2]=(w[i-1]XOR MSG1SHA1的Word2)向左旋转1
Word3=w[i+3]=(w[i]XOR此MSG2SHA1的Word0结果)向左旋转1
其中,Word3的w[i]输入是Word0的结果。由于Word3需要来自Word0的输出,因此,对Word3的计算可以带有延迟地执行,直到Word0计算完成。例如,Word0和Word1可以在第一处理器周期计算,而Word2和Word3可以在第一处理器周期之后的第二处理器周期计算,以确保当正在计算Word3时Word0可用。
根据一实施例,指令MSG2SHA1导致处理器产生接下来四个输入消息,这些消息组合了包含消息w(i-1),w(i-2),w(i-3),和w(i-4)的XMM寄存器与带有w(i-5)到w(i-16)的Msg1结果的XMM寄存器。在一个实施例中,XMM1寄存器按如下方式存储消息w(i-1)、w(i-2)、w(i-3),以及w(i-4):
XMM1[127:96]=w(i-1)
XMM1[95:64]=w(i-2)
XMM1[63:32]=w(i-3)
XMM1[31:00]=w(i-4)
在一个实施例中,XMM0寄存器按如下方式存储由指令MSG1SHA1所生成的中间结果:
XMM0[127:96]=w(i-5)XOR w(i-11)XOR w(i-13);w(i+3)的Msg1
XMM0[95:64]=w(i-6)XOR w(i-12)XOR w(i-14);w(i+2)的Msg1
XMM0[63:32]=w(i-7)XOR w(i-13)XOR w(i-15);w(i+1)的Msg1
XMM0[31:00]=w(i-8)XOR w(i-14)XOR w(i-16);w(i)的Msg1
在一个实施例中,指令MSG2SHA1的输出按如下方式存储在XMM0中:
XMM0[127:96]=w(i+3)
XMM0[95:64]=w(i+2)
XMM0[63:32]=w(i+1)
XMM0[31:00]=w(i)
图8A和8B是根据一个实施例的表示由处理器接收到的用于执行SHA-1算法的代码序列的伪代码。
图5是示出了根据一个实施例的执行SHA-1轮式操作的方法的流程图。例如,方法500可以由SHA-1单元106响应于SHA1RNDS4指令来执行。参考图5,在框501,处理器接收诸如SHA1RNDS4指令之类的具有第一操作数(例如,YMM1)、第二操作数(例如,YMM2/m128),以及第三操作数(例如,immd)的指令。在框502,响应于指令,从第一操作数中提取SHA-1状态(例如,SHA-1状态A、B、C、D,和E),从第二操作数中检索多个消息输入(例如,KW)。在框503,使用在第三操作数中指定的组合逻辑函数,对SHA-1状态和消息输入执行多轮SHA-1轮式操作。在框504,作为多轮SHA-1操作的结果,更新SHA-1状态。
图6是示出了根据一个实施例的执行SHA-1消息调度操作的方法的流程图。例如,方法600可以由SHA-1单元106响应于MSG1SHA1指令来执行。参考图6,在框601,处理器接收诸如MSG1SHA1指令之类的具有第一操作数(例如,XMM0)、第二操作数(例如,XMM1),以及第三操作数(例如,XMM2)的指令。在框602,响应于指令,从第一、第二,以及第三操作数中提取多个消息输入。在框603,执行SHA-1消息调度操作的第一部分。在框604,将SHA-1消息调度操作的第一部分的中间结果存储在与第一操作数(例如,XMM0)相关联的寄存器中。
图7是示出了根据另一实施例的执行SHA-1消息调度操作的方法的流程图。例如,方法700可以由SHA-1单元106响应于MSG2SHA1指令来执行。参考图7,在框701,处理器接收诸如MSG2SHA1指令之类的具有第一操作数(例如,XMM0)和第二操作数(例如,XMM1)的指令。在框702,响应于指令,从第一操作数中提取中间结果,并且从第二操作数中提取多个消息输入。中间结果表示例如响应于MSG1SHA1指令的SHA-1消息调度操作的第一部分。在框703,基于中间结果和消息输入,执行SHA-1消息调度操作的第二部分。在框704,SHA-1消息调度操作的最终结果存储在与第一操作数(例如,XMM0)相关联的寄存器中。
图9是示出了根据本发明的一个实施例的数据处理系统的示例的框图。系统900可以表示上文所描述的系统中的任何一个。例如,处理器901可以表示图3的处理器100。系统900可以表示台式机、膝上型计算机、平板电脑、服务器、移动电话(例如,智能电话)、媒体播放器、个人数字助理(PDA)、个人通信器、游戏设备、网络路由器或中枢、无线接入点或中继器、机顶盒,或其组合。请注意,尽管图9示出了数据处理系统的各种组件,但是,并不旨在表示互连这些组件的任何特定体系结构或方式;因为这样的细节不是与本发明的各实施例有密切关系的。还可以理解,也可以与本发明的各实施例一起使用具有少一些的组件或者也许多一些的组件的网络计算机、手持式计算机、移动电话及其他数据处理系统。
参考图9,在一个实施例中,系统900包括处理器901,以及通过总线或互连将各种组件(包括存储器905以及设备903-904)耦合到处理器901的芯片组902。处理器901可以表示带有单一处理器核或多个处理器核909的单一处理器或多个处理器。处理器901可以表示一个或多个通用处理器,诸如微处理器、中央处理单元(CPU)等等。更具体而言,处理器901可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、或实现其他指令集的处理器、或实现指令集的组合的处理器。处理器901还可以是一个或多个专用的处理器,诸如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器、图形处理器、网络处理器、通信处理器、密码处理器、协处理器、嵌入式处理器,或能够处理指令的任何其他类型的逻辑。例如,处理器901可以是位于加利福尼亚州圣克拉拉的Intel公司所提供的Dual-Core、CoreTM2Duo和Quad、XeonTM、ItaniumTM、XScaleTM、CoreTM i7、CoreTM i5、或StrongARMTM微处理器。处理器901被配置成执行用于执行此处所讨论的操作和步骤的指令。
处理器901可以包括可以接收和解码各种指令的指令解码器。解码器可以生成并输出一个或多个微操作、微代码入口点、微指令、其他指令或其他控制信号,它们反映、或来源于原始输入指令。解码器可以使用各种不同的机制来实现。合适的机制的示例包括,但不仅限于,微代码只读存储器(ROM)、查找表、硬件实现、可编程逻辑阵列(PLA)、等等。
解码器可以不是处理器901的必需的组件。在一个或多个其他实施例中,处理器901可以相反具有指令仿真器、指令转换器、指令变形器、指令解释器,或其他指令转换逻辑。各种不同类型的指令仿真器、指令变形器、指令转换器等等是已知的。指令转换逻辑可以接收比特范围隔离指令,模仿、转换、变形、解释,或以别的方式转换比特范围隔离指令,并输出对应于原始比特范围隔离指令的一个或多个指令或控制信号。指令转换逻辑可以以软件、硬件、固件,或其组合来实现。在某些情况下,指令转换逻辑中的某些或全部可以位于管芯外,与指令处理设备其余部分一起,诸如单独的管芯或在系统存储器中。在某些情况下,指令处理设备可以具有解码器和指令转换逻辑。
处理器901和/或核909还可以包括与解码器的输出耦合,或以别的方式与解码器的输出进行通信的一个或多个执行单元。术语“耦合”可以表示,两个或更多元件直接电接触或连接。然而,“耦合”还可以表示,两个或更多元件不彼此直接连接,但是,仍合作或相互进行交互或通信(例如,通过中间组件)。作为一个示例,解码器和执行单元可以通过中间可选缓冲器或已知可能耦合在解码器和执行单元之间的其他组件彼此耦合。处理器901和/或核909还可以包括多种不同类型的执行单元,诸如,例如,算术单元、算术逻辑单元(ALU)、整数单元等等。
处理器901还可以包括一个或多个寄存器文件,包括,但不仅限于,整数寄存器、浮点寄存器、向量或扩充寄存器、状态寄存器,以及指令指针寄存器等等。此处使用术语“寄存器”来指被用作标识操作数的宏指令的一部分的板上的处理器存储器位置。换言之,此处引用的寄存器是从处理器外部可见的那些寄存器(从编程器的角度来看)。然而,寄存器在含义上不应该限于特定类型的电路。相反,寄存器只需能够存储和提供数据并执行此处所描述的功能。此处所描述的寄存器可以通过处理器内的电路使用任意数量的不同的技术来实现,诸如专用物理寄存器、使用寄存器重命名的动态地分配的物理寄存器、专用和动态地分配的物理寄存器的组合等等。在一个实施例中,整数寄存器存储32比特或64比特整型数据。寄存器文件可以包含用于封包的数据的扩展的多媒体SIMD寄存器(例如,XMM)。这样的寄存器可以包括涉及SSE2、SSE3、SSE4、GSSE或以外的(一般地称为“SSEx”)技术的128比特宽的XMM寄存器和256比特宽的寄存器(可以包括低阶比特的XMM寄存器)来保存这样的打包数据操作数。
处理器901和/或核909还可以可任选地包括一个或多个其他已知的组件。例如,处理器901可以可任选地包括指令获取逻辑、预先解码逻辑、调度逻辑、重新排序缓冲器、分叉预测逻辑、报废逻辑、寄存器重命名逻辑等等,或其某些组合。这些组件可以按常规方式实现,或基于本发明利用对所属领域的技术人员显而易见的是小的修改。为了理解此处的实施例,不需要这些组件的进一步的描述,虽然进一步的描述轻松地获得,在需要时,在公开文献中。有已知的这样的组件的很多不同的组合和配置。范围不仅限于任何已知的这样的组合或配置。实施例可以有或者没有这样的额外的组件地实现。
芯片组902可以包括存储器控制中枢(MCH)910和输入输出控制中枢(ICH)911。MCH910可以包括与存储器905进行通信的存储器控制器(未示出)。MCH910还可以包括与图形设备912进行通信的图形接口。在本发明的一个实施例中,图形接口可以通过加速图形端口(AGP)、外围组件互连(PCI)快速(Express)总线,或其他类型的互连,与图形设备912进行通信。ICH911可以提供到诸如设备903-904之类的I/O设备的接口。设备903-904中的任何一个都可以是存储设备(例如,硬盘驱动器、闪存设备)、通用串行总线(USB)端口、键盘、鼠标、并行端口、串行端口、打印机、网络接口(有线或无线)、无线收发器(例如,WiFi、蓝牙,或蜂窝收发器)、媒体设备(例如,音频/视频编解码器或控制器)、总线桥接器(例如,PCI-PCI桥接器),或其组合。
MCH910有时被称为北桥,而ICH911有时被称为南桥,虽然有些人在它们之间作出技术的区别。如此处所使用的,术语“MCH”、“ICH”、“北桥”、“南桥”从广义上来解释以涵盖其功能包括向处理器传递中断信号的各种芯片。在某些实施例中,MCH910可以与处理器901集成。在这样的配置中,芯片组902作为执行MCH910和ICH911的某些功能的接口芯片来操作,如图10所示。此外,图形加速器912还可以集成在MCH910或处理器901内。
存储器905可以存储包括由处理器901或任何其他设备执行的指令序列的数据。例如,各种操作系统、设备驱动程序、固件(例如,输入输出基本系统或BIOS),和/或应用程序的可执行代码913和/或数据914可以加载到存储器905中,并由处理器901执行。操作系统可以是任何类型的操作系统,诸如,例如,来自操作系统、来自Apple的来自或其他实时操作系统。在一个实施例中,存储器905可以包括一个或多个易失性存储器设备,诸如随机存取存储器(RAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、静态RAM(同步RAM),或其他类型的存储设备。还可以使用非易失性存储器,诸如硬盘或闪存存储设备。前端总线(FSB)906可以是多点分支或点对点互连。术语“FSB”旨在覆盖到处理器901的各种类型的互连。芯片组902可以通过点对点接口来与诸如设备903-904之类的其他设备进行通信。总线906可以实现为各种总线或互连,诸如,例如,快速路径互连(QPI)、超传输互连,或与诸如AMBA高性能总线(AHB)之类的高级微控制器总线体系结构(AMBA)兼容的总线。
缓存908可以是任何类型的处理器缓存,诸如级别1(L1)缓存、L2缓存、L3缓存、L4缓存、最后一个级别缓存(LLC),或其组合。缓存908可以被与处理器901的处理器核909共享。缓存908可以嵌入在处理器901内和/或在处理器901外部。缓存908可以被在核909之间共享。可另选地,核909中的至少一个还包括嵌入在其中的其自己的本地缓存。核909中的至少一个可以使用本地缓存和与核909中的另一个共享的缓存两者。处理器901还可以包括直接缓存访问(DCA)逻辑,以允许诸如设备903-904之类的其他设备直接访问缓存908。处理器901和/或芯片组902还可以包括中断控制器,诸如高级可编程中断控制器(APIC),以处理诸如消息中断之类的中断。
前面的详细描述的某些部分以算法、和/或对计算机存储器内的数据位的操作的符号表示法的形式存在。这些算法描述和表示法是那些精通数据处理技术的人所使用的最有效地将他们的工作的实质传递到精通技术的其他人的方式。算法,这里一般是指导致所希望的结果的操作的独立的序列。操作是那些需要对物理量进行物理操纵的操作。
然而,应该记住,所有这些和/或类似的术语将与适当的物理量关联,仅仅是应用于这些量的方便的标记。除非特别声明,从上文的讨论中显而易见地看出,应该理解,在整个本说明书中,利用诸如在下面的权利要求中所阐述的术语的讨论,引用了计算机系统,和/或类似的电子计算设备的动作和/或进程,它们操纵和/或转换表示为计算机系统的寄存器和存储器内的物理(电子)量的数据,将这些数据转换为类似地表示为计算机系统存储器或寄存器和/或其他这样的信息存储器、传输和/或显示设备内的物理量的其他数据。
图形所示出的技术可以使用在一个或多个电子设备上存储和执行的代码和数据来实现。这样的电子设备使用计算机可读取的介质,诸如非瞬时的计算机可读的存储介质(例如,磁盘;光盘;随机存取存储器;只读存储器;闪存设备;相变存储器)和瞬时的计算机可读的通信介质(例如,电气,光学,声音或其他形式的传播的信号——诸如载波,红外信号、数字信号等等),存储和传递(内部以及与其他计算设备,通过网络)代码和数据。
前面的图形中所描绘的进程或方法可以通过包括硬件(例如,电路、专用逻辑等等)、固件、软件(例如,在非瞬时的计算机可读介质上实现),或两者的组合的处理逻辑来执行。虽然上文是利用某些顺序操作来描述进程或方法的,但是,应该理解,所描述的某些操作可以以不同的顺序来执行。此外,某些操作也可以并行地而并非按顺序执行。
在前述的说明书中,参考其特定示例性实施例描述了本发明的各实施例。显然,在不偏离如下面的权利要求所阐述的本发明的更广泛的精神和范围的情况下,可以作出各种修改。相应地,说明书和附图应被视为说明性的,而不是限制性的。

Claims (20)

1.一种处理器,包括:
用于接收处理SHA-1散列算法的第一指令的指令解码器,所述第一指令具有用于存储SHA-1状态的第一操作数,用于存储多个消息的第二操作数,以及指定散列函数的第三操作数;以及
耦合到所述指令解码器的执行单元,所述执行单元响应于所述第一指令,使用在所述第三操作数中指定的所述散列函数,对在所述第一操作数中指定的所述SHA-1状态以及在所述第二操作数中指定的所述多个消息,执行多轮所述SHA-1散列算法。
2.如权利要求1所述的处理器,其特征在于,所述第一操作数指定具有存储SHA-1状态变量的数据的至少160比特的第一寄存器。
3.如权利要求2所述的处理器,其特征在于,所述第二操作数指定具有存储至少四个消息的至少128比特的第二寄存器或存储器位置。
4.如权利要求3所述的处理器,其特征在于,响应于作为单指令多数据(SIMD)指令的所述第一指令,执行至少四轮所述SHA-1算法。
5.如权利要求1所述的处理器,其特征在于,所述指令解码器接收第二指令,并且其中响应于所述第二指令,所述执行单元被配置成基于由所述第二指令所指定的多个第一先前消息,来执行消息调度操作的第一部分。
6.如权利要求5所述的处理器,其特征在于,所述指令解码器接收第三指令,并且其中响应于所述第三指令,所述执行单元被配置成对第二先前消息以及在所述第三指令中指定的中间结果,执行所述消息调度操作的第二部分,从而为要在接下来的多轮SHA-1算法期间执行的所述SHA-1算法的多轮操作生成接下来的输入消息。
7.如权利要求6所述的处理器,其特征在于,对于SHA-1轮式操作的当前轮i,所述第一先前消息包括消息w(i-5)到w(i-16),其中所述第二先前消息包括消息w(i-1)到w(i-4),并且其中所述接下来的输入消息包括w(i),w(i+1),w(i+2),以及w(i+3)。
8.如权利要求6所述的处理器,其特征在于,所述中间结果包括w(i-5)XORw(i-11)XORw(i-13)、w(i-6)XORw(i-12)XORw(i-14)、w(i-7)XORw(i-13)XORw(i-15),以及w(i-8)XORw(i-14)XORw(i-16)的结果。
9.一种用于执行指令的方法,包括:
在处理器的指令解码器处,接收用于处理SHA-1散列算法的第一指令,所述第一指令具有用于存储SHA-1状态的第一操作数,用于存储多个消息的第二操作数,以及用于指定散列函数的第三操作数;以及
响应于所述第一指令,由所述处理器的执行单元通过使用在所述第三操作数中指定的所述散列函数,对在所述第一操作数中指定的所述SHA-1状态以及所述第二操作数中指定的所述多个消息,执行多轮所述SHA-1散列算法。
10.如权利要求9所述的方法,其特征在于,所述第一操作数指定具有存储SHA-1状态变量的数据的至少960比特的第一寄存器。
11.如权利要求10所述的方法,其特征在于,所述第二操作数指定具有存储至少四个消息的至少128比特的第二寄存器或存储器位置。
12.如权利要求11所述的方法,其特征在于,响应于作为单指令多数据(SIMD)指令的所述第一指令,以向量方式来执行至少四轮所述SHA-1算法。
13.如权利要求9所述的方法,其特征在于,所述指令解码器接收第二指令,并且其中响应于所述第二指令,所述执行单元被配置成基于由所述第二指令所指定的多个第一先前消息,来执行消息调度操作的第一部分。
14.如权利要求13所述的方法,其特征在于,所述指令解码器接收第三指令,并且其中响应于所述第三指令,所述执行单元被配置成对第二先前消息以及在所述第三指令中指定的中间结果,执行所述消息调度操作的第二部分,从而为要在接下来的多轮SHA-1算法期间执行的所述SHA-1算法的多轮操作,生成接下来的输入消息。
15.如权利要求14所述的方法,其特征在于,对于SHA-1轮式操作的当前轮i,所述第一先前消息包括消息w(i-5)到w(i-16),其中所述第二先前消息包括消息w(i-1)到w(i-4),并且其中所述接下来的输入消息包括w(i),w(i+1),w(i+2),以及w(i+3)。
16.如权利要求14所述的方法,其特征在于,所述中间结果包括w(i-5)XORw(i-11)XORw(i-13)、w(i-6)XORw(i-12)XORw(i-14)、w(i-7)XORw(i-13)XORw(i-15),以及w(i-8)XORw(i-14)XORw(i-16)的结果。
17.一种数据处理系统,包括:
互连;
耦合到所述互连的处理器,其用于接收用于处理SHA-1散列算法的第一指令,所述第一指令具有用于存储SHA-1状态的第一操作数,用于存储多个消息的第二操作数,以及用于指定散列函数的第三操作数,所述处理器用于使用在所述第三操作数中指定的所述散列函数,对在所述第一操作数中指定的所述SHA-1状态以及在所述第二操作数中指定的所述多个消息,执行多轮所述SHA-1散列算法;以及
耦合到所述互连的动态随机存取存储器(DRAM)。
18.如权利要求17所述的系统,其特征在于,所述第一操作数指定具有存储SHA-1状态变量的数据的至少160比特的第一寄存器。
19.如权利要求18所述的系统,其特征在于,所述第二操作数指定具有存储至少四个消息的至少128比特的第二寄存器或存储器位置。
20.如权利要求19所述的系统,其特征在于,响应于作为单指令多数据(SIMD)指令的所述第一指令,以向量方式来执行至少四轮所述SHA-1算法。
CN201180075752.9A 2011-12-22 2011-12-22 处理sha‑1安全散列算法的方法和设备 Active CN104012032B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/066813 WO2013095503A1 (en) 2011-12-22 2011-12-22 Method and apparatus to process sha-1 secure hashing algorithm

Publications (2)

Publication Number Publication Date
CN104012032A CN104012032A (zh) 2014-08-27
CN104012032B true CN104012032B (zh) 2017-04-19

Family

ID=48669144

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180075752.9A Active CN104012032B (zh) 2011-12-22 2011-12-22 处理sha‑1安全散列算法的方法和设备

Country Status (4)

Country Link
US (1) US8954754B2 (zh)
CN (1) CN104012032B (zh)
TW (1) TWI488475B (zh)
WO (1) WO2013095503A1 (zh)

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013095521A1 (en) 2011-12-22 2013-06-27 Intel Corporation Instructions processors, methods, and systems to process blake secure hashing algorithm
US8953785B2 (en) * 2012-09-28 2015-02-10 Intel Corporation Instruction set for SKEIN256 SHA3 algorithm on a 128-bit processor
US8874933B2 (en) * 2012-09-28 2014-10-28 Intel Corporation Instruction set for SHA1 round processing on 128-bit data paths
US8924741B2 (en) 2012-12-29 2014-12-30 Intel Corporation Instruction and logic to provide SIMD secure hashing round slice functionality
US10038550B2 (en) 2013-08-08 2018-07-31 Intel Corporation Instruction and logic to provide a secure cipher hash round functionality
US10503510B2 (en) * 2013-12-27 2019-12-10 Intel Corporation SM3 hash function message expansion processors, methods, systems, and instructions
US9912481B2 (en) * 2014-03-27 2018-03-06 Intel Corporation Method and apparatus for efficiently executing hash operations
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
KR102307105B1 (ko) * 2015-08-19 2021-09-29 인텔 코포레이션 Simd sm3 암호화 해싱 기능을 제공하기 위한 명령어 및 로직
CN106452769B (zh) * 2016-09-13 2019-11-29 杭州华为数字技术有限公司 一种数据处理方法、数据处理装置以及处理器
CN114648319A (zh) * 2020-12-18 2022-06-21 深圳比特微电子科技有限公司 执行哈希算法的电路、计算芯片、加密货币矿机和方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101872338A (zh) * 2010-06-04 2010-10-27 杭州电子科技大学 一种改进的sha-1哈希算法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7142669B2 (en) 2000-11-29 2006-11-28 Freescale Semiconductor, Inc. Circuit for generating hash values
US20030002666A1 (en) * 2001-06-13 2003-01-02 Takahashi Richard J. Method and apparatus for creating a message digest using a parallel, one-way hash algorithm
TWI238636B (en) * 2003-06-19 2005-08-21 Yen-Fu Liu Operation device and method of fast secure hash algorithm
KR20050065976A (ko) * 2003-12-26 2005-06-30 한국전자통신연구원 Sha-1 해쉬값 연산 장치 및 방법
US7546461B2 (en) * 2005-06-28 2009-06-09 Microsoft Corporation Strengthening secure hash functions
US7882358B2 (en) * 2007-01-15 2011-02-01 Microsoft Corporation Reversible hashing for E-signature verification
US8510569B2 (en) * 2009-12-16 2013-08-13 Intel Corporation Providing integrity verification and attestation in a hidden execution environment
US8788766B2 (en) * 2010-02-18 2014-07-22 Oracle America, Inc. Software-accessible hardware support for determining set membership
US8855302B2 (en) * 2011-06-21 2014-10-07 Intel Corporation Apparatus and method for Skein hashing
US9632782B2 (en) * 2012-03-30 2017-04-25 Intel Corporation Method and apparatus to process SHA-2 secure hashing algorithm
US8838997B2 (en) * 2012-09-28 2014-09-16 Intel Corporation Instruction set for message scheduling of SHA256 algorithm
US8874933B2 (en) * 2012-09-28 2014-10-28 Intel Corporation Instruction set for SHA1 round processing on 128-bit data paths

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101872338A (zh) * 2010-06-04 2010-10-27 杭州电子科技大学 一种改进的sha-1哈希算法

Also Published As

Publication number Publication date
CN104012032A (zh) 2014-08-27
TWI488475B (zh) 2015-06-11
US8954754B2 (en) 2015-02-10
WO2013095503A1 (en) 2013-06-27
US20130283064A1 (en) 2013-10-24
TW201332329A (zh) 2013-08-01

Similar Documents

Publication Publication Date Title
CN104012032B (zh) 处理sha‑1安全散列算法的方法和设备
JP6711483B2 (ja) 複数の128ビットデータパスにおけるsha1ラウンド処理のための命令セット
CN111464316B (zh) 用于处理sha-2安全散列算法的方法和设备
CN106575215B (zh) 处理指令的系统、设备、方法、处理器、介质和电子设备
US8838997B2 (en) Instruction set for message scheduling of SHA256 algorithm
US10725779B2 (en) Method and apparatus to process SHA-2 secure hashing algorithm

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