CN103946796A - 处理keccak安全散列算法的方法和设备 - Google Patents

处理keccak安全散列算法的方法和设备 Download PDF

Info

Publication number
CN103946796A
CN103946796A CN201180074906.2A CN201180074906A CN103946796A CN 103946796 A CN103946796 A CN 103946796A CN 201180074906 A CN201180074906 A CN 201180074906A CN 103946796 A CN103946796 A CN 103946796A
Authority
CN
China
Prior art keywords
keccak
cube
sub
instruction
algorithm
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
Application number
CN201180074906.2A
Other languages
English (en)
Other versions
CN103946796B (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 CN103946796A publication Critical patent/CN103946796A/zh
Application granted granted Critical
Publication of CN103946796B publication Critical patent/CN103946796B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • 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/30145Instruction analysis, e.g. decoding, instruction word fields
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Security & Cryptography (AREA)
  • Power Engineering (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Advance Control (AREA)
  • Executing Machine-Instructions (AREA)
  • Measuring Or Testing Involving Enzymes Or Micro-Organisms (AREA)
  • Peptides Or Proteins (AREA)

Abstract

一种处理器包括多个寄存器,指令解码器,所述指令解码器接收指令以处理表示KECCAK散列算法的KECCAK状态的数据的KECCAK状态立方体,将所述KECCAK状态立方体分区为多个子立方体,并将所述子立方体分别存储到所述多个寄存器中,以及执行单元,所述执行单元耦合到所述指令解码器,以便以矢量方式对分别存储在所述多个寄存器中的所述多个子立方体执行所述KECCAK散列算法。

Description

处理KECCAK安全散列算法的方法和设备
技术领域
本发明的各实施例一般涉及指令处理设备。更具体而言,本发明的各实施例涉及处理KECCAK安全散列算法的指令处理设备。
背景
KECCAK是一种新安全散列函数,该散列函数在利用5x5边缘面和2L的深度排列的比特的阵列中维持状态,其中,L=0到6。KECCAK正在由国家标准与技术协会(NIST)考虑作为用于选择作为SHA-3标准的算法。由于所需的简单逻辑函数和可以使用的并行性,KECCAK在硬件实现中的性能超出竞争作为标准的其他安全散列算法的性能。用于当前软件实现的KECCAK的性能受大量的需要单个整数指令的逻辑运算的约束。
AKECCAK状态可以被视为带有被称为“切片”的5x5个元素边和w个比特的深度(z方向)的元素(比特)的三维阵列,其中,深度是2的幂,即,w=2l,l=0到6,如图1A所示。KECCAK使用“海绵”结构,其中,r比特被输入到KECCAK状态,与状态的“开头”r比特进行XOR,后面跟着KECCAK-f状态更新函数。KECCAK-1600(l=64)是提供用于消息认证的最高容量的目标函数。将状态的通道,即,z轴方向的一维子阵列映射到64比特处理器字,导致对于阶跃映射的简单并且有效率的软件实现。对于l=6,KECCAK-1600(5x5x64)是包括nr轮五个步骤/置换的状态更新函数,θ、ρ、π、χ、ι,如图1B所示。
执行θ函数,如图1C所示,ρ函数将通道/寄存器旋转指定的偏移,需要24寄存器旋转(一个偏移是零),如图1D所示。π函数是通道的转置。此转置改变每个64比特部分的使用和分组,如图1E所示。转置在通道返回到它们的原始位置之前,具有24轮的周期。在χ步骤,每一行都由该行的近邻元素变换:
A[x,y]=a[x,y]⊕((非a[x+1,y])与a[x+2,y])
一起计算通道行,利用5个非、5个与、和5个异或,总共需要15x5=75个操作。对单一寄存器/通道应用ι加法轮(add round)常数,需要1个异或指令,如图1F所示。每一轮的操作为,对于θ,55个,对于ρ,24,对于π,零,对于χ,75个,对于ι,1个。每一轮,总共有155个操作。轮的数量nr是对于l=6,12+2l=24,即,64比特寄存器。对于24轮,KECCAK需要155*24=3720个操作。在四个执行单元处理器上,如果每一个操作都需要指令,则需要最少930个周期。
上面的操作不能使用矢量指令(诸如来自位于加利福尼亚州的圣克拉拉的英特尔公司的流式单指令多数据(SIMD)扩展(SSE)或高级矢量扩展(AVX)指令)使用函数的并行执行,有效率地执行,由于π函数,因为通道的位置以及立方体的对应字每一轮都被搅乱。
附图简述
本发明的各实施例是作为示例说明的,而不仅限于各个附图的图形,在附图中,类似的参考编号表示类似的元件。
图1A-1F是示出了典型的KECCAK散列算法的过程的图示。
图2是示出了根据一实施例的处理器的示例的框图。
图3是示出了根据一实施例的KECCAK状态立方体的分区的框图。
图4是示出了根据一实施例的用于KECCAK操作中的寄存器布局的框图。
图5是根据一实施例的执行KECCAK散列算法的伪代码。
图6是示出了根据一实施例的执行KECCAK散列算法的方法的流程图。
图7是示出了根据一实施例的数据处理系统的示例的框图。
图8是示出了根据另一实施例的数据处理系统的示例的框图。
具体实施方式
下面将参考下面所讨论的细节来描述本发明的各实施例并各方面,各个附图将示出各实施例。下面的描述和图形只是本发明的说明,而不作为对本发明的限制。描述了很多具体细节,以便全面地理解本发明的各实施例。然而,在某些实例中,没有描述已知的或常规的细节,以便提供对本发明的各实施例的简洁的讨论。
在本说明书中对“一个实施例”或“实施例”的引用意思指和该实施例一起描述的特定特征、结构或特征可以被包括在本发明的至少一个实施例中。在本说明书中的不同位置出现短语“在一个实施例中”不一定都是指同一个实施例。
根据某些实施例,使用矢量指令和数据路径来将KECCAK函数的指令从每一轮一百以上的指令减少到每一轮KECCAK大致八个指令。在一个实施例中,响应于在处理器处接收到的执行KECCAK操作的指令,使用具有至少450个比特的多个寄存器来存储表示KECCAK状态立方体的数据,如图1A所示。如上文所描述的,KECCAK状态立方体(例如,64个切片)需要1600个存储比特。在一个实施例中,KECCAK状态立方体被分区为至少四个子立方体,其中,每一个子立方体都表示至少16个切片或1/4状态立方体。四个子立方体存储在具有至少450个比特的至少四个寄存器中,诸如英特尔处理器中可用的ZMM兼容的寄存器(例如,512比特宽寄存器),其中,每一个寄存器都存储KECCAK状态立方体的5x5x16或400比特部分(例如,1/4状态立方体)。存储在每一个寄存器中的400个比特被分区为25个16比特部分,其中,每一个16比特部分都表示完全KECCAK状态立方体的通道的1/4。可以使用50个比特的其余部分来在操作过程中存储中间结果(例如,额外的两个切片),如下面阐述的。此后,上面阐述的KECCAK函数中的至少某些可以由支持矢量的处理器以矢量方式或并行地执行。
图2是示出了根据一实施例的处理器的示例的框图。参考图2,处理器100可以表示任何类型的指令处理设备。例如,处理器101可以是通用处理器。处理器100可以是各种复杂指令集计算(CISC)处理器、各种精简指令集计算(RISC)处理器、各种超长指令字(VLIW)处理器中的任何一种,其各种混合型,或完全其他类型的处理器。在一个实施例中,处理器100包括接收和解码指令106的指令解码器101。指令解码器101生成并输出一个或多个微操作、微代码、入口点、微指令、其他指令或其他控制信号,它们反映或来源于指令106。指令解码器101可以使用各种不同的机制来实现。合适的机制的示例包括,但不仅限于,微代码只读存储器(ROM)、查找表、硬件实现、可编程逻辑阵列(PLA)、等等。
处理器100还包括一个或多个执行单元102,该执行单元102可以包括算术逻辑单元或能够基于指令106来执行操作的另一种类型的逻辑单元。作为指令解码器101解码指令106的结果,执行单元102可以接收一个或多个微操作、微代码入口点、微指令、其他指令或其他控制信号,它们反映或来源于指令106。执行单元102可以作为指令106指出一个或多个源操作数(SRC)108的结果可操作,并将结果存储到由指令106指出的寄存器组105的一个或多个目的地操作数(DEST)109中。执行单元102可以包括可操作以执行指令或从指令106导出的其他控制信号的电路或其他执行逻辑(例如,与硬件和/或固件相结合的软件),并相应地执行操作。执行单元102可以表示诸如逻辑单元、算术逻辑单元(ALU)、算术单元、整数单元等等之类的任何类型的执行单元。
在一个实施例中,指令106可以隐式地指出和/或显式地指定(例如,通过一个或多个专用的字段或比特组)源和目的地操作数。操作数的合适的源和/或目的地的示例包括寄存器、存储器、指令的立即数(immediate)以及其组合。在各实施例中,源和目的地操作数可以是8比特、16比特、32比特或64比特操作数,虽然这不是必需的。
在一个实施例中,源和目的地操作数中的某些或全部可以被存储在寄存器组或存储器105的寄存器中。寄存器组可以是寄存器文件的一部分,以及潜在地,诸如状态寄存器、标志寄存器等其他寄存器。寄存器可以是可以被用来存储数据的存储位置或设备。寄存器组常常可以在物理上位于带有执行单元的管芯中。寄存器可以从处理器的外部或从编程器的角度可见。例如,指令可以指定存储在寄存器中的操作数。各种不同类型的寄存器都是合适的,只要它们能够存储和提供如此处所描述的数据。寄存器可以被重命名,也可以不被重命名。合适的寄存器的示例包括但不仅限于专用物理寄存器、使用寄存器重命名的动态地分配的物理寄存器、专用和动态地分配的物理寄存器的组合,等等。可另选地,源和目的地操作数中的一个或多个可以存储在存储位置,而不是寄存器中,诸如,例如,系统存储器中的位置。
根据一实施例,使用用于执行KECCAK操作的矢量指令和数据路径来将KECCAK函数的指令从每一轮一百以上的指令减少到每一轮KECCAK大致八个指令。在一个实施例中,响应于在指令解码器101处接收到的执行KECCAK操作的指令106,指令解码器101被配置成安排具有存储表示KECCAK状态立方体的数据110的至少400个比特和存储中间结果的额外的至少50个比特的寄存器104。请注意,寄存器104可以是寄存器组105的一部分(例如,源和/或目的地寄存器),可以从存储器中检索KECCAK状态立方体110。如上文所描述的,KECCAK状态立方体(例如,64个切片)需要1600个存储比特。
在一个实施例中,响应于指令106,指令解码器101和/或执行单元102可以将KECCAK状态立方体110分区为四个子立方体,其中,每一个子立方体都表示16个切片或1/4状态立方体,如图3所示。参考图3,将KECCAK状态立方体110分区为四个子立方体301-304。然后,分别将四个子立方体301-304存储在至少四个寄存器305-308中。在一个实施例中,寄存器305-308具有至少450个比特,优选地,512-比特,诸如英特尔处理器中的ZMM兼容的寄存器(例如,512比特宽寄存器)。寄存器305-308中的每一个都存储KECCAK状态立方体的5x5x16或400比特部分(例如,1/4状态立方体)。存储在寄存器305-308中的每一个中的400个比特被分区为25个16比特部分,如图4所示。
参考图4,寄存器400可以表示图3的寄存器305-308中的任何一个。在一个实施例中,寄存器400被分区为25个16比特部分401-403,其中,16比特部分401-403中的每一个都表示完全KECCAK状态立方体110的1/4通道。回头参考图2,一旦KECCAK状态立方体110被分区并适当地存储在图3的寄存器305-308中,KECCAK函数中的至少某些由执行单元102的KECCAK单元106以矢量方式或并行地执行。
根据某些实施例,对于每一个1/4立方体,独立于来自其他1/4立方体部分的数据,可以执行π、χ和ι函数。为计算一个象限(例如,子立方体或1/4状态立方体)的θ函数,还将需要“下一”象限的数据。计算开头15个切片的ρ函数只需要包含在正在被操作的象限内的数据。然而,为对第16个切片进行操作,需要被存储在“下一”象限中的第17个切片。ρ旋转函数需要来自1/4立方体中的每一个的状态执行通道旋转函数,对于全部1/4立方体的每一个通道,这些通道旋转函数是相同的。
根据一实施例,使用至少两个指令或阶段来在每一个1/4立方体上处理一轮KECCAK操作,每一轮,总共八个指令。根据一实施例,第一指令或阶段被称为KECCAK_THETA,并可以被定义为如下:
KECCAK_THETADst/Src1,Src2,Src3
在KECCAK_THETA阶段,处理器被配置成在每一个1/4切片上执行θ函数和ρ(旋转)函数的第一部分:
Src1=正在被处理的状态象限,z=(z0to z0+15)mod64
Src2=紧接Src1的状态象限,z=(z0+16to z0+31)mod64
Src3=紧接Src2的状态象限,z=(z0+32to z0+47)mod64
在一个实施例中,指令或阶段KECCAK_THETA的第一部分对Src1,Src2和Src3执行θ函数。请注意,不能计算Src3的最后一个切片的θ,因为它需要来自第四象限的切片。KECCAK_THETA的第二部分执行ρ函数的一部分。具体地,对于每一个通道,处理逻辑提取src1象限(其比特将来自象限1,2,以及3中的比特)中的比特的后θ比特(例如,图4的比特404)。指令或阶段KECCAK_THETA的最后一部分是从Src1和Src3中提取2个未处理的切片(例如,Src1的第一切片和Src3的最后一个切片),并将它们放置在目的地寄存器Dst,Dst[449:400]的第17个切片中,即,Dst[424:400]=Src1[0,16,32,….,384],Dst,Dst[449:425]=Src3[15,31,…,399]的第十八切片中。
根据一实施例,第二指令或阶段被称为KECCAK_ROUND,并可以被定义为如下:
KECCAK_ROUNDDst/Src1,Src2,Src3
在KECCAK_ROUND阶段,处理器将完成ρ旋转函数,并对Src1象限中的切片执行π、χ和ι函数:
Src1=KECCAK_THETA指令的结果
Src2=与Src1象限最远的未处理的象限
Src3=要用于ι函数的KECCAK轮常数
根据一实施例,指令KECCAK_ROUND的第一部分将对存储在Src1[449:425]和Src2象限中的“第三”象限的最后一个切片执行θ函数。请注意,为了计算Src2的最后一个切片的θ,它需要存储在Src1[424:400]中的Src1象限的未处理的第一切片。KECCAK_ROUND的第二部分将从完成Src1的象限的ρ函数所需的第一部分的结果中提取比特。然后,对对应于Src1的完成的经ρ变换的象限执行π、χ、ι函数。
图5是根据一实施例的执行一轮KECCAK的伪代码的示例。伪代码500可以由编译器生成并由图2的处理器100以矢量方式执行。参考图5,对应于四个象限的状态分别存储在寄存器ZMM1、ZMM2、ZMM3以及ZMM4中。这里,ZMM兼容的寄存器是至少450比特宽,优选地,至少512比特宽。在初始化501过程中,存储在寄存器ZMM1-ZMM4中的子立方体(例如,1/4KECCAK状态立方体)的副本分别保存在临时寄存器ZMMTMP1-ZMMTMP4中。在阶段502(是KECCAK_THETA阶段),对存储在寄存器ZMM1-ZMM4中的每一个子立方体执行θ函数和ρ函数的第一部分。
在阶段503(KECCAK_ROUND阶段)执行ρ函数的第二部分,以及π、χ、ι函数。请注意,此处寄存器ZMMRC包含用于ι函数的轮(round)常数。在一个实施例中,使用处理器的第二SIMD端口来执行用于保留未处理的1/4立方体状态以便完成旋转的MOV指令。在一个实施例中,KECCAK_THETA和KECCAK_ROUND的数据路径利用三周期数据路径来实现,每一轮,10个周期的吞吐量。24轮的KECCAK在240个周期内完成,或相对于每个指令整数代码的单个操作,大致4倍的改进。
图6是示出了根据一实施例的用于以矢量方式执行KECCAK操作的方法的流程图。方法600可以通过图2的处理器100来执行。参考图6,在框601,处理器接收对表示具有64个切片的KECCAK状态立方体的数据执行KECCAK操作的指令。在框602,KECCAK状态立方体被分区为四个子立方体(例如,1/4状态立方体),每一个都具有16个切片。在框603,子立方体分别存储在四个寄存器中,其中,每一个寄存器都是至少450比特宽,优选地,512比特宽。对于每一个轮KECCAK操作,在框604,对子立方体执行KECCAK_THETA阶段,包括对子立方体执行θ函数和ρ函数的第一部分。在框605,执行KECCAK_ROUND阶段,包括对子立方体执行ρ函数的第二部分和π、χ、ι函数。
图7是示出了根据本发明的一实施例的数据处理系统的示例的框图。系统900可以表示上文所描述的系统中的任何一个。例如,处理器901可以表示图2的处理器100。系统900可以表示台式机、膝上型计算机、平板电脑、服务器、移动电话(例如,智能电话)、媒体播放器、个人数字助理(PDA)、个人通信器、游戏设备、网络路由器或中枢、无线接入点或中继器、机顶盒或其组合。请注意,尽管图7示出了数据处理系统的各种组件,但是,并不旨在表示互连这些组件的任何特定体系结构或方式;因为这样的细节不是与本发明的各实施例有密切关系的。还可以理解,也可以与本发明的各实施例一起使用具有少一些的组件或也许多一些的组件的网络计算机、手持式计算机、移动电话及其他数据处理系统。
参考图7,在一个实施例中,系统900包括处理器901,以及通过总线或互连将各种组件(包括存储器905以及设备903-904)耦合到处理器901的芯片组902。处理器901可以表示带有单一处理器核或多个处理器核909的单一处理器或多个处理器。处理器901可以表示一个或多个通用处理器,诸如微处理器、中央处理单元(CPU)等等。更具体而言,处理器901可以是复杂指令集计算(CISC)微处理器、精简指令集计算(RISC)微处理器、超长指令字(VLIW)微处理器、或实现其他指令集的处理器、或实现指令集的组合的处理器。处理器901还可以是一个或多个专用的处理器,诸如专用集成电路(ASIC)、现场可编程门阵列(FPGA)、数字信号处理器(DSP)、网络处理器、图形处理器、网络处理器、通信处理器、密码处理器、协处理器、嵌入式处理器,或能够处理指令的任何其他类型的逻辑。例如,处理器901可以是位于加利福尼亚州圣克拉拉的英特尔公司所提供的4、Dual-Core、2 Duo and Quad、XeonTM、ItaniumTM、XScaleTMi7、CoreTMi5、或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的某些功能的接口芯片来操作,如图8所示。此外,图形加速器912还可以集成在MCH910或处理器901内。
存储器905可以存储包括由处理器901或任何其他设备执行的指令序列的数据。例如,各种操作系统、设备驱动程序、固件(例如,输入输出基本系统或BIOS),和/或应用程序的可执行代码913和/或数据914可以加载到存储器905中,并由处理器901执行。操作系统可以是任何类型的操作系统,诸如,例如,来自操作系统、来自苹果公司的Mac/来自 或其他实时操作系统。在一个实施例中,存储器905可以包括一个或多个易失性存储设备,诸如随机存取存储器(RAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、静态RAM(SRAM),或其他类型的存储设备。还可以使用非易失性存储器,诸如硬盘或闪存存储设备。前端总线(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.一种处理器,包括:
多个寄存器;
指令解码器,所述指令解码器接收指令以处理表示KECCAK散列算法的KECCAK状态的数据的KECCAK状态立方体,将所述KECCAK状态立方体分区为多个子立方体,并将所述子立方体分别存储到所述多个寄存器中;以及
执行单元,所述执行单元耦合到所述指令解码器,以便以矢量方式对分别存储在所述多个寄存器中的所述多个子立方体执行所述KECCAK散列算法。
2.如权利要求1所述的处理器,其特征在于,所述KECCAK状态立方体包括分区为4个子立方体的64个切片,其中每一个子立方体包含16个切片。
3.如权利要求2所述的处理器,其特征在于,所述多个寄存器包括4个寄存器,每一个寄存器具有至少450比特。
4.如权利要求1所述的处理器,其特征在于,对于所述KECCAK算法的每一轮,所述执行单元被配置成执行KECCAK_THETA操作,包括
并行地对存储在所述寄存器中的所述子立方体执行所述KECCAK算法的θ函数,以及
并行地对所述子立方体执行所述KECCAK算法的ρ函数的第一部分。
5.如权利要求4所述的处理器,其特征在于,所述执行单元进一步被配置成执行KECCAK_ROUND操作,包括
并行地对所述子立方体执行所述KECCAK算法的所述ρ函数的第二部分,
并行地对所述子立方体执行所述KECCAK算法的π函数,
并行地对所述子立方体执行所述KECCAK算法的χ函数,以及
并行地对所述子立方体执行所述KECCAK算法的ι函数。
6.如权利要求5所述的处理器,其特征在于,所述指令包括第一指令,后面跟着第二指令,其中响应于所述第一指令,所述执行单元被配置成执行所述KECCAK算法的所述KECCAK_THETA操作,并且其中响应于所述第二指令,所述执行单元被配置成执行所述KECCAK算法的所述KECCAK_ROUND操作。
7.如权利要求5所述的处理器,其特征在于,所述多个寄存器中的每一个都包含至少512个比特,其中至少400个比特被用来存储子立方体,并且其中所述至少512个比特的其余部分被用来存储所述KECCAK_THETA操作和KECCAK_ROUND操作的中间结果。
8.一种方法,包括:
在处理器的指令解码器处,接收指令以处理表示KECCAK散列算法的KECCAK状态的数据的KECCAK状态立方体,将所述KECCAK状态立方体分区为多个子立方体,并将所述子立方体分别存储到所述多个寄存器中;以及
由所述处理器的执行单元,以矢量方式对分别存储在所述多个寄存器中的所述多个子立方体执行所述KECCAK散列算法。
9.如权利要求8所述的方法,其特征在于,所述KECCAK状态立方体包括分区为4个子立方体的64个切片,其中每一个子立方体都包含16个切片。
10.如权利要求9所述的方法,其特征在于,所述多个寄存器包括4个寄存器,每一个寄存器具有至少450比特。
11.如权利要求8所述的方法,其特征在于,对于所述KECCAK算法的每一轮,所述执行单元被配置成执行KECCAK_THETA操作,包括
并行地对存储在所述寄存器中的所述子立方体执行所述KECCAK算法的θ函数,以及
并行地对所述子立方体执行所述KECCAK算法的ρ函数的第一部分。
12.如权利要求11所述的方法,其特征在于,所述执行单元进一步被配置成执行KECCAK_ROUND操作,包括
并行地对所述子立方体执行所述KECCAK算法的所述ρ函数的第二部分,
并行地对所述子立方体执行所述KECCAK算法的π函数,
并行地对所述子立方体执行所述KECCAK算法的χ函数,以及
并行地对所述子立方体执行所述KECCAK算法的ι函数。
13.如权利要求12所述的方法,其特征在于,所述指令包括第一指令,后面跟着第二指令,其中响应于所述第一指令,所述执行单元被配置成执行所述KECCAK算法的所述KECCAK_THETA操作,并且其中响应于所述第二指令,所述执行单元被配置成执行所述KECCAK算法的所述KECCAK_ROUND操作。
14.如权利要求12所述的方法,其特征在于,所述多个寄存器中的每一个包含至少512个比特,其中至少400个比特被用来存储子立方体,并且其中所述至少512个比特的其余部分被用来存储所述KECCAK_THETA操作和KECCAK_ROUND操作的中间结果。
15.一种数据处理系统,包括:
互连;
处理器,所述处理器耦合到所述互连以接收指令以处理表示KECCAK散列算法的KECCAK状态的数据的KECCAK状态立方体,将所述KECCAK状态立方体分区为多个子立方体,并将所述子立方体分别存储到所述多个寄存器中,以矢量方式对分别存储在所述多个寄存器中的所述多个子立方体执行所述KECCAK散列算法;以及
耦合到所述互连的动态随机存取存储器(DRAM)。
16.如权利要求15所述的系统,其特征在于,所述KECCAK状态立方体包括分区为4个子立方体的64个切片,其中每一个子立方体都包含16个切片。
17.如权利要求16所述的系统,其特征在于,所述多个寄存器包括4个寄存器,每一个寄存器都具有至少450比特。
18.如权利要求1所述的系统,其特征在于,对于每一轮所述KECCAK算法,所述处理器被配置成执行KECCAK_THETA操作,包括
并行地对存储在所述寄存器中的所述子立方体执行所述KECCAK算法的θ函数,以及
并行地对所述子立方体执行所述KECCAK算法的ρ函数的第一部分。
19.如权利要求4所述的系统,其特征在于,所述处理器进一步被配置成执行KECCAK_ROUND操作,包括
并行地对所述子立方体执行所述KECCAK算法的所述ρ函数的第二部分,
并行地对所述子立方体执行所述KECCAK算法的π函数,
并行地对所述子立方体执行所述KECCAK算法的χ函数,以及
并行地对所述子立方体执行所述KECCAK算法的ι函数。
20.如权利要求5所述的系统,其特征在于,所述指令包括第一指令,后面跟着第二指令,其中响应于所述第一指令,所述处理器被配置成执行所述KECCAK算法的所述KECCAK_THETA操作,并且其中响应于所述第二指令,所述处理器被配置成执行所述KECCAK算法的所述KECCAK_ROUND操作。
CN201180074906.2A 2011-12-13 2011-12-13 处理keccak安全散列算法的方法和设备 Active CN103946796B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/US2011/064640 WO2013089682A1 (en) 2011-12-13 2011-12-13 Method and apparatus to process keccak secure hashing algorithm

Publications (2)

Publication Number Publication Date
CN103946796A true CN103946796A (zh) 2014-07-23
CN103946796B CN103946796B (zh) 2016-08-24

Family

ID=48612979

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201180074906.2A Active CN103946796B (zh) 2011-12-13 2011-12-13 处理keccak安全散列算法的方法和设备

Country Status (4)

Country Link
US (2) US9772845B2 (zh)
CN (1) CN103946796B (zh)
TW (2) TWI552071B (zh)
WO (1) WO2013089682A1 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107124267A (zh) * 2017-03-30 2017-09-01 宁波大学 一种密码芯片上的固定位宽密钥产生方法
CN112543095A (zh) * 2014-09-04 2021-03-23 英特尔公司 处理指令的系统、设备、方法、处理器、介质和电子设备

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP6139859B2 (ja) * 2012-10-31 2017-05-31 キヤノン株式会社 ハッシュ値生成装置およびハッシュ値生成方法
JP6238774B2 (ja) * 2013-02-21 2017-11-29 キヤノン株式会社 ハッシュ値生成装置
JP6113091B2 (ja) * 2013-03-07 2017-04-12 キヤノン株式会社 ハッシュ値生成装置
CN103812643A (zh) * 2014-01-26 2014-05-21 厦门密安信息技术有限责任公司 基于arm的axi接口的sha3 ip核设计
US10379868B1 (en) * 2019-02-04 2019-08-13 Bell Integrator Inc. Optimization method with parallel computations
GB2582900A (en) 2019-03-18 2020-10-14 Pqshield Ltd Cryptography using a cryptographic state
US11985226B2 (en) * 2020-12-23 2024-05-14 Intel Corporation Efficient quantum-attack resistant functional-safe building block for key encapsulation and digital signature
US20220416998A1 (en) * 2021-06-23 2022-12-29 Intel Corporation Side channel protection for sha3 cryptographic functions
US11663009B2 (en) 2021-10-14 2023-05-30 International Business Machines Corporation Supporting large-word operations in a reduced instruction set computer (“RISC”) processor
CN114095149B (zh) * 2021-11-12 2023-05-30 龙芯中科技术股份有限公司 信息加密方法、装置、设备及存储介质
US12001343B1 (en) * 2022-12-30 2024-06-04 International Business Machines Corporation Selective distribution of translation entry invalidation requests in a multithreaded data processing system

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080279369A1 (en) * 2003-10-21 2008-11-13 Widevine Technologies, Inc. System and method for n-dimensional encryption
CN101872338A (zh) * 2010-06-04 2010-10-27 杭州电子科技大学 一种改进的sha-1哈希算法
US20110040977A1 (en) * 2009-08-11 2011-02-17 Apple Inc. Sponge and hash functions using a rubik's cube puzzle process
US20110138192A1 (en) * 2009-12-04 2011-06-09 Kocher Paul C Verifiable, Leak-Resistant Encryption and Decryption
US20110283110A1 (en) * 2010-05-13 2011-11-17 Salesforce.Com, Inc. Secure Communications

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8275125B2 (en) 2008-04-21 2012-09-25 Tata Consultancy Services Ltd Method for designing a secure hash function and a system thereof
CN104615548B (zh) 2010-03-29 2018-08-31 威盛电子股份有限公司 数据预取方法以及微处理器
US8831221B2 (en) * 2010-09-28 2014-09-09 Lsi Corporation Unified architecture for crypto functional units
US9032183B2 (en) * 2012-02-24 2015-05-12 Simplivity Corp. Method and apparatus for content derived data placement in memory
JP6139859B2 (ja) * 2012-10-31 2017-05-31 キヤノン株式会社 ハッシュ値生成装置およびハッシュ値生成方法
US8924741B2 (en) * 2012-12-29 2014-12-30 Intel Corporation Instruction and logic to provide SIMD secure hashing round slice functionality

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080279369A1 (en) * 2003-10-21 2008-11-13 Widevine Technologies, Inc. System and method for n-dimensional encryption
US20110040977A1 (en) * 2009-08-11 2011-02-17 Apple Inc. Sponge and hash functions using a rubik's cube puzzle process
US20110138192A1 (en) * 2009-12-04 2011-06-09 Kocher Paul C Verifiable, Leak-Resistant Encryption and Decryption
US20110283110A1 (en) * 2010-05-13 2011-11-17 Salesforce.Com, Inc. Secure Communications
CN101872338A (zh) * 2010-06-04 2010-10-27 杭州电子科技大学 一种改进的sha-1哈希算法

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112543095A (zh) * 2014-09-04 2021-03-23 英特尔公司 处理指令的系统、设备、方法、处理器、介质和电子设备
CN107124267A (zh) * 2017-03-30 2017-09-01 宁波大学 一种密码芯片上的固定位宽密钥产生方法
CN107124267B (zh) * 2017-03-30 2020-04-17 宁波大学 一种密码芯片上的固定位宽密钥产生方法

Also Published As

Publication number Publication date
US10691458B2 (en) 2020-06-23
CN103946796B (zh) 2016-08-24
TW201528134A (zh) 2015-07-16
US20180157489A1 (en) 2018-06-07
US9772845B2 (en) 2017-09-26
TW201337745A (zh) 2013-09-16
WO2013089682A1 (en) 2013-06-20
TWI552071B (zh) 2016-10-01
US20130275722A1 (en) 2013-10-17
TWI488109B (zh) 2015-06-11

Similar Documents

Publication Publication Date Title
CN103946796A (zh) 处理keccak安全散列算法的方法和设备
ES2886348T3 (es) Procedimiento y aparato para procesar un algoritmo de hashing seguro SHA-2
US8838997B2 (en) Instruction set for message scheduling of SHA256 algorithm
US10387149B2 (en) Apparatus and method to reverse and permute bits in a mask register
US20200401403A1 (en) Method and apparatus to process sha-2 secure hashing algorithm
JP6088655B2 (ja) 単一の命令に応じて回転及びxorを実行するためのシステム、装置及び方法
US8953785B2 (en) Instruction set for SKEIN256 SHA3 algorithm on a 128-bit processor
CN104012032A (zh) 处理sha-1安全散列算法的方法和设备
WO2013095541A1 (en) Apparatus and method for performing a permute operation
US9495162B2 (en) Apparatus and method for performing a permute operation
CN103930867A (zh) 使用前缀对isa指令的标志非修改扩展

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant