公开/公告号CN107276745A
专利类型发明专利
公开/公告日2017-10-20
原文格式PDF
申请/专利权人 上海兆芯集成电路有限公司;
申请/专利号CN201710484848.X
发明设计人 张稚;
申请日2017-06-23
分类号H04L9/06(20060101);
代理机构11105 北京市柳沈律师事务所;
代理人吕晓章
地址 上海市张江高科技园区金科路2537号301室
入库时间 2023-06-19 03:34:25
法律状态公告日
法律状态信息
法律状态
2023-06-27
专利权人的姓名或者名称、地址的变更 IPC(主分类):H04L 9/06 专利号:ZL201710484848X 变更事项:专利权人 变更前:上海兆芯集成电路有限公司 变更后:上海兆芯集成电路股份有限公司 变更事项:地址 变更前:201203 上海市张江高科技园区金科路2537号301室 变更后:201203 上海市浦东新区张江高科技园区金科路2537号301室
专利权人的姓名或者名称、地址的变更
2020-08-04
授权
授权
2017-11-17
实质审查的生效 IPC(主分类):H04L9/06 申请日:20170623
实质审查的生效
2017-10-20
公开
公开
技术领域
本发明涉及实施安全哈希算法(Secure Hash Algorithm)的处理器。
背景技术
安全哈希算法(Secure Hash Algorithm,缩写为SHA)或称为安全杂凑算法包括一密码哈希函数家族,SHA-0、SHA-1、SHA-2、SHA-3。数字消息将经安全哈希算法SHA转换为消息摘要(message digest)。SHA-2包括SHA224、SHA 256、SHA 384与SHA 512。SHA 224与SHA256是基于32位字长(32bit word length)的类似算法,生成224位和256位的消息摘要。SHA384和SHA 512则是基于64位字长运算,产生384位和512位的消息摘要。
以下以SHA 256为例进行讨论。
SHA 256使用到的逻辑运算式是基于32位字长的运算,包括以下逻辑运算式:
以下讨论N循环的SHA 256计算。循环代号i由1递增至N。循环i的512字节的数字消息M(i)将被分割为各为32字节的数字消息块(chunks)
将用于循环i的64次迭代运算。t又视为迭代代号。
迭代运算还有使用到32字节常数
迭代运算还使用到八个工作变量(working variables)a…h,于循环i之初,以先前一次循环(i-1)算出的哈希值(hash values)
各迭带进行的运算包括:
h=g,g=f,f=e,e=d+T1,d=c,c=b,b=a,a=T1+T2。工作变量a…h在每次迭带中更新。
循环i的64次迭代运算完成后,获得的哈希值为:
如以上所示,安全哈希算法(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,以SHA 256为例,且涉及四次迭代t+3、t+2、t+1以及t。
具体实施方式
以下叙述列举本发明的多种实施例。以下叙述介绍本发明的基本概念,且并非意图限制本发明内容。实际发明范围应依照权利要求界定。
图1为方块图,根据本发明一种实施方式图解一处理器(processor)100。处理器100可为各种形式的指令处理设备(instruction processing apparatus)。例如,处理器100可为通用处理器(general-purpose processor)。处理器100可为复杂指令集运算(CISC)处理器、精简指令集运算(RISC)处理器、超长指令字(VLIW)处理器任一或组合、或其他任何形式处理器。处理器100可实现多种处理器核心(processor core),包括,通用处理器的通用有序核心(general-purpose in-order core)或高效通用无序核心(high-performance general-purpose out-of-order core),图像或科学运算的特定功能运算核心。处理器100可实现具备通用功能的中央处理单元(central processing unit)、或特定功能的协处理器(coprocessor)。
如图所示,处理器100包括一指令解码器102、执行单元集合104、寄存器集合106以及一内部存储器108。
指令解码器102接收且解码一指令抓取器(instruction fetcher,未显示在图中)所送来的指令110。根据指令110,指令解码器102可产生一或多条微运算(microoperations)、微码(micro code)、微指令(micro instructions)、其他指令或其他控制信号、一或多个进入点(entry points)…等。指令解码器102将驱动执行单元集合104、寄存器集合106以及内部存储器108的运作或存取。
执行单元集合104可包括算数逻辑单元(arithmetic logic unit)、电路、或软硬件结合的执行逻辑,根据指令解码器102的指令解码结果动作。执行单元集合104提供安全哈希算法(SHA)所需的执行单元群组112。
寄存器集合106所提供的寄存器可用作执行单元所执行运算的来源操作数(source operands)和/或目标操作数(destination operands)。寄存器集合106提供安全哈希算法(SHA)所需的寄存器群组114。安全哈希算法(SHA)也可有部分利用处理器100外部的储存空间如系统存储器做操作数空间。
内部存储器108则提供空间116储存安全哈希算法(SHA)所使用的常数Kt,t包括0至数字(L-1)的变化,对应L次迭带运算。一种实施方式中,内部存储器108为处理器100的内部只读存储器(internal ROM),其中内容是出厂前烧录。以SHA 256为例,内部存储器108烧录有常数
内部存储器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)后续运算。
一种SHA 256实施方式中,该数值W+K取得指令为:
SHA256WKRNDS4xmm1,xmm2,Imm8;
Imm8[7:0]指示内部存储器108地址;一执行单元是据以读取内部存储器108获得常数
对应该数值W+K取得指令,该执行单元群组112包括内部存储器108存取用的执行单元以及负责加法运算的单指令多数据流扩展(SSE)执行单元。
图2为流程图,根据本发明一种实施方式说明处理器100对安全哈希算法(SHA)所做的部分运算。步骤S202准备消息块Wt。步骤S204于处理器100的内部存储器108取得常数Kt,并计算Wt+Kt。步骤S206将Wt+Kt用于工作变量(如SHA 256定义的八个工作变量a…h)更新。
图3对应图2流程条列程序码300,是以SHA 256为例,且涉及四次迭代t+3、t+2、t+1以及t。
指令SHA256MSG1、SHA256MSG2以及PADDW对应步骤S202,备妥消息块{Wt+3,Wt+2,Wt+1,Wt}于寄存器群组114内的一寄存器xmm0中。
指令SHA256WKRNDS4对应步骤S204且如前述动作,于处理器100的内部存储器108取得常数
步骤S206则涉及两次指令SHA256RNDS2中间穿插指令PSRLDQ,将指令SHA256WKRNDS4所设定的寄存器XMM0内容
h=g,g=f,f=e,e=d+T_1,d=c,c=b,b=a,a=T1+T2。标号302所指的指令SHA256RNDS2是使用寄存器XMM0低位内容
图3程序码执行16次即完成SHA 256循环i的64次迭代(t=0至63)。循环i所得哈希值为:
除以上讨论的SHA 256实施例,安全哈希算法(SHA)家族的SHA 384、SHA 512皆可如本发明利用处理器100内部存储器108储存常数Kt(t=0…(L-1)),并设计对应的数值W+K取得指令。
其他采用上述概念使处理器实现安全哈希算法(SHA)的技术都属于本发明所要保护的范围。基于以上技术内容,本发明还涉及基于安全哈希算法(SHA)的数字消息处理方法。
虽然本发明已以较佳实施例公开如上,然而其并非用以限定本发明,任何本领域技术人员,在不脱离本发明的精神和范围内,应当可以做些许更动与润饰,因此本发明的保护范围当视所附的权利要求所界定的为准。
机译: 具有安全哈希算法的处理器和具有安全哈希算法的数字信号处理方法
机译: 具有安全哈希算法的处理器和具有安全哈希算法的数字信号处理方法
机译: 具有安全哈希算法的处理器和具有安全哈希算法的数字信号处理方法