实施安全哈希算法的处理器以及数字信号处理方法与流程

文档序号:11778151阅读:1047来源:国知局
实施安全哈希算法的处理器以及数字信号处理方法与流程

本发明涉及实施安全哈希算法(securehashalgorithm)的处理器。



背景技术:

安全哈希算法(securehashalgorithm,缩写为sha)或称为安全杂凑算法包括一密码哈希函数家族,sha-0、sha-1、sha-2、sha-3。数字消息将经安全哈希算法sha转换为消息摘要(messagedigest)。sha-2包括sha224、sha256、sha384与sha512。sha224与sha256是基于32位字长(32bitwordlength)的类似算法,生成224位和256位的消息摘要。sha384和sha512则是基于64位字长运算,产生384位和512位的消息摘要。

以下以sha256为例进行讨论。

sha256使用到的逻辑运算式是基于32位字长的运算,包括以下逻辑运算式:

以下讨论n循环的sha256计算。循环代号i由1递增至n。循环i的512字节的数字消息m(i)将被分割为各为32字节的数字消息块(chunks)将延伸成为64个32字节的消息块wt,t=0…63。此步骤称准备消息报表(messageschedule)。消息块wt运算式为:

将用于循环i的64次迭代运算。t又视为迭代代号。

迭代运算还有使用到32字节常数t=0-63;将在循环i的64次迭代运算中分别提出使用。常数是首64个素数(primenumbers)开立方根后,取小数部分的32字节。

迭代运算还使用到八个工作变量(workingvariables)a…h,于循环i之初,以先前一次循环(i-1)算出的哈希值(hashvalues)初始化。哈希值的初始值为

各迭带进行的运算包括:

h=g,g=f,f=e,e=d+t1,d=c,c=b,b=a,a=t1+t2。工作变量a…h在每次迭带中更新。

循环i的64次迭代运算完成后,获得的哈希值为:

哈希值将用于产生消息摘要。例如,第n次循环获得的哈希值将用于产生256字节消息摘要,即

如以上所示,安全哈希算法(sha)涉及庞大的常数使用以及复杂的运算。如何有效率地施行安全哈希算法为本技术领域一项重要课题。



技术实现要素:

安全哈希算法(sha)每次迭代运算(迭代代号t)需将消息块wt与常数kt进行相加,获得数值wt+kt。本发明提出一种处理器,具有一内部存储器储存常数kt,缩减自处理器外部载入常数kt所可能引起的延迟、且避免占据处理器与外部元件通信的总线。所述处理器可还于指令集提供一条指令,以该条指令自该内部存储器取得常数kt并完成数值wt+kt运算,大大提升安全哈希算法(sha)的施行效能。

根据本发明一种实施方式所实现的一处理器包括一内部存储器以及一执行单元集合。该内部存储器储存一安全哈希算法的一常数阵列,内含常数kt。t为该安全哈希算法的迭代运算代号。t包括0至数字(l-1)的变化。该执行单元集合包括该安全哈希算法所需的执行单元群组。上述执行单元群组是自该内部存储器读取常数kt实现该安全哈希算法的工作变量更新。一种实施方式中,上述执行单元群组接收一数值w+k取得指令。该数值w+k取得指令指示一读取地址,使上述执行单元群组据以自该内部存储器取得上述常数kt。该数值w+k取得指令还使用一来源操作数。该来源操作数内容为消息块wt。该数值w+k取得指令还储存消息块wt以及常数kt的加总wt+kt于一目标操作数,用于该安全哈希算法的工作变量更新。

根据本发明一种实施方式所实现的一种数字消息处理方法,包括:于一处理器内提供一内部存储器,储存一安全哈希算法的一常数阵列,内含常数kt,t为该安全哈希算法的迭代运算的代号,t包括0至数字(l-1)的变化;以及,以该处理器的一执行单元集合中关于该安全哈希算法的执行单元群组自该内部存储器读取常数kt,以实现该安全哈希算法的工作变量更新。

下文特举实施例,并配合附图,详细说明本发明内容。

附图说明

图1为方块图,根据本发明一种实施方式图解一处理器(processor)100;

图2为流程图,根据本发明一种实施方式说明处理器100对安全哈希算法(sha)所做的部分运算;以及

图3对应图2流程条列程序码300,以sha256为例,且涉及四次迭代t+3、t+2、t+1以及t。

具体实施方式

以下叙述列举本发明的多种实施例。以下叙述介绍本发明的基本概念,且并非意图限制本发明内容。实际发明范围应依照权利要求界定。

图1为方块图,根据本发明一种实施方式图解一处理器(processor)100。处理器100可为各种形式的指令处理设备(instructionprocessingapparatus)。例如,处理器100可为通用处理器(general-purposeprocessor)。处理器100可为复杂指令集运算(cisc)处理器、精简指令集运算(risc)处理器、超长指令字(vliw)处理器任一或组合、或其他任何形式处理器。处理器100可实现多种处理器核心(processorcore),包括,通用处理器的通用有序核心(general-purposein-ordercore)或高效通用无序核心(high-performancegeneral-purposeout-of-ordercore),图像或科学运算的特定功能运算核心。处理器100可实现具备通用功能的中央处理单元(centralprocessingunit)、或特定功能的协处理器(coprocessor)。

如图所示,处理器100包括一指令解码器102、执行单元集合104、寄存器集合106以及一内部存储器108。

指令解码器102接收且解码一指令抓取器(instructionfetcher,未显示在图中)所送来的指令110。根据指令110,指令解码器102可产生一或多条微运算(microoperations)、微码(microcode)、微指令(microinstructions)、其他指令或其他控制信号、一或多个进入点(entrypoints)…等。指令解码器102将驱动执行单元集合104、寄存器集合106以及内部存储器108的运作或存取。

执行单元集合104可包括算数逻辑单元(arithmeticlogicunit)、电路、或软硬件结合的执行逻辑,根据指令解码器102的指令解码结果动作。执行单元集合104提供安全哈希算法(sha)所需的执行单元群组112。

寄存器集合106所提供的寄存器可用作执行单元所执行运算的来源操作数(sourceoperands)和/或目标操作数(destinationoperands)。寄存器集合106提供安全哈希算法(sha)所需的寄存器群组114。安全哈希算法(sha)也可有部分利用处理器100外部的储存空间如系统存储器做操作数空间。

内部存储器108则提供空间116储存安全哈希算法(sha)所使用的常数kt,t包括0至数字(l-1)的变化,对应l次迭带运算。一种实施方式中,内部存储器108为处理器100的内部只读存储器(internalrom),其中内容是出厂前烧录。以sha256为例,内部存储器108烧录有常数t为0~63。此64个32位字长的常数是首64个素数(primenumbers)开立方根后,取小数部分的32字节。由左至右、上而下列为:

内部存储器108的空间116可以t为索引进行查阅,提供常数

本发明还提供一种指令集(isa)使该处理器100得以运作实现安全哈希算法(sha)。特别是,所述指令集包括本分别新定义的一数值w+k取得指令。解码器102将以该数值w+k取得指令致动执行单元群组114中对应的执行单元。该些执行单元会自该内部存储器108空间116获得所需的常数kt,且可以是自寄存器群组114实现的来源操作数取得所需的消息块wt,并将两者相加得wt+kt。该数值w+k取得指令完全不操作执行单元集合104的载入(load)执行单元也不会自处理器100外部载入常数kt,故不会占用处理器100对外的总线,也不会因为来不及自处理器100外部获得常数kt,而延滞安全哈希算法(sha)后续运算。

一种sha256实施方式中,该数值w+k取得指令为:

sha256wkrnds4xmm1,xmm2,imm8;

imm8[7:0]指示内部存储器108地址;一执行单元是据以读取内部存储器108获得常数xmm2属于寄存器群组114之一,当作来源操作数使用,其中内容为wt+3、wt+2、wt+1、wt。xmm1为目标操作数,为该数值w+k取得指令运算结果的储存目标。

对应该数值w+k取得指令,该执行单元群组112包括内部存储器108存取用的执行单元以及负责加法运算的单指令多数据流扩展(sse)执行单元。

图2为流程图,根据本发明一种实施方式说明处理器100对安全哈希算法(sha)所做的部分运算。步骤s202准备消息块wt。步骤s204于处理器100的内部存储器108取得常数kt,并计算wt+kt。步骤s206将wt+kt用于工作变量(如sha256定义的八个工作变量a…h)更新。

图3对应图2流程条列程序码300,是以sha256为例,且涉及四次迭代t+3、t+2、t+1以及t。

指令sha256msg1、sha256msg2以及paddw对应步骤s202,备妥消息块{wt+3,wt+2,wt+1,wt}于寄存器群组114内的一寄存器xmm0中。

指令sha256wkrnds4对应步骤s204且如前述动作,于处理器100的内部存储器108取得常数并计算存于寄存器群组114内的一寄存器xmm0中。

步骤s206则涉及两次指令sha256rnds2中间穿插指令psrldq,将指令sha256wkrnds4所设定的寄存器xmm0内容用于八个工作变量(a,b,c,d,e,f,g,h)四次迭带的更新。单一个指令sha256rnds2对应两次迭代的工作变量a…h更新。每次迭代进行的运算包括:

h=g,g=f,f=e,e=d+t_1,d=c,c=b,b=a,a=t1+t2。标号302所指的指令sha256rnds2是使用寄存器xmm0低位内容实现八个工作变量(a,b,c,d,e,f,g,h)两次迭代(t与t+1)的更新。指令psrldq负责移位寄存器xmm0内容。标号304所指的指令sha256rnds2是使用寄存器xmm0移位后的低位内容实现八个工作变量(a,b,c,d,e,f,g,h)两次迭代(t+2与t+3)的更新。

图3程序码执行16次即完成sha256循环i的64次迭代(t=0至63)。循环i所得哈希值为:哈希值将用于产生消息摘要。例如,第n次循环获得的哈希值将用于产生256字节消息摘要,即

除以上讨论的sha256实施例,安全哈希算法(sha)家族的sha384、sha512皆可如本发明利用处理器100内部存储器108储存常数kt(t=0…(l-1)),并设计对应的数值w+k取得指令。

其他采用上述概念使处理器实现安全哈希算法(sha)的技术都属于本发明所要保护的范围。基于以上技术内容,本发明还涉及基于安全哈希算法(sha)的数字消息处理方法。

虽然本发明已以较佳实施例公开如上,然而其并非用以限定本发明,任何本领域技术人员,在不脱离本发明的精神和范围内,应当可以做些许更动与润饰,因此本发明的保护范围当视所附的权利要求所界定的为准。

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