欢迎您访问广东某某机械环保科有限公司网站,公司主营某某机械、某某设备、某某模具等产品!
全国咨询热线: 400-123-4567

新闻资讯

哈希游戏| 哈希游戏平台| 哈希游戏APP

HAXIYOUXI-HAXIYOUXIPINGTAI-HAXIYOUXIAPP

哈希游戏- 哈希游戏平台- 官方网站处理器、以及信息认证码编码方法pdf

作者:小编2025-10-23 13:16:22

  哈希游戏- 哈希游戏平台- 哈希游戏官方网站

哈希游戏- 哈希游戏平台- 哈希游戏官方网站处理器、以及哈希信息认证码编码方法pdf

  (19)中华人民共和国国家知识产权局 (12)发明专利申请 (10)申请公布号 CN 113704791 A (43)申请公布日 2021.11.26 (21)申请号 1.6 (22)申请日 2021.09.01 (71)申请人 北京兆芯电子科技有限公司 地址 100089 北京市海淀区丰豪东路9号院 2号楼10层6单元1001-1010 (72)发明人 管应炳黄振华秦岳李艳婷 (74)专利代理机构 北京市柳沈律师事务所 11105 代理人 解锟 (51)Int.Cl. G06F 21/60 (2013.01) G06F 21/62 (2013.01) G06F 21/44 (2013.01) 权利要求书3页 说明书7页 附图5页 (54)发明名称 处理器、以及哈希信息认证码编码方法 (57)摘要 一种高速的哈希信息认证码(HMAC)算法编 码技术。具备哈希信息认证码算法的处理器具有 微码储存器、解码器、以及执行单元。该微码储存 器储存微码。该解码器在响应于指令集架构的单 一条哈希信息认证码算法指令时,根据该微码储 存器储存的该微码,转换出多条微指令。根据该 解码器提供的上述多条微指令,该执行单元对取 自系统内存的输入文本,进行哈希信息认证码算 法,转换出哈希信息认证码储存至该系统内存。 A 1 9 7 4 0 7 3 1 1 N C CN 113704791 A 权利要求书 1/3页 1.一种具备哈希信息认证码算法的处理器,包括: 微码储存器,储存微码; 耦接该微码储存器的解码器,在响应于指令集架构的单一条哈希信息认证码算法指令 时,根据该微码储存器储存的该微码,转换出多条微指令;以及 耦接该解码器的执行单元,根据该解码器提供的上述多条微指令,对取自系统内存的 输入文本,进行哈希信息认证码算法,转换出哈希信息认证码储存至该系统内存。 2.如权利要求1所述的具备哈希信息认证码算法的处理器,还包括: 第一寄存器,储存控制字,上述多条微指令使得该执行单元根据该控制字指示的原始 密钥进行该哈希信息认证码算法。 3.如权利要求2所述的具备哈希信息认证码算法的处理器,还包括: 第二寄存器,储存软件密钥地址指针,指示软件密钥在该系统内存上的位置;以及 第三寄存器,储存软件密钥长度,标示该软件密钥的长度; 其中: 该执行单元包括内存顺序缓存区;以及 该控制字指示以该软件密钥作为该原始密钥时,上述多条微指令使得该执行单元通过 该内存顺序缓存区,依据该第二寄存器储存的该软件密钥地址指针、以及该第三寄存器储 存的该软件密钥长度,从该系统内存获取该软件密钥。 4.如权利要求2所述的具备哈希信息认证码算法的处理器,还包括: 密钥内存,储存硬件密钥; 其中,该控制字指示以该硬件密钥作为该原始密钥时,上述多条微指令使得该执行单 元从该密钥内存获取该硬件密钥。 5.如权利要求1所述的具备哈希信息认证码算法的处理器,还包括: 密钥内存,储存硬件密钥; 其中,上述多条微指令使得该执行单元从该密钥内存获取该硬件密钥。 6.如权利要求1所述的具备哈希信息认证码算法的处理器,还包括: 第一寄存器,储存控制字,该控制字指示该哈希信息认证码算法采用的哈希值算法,由 上述多条微指令使得该执行单元根据该哈希值算法进行该哈希信息认证码算法。 7.如权利要求6所述的具备哈希信息认证码算法的处理器,其中: 该执行单元包括密码执行单元,且该密码执行单元包括哈希值算法加速器,硬件实现 该哈希值算法; 上述多条微指令包含加速器操作微指令;以及 该哈希值算法加速器响应于该加速器操作微指令而操作。 8.如权利要求1所述的具备哈希信息认证码算法的处理器,还包括: 第四寄存器,储存输入文本地址指针,指示该输入文本在该系统内存上的位置;以及 第五寄存器,储存输入文本长度,标示该输入文本的长度; 其中,上述多条微指令使得该执行单元通过内存顺序缓存区,依据该第四寄存器储存 的该输入文本地址指针、以及该第五寄存器储存的该输入文本长度,从该系统内存获取该 输入文本。 9.如权利要求1所述的具备哈希信息认证码算法的处理器,还包括: 2 2 CN 113704791 A 权利要求书 2/3页 第六寄存器,储存计算结果地址指针,指示该哈希信息认证码在该系统内存上的目标 储存位置; 其中,上述多条微指令使得该执行单元通过内存顺序缓存区,依据该第六寄存器储存 的该计算结果地址指针,将该哈希信息认证码储存至该系统内存。 10.如权利要求1所述的具备哈希信息认证码算法的处理器,还包括: 软件无法探知的内部寄存器,暂存该执行单元进行该哈希信息认证码算法过程中生成 的中间数值。 11.如权利要求1所述的具备哈希信息认证码算法的处理器,其中: 该执行单元包括逻辑运算单元,在上述多条微指令操作下,实现该哈希信息认证码算 法的异或运算。 12.如权利要求11所述的具备哈希信息认证码算法的处理器,其中,该执行单元根据上 述多条微指令对原始密钥和该输入文本进行该哈希信息认证码算法,其中: 过短的该原始密钥由该逻辑运算单元进行扩展,生成哈希信息认证码密钥,过长的该 原始密钥由该逻辑运算单元处理,生成该哈希信息认证码密钥; 该逻辑运算单元对该哈希信息认证码密钥、以及内部填充进行该异或运算,得第一中 间数值; 该逻辑运算单元将该第一中间数值与该输入文本连接,切割该第一中间数值与该输入 文本连接后的文本为多段切割文本,依次交由该哈希值算法加速器进行哈希值算法,生成 第二中间数值; 该逻辑运算单元对该哈希信息认证码密钥、以及外部填充进行该异或运算,得第三中 间数值; 该逻辑运算单元将该第三中间数值与该第二中间数值连接,交由该哈希值算法加速器 处理,产生第四中间数值;以及 该逻辑运算单元取该第四中间数值左方t比特为该哈希信息认证码,t为整数。 13.如权利要求12所述的具备哈希信息认证码算法的处理器,还包括: 软件无法探知的内部寄存器,暂存该第一中间数值、该第二中间数值、该第三中间数 值、以及该第四中间数值。 14.一种哈希信息认证码编码方法,包括: 响应于指令集架构的单一条哈希信息认证码算法指令,根据微码,转换出多条微指令; 以及 以上述多条微指令操作执行单元,对取自系统内存的输入文本,进行哈希信息认证码 算法,转换出哈希信息认证码储存至该系统内存。 15.如权利要求14所述的哈希信息认证码编码方法,还包括: 在该单一条哈希信息认证码算法指令之前,储存控制字至第一寄存器,用于据以转换 出上述多条微指令,使得该执行单元根据该控制字指示的原始密钥进行该哈希信息认证码 算法。 16.如权利要求15所述的哈希信息认证码编码方法,还包括: 在该单一条哈希信息认证码算法指令之前,储存软件密钥地址指针至第二寄存器,指 示软件密钥在该系统内存上的位置; 3 3 CN 113704791 A 权利要求书 3/3页 在该单一条哈希信息认证码算法指令之前,储存软件密钥长度至第三寄存器,标示该 软件密钥的长度;以及 该控制字指示以该软件密钥作为该原始密钥时,上述多条微指令使得该执行单元依据 该第二寄存器储存的该软件密钥地址指针、以及该第三寄存器储存的该软件密钥长度,从 该系统内存获取该软件密钥。 17.如权利要求14所述的哈希信息认证码编码方法,还包括: 在该单一条哈希信息认证码算法指令之前,储存控制字, 其中,该控制字指示哈希信息认证码算法采用的哈希值算法,由上述多条微指令使得 该执行单元根据该哈希值算法进行该哈希信息认证码算法。 18.如权利要求17所述的哈希信息认证码编码方法,其中上述多条微指令包含加速器 操作微指令,上述哈希信息认证码编码方法还包括: 使得该执行单元的密码执行单元的哈希值算法加速器响应于该加速器操作微指令而 操作,用硬件实现该哈希值算法。 19.如权利要求14所述的哈希信息认证码编码方法,还包括: 以软件无法探知的内部寄存器,暂存该执行单元进行该哈希信息认证码算法过程中生 成的中间数值。 4 4 CN 113704791 A 说明书 1/7页 处理器、以及哈希信息认证码编码方法 技术领域 [0001] 本发明有关于具备哈希信息认证码(Hash‑based message  authentication  code,缩写为HMAC)算法的处理器及其处理方法。 背景技术 [0002] 哈希信息认证码(HMAC),是一种密钥相关的哈希运算信息认证码(message  authentication code,缩写为MAC);它可以保证数据的完整性,同时可以作为某个信息的 身分验证。 [0003] 已知的技术中,都是使用多条指令集架构(Instruction Set Architecture,简称 ISA)指令操作处理器实现HMAC算法,无法有效保护运算过程中生成的中间数据,所以安全 性较差。 [0004] 如何高效且更安全的完成HMAC算法,为本技术领域一项重大课题。 发明内容 [0005] 本发明以高安全性设计提出具备哈希信息认证码(HMAC)算法的处理器及其哈希 信息认证码编码方法。 [0006] 根据本发明一种实施方式实现的处理器包括:微码储存器、解码器、以及执行单 元。该微码储存器储存微码。该解码器在响应于指令集架构的单一条哈希信息认证码算法 指令时,根据该微码储存器储存的该微码,转换出多条微指令。根据该解码器提供的上述多 条微指令,该执行单元对取自系统内存的输入文本,进行哈希信息认证码算法,转换出哈希 信息认证码储存至该系统内存。 [0007] 根据本发明一种实施方式实现的哈希信息认证码编码方法,包括:响应于指令集 架构的单一条哈希信息认证码算法指令,根据微码,转换出多条微指令;以及以上述多条微 指令操作执行单元,对取自该处理器外部系统内存的输入文本,进行哈希信息认证码算法, 转换出哈希信息认证码储存至该系统内存。 [0008] 通过本发明提供的处理器及其哈希信息认证码编码方法,单一条指令集架构 (ISA)指令就足以实现哈希信息认证码算法,且哈希信息认证码算法过程中生成的中间数 值可隔绝在处理器内部,使得在处理器外部无法窥探这些中间数值,极大地提高了安全性。 [0009] 下文特举实施例,并配合附图,详细说明本发明内容。 附图说明 [0010] 图1为方块图,根据本发明一种实施方式图解一处理器100; [0011] 图2根据本发明一种实施方式图解指令集架构(ISA)的HMAC算法指令的格式、以及 输入寄存器设计; [0012] 图3还图解ISA指令撰写的一种实施方式;以及 [0013] 图4A和4B为流程图,根据本发明一种实施方式图解HMAC算法指令引发的步骤程 5 5 CN 113704791 A 说明书 2/7页 序,相应多条微指令。 具体实施方式 [0014] 以下叙述列举本发明的多种实施例。以下叙述介绍本发明的基本概念,且并非意 图限制本发明内容。实际发明范围应依照权利要求书来界定。 [0015] 本发明揭示一种具备哈希信息认证码(HMAC)算法的处理器。本发明为HMAC算法设 计指令集架构(Instruction Set Architecture,简称ISA)的一哈希信息认证码(HMAC)算 法指令。处理器支持的指令集可包括x86指令集。 [0016] 一种实施方式中,本发明在处理器的微码(ucode)有对应于该HMAC算法指令的设 计,且还可以在该处理器的一密码执行单元增设一哈希值算法加速器(包括SM3、SHA256和/ 或其它哈希值算法的运算硬件)。处理该HMAC算法指令时,处理器参照该微码,转换出多条 微指令,根据架构寄存器(architecture registers)的内容操作处理器硬件,实现HMAC算 法。包括该哈希值算法加速器的该密码执行单元将使得HMAC算法更快速安全。使用本技术, HMAC算法过程中产生的中间数值可妥善隐藏在处理器内部硬件储存空间中,所以不会被处 理器执行的其它指令访问,从而保证了安全性。 [0017] 图1为方块图,根据本发明一种实施方式图解一处理器100。基于分支预测器 (branch  predictor)102,指令根据指令转译后备缓冲区(instruction  translation  lookaside buffer)ITLB的转译结果,从一系统内存140加载到指令高速缓存(instruction  cache)104,待缓存至指令缓存器(instruction buffer,简称XIB)106,再推入格式指令队 列(format  instruction queue,简称FIQ)108,交由解码器110根据微码(ucode,储存在一 微码储存器)解码成流水线可识别的多条微指令(microinstructions),推入指令队列 (instruction  queue,简称XIQ)112,再经重命名单元(rename)114存入相应的保留站 (reservation  station)RS,驱动执行单元(execution  unit),包括:逻辑运算单元 (arithmetic  logical unit)ALU、内存顺序缓存区(memory order buffer)116的地址产生 单元(address generating unit)AGU、多种指令的对应硬件Fadd、Fmul、Fmisc、MMX、以及密 码执行单元118。运算所需要的数据则可以是根据数据转译后备缓冲区(data translation  lookaside buffer)DTLB的转译结果,从系统内存140加载到数据高速缓存(data  cache) 120,再缓存至该内存顺序缓存区116。处理器100还包括一重排缓存区(reorder buffer,简 称ROB)122以及核心寄存器(core registers)124,寄存处理器100操作所需信息。所示实施 方式中,密码执行单元118包括哈希值算法加速器126(包括SM3、SHA256和/或其它哈希值算 法的运算硬件,由一加速器操作微指令操作),且核心寄存器124包括架构寄存器(e.g., x86architecture registers)128、以及内部寄存器(internal registers)130。此外,处理 器100还具有一存储器132(也称为密钥内存)。在一实施例中,存储器132为一静态随机存取 存储器(SRAM)。图1所示组件将响应于ISA的单一条HMAC算法指令而动作。 [0018] 解码器110在基于微码ucode对应的一HMAC算法指令生成微指令时,会参考架构寄 存器128内容。架构寄存器128内容可包括:控制字(control word),例如,设定密钥来源、选 择哈希值算法;系统内存140存取信息,例如,输入文本、HMAC算法结果、甚至软件密钥的存 取信息。架构寄存器128(即,通用寄存器)用作设定处理器100硬件实施HMAC算法的输入寄 存器(input registers)。 6 6 CN 113704791 A 说明书 3/7页 [0019] 一种实施方式中,HMAC算法产生的中间数值储存在内部寄存器130中。内部寄存器 130可理解为物理寄存器堆(physical register file),软件无法访问。 [0020] 一种实施方式中,存储器132储存硬件密钥。一种实施方式中,处理器100也可以是 以其内部其他储存装置(通称为密钥内存)储存硬件密钥。 [0021] 一种实施方式中,响应于单一条HMAC算法指令而产生的多条微指令包括驱动以下 动作:通过内存顺序缓存区116存取该系统内存140,获取输入文本、甚至原始密钥;以逻辑 运算单元ALU提供的异或运算、以及密码执行单元118提供的哈希值算法加速器(126)对输 入文本进行HMAC算法;以及通过内存顺序缓存区116将生成的HMAC回存系统内存140。 [0022] 图2根据本发明一种实施方式图解指令集架构(ISA)的HMAC算法指令的格式、以及 输入寄存器设计。 [0023] 图2图解ISA的HMAC算法指令的格式202,并以表格204分条列举图1的架构寄存器 128如何定义作为输入寄存器。格式202的前缀、操作码(opcode)、字段ModR/M为:0xF2 0x0F  0xA6  0xC8(也可以是其它值,本发明对此不做限定)。字段SIB、Displacement、以及 Immediate则不填(non)。在图1的解码器110识别出编码“0xF2 0x0F 0xA6 0xC8”后,即依照 微码ucode设计产生多条微指令,然后产生的多条微指令根据表204之定义解读输入寄存 器,以基于输入寄存器内容操作处理器100内部硬件进行HMAC算法。 [0024] 参考表格204,对应ISA的HMAC算法指令的输入寄存器涉及图1的架构寄存器128中 的寄存器EAX、EBX、ECX、EDX、ESI、以及EDI。寄存器EAX储存的是软件密钥(software root  key)的地址指针。寄存器EBX储存的是软件密钥的长度,以字节(byte)为计数单位。寄存器 ECX储存的是输入文本的长度。寄存器EDX储存的是控制字。寄存器ESI储存的是输入文本的 地址指针。寄存器EDI储存的是保存HMAC算法计算结果HMAC(即哈希信息认证码)的地址指 针。 [0025] 寄存器EDX储存的控制字可如下解读。在一实施例中,比特[1]标注所采用的哈希 值算法;值“0”代表采用哈希值算法SHA256,而值“1”代表采用哈希值算法SM3。此外,HMAC算 法的密钥可有多种来源。寄存器EDX比特[2]标注密钥来源;值“0”代表采用软件密钥(即寄 存器EAX、EBX内容有意义),值“1”代表采用硬件密钥(即寄存器EAX、EBX内容无意义,乃从处 理器100的内部的密钥内存获取硬件密钥)。在另一实施例中,也可使用寄存器EDX的比特 [0]标注所采用的哈希值算法,值“1”代表采用哈希值算法SHA256,而值“0”代表采用哈希值 算法SM3;并使用寄存器EDX的比特[3]标注密钥来源,值“1”代表采用软件密钥,值“0”代表 采用硬件密钥。总之,本发明并不限定每种设置所使用的具体比特,以及表示特定设置时所 使用的具体数值。 [0026] 在另一实施例中,对应ISA的HMAC算法指令的输入寄存器只包括图1的架构寄存器 128中的寄存器ECX、ESI、以及EDI。HMAC算法的密钥只有一种来源,即来源于处理器100的内 部的密钥内存中。由图1中的解码器110转换出的多条微指令,使得执行单元从密钥内存获 取硬件密钥。 [0027] 输入寄存器也可有其他设定(比如使用寄存器EAX储存控制字、使用寄存器EDX储 存输入文本的长度,等等),取决于使用者设计。 [0028] 图3还图解ISA指令撰写的一种实施方式。程序代码300可包括以上格式202(图2) 的一条HMAC算法指令302。该条HMAC算法指令302之前可包括至少一条寄存器设定指令304, 7 7 CN 113704791 A 说明书 4/7页 用于填写图1的架构寄存器128,为HMAC算法指令302的执行做准备,图1的架构寄存器128有 寄存器EAX、EBX、ECX、EDX、ESI、以及EDI。例如,以指令304将软件密钥的地址指针填入寄存 器EAX,将软件密钥的长度填入寄存器EBX,将输入文本的长度填入寄存器ECX,将控制字填 入寄存器EDX,将输入文本的地址指针填入寄存器ESI,且将保存HMAC算法计算结果的地址 指针填入寄存器EDI。HMAC算法的输入寄存器内容即可在HMAC算法指令302执行前备妥。图1 的解码器110在解码该条HMAC算法指令302时,即可从微码ucode转换出多条微指令,根据输 入寄存器内容操作处理器100的执行单元。 [0029] 图4A和4B为流程图,根据本发明一种实施方式图解HMAC算法指令引发的步骤程 序,相应多条微指令。 [0030] 步骤S402,处理器100判读寄存器EDX的比特[2]。若EDX[2]为1,流程进入步骤 S404,使得处理器100从一存储器132获取一硬件密钥,作为原始密钥KEY。若EDX[2]为0,流 程进入步骤S406。 [0031] 步骤S406,处理器100判读寄存器EAX,获取软件密钥的地址指针,并判读寄存器 EBX,获取软件密钥的长度。步骤S406使得处理器100根据寄存器EAX、EBX判读结果,从系统 内存140获取软件密钥,作为原始密钥KEY。相关微指令涉及内存顺序缓存区116的操作。 [0032] 步骤S408,处理器100检查原始密钥KEY的尺寸是否大于B字节,其中B为哈希值算 法所支持的输入区块尺寸(以字节为计数单位);在一实施例中,B的值为64。若步骤S408的 判断结果为“是”(即原始密钥KEY过长),流程进行步骤S410。反之,流程进行步骤S412。 [0033] 步骤S410,处理器100根据寄存器EDX的比特[1]选择的哈希值算法(SHA256/SM3), 对过长的原始密钥KEY进行处理,生成哈希信息认证码(HMAC)密钥K0(=HASH(KEY))。具体 而言,处理器100的执行单元执行下面的步骤:第一步,扩展原始密钥KEY;先计算原始密钥 KEY的长度len,计算len与B的余数r。然后,在原始密钥KEY后面填充r‑B个字节的0。扩展后, 原始密钥的字节长度为B的整数倍。第二步,计算填充后密钥KEY的哈希值;首先,将填充后 密钥KEY分为多组,每组长度为B字节;然后,使用哈希值算法加速器126依次对每组密钥进 行运算,最后得到密钥K0(K0长度为B字节)。然后,处理器100再进行图4B步骤。相关微指令 涉及哈希值算法加速器126的操作。 [0034] 步骤S412,处理器100检查原始密钥KEY尺寸是否小于B字节。若判断结果为“是” (即原始密钥KEY过短),流程进行步骤S414。反之,流程进行步骤S416。相关微指令涉及逻辑 运算单元ALU的操作。 [0035] 步骤S414,处理器100的执行单元扩展过短的原始密钥KEY(如,填0),使得扩展后 的原始密钥的长度为B字节,得HMAC密钥K0,再进行图4B步骤。 [0036] 步骤S416,处理器100为其他状况确定HMAC密钥K0值。长度恰为B字节的原始密钥 KEY就设定为HMAC密钥K0(=KEY)。倘若先前是如步骤S404设计,获取硬件密钥作为原始密 钥KEY,由于硬件密钥已经被预先设置为长度为B字节,可直接将硬件密钥设定为HMAC密钥 K0(=KEY)。接着,流程进入图4B步骤。 [0037] 步骤S418,处理器100对HMAC密钥K0、以及内部填充ipad(inner  pad)作异或 (exclusive or)运算,得一中间数值T1:T1=K0^ipad。内部填充ipad为字节值x36复制B次 形成的常数,由处理器100内部提供。根据前文内容可知,K0的长度为B字节,ipad的长度也 为B字节,所以T1的长度是B字节。相关微指令涉及逻辑运算单元ALU的操作。 8 8 CN 113704791 A 说明书 5/7页 [0038] 步骤S420,处理器100采用寄存器EDX[1]选择的哈希值算法,对中间数值T1和输入 文本TEXT(根据寄存器ESI、ECX判读结果取自系统内存140),进行哈希值算法,得一中间数 值T2:T2=HASH(T1TEXT)其中,表示连接操作。具体而言,计算中间值T2的步骤为:第一 步,将中间数据T1和输入文本TEXT连接,得T1TEXT。第二步,扩展T1TEXT,使得扩展后T1 TEXT的长度为B的整数倍;具体扩展方法与步骤S410中所述的扩展原始密钥KEY的方法相 同,此处就不赘述了。第三步,将扩展后T1TEXT分为多组,每组长度为B字节,然后依次将 每组数据发送给哈希值算法加速器126进行哈希值计算,生成中间数值T2。相关微指令涉及 内存顺序缓存区116、逻辑运算单元ALU、以及哈希值算法加速器126的操作。在一实施例中, 处理器100先将中间数值T1发送给哈希值算法加速器126进行哈希值计算;然后从系统内存 140读取TEXT的前B字节的数据TEXT1,并将TEXT1发送给哈希值算法加速器126进行哈希值 计算;然后再从系统内存140读取TEXT的下一B字节的数据TEXT2,并将TEXT2发送给哈希值 算法加速器126进行哈希值计算;以此类推,直到处理完全部的输入数据TEXT。如果最后一 次读取到的输入数据TEXTn的长度不足B字节,则先使用步骤S410中所述的扩展原始密钥 KEY的方法将TEXTn扩展为B字节长度,然后再将TEXTn发送给哈希值算法加速器126进行哈 希值计算。 [0039] 步骤S422,处理器100对HMAC密钥K0、以及外部填充opad(outer pad)作异或运算, 得一中间数值T3:T3=K0^opad。外部填充opad为字节值x5c复制B次形成的常数,由处理器 100内部提供。相关微指令涉及逻辑运算单元ALU的操作。 [0040] 步骤S424,处理器100采用寄存器EDX[1]选择的哈希值算法,得一中间数值T4:T4 =HASH(T3T2),并取该中间数值T4最左边t比特作为哈希信息认证码HMAC,t为整数;其 中,T3T2表示中间数值T3与T2进行连接操作。相关微指令涉及逻辑运算单元ALU、以及哈 希值算法加速器126的操作。 [0041] 步骤S426,处理器100根据寄存器EDI所载的地址指针,将哈希信息认证码HMAC存 入系统内存140。相关微指令涉及内存顺序缓存区116的操作。 [0042] 前述中间数值T1~T4可以用图1的系统内存140暂存。然而,特别有一种实施方式 是把中间数值T1~T4也保护在处理器100中(例如,存在图1的内部寄存器130),以提高安全 性。如此设计将使得处理器100与系统内存140之间只有输入文本TEXT的传递,以及最后哈 希信息认证码HMAC的回存,HMAC算法的其他高机密内容完全不曝露在系统内存。 [0043] 另一种实施方式中,密码执行单元118还在自己内部额外提供逻辑运算单元ALU部 分硬件(如,异或硬件),与哈希值算法加速器126结合,形成HMAC算法加速器,加速HMAC算 法。 [0044] 根据本发明一种实施方式实现的处理器100包括:一微码储存器(储存微码ucode 的装置)、一解码器110、以及一执行单元(包括至少逻辑运算单元ALU、内存顺序缓存区116 以及密码执行单元118)。该微码储存器储存一微码ucode。该解码器110在响应于一指令集 架构(ISA)的单一条HMAC算法指令时,根据该微码储存器储存的该微码ucode,转换出多条 微指令。根据该解码器100提供的上述多条微指令,该执行单元对取自一系统内存140的一 输入文本,进行一HMAC算法,转换出一HMAC储存至该系统内存140。 [0045] 根据本发明一种实施方式实现的HMAC编码方法,包括:响应于一指令集架构(ISA) 的单一条HMAC算法指令,根据一微码ucode,转换出多条微指令;以及以上述多条微指令操 9 9 CN 113704791 A 说明书 6/7页 作一执行单元(包括至少逻辑运算单元ALU、内存顺序缓存区116以及密码执行单元118),对 取自一系统内存140的一输入文本,进行一HMAC算法,转换出一HMAC储存至该系统内存140。 [0046] 相比本发明技术,传统技术需要使用多条指令集架构(ISA)指令才能实现HMAC算 法,无法有效保护运算过程中生成的中间数值,所以安全性较差。但是,通过本发明提供的 具备HMAC算法的处理器及其处理方法,只需使用指令集架构指令(ISA)的单一条HMAC算法 指令就可以实现HMAC算法。HMAC算法过程中生成的中间数值可储存在处理器100内部寄存 器130中,避免从处理器100外部访问这些中间数据,极大地提高了安全性。 [0047] 虽然本发明已以较佳实施例揭示如上,然其并非用于限定本发明,任何本领域技 术人员,在不脱离本发明的精神和范围内,当可做些许更动与润饰,因此本发明的保护范围 以权利要求书界定为准。 [0048] [符号说明] [0049] 100:处理器; [0050] 102:分支预测器; [0051] 104:指令高速缓存; [0052] 106:指令缓存器(XIB); [0053] 108:格式指令队列(FIQ); [0054] 110:解码器; [0055] 112:指令队列(XIQ); [0056] 114:重命名单元; [0057] 116:内存顺序缓存区; [0058] 118:密码执行单元; [0059] 120:数据高速缓存; [0060] 122:重排缓存区; [0061] 124:核心寄存器; [0062] 126:哈希值算法加速器; [0063] 128:架构寄存器; [0064] 130:内部寄存器; [0065] 132:存储器; [0066] 140:系统内存 [0067] 202:HMAC算法指令的格式; [0068] 204:表格,相应HMAC算法的输入寄存器设计; [0069] 300:程序代码; [0070] 302:HMAC算法指令; [0071] 304:至少一条寄存器设定指令; [0072] AGU:地址产生单元; [0073] ALU:逻辑运算单元; [0074] DTLB:数据转译后备缓冲区; [0075] Fadd、Fmul、Fmisc、MMX:执行单元的多个部位; [0076] ITLB:指令转译后备缓冲; 10 10 CN 113704791 A 说明书 7/7页 [0077] non:无填值; [0078] opcode、ModR/M、SIB、Displacement、immediate:字段; [0079] RS:保留站; [0080] S402…S426:步骤;以及 [0081] ucode:微码储存器储存的微码。 11 11 CN 113704791 A 说明书附图 1/5页 图1 12 12 CN 113704791 A 说明书附图 2/5页 图2 13 13 CN 113704791 A 说明书附图 3/5页 图3 14 14 CN 113704791 A 说明书附图 4/5页 图4A 15 15 CN 113704791 A 说明书附图 5/5页 图4B 16 16