CN115525342A - 一种sm3密码杂凑算法的加速方法及指令集处理器 - Google Patents

一种sm3密码杂凑算法的加速方法及指令集处理器 Download PDF

Info

Publication number
CN115525342A
CN115525342A CN202211280343.9A CN202211280343A CN115525342A CN 115525342 A CN115525342 A CN 115525342A CN 202211280343 A CN202211280343 A CN 202211280343A CN 115525342 A CN115525342 A CN 115525342A
Authority
CN
China
Prior art keywords
instruction
message
word
iteration
words
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.)
Pending
Application number
CN202211280343.9A
Other languages
English (en)
Inventor
何军
陈子钰
姜军
尹飞
蒋生健
李媛
范好好
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.)
SHANGHAI HIGH-PERFORMANCE INTEGRATED CIRCUIT DESIGN CENTER
Original Assignee
SHANGHAI HIGH-PERFORMANCE INTEGRATED CIRCUIT DESIGN CENTER
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 SHANGHAI HIGH-PERFORMANCE INTEGRATED CIRCUIT DESIGN CENTER filed Critical SHANGHAI HIGH-PERFORMANCE INTEGRATED CIRCUIT DESIGN CENTER
Priority to CN202211280343.9A priority Critical patent/CN115525342A/zh
Publication of CN115525342A publication Critical patent/CN115525342A/zh
Pending legal-status Critical Current

Links

Images

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/38Concurrent instruction execution, e.g. pipeline or look ahead
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • General Health & Medical Sciences (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

本发明涉及一种SM3密码杂凑算法的加速方法及指令集处理器,其中,加速方法基于SM3扩展指令集,采用并行流水线和指令级并行技术加速执行SM3密码杂凑算法;所述SM3扩展指令集采用RISC架构,包括SM3消息字扩展指令和SM3工作变量字迭代更新指令,所述SM3消息字扩展指令采用多消息字并行扩展算法以加速SM3消息扩展函数,所述SM3工作变量字迭代更新指令采用多轮迭代融合算法以加速SM3迭代压缩函数。所述指令集处理器支持SM3消息字扩展指令和SM3工作变量字迭代更新指令流水执行,延迟分别为1拍和5拍。本发明可以显著地提高处理器执行SM3密码杂凑算法的速度。

Description

一种SM3密码杂凑算法的加速方法及指令集处理器
技术领域
本发明涉及处理器设计和信息安全技术领域,特别是涉及一种SM3密码杂凑算法的加速方法及指令集处理器。
背景技术
密码安全深刻地影响着信息安全和国家安全。为保障密码安全,国家密码管理办公室制定并颁布了一系列的密码标准,构建了我国完善的密码体系结构。SM3密码杂凑算法是国家密码管理局于2010年颁布的一种密码杂凑(Hash)算法,广泛应用在数字签名和认证、随机数生成、消息验证码生成与验证等技术中,加速处理器执行SM3密码杂凑算法的速度具有重要意义。
SM3密码杂凑算法是一种典型的密码杂凑(Hash)算法,其核心算法是SM3消息扩展函数和SM3迭代压缩函数。SM3密码杂凑算法的主要功能是对长度为l(l<264)比特的消息m,进行填充和迭代压缩,生成杂凑值,杂凑值的长度为256比特。其主要特点是安全性好、计算复杂度大,其中SM3消息字扩展过程需要进行52轮的Wj消息字(32位)迭代生成和64个W’j消息字生成;SM3压缩函数需要进行64轮的迭代压缩,才能生成杂凑值。SM3密码杂凑算法在拥有很强的安全性的同时,不可避免的带来了计算复杂度大的问题,尤其是在通用处理器中采用通用指令集实现SM3密码杂凑算法时往往会占用非常多的计算资源。
现有加速SM3密码杂凑算法的方法主要有软件算法优化、专用硬件加速和指令集架构(ISA)扩展等方法,其中软件算法优化具有灵活性强、硬件开销小的优势,但是优化的空间有限,而且存在侧信道攻击等安全威胁,在数据量大、实时处理要求高的应用背景下,软件算法优化的方式越来越难以满足实际的应用需求;专用硬件加速通常加速性能好,但是硬件开销大、成本高昂,且扩展性不好,不易直接移植或连接到通用处理器的执行过程中;采用指令集架构(ISA)扩展的方式既能加速SM3密码算法的执行,又具有设计灵活性,同时兼具软硬件加速优势。特别是目前的主流的通用处理器指令集都能提供高度数据并行的指令,其中支持单指令多数据(SIMD)的向量寄存器就非常适合实现多数据并行处理的指令,可用于设计并扩展专门用于加速SM3密码杂凑算法的指令集,以加速通用处理器实现SM3密码杂凑算法的性能,提高通用处理器在密码安全应用领域的性能。
当前,国际主流的处理器指令集架构(ISA)主要有Intel的x86架构、IBM Power架构和ARM公司的ARM架构等,国内的主流处理器厂商大多都是采用Intel、IBM和ARM等公司授权的指令集架构开展处理器研制和生产。采用国外的指令集架构具有开发应用生态相对成熟的优势,但存在授权期限和版本升级等问题,且不方便为我国的信息安全技术应用进行专用扩展。
发明内容
本发明所要解决的技术问题是提供一种SM3密码杂凑算法的加速方法及指令集处理器,可以显著地提高处理器执行SM3密码杂凑算法的速度。
本发明解决其技术问题所采用的技术方案是:提供一种SM3密码杂凑算法的加速方法,基于SM3扩展指令集,采用并行流水线和指令级并行技术加速执行SM3密码杂凑算法;所述SM3扩展指令集采用RISC架构,指令采用定长的32位格式,源操作数和目标操作数均为256位;所述SM3扩展指令集包括SM3消息字扩展指令和SM3工作变量字迭代更新指令,所述SM3消息字扩展指令采用多消息字并行扩展算法以加速SM3消息扩展函数,所述多消息字并行扩展算法以填充后消息中的16个消息字作为初始输入,单次执行就能完成8个消息字的生成,依次执行所述SM3消息字扩展指令7次,生成68个消息字;所述SM3工作变量字迭代更新指令采用多轮迭代融合算法以加速SM3迭代压缩函数,所述多轮迭代融合算法能将经过所述SM3消息字扩展指令处理后得到的消息字的扩展融合到所述SM3迭代压缩函数执行过程中,并且每次以消息字中的8个消息字和迭代中的工作变量字作为输入,完成SM3工作变量字的4轮迭代更新,依次执行所述SM3工作变量字迭代更新指令16次,完成SM3算法工作变量字的第0~63轮迭代更新,从而得到所述SM3压缩函数最终输出的工作变量字。
所述采用并行流水线和指令级并行技术加速执行SM3密码杂凑算法具体包括以下步骤:
(1)以填充后消息中的16个消息字W0,W1,……,W15作为输入,执行第1条所述SM3消息字扩展指令,生成新的消息字W16,W17,……,W23;同时,以消息字W0,W1,……,W7和256比特的工作状态变量初始值V(0)作为输入,执行第一条所述SM3工作变量字迭代更新指令;
(2)连续以最新的16个消息字作为输入,连续执行6条所述SM3消息字扩展指令,每次执行结果输出的消息字记为W8i+8,W8i+9,……,W8i+15,最终得到SM3密码杂凑算法的68个消息字W1,W2,……,W67;在第一条所述SM3工作变量字迭代更新指令执行5拍后输出工作状态变量V(3),以新的消息字和工作状态变量作为输入,然后采用相同的方式连续循环执行15条所述SM3工作变量字迭代更新指令,每次执行结果输出的工作状态变量记为V(4j-1)
(3)将最终的执行结果输出的工作状态变量V(63)作为最终输出的256位的SM3杂凑值y={H,G,F,E,D,C,B,A}。
所述SM3消息字扩展指令采用寄存器格式的简单运算指令格式,具体为VSM3MSWVa,Vb,Vc,用于指示两个256位的源寄存器Va和源寄存器Vb中的两个操作数进行运算,结果保存到256位的目标寄存器Vc中,32位指令的[31:26]位表示6位的操作码,[25:21]位表示选择由32个256位的寄存器组成的寄存器文件之一作为源寄存器Va,保存指令的源操作数,[20:16]位表示选择由32个256位的寄存器组成的寄存器文件之一作为源寄存器Vb,保存指令的源操作数,[15:13]位总是全“0”,[12:5]位表示用于确定具体指令功能的8位功能码,[4:0]位表示选择由32个256位的寄存器组成的寄存器文件之一作为目标寄存器Vc,保存指令的运算结果。
所述SM3消息字扩展指令具体为:根据当前的16个32位消息字W15~W0,并行生成SM3密码杂凑算法后续8个消息字W23~W16,其中,W7~W0保存在源寄存器Va中,W15~W8保存在源寄存器Vb中,生成的结果W23~W16保存在一个目标寄存器Vc中;结果W23~W16中的每一个结果字Wi的生成逻辑是:(Temp XOR(Temp<<<15)XOR(Temp<<<23))XOR(Wi-13<<<7)XOR Wi-6,其中XOR表示按位异或、<<<表示循环左移、Temp是一个32位的中间变量字,Temp的生成逻辑是Wi-16 XOR Wi-9XOR(Wi-3<<<15);单次执行所述SM3消息字扩展指令就能生成SM3密码杂凑算法的8个消息字,依次执行所述SM3消息字扩展指令7次,每次用源寄存器Vb中的数据更新源寄存器Va,用生成的目标寄存器Vc中的数据更新源寄存器Vb,生成SM3密码杂凑算法的68个消息字W0,W1,……,W67
所述SM3工作变量字迭代更新指令采用立即数格式的浮点复合运算指令格式,具体为VSM3RVa,Vb,#c,Vd,用于指示两个256位的源寄存器Va和源寄存器Vb中的两个操作数以及一个5位的立即数#c进行运算,结果保存到一个256位的目标寄存器Vd中,32位指令的[31:26]位表示6位的操作码,[25:21]位表示选择由32个256位的寄存器组成的寄存器文件之一作为源寄存器Va,保存指令的源操作数,[20:16]位表示选择由32个256位的寄存器组成的寄存器文件之一作为源寄存器Vb,保存指令的源操作数,[15:10]位表示用于确定具体指令功能的6位功能码,[9:5]位表示5位的立即数,指示循环迭代次数,[4:0]位表示选择由32个256位的寄存器组成的寄存器文件之一作为目标寄存器Vd,保存指令的运算结果。
所述SM3工作变量字迭代更新指令具体为:根据当前的8个32位工作变量字{H,G,F,E,D,C,B,A}和8个消息字{W7~W0},以及立即数#c的值,按照SM3算法完成工作变量字第4*#c~4*#c+3轮的迭代更新,其中,{W7~W0}保存在源寄存器Va中,工作变量字{H,G,F,E,D,C,B,A}保存在源寄存器Vb中,更新后的工作变量字{H,G,F,E,D,C,B,A}保存在目标寄存器Vd中;每一轮迭代更新会根据立即数#c的不同选择不同的迭代常数T以及迭代逻辑,迭代过程中设置中间变量字SS1、SS2、TT1、TT2、P0,每一个中间变量字均为32位;对于第4*#c~4*#c+3轮的4轮(i=0~3)迭代,当#c小于4时:迭代常数T=0x79cc4519,SS1的生成逻辑是:((A<<<12)+E+(T<<<(4*#c+i)))<<<7,SS2的生成逻辑是:SS2=SS1 XOR(A<<<12),TT1的生成逻辑是:TT1=(A XOR B XOR C)+D+SS2+(WiXOR Wi+4),TT2的生成逻辑是:TT2=(E XORFXORG)+H+SS1+Wi,P0的生成逻辑是:P0=TT2 XOR(TT2<<<9)XOR(TT2<<<17),其中XOR表示按位异或、<<<表示循环左移,更新过程为:H更新为G,G更新为F<<<19,F更新为E,E更新为P0,D更新为C,C更新为B<<<9,B更新为A,A更新为TT1;当#c大于等于4时:迭代常数T=0x7a879d8a,SS1的生成逻辑是:((A<<<12)+E+(T<<<(4*#c+i)))<<<7,SS2的生成逻辑是:SS2=SS1 XOR(A<<<12),TT1的生成逻辑是:TT1=((A AND B)OR(A AND C)OR(B AND C))+D+SS2+(Wi XORWi+4),TT2的生成逻辑是:TT2=((E AND F)OR(NOT(E)AND G))+H+SS1+Wi,P0的生成逻辑是:P0=TT2 XOR(TT2<<<9)XOR(TT2<<<17),其中XOR表示按位异或、<<<表示循环左移、AND表示按位与、OR表示按位或、NOT表示按位取反,更新过程为:H更新为G,G更新为F<<<19,F更新为E,E更新为P0,D更新为C,C更新为B<<<9,B更新为A,A更新为TT1;单次执行所述SM3工作变量字迭代更新指令就能完成SM3工作变量字的4轮迭代更新,依次执行所述SM3工作变量字迭代更新指令16次,每次用8个消息字更新源寄存器Va,用生成的目标寄存器Vd中的数据更新源寄存器Vb,完成SM3算法工作变量字的第0~63轮迭代更新,从而得到SM3压缩函数最终输出的工作变量字{H,G,F,E,D,C,B,A}。
本发明解决其技术问题所采用的技术方案是:提供一种指令集处理器,包括寄存器文件、SM3消息字扩展指令执行单元和SM3工作变量字迭代更新指令执行单元;所述寄存器文件用于为所述SM3消息字扩展指令执行单元和SM3工作变量字迭代更新指令执行单元提供源操作数以及存储执行结果;所述SM3消息字扩展指令执行单元和SM3工作变量字迭代更新指令执行单元放置在不同的执行流水线上,分别占用所述寄存器文件不同的读、写端口;
所述SM3消息字扩展指令执行单元具有:
2组256位的输入,用于接收所述SM3消息字扩展指令的操作数A和操作数B;
一组256位的输出,用于输出所述SM3消息字扩展指令的执行结果;
所述SM3消息字扩展指令执行单元采用硬件逻辑实现移位运算和8个消息字的并行处理;所述SM3消息字扩展指令执行单元能够流水的执行所述SM3消息字扩展指令;
所述SM3工作变量字迭代更新指令执行单元具有:
2组256位的输入,用于接收所述SM3消息字扩展指令的操作数A和操作数B;
一组5位的输入,用于接收所述SM3消息字扩展指令的立即数操作数C;
一组256位的输出,用于输出VSM3R指令的执行结果,经过4轮迭代更新SM3工作变量字,得到迭代后的新工作变量字{H,G,F,E,D,C,B,A};
所述SM3工作变量字迭代更新指令执行单元采用硬件执行所述SM3迭代压缩函数,采用硬件逻辑实现移位运算和迭代常量处理;所述SM3工作变量字迭代更新指令执行单元能够流水执行所述SM3消息字扩展指令。
所述SM3消息字扩展指令执行单元执行延迟为1拍;所述SM3工作变量字迭代更新指令执行单元设置4级迭代执行站台和1级输出站台,执行总延迟为5拍,所述指令集处理器支持所述SM3消息字扩展指令和SM3工作变量字迭代更新指令并行流水执行。。
有益效果
由于采用了上述的技术方案,本发明与现有技术相比,具有以下的优点和积极效果:
本发明采用多消息字并行扩展算法的SM3消息字扩展指令(VSM3MSW)可以实现多消息字并行扩展生成,采用多轮迭代融合算法的SM3工作变量字迭代更新指令(VSM3R)可以将消息字W’0,W’1,……,W’63的扩展融合到SM3迭代压缩函数执行过程中,从而实现SM3工作变量字的多轮迭代更新并行执行;使用本发明的SM3扩展指令集编写SM3密码杂凑算法程序,可完成SM3密码杂凑算法中消息扩展和迭代压缩函数的各项功能,显著简化了软件程序,有利于算法开发和减小算法的存储空间。
本发明采用并行流水线和指令并行技术充分实现了SM3密码杂凑算法的内在并行执行潜力,显著提升了SM3密码杂凑算法实现的性能。
本发明中VSM3MSW指令执行延迟为1拍,VSM3R指令执行延迟为5拍,均支持流水执行,最短只需80拍就能完成一次SM3密码杂凑算法中的SM3消息扩展和SM3迭代压缩过程;5组不相关的数据在该处理器中流水执行,最短只需85拍就能完成5个杂凑值的生成,极大的加速了SM3密码杂凑算法的执行速度。
本发明充分实现了SM3密码杂凑算法中消息扩展、多轮迭代的并行潜力,并且具有扩展性好的优势,容易集成到通用处理器已有的执行部件中。可应用于国产通用处理器,也可应用在信息安全技术领域的专用芯片中以提升执行SM3密码杂凑算法的速度。
附图说明
图1是SM3扩展指令集的执行过程框图;
图2是加速SM3密码杂凑算法的方法的实现流程框图;
图3是SM3多消息字并行扩展算法流程图;
图4是SM3多轮迭代融合算法流程图;
图5是寄存器格式的简单运算指令格式示意图;
图6是立即数格式的浮点复合运算指令格式示意图;
图7是VSM3MSW指令电路结构图;
图8是VSM3R指令电路结构图;
图9是根据本发明的一个实施例的处理器或处理器核的执行流水线框图。
具体实施方式
下面结合具体实施例,进一步阐述本发明。应理解,这些实施例仅用于说明本发明而不用于限制本发明的范围。此外应理解,在阅读了本发明讲授的内容之后,本领域技术人员可以对本发明作各种改动或修改,这些等价形式同样落于本申请所附权利要求书所限定的范围。
SM3密码杂凑算法主要包括填充和迭代压缩两部分,算法的核心在于迭代压缩部分中的消息扩展函数和迭代压缩函数。SM3密码杂凑算法的基本运算单位是字,每个字为32比特。迭代压缩函数具有256比特的内部状态,记为V,包括8个32比特的工作变量字{H,G,F,E,D,C,B,A},每一轮迭代之后的内部状态记为V(i),V(0)为SM3密码杂凑算法定义的256比特的初始值IV。迭代压缩算法以填充后的256比特消息分组B(i)作为输入,经过消息扩展函数,扩展生成132个消息字W0,W1,……,W67,W’0,W’1,……,W’63,用于SM3压缩函数。以256比特的初始状态变量和扩展后的132个消息字作为输入,通过执行SM3压缩函数,经过64轮的迭代,就能生成最终的杂凑结果,得到256比特的杂凑值。
本发明的发明人发现在SM3密码杂凑算法的消息扩展过程中,W0,W1,……,W67的生成存在多消息字并行生成的潜力,可以同时并行生成多个消息字。W’0,W’1,……,W’63消息字在压缩函数的迭代过程中才使用,可以基于前68个消息字W0,W1,……,W67,融合到压缩函数迭代过程中并行处理,SM3压缩函数的迭代过程可以采用融合多伦迭代的方式执行。可以设计专用于加速SM3消息扩展和SM3压缩函数的指令,以充分实现SM3密码杂凑算法内部运算的并行潜力。此外,SM3消息扩展和SM3迭代压缩存在并行执行的潜力,可以通过设置独立的工作电路支持SM3消息字扩展指令(VSM3MSW)和SM3工作变量字迭代更新指令(VSM3R)同时开始而且并行执行;采用并行流水线和指令级并行执行技术可以并行实现多个数据不相关的SM3密码杂凑算法。从而大幅提升执行SM3密码杂凑算法的速度
本发明的实施方式涉及一种SM3密码杂凑算法的加速方法,该方法基于SM3扩展指令集,所述SM3扩展指令集采用RISC架构,如图1所示,包括一条用于加速SM3消息扩展函数的SM3消息字扩展指令(VSM3MSW)和一条用于加速SM3迭代压缩函数的SM3工作变量字迭代更新指令(VSM3R),所有指令均采用定长的32位格式,源操作数和结果均为256位。采用并行流水线和指令级并行技术加速执行SM3密码杂凑算法;针对不同的数据,VSM3MSW指令和VSM3R指令可并行流水执行,即多组不存在真相关的数据在流水线的不同执行站台并行执行,实现多个SM3密码杂凑算法,得到各自的杂凑值。
采用并行流水执行SM3消息字扩展指令(VSM3MSW)和SM3工作变量字迭代更新指令(VSM3R)来实现SM3杂凑值的生成,如图2所示,具体过程包括如下步骤:
1)以填充后消息中的16个消息字W0,W1,……,W15作为输入,执行第1条VSM3MSW指令,生成新的消息字W16,W17,……,W23;同时,以消息字W0,W1,……,W7和256比特的工作状态变量初始值V(0)作为输入,执行第一条VSM3R指令;
2)接着步骤1),连续以最新的16个消息字作为输入,连续执行6条VSM3MSW指令,每次执行结果输出的消息字记为W8i+8,W8i+9,……,W8i+15,最终得到SM3密码杂凑算法的68个消息字W1,W2,……,W67;在第一条VSM3R指令执行5拍输出工作状态变量V(3)后,以新的消息字和工作状态变量作为输入,然后采用相同的方式连续循环执行15条VSM3R指令,每次执行结果输出的工作状态变量记为V(4j-1)
3)以步骤2)最终的执行结果输出的工作状态变量V(63)作为最终输出的256位的SM3杂凑值y={H,G,F,E,D,C,B,A}。
SM3消息字扩展指令(VSM3MSW)采用多消息字并行扩展算法,单次执行该指令就能生成8个消息字(每个消息字32位);所述多消息字并行扩展算法如图3所示,其功能是以填充后消息中的16个消息字W0,W1,……,W15作为初始输入,单次执行就能完成8个消息字的生成;依次执行该指令7次,可以生成SM3算法的68个消息字W0,W1,……,W67
SM3工作变量字迭代更新指令(VSM3R)采用多轮迭代融合算法,单次执行该指令就能完成SM3工作变量字的4轮迭代更新;所述多轮迭代融合算法如图4所示,其功能是将消息字W’0,W’1,……,W’63的扩展融合到SM3迭代压缩函数执行过程中,并且每次以消息字W16,W17,……,W67中的8个消息字和迭代中的工作变量字{H,G,F,E,D,C,B,A}(每个工作变量字32位),作为输入,完成SM3工作变量字的4轮迭代更新;依次执行该指令16次,可以完成SM3算法工作变量字的第0~63轮迭代更新,从而得到SM3压缩函数最终输出的工作变量字{H,G,F,E,D,C,B,A}。
SM3消息字扩展指令(VSM3MSW)采用寄存器格式的简单运算指令格式,指令格式为VSM3MSW Va,Vb,Vc,用于指示两个256位的源寄存器Va和Vb中的两个操作数进行运算,结果保存到256位的目标寄存器Vc中,如图5所示,32位指令的[31:26]位表示6位的操作码(Opcode),[25:21]位表示选择由32个256位的寄存器组成的寄存器文件之一作为源寄存器Va,保存指令的源操作数,[20:16]位表示选择由32个256位的寄存器组成的寄存器文件之一作为源寄存器Vb,保存指令的源操作数,[15:13]位总是全“0”,[12:5]位表示用于确定具体指令功能的8位功能码(Function),[4:0]位表示选择由32个256位的寄存器组成的寄存器文件之一作为目标寄存器Vc,保存指令的运算结果。
SM3消息字扩展指令(VSM3MSW)的功能是根据当前的16个32位消息字W15~W0,生成SM3算法后续8个消息字W23~W16,其中W7~W0保存在源寄存器Va中,W15~W8保存在源寄存器Vb中,生成的结果W23~W16保存在一个目标寄存器Vc中,所述SM3消息字扩展指令(VSM3MSW)执行的操作是:
Figure BDA0003897733950000081
Figure BDA0003897733950000091
单次执行SM3消息字扩展指令(VSM3MSW)就能生成SM3算法的8个消息字。依次执行该指令7次,每次用Vb更新Va,用生成的Vc更新Vb,可以生成SM3算法的68个消息字W0,W1,……,W67
SM3工作变量字迭代更新指令(VSM3R)采用立即数格式的浮点复合运算指令格式,指令格式为VSM3RVa,Vb,#c,Vd,用于指示两个256位的源寄存器Va和Vb中的两个操作数以及一个5位的立即数#c进行运算,结果保存到一个256位的目标寄存器Vd中,如图6所示,32位指令的[31:26]位表示6位的操作码(Opcode),[25:21]位表示选择由32个256位的寄存器组成的寄存器文件之一作为源寄存器Va,保存指令的源操作数,[20:16]位表示选择由32个256位的寄存器组成的寄存器文件之一作为源寄存器Vb,保存指令的源操作数,[15:10]位表示用于确定具体指令功能的6位功能码(Function),[9:5]位表示5位的立即数,指示循环迭代次数,[4:0]位表示选择由32个256位的寄存器组成的寄存器文件之一作为目标寄存器Vc,保存指令的运算结果。
SM3工作变量字迭代更新指令(VSM3R)的功能是根据当前的8个32位工作变量字{H,G,F,E,D,C,B,A},和8个消息字{W7~W0},以及立即数#c的值(用于计算循环次数,合法取值范围是0~15),按照SM3算法完成工作变量字第4*#c~4*#c+3轮的迭代更新,其中{W7~W0}保存在寄存器Va中,工作变量字{H,G,F,E,D,C,B,A}保存在寄存器Vb中,更新后的工作变量字{H,G,F,E,D,C,B,A}保存在寄存器Vd中,所述SM3工作变量字迭代更新指令(VSM3R)执行的操作是:
Figure BDA0003897733950000092
Figure BDA0003897733950000101
Figure BDA0003897733950000111
单次执行SM3工作变量字迭代更新指令(VSM3R)就能完成SM3工作变量字的4轮迭代更新,依次执行该指令16次,每次用8个消息字更新Va,用生成的Vd更新Vb,可以完成SM3算法工作变量字的第0~63轮迭代更新,从而得到SM3压缩函数最终输出的工作变量字{H,G,F,E,D,C,B,A}。
本发明的实施方式还涉及一种指令集处理器,如图9所示,包括寄存器文件、SM3消息字扩展指令执行单元和SM3工作变量字迭代更新指令执行单元;所述寄存器文件用于为所述SM3消息字扩展指令执行单元和SM3工作变量字迭代更新指令执行单元提供源操作数以及存储执行结果;所述SM3消息字扩展指令执行单元和SM3工作变量字迭代更新指令执行单元放置在不同的执行流水线上,分别占用所述寄存器文件不同的读、写端口。
如图9所示,SM3消息字扩展指令执行单元采用VSM3MSW指令电路,SM3工作变量字迭代更新指令执行单元采用VSM3R指令电路。VSM3MSW指令电路和VSM3R指令电路放置在不同的执行流水线上,分别占用不同的寄存器文件读、写端口(也可以放在同一执行流水线上共享寄存器文件读、写端口,但会导致无法同时开始或同时完成VSM3MSW指令和VSM3R指令);VSM3MSW指令电路执行延迟为1拍,VSM3R指令电路执行延迟为5拍。通过SM3消息字扩展指令执行单元和SM3工作变量字迭代更新指令执行单元能够支持VSM3MSW指令和VSM3R指令同时开始的并行流水执行,从而实现更高的运算速度。具体实现时,指令执行延迟可以根据目标工作频率调整,重新设计流水站台,实现更高或者更低的工作频率。
VSM3MSW指令电路如图7所示,具有2组256位的输入用于接收VSM3MSW指令的操作数A和操作数B(来自寄存器文件),具有一组256位的输出用于输出VSM3MSW指令的执行结果(回写寄存器文件),是SM3算法的8个消息字;所述VSM3MSW指令电路执行一次可以完成一条VSM3MSW指令,执行延迟为1拍,采用硬件逻辑直接实现移位运算和8个消息字并行处理来提高指令的执行速度。
VSM3R指令电路如图8所示,具有2组256位的输入用于接收VSM3R指令的操作数A和操作数B(来自寄存器文件)、一组5位的输入用于接收VSM3R指令的立即数操作数C,具有一组256位的输出用于输出VSM3R指令的执行结果(回写寄存器文件),经过4轮迭代更新SM3工作变量字,得到迭代后的新工作变量字{H,G,F,E,D,C,B,A};所述VSM3R指令电路采用硬件执行压缩函数、硬件逻辑直接实现移位运算和迭代常量处理等方法提高指令的执行速度;所述VSM3R指令电路设置4级迭代执行站台和1级输出站台,执行总延迟为5拍,支持指令流水执行。
下面通过具体的实施例:通用处理器中一种用于SM3密码杂凑算法的加速方法,进一步说明本发明。
在执行第1条SM3指令之前,首先在处理器的寄存器中装入填充后的512位的消息字分组和256位的SM3工作状态变量的初始值IV,其中512位的消息字分组作为16个32位消息字W0~W15,256位的初始值IV作为压缩函数迭代变量初始值V(0),记为8个32位的状态字{H,G,F,E,D,C,B,A}。采用SM3扩展指令集处理器及方法加速SM3密码杂凑算法的过程如下:
(1)第1个时钟周期(第1拍),加速SM3密码杂凑算法的处理器同时开始执行第1条SM3消息字扩展指令(VSM3MSW)和第1条SM3工作变量字迭代更新指令(VSM3R),其中VSM3MSW指令电路的输入为填充后的消息字W0~W15,{W7~W0}作为VSM3MSW指令电路的操作数A,{W15~W8}作为操作数B;VSM3R指令电路的输入为填充后的消息字W0~W7,迭代变量初始值V(0)以及位宽为5位的立即数操作数5’b00000,其中消息字W7~W0作为VSM3R指令电路的操作数A,迭代变量初始值{H,G,F,E,D,C,B,A}作为操作数B,立即数操作数5’b00000作为操作数C。该时钟周期结束前VSM3MSW指令电路完成一组消息字的生成,得到SM3算法后续8个消息字W23~W16,VSM3R指令电路完成第1条VSM3R指令的第一个执行站台的执行,完成SM3压缩函数所定义的第1轮迭代。
(2)第2个时钟周期(第2拍),加速SM3密码杂凑算法的处理器开始执行第2条SM3消息字扩展指令(VSM3MSW),并继续执行第1条SM3工作变量字迭代更新指令(VSM3R)的第二个执行站台,其中VSM3MSW指令电路的输入为消息字W8~W23,{W8~W15}作为VSM3MSW指令电路的操作数A,{W16~W23}作为操作数B;VSM3R指令电路的第二执行站台继续执行第1条SM3工作变量字迭代更新指令(VSM3R),第一执行站台可以开始执行另一组不存在数据真相关的SM3压缩函数的迭代计算。该时钟周期结束前VSM3MSW指令电路完成新的一组消息字的生成,得到SM3算法后续8个消息字W31~W24,VSM3R指令电路完成第一条VSM3R指令的第二个执行站台的执行,完成SM3压缩函数所定义的第2轮迭代。
(3)第3个时钟周期(第3拍),加速SM3密码杂凑算法的处理器开始执行第3条SM3消息字扩展指令(VSM3MSW),并继续执行第1条SM3工作变量字迭代更新指令(VSM3R)的第三个执行站台,其中VSM3MSW指令电路的输入为消息字W16~W31,{W16~W23}作为VSM3MSW指令电路的操作数A,{W24~W31}作为操作数B;VSM3R指令电路的第三执行站台继续执行第1条SM3工作变量字迭代更新指令(VSM3R),第一、二执行站台可以执行另两组不存在数据真相关的SM3压缩函数的迭代计算。该时钟周期结束前VSM3MSW指令电路完成新的一组消息字的生成,得到SM3算法后续8个消息字W39~W32,VSM3R指令电路完成第一条VSM3R指令的第三个执行站台的执行,完成SM3压缩函数所定义的第3轮迭代。
(4)第4个时钟周期(第4拍),加速SM3密码杂凑算法的处理器开始执行第4条SM3消息字扩展指令(VSM3MSW),并继续执行第1条SM3工作变量字迭代更新指令(VSM3R)的第四个执行站台,其中VSM3MSW指令电路的输入为消息字W23~W39,{W31~W23}作为VSM3MSW指令电路的操作数A,{W39~W32}作为操作数B;VSM3R指令电路的第四执行站台继续执行第1条SM3工作变量字迭代更新指令(VSM3R),第一、二、三执行站台可以执行另三组不存在数据真相关的SM3压缩函数的迭代计算。该时钟周期结束前VSM3MSW指令电路完成新的一组消息字的生成,得到SM3算法后续8个消息字W47~W40,VSM3R指令电路完成第一条VSM3R指令的第四个执行站台的执行,完成SM3压缩函数所定义的第4轮迭代。
(5)第5个时钟周期(第5拍),加速SM3密码杂凑算法的处理器开始执行第5条SM3消息字扩展指令(VSM3MSW),并继续执行第1条SM3工作变量字迭代更新指令(VSM3R)的第5个执行站台,其中VSM3MSW指令电路的输入为消息字W31~W47,{W39~W31}作为VSM3MSW指令电路的操作数A,{W47~W40}作为操作数B;VSM3R指令电路的第5执行站台继续执行第1条SM3工作变量字迭代更新指令(VSM3R),第一、二、三、四执行站台可以执行另三组不存在数据真相关的SM3压缩函数的迭代计算。该时钟周期结束前VSM3MSW指令电路完成新的一组消息字的生成,得到SM3算法后续8个消息字W55~W48,VSM3R指令电路完成第1条VSM3R指令的第5个执行站台的执行,完成SM3压缩函数所定义的第4轮迭代结果的输出。
(6)第6个时钟周期(第6拍),加速SM3密码杂凑算法的处理器开始执行第6条SM3消息字扩展指令(VSM3MSW),并开始执行第2条SM3工作变量字迭代更新指令(VSM3R)的第1个执行站台,其中VSM3MSW指令电路的输入为消息字W39~W55,{W47~W39}作为VSM3MSW指令电路的操作数A,{W55~W48}作为操作数B;VSM3R指令电路的第1执行站台开始执行第2条SM3工作变量字迭代更新指令(VSM3R),输入为消息字W4~W11,第1条VSM3R指令的执行结果迭代变量V(3)以及位宽为5位的立即数操作数5’b00001,其中消息字W11~W4作为VSM3R指令电路的操作数A,迭代变量V(3):{H,G,F,E,D,C,B,A}作为操作数B,立即数操作数5’b00001作为操作数C。第二、三、四、五执行站台可以执行另四组不存在数据真相关的SM3压缩函数的迭代计算。该时钟周期结束前VSM3MSW指令电路完成新的一组消息字的生成,得到SM3算法后续8个消息字W63~W56,VSM3R指令电路完成第2条VSM3R指令的第1个执行站台的执行,完成SM3压缩函数所定义的第5轮迭代。
(7)第7个时钟周期(第7拍),加速SM3密码杂凑算法的处理器开始执行第7条SM3消息字扩展指令(VSM3MSW),并继续执行第2条SM3工作变量字迭代更新指令(VSM3R)的第2个执行站台,其中VSM3MSW指令电路的输入为消息字W39~W55,{W47~W39}作为VSM3MSW指令电路的操作数A,{W55~W48}作为操作数B;VSM3R指令电路的第2执行站台继续执行第2条SM3工作变量字迭代更新指令(VSM3R),第一、三、四、五执行站台可以执行另四组不存在数据真相关的SM3压缩函数的迭代计算。该时钟周期结束前VSM3MSW指令电路完成新的一组消息字的生成,得到SM3算法后续4个消息字W67~W64,VSM3R指令电路完成第2条VSM3R指令的第2个执行站台的执行,完成SM3压缩函数所定义的第6轮迭代。
(8)第8个时钟周期(第8拍),加速SM3密码杂凑算法的处理器开始执行另一个不存在数据真相关的SM3杂凑函数的第1条SM3消息字扩展指令(VSM3MSW),并继续执行上一组SM3杂凑函数的第2条SM3工作变量字迭代更新指令(VSM3R)的第3个执行站台,其中VSM3MSW指令电路的输入为新的一组填充后的消息字W15~W0,{W7~W0}作为VSM3MSW指令电路的操作数A,{W15~W8}作为操作数B;VSM3R指令电路的第3执行站台继续执行第2条SM3工作变量字迭代更新指令(VSM3R),第一、二、四、五执行站台可以执行另四组不存在数据真相关的SM3压缩函数的迭代计算。该时钟周期结束前VSM3MSW指令电路完成新的一组消息字的生成,得到SM3算法后续8个消息字W23~W16,VSM3R指令电路完成第2条VSM3R指令的第3个执行站台的执行,完成SM3压缩函数所定义的第7轮迭代。
(9)继续按照上述步骤(1)~(8)的规律依次顺序执行72个周期,到第80个时钟周期(第80拍)结束,经过了消息扩展和64轮压缩迭代,第一组进入加速SM3密码杂凑算法的处理器的SM3迭代压缩函数完成执行,加速SM3密码杂凑算法的处理器中的VSM3R指令电路输出的8个32位的迭代状态字就是SM3密码杂凑算法的迭代压缩函数输出的杂凑值。
考虑到加速SM3密码杂凑算法的处理器支持两条并行的指令流水线,在连续流水执行的情况下,VSM3MSW指令电路每经过7个时钟周期(7拍)就能实现一组SM3消息扩展,生成SM3密码杂凑算法的68个调度字;VSM3R指令电路可以流水执行5组不存在数据真相关的SM3压缩函数的迭代计算,也即,每经过85个时钟周期(85拍),VSM3R指令电路可以执行5组不存在数据真相关的SM3压缩函数的迭代计算,生成5个独立的SM3杂凑值。对于大量流水执行的SM3密码杂凑算法的迭代压缩计算,如果能在处理器中设置多个加速SM3密码杂凑算法的指令集执行单元,则能更进一步显著的加速SM3密码杂凑算法的执行。

Claims (8)

1.一种SM3密码杂凑算法的加速方法,其特征在于,基于SM3扩展指令集,采用并行流水线和指令级并行技术加速执行SM3密码杂凑算法;所述SM3扩展指令集采用RISC架构,指令采用定长的32位格式,源操作数和目标操作数均为256位;所述SM3扩展指令集包括SM3消息字扩展指令和SM3工作变量字迭代更新指令,所述SM3消息字扩展指令采用多消息字并行扩展算法以加速SM3消息扩展函数,所述多消息字并行扩展算法以填充后消息中的16个消息字作为初始输入,单次执行就能完成8个消息字的生成,依次执行所述SM3消息字扩展指令7次,生成68个消息字;所述SM3工作变量字迭代更新指令采用多轮迭代融合算法以加速SM3迭代压缩函数,所述多轮迭代融合算法能将经过所述SM3消息字扩展指令处理后得到的消息字的扩展融合到所述SM3迭代压缩函数执行过程中,并且每次以消息字中的8个消息字和迭代中的工作变量字作为输入,完成SM3工作变量字的4轮迭代更新,依次执行所述SM3工作变量字迭代更新指令16次,完成SM3算法工作变量字的第0~63轮迭代更新,从而得到所述SM3压缩函数最终输出的工作变量字。
2.根据权利要求1所述的SM3密码杂凑算法的加速方法,其特征在于,所述采用并行流水线和指令级并行技术加速执行SM3密码杂凑算法具体包括以下步骤:
(1)以填充后消息中的16个消息字W0,W1,……,W15作为输入,执行第1条所述SM3消息字扩展指令,生成新的消息字W16,W17,……,W23;同时,以消息字W0,W1,……,W7和256比特的工作状态变量初始值V(0)作为输入,执行第一条所述SM3工作变量字迭代更新指令;
(2)连续以最新的16个消息字作为输入,连续执行6条所述SM3消息字扩展指令,每次执行结果输出的消息字记为W8i+8,W8i+9,……,W8i+15,最终得到SM3密码杂凑算法的68个消息字W1,W2,……,W67;在第一条所述SM3工作变量字迭代更新指令执行5拍后输出工作状态变量V(3),以新的消息字和工作状态变量作为输入,然后采用相同的方式连续循环执行15条所述SM3工作变量字迭代更新指令,每次执行结果输出的工作状态变量记为V(4j-1)
(3)将最终的执行结果输出的工作状态变量V(63)作为最终输出的256位的SM3杂凑值y={H,G,F,E,D,C,B,A}。
3.根据权利要求1所述的SM3密码杂凑算法的加速方法,其特征在于,所述SM3消息字扩展指令采用寄存器格式的简单运算指令格式,具体为VSM3MSW Va,Vb,Vc,用于指示两个256位的源寄存器Va和源寄存器Vb中的两个操作数进行运算,结果保存到256位的目标寄存器Vc中,32位指令的[31:26]位表示6位的操作码,[25:21]位表示选择由32个256位的寄存器组成的寄存器文件之一作为源寄存器Va,保存指令的源操作数,[20:16]位表示选择由32个256位的寄存器组成的寄存器文件之一作为源寄存器Vb,保存指令的源操作数,[15:13]位总是全“0”,[12:5]位表示用于确定具体指令功能的8位功能码,[4:0]位表示选择由32个256位的寄存器组成的寄存器文件之一作为目标寄存器Vc,保存指令的运算结果。
4.根据权利要求1所述的SM3密码杂凑算法的加速方法,其特征在于,所述SM3消息字扩展指令具体为:根据当前的16个32位消息字W15~W0,并行生成SM3密码杂凑算法后续8个消息字W23~W16,其中,W7~W0保存在源寄存器Va中,W15~W8保存在源寄存器Vb中,生成的结果W23~W16保存在一个目标寄存器Vc中;结果W23~W16中的每一个结果字Wi的生成逻辑是:(Temp XOR(Temp<<<15)XOR(Temp<<<23))XOR(Wi-13<<<7)XOR Wi-6,其中XOR表示按位异或、<<<表示循环左移、Temp是一个32位的中间变量字,Temp的生成逻辑是Wi-16 XOR Wi-9XOR(Wi-3<<<15);单次执行所述SM3消息字扩展指令就能生成SM3密码杂凑算法的8个消息字,依次执行所述SM3消息字扩展指令7次,每次用源寄存器Vb中的数据更新源寄存器Va,用生成的目标寄存器Vc中的数据更新源寄存器Vb,生成SM3密码杂凑算法的68个消息字W0,W1,……,W67
5.根据权利要求1所述的SM3密码杂凑算法的加速方法,其特征在于,所述SM3工作变量字迭代更新指令采用立即数格式的浮点复合运算指令格式,具体为VSM3RVa,Vb,#c,Vd,用于指示两个256位的源寄存器Va和源寄存器Vb中的两个操作数以及一个5位的立即数#c进行运算,结果保存到一个256位的目标寄存器Vd中,32位指令的[31:26]位表示6位的操作码,[25:21]位表示选择由32个256位的寄存器组成的寄存器文件之一作为源寄存器Va,保存指令的源操作数,[20:16]位表示选择由32个256位的寄存器组成的寄存器文件之一作为源寄存器Vb,保存指令的源操作数,[15:10]位表示用于确定具体指令功能的6位功能码,[9:5]位表示5位的立即数,指示循环迭代次数,[4:0]位表示选择由32个256位的寄存器组成的寄存器文件之一作为目标寄存器Vd,保存指令的运算结果。
6.根据权利要求1所述的SM3密码杂凑算法的加速方法,其特征在于,所述SM3工作变量字迭代更新指令具体为:根据当前的8个32位工作变量字{H,G,F,E,D,C,B,A}和8个消息字{W7~W0},以及立即数#c的值,按照SM3算法完成工作变量字第4*#c~4*#c+3轮的迭代更新,其中,{W7~W0}保存在源寄存器Va中,工作变量字{H,G,F,E,D,C,B,A}保存在源寄存器Vb中,更新后的工作变量字{H,G,F,E,D,C,B,A}保存在目标寄存器Vd中;每一轮迭代更新会根据立即数#c的不同选择不同的迭代常数T以及迭代逻辑,迭代过程中设置中间变量字SS1、SS2、TT1、TT2、P0,每一个中间变量字均为32位;对于第4*#c~4*#c+3轮的4轮(i=0~3)迭代,当#c小于4时:迭代常数T=0x79cc4519,SS1的生成逻辑是:((A<<<12)+E+(T<<<(4*#c+i)))<<<7,SS2的生成逻辑是:SS2=SS1 XOR(A<<<12),TT1的生成逻辑是:TT1=(A XORBXORC)+D+SS2+(WiXOR Wi+4),TT2的生成逻辑是:TT2=(EXORFXOR G)+H+SS1+Wi,P0的生成逻辑是:P0=TT2 XOR(TT2<<<9)XOR(TT2<<<17),其中XOR表示按位异或、<<<表示循环左移,更新过程为:H更新为G,G更新为F<<<19,F更新为E,E更新为P0,D更新为C,C更新为B<<<9,B更新为A,A更新为TT1;当#c大于等于4时:迭代常数T=0x7a879d8a,SS1的生成逻辑是:((A<<<12)+E+(T<<<(4*#c+i)))<<<7,SS2的生成逻辑是:SS2=SS1 XOR(A<<<12),TT1的生成逻辑是:TT1=((A AND B)OR(A AND C)OR(BAND C))+D+SS2+(WiXOR Wi+4),TT2的生成逻辑是:TT2=((EAND F)OR(NOT(E)AND G))+H+SS1+Wi,P0的生成逻辑是:P0=TT2 XOR(TT2<<<9)XOR(TT2<<<17),其中XOR表示按位异或、<<<表示循环左移、AND表示按位与、OR表示按位或、NOT表示按位取反,更新过程为:H更新为G,G更新为F<<<19,F更新为E,E更新为P0,D更新为C,C更新为B<<<9,B更新为A,A更新为TT1;单次执行所述SM3工作变量字迭代更新指令就能完成SM3工作变量字的4轮迭代更新,依次执行所述SM3工作变量字迭代更新指令16次,每次用8个消息字更新源寄存器Va,用生成的目标寄存器Vd中的数据更新源寄存器Vb,完成SM3算法工作变量字的第0~63轮迭代更新,从而得到SM3压缩函数最终输出的工作变量字{H,G,F,E,D,C,B,A}。
7.一种指令集处理器,其特征在于,包括寄存器文件、SM3消息字扩展指令执行单元和SM3工作变量字迭代更新指令执行单元;所述寄存器文件用于为所述SM3消息字扩展指令执行单元和SM3工作变量字迭代更新指令执行单元提供源操作数以及存储执行结果;所述SM3消息字扩展指令执行单元和SM3工作变量字迭代更新指令执行单元放置在不同的执行流水线上,分别占用所述寄存器文件不同的读、写端口;
所述SM3消息字扩展指令执行单元具有:
2组256位的输入,用于接收所述SM3消息字扩展指令的操作数A和操作数B;
一组256位的输出,用于输出所述SM3消息字扩展指令的执行结果;
所述SM3消息字扩展指令执行单元采用硬件逻辑实现移位运算和8个消息字的并行处理;所述SM3消息字扩展指令执行单元能够流水的执行所述SM3消息字扩展指令;
所述SM3工作变量字迭代更新指令执行单元具有:
2组256位的输入,用于接收所述SM3消息字扩展指令的操作数A和操作数B;
一组5位的输入,用于接收所述SM3消息字扩展指令的立即数操作数C;
一组256位的输出,用于输出VSM3R指令的执行结果,经过4轮迭代更新SM3工作变量字,得到迭代后的新工作变量字{H,G,F,E,D,C,B,A};
所述SM3工作变量字迭代更新指令执行单元采用硬件执行所述SM3迭代压缩函数,采用硬件逻辑实现移位运算和迭代常量处理;所述SM3工作变量字迭代更新指令执行单元能够流水执行所述SM3消息字扩展指令。
8.根据权利要求7所述的指令集处理器,其特征在于,所述SM3消息字扩展指令执行单元执行延迟为1拍;所述SM3工作变量字迭代更新指令执行单元设置4级迭代执行站台和1级输出站台,执行总延迟为5拍;所述指令集处理器支持所述SM3消息字扩展指令和SM3工作变量字迭代更新指令并行流水执行。
CN202211280343.9A 2022-10-19 2022-10-19 一种sm3密码杂凑算法的加速方法及指令集处理器 Pending CN115525342A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202211280343.9A CN115525342A (zh) 2022-10-19 2022-10-19 一种sm3密码杂凑算法的加速方法及指令集处理器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202211280343.9A CN115525342A (zh) 2022-10-19 2022-10-19 一种sm3密码杂凑算法的加速方法及指令集处理器

Publications (1)

Publication Number Publication Date
CN115525342A true CN115525342A (zh) 2022-12-27

Family

ID=84704486

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202211280343.9A Pending CN115525342A (zh) 2022-10-19 2022-10-19 一种sm3密码杂凑算法的加速方法及指令集处理器

Country Status (1)

Country Link
CN (1) CN115525342A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116318660A (zh) * 2023-01-12 2023-06-23 成都海泰方圆科技有限公司 一种消息扩展与压缩方法及相关装置
CN116737241A (zh) * 2023-05-25 2023-09-12 进迭时空(杭州)科技有限公司 一种指令融合方法、处理器核、处理器和计算机系统
CN116846543A (zh) * 2023-07-26 2023-10-03 百信信息技术有限公司 一种sm3密码杂凑算法的数据处理方法及相关设备

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116318660A (zh) * 2023-01-12 2023-06-23 成都海泰方圆科技有限公司 一种消息扩展与压缩方法及相关装置
CN116318660B (zh) * 2023-01-12 2023-12-08 成都海泰方圆科技有限公司 一种消息扩展与压缩方法及相关装置
CN116737241A (zh) * 2023-05-25 2023-09-12 进迭时空(杭州)科技有限公司 一种指令融合方法、处理器核、处理器和计算机系统
CN116737241B (zh) * 2023-05-25 2024-04-19 进迭时空(杭州)科技有限公司 一种指令融合方法、处理器核、处理器和计算机系统
CN116846543A (zh) * 2023-07-26 2023-10-03 百信信息技术有限公司 一种sm3密码杂凑算法的数据处理方法及相关设备

Similar Documents

Publication Publication Date Title
US10928847B2 (en) Apparatuses and methods for frequency scaling a message scheduler data path of a hashing accelerator
CN115525342A (zh) 一种sm3密码杂凑算法的加速方法及指令集处理器
CN106575215B (zh) 处理指令的系统、设备、方法、处理器、介质和电子设备
CN110321162B (zh) 基于粗粒度可重构计算单元的present加密算法实现方法及系统
CN110059493B (zh) 基于粗粒度可重构计算单元的skinny-128-128加密算法实现方法及系统
CN111600699A (zh) 用于实现散列算法的电路和方法
CN112367158B (zh) 一种加速sm3算法的方法、处理器、芯片及电子设备
Pham et al. A high-efficiency FPGA-based multimode SHA-2 accelerator
CN112650471A (zh) 用于处理掩蔽数据的处理器和方法
CN114095149B (zh) 信息加密方法、装置、设备及存储介质
CN109933304B (zh) 适用于国密sm2p256v1算法的快速蒙哥马利模乘器运算优化方法
US11539509B2 (en) Memory optimization for nested hash operations
Wang et al. Parallel SHA-256 on SW26010 many-core processor for hashing of multiple messages
Wang et al. FPGA-based SHA-3 acceleration on a 32-bit processor via instruction set extension
CN115525341A (zh) 一种md5信息摘要算法的加速方法及指令集处理器
Le et al. Mrsa: A high-efficiency multi romix scrypt accelerator for cryptocurrency mining and data security
CN114978473B (zh) 一种sm3算法的处理方法、处理器、芯片及电子设备
CN114371828A (zh) 多项式乘法器及具有该乘法器的处理器
WO2007083377A1 (ja) パリティ生成回路、計数回路および計数方法
Faz-Hernández et al. SoK: A performance evaluation of cryptographic instruction sets on modern architectures
Stefan Analysis and implementation of eSTREAM and SHA-3 cryptographic algorithms
CN113505383A (zh) 一种ecdsa算法执行系统及方法
Garcia et al. Mapping of the AES cryptographic algorithm on a Coarse-Grain reconfigurable array processor
JP2002287635A (ja) Sha演算の高速演算回路
CN102081514B (zh) AES加密算法中Sbox生成指令优化方法及其指令集处理器

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination