RISC-V MCU中文社区

【分享】 【集创赛分享】 RISCV-K指令集扩展分享

发表于 开源蜂鸟E203 2023-05-29 00:25:39
0
1175
1

队伍编号:CICC3454 喝可乐队
RISC-V K扩展指的是RISC-V用于提升密码学算法的速度、减小应用程序大小的一个扩展指令集。主要包含了:AES加密算法的加速指令、SHA算法的加速指令,SM3、SM4算法的加速指令以及从B扩展中复用的位操作指令。
首先根据RISC-V Cryptography Extension v0.9.2的ISA标准,我们对Decode进行了相应的扩展,以保证K指令被识别为合法指令并能顺利进行后续的计算。
在Decode模块中用于对K类型指令进行解码的关键代码:
图片alt
K扩展的针对的AES加密算法主要由以下四个步骤组成:AddRoundKey:矩阵中的每一个字节都与该轮的“回合密钥”做XOR(异或)运算;SubBytes:透过一个非线性的替换函数(S-box),替换每个字节;ShiftRows:每一列都向左循环位移某个偏移量;MixColumns:每行的4个元素通告一种线性变换互相组合。
此外SHA压缩函数的运算过程中大量调用了σ函数和Σ函数,而这两个函数又由大量的Sn与Rn运算构成(Sn表示右移位n位,Rn表示右循环移位n位),同理SM3与SM4国密算法也大量进行了移位运算。
因此,在实现的过程中,需要在ALU的逻辑运算部分扩展相应的密码学运算运算器,主要针对AES加密算法中的SubBytes及ShiftRows及MixColumns、SHA算法中的Sn与Rn计算,SM3、SM4算法中的连续位移计算进行加速(e203_exu_alu_dpath.v),其中部分关键代码为:
图片alt

喜欢1
用户评论
le樂

le樂 实名认证

懒的都不写签名

积分
问答
粉丝
关注
  • RV-STAR 开发板
  • RISC-V处理器设计系列课程
  • 培养RISC-V大学土壤 共建RISC-V教育生态
RV-STAR 开发板