【技术实现步骤摘要】
可用于SHA256的指令执行方法、设备、数据处理系统及芯片
[0001]本公开实施例涉及但不限于安全散列算法的实现,更具体地,涉及一种可用于SHA256的指令执行方法、设备、数据处理系统及芯片。
技术介绍
[0002]SHA
‑
2(Security Hash Algorithm
‑
2)安全散列算法一种密码散列算法,用于实现数据间的单向映射,它可以将任意长度的消息映射成固定长度的消息摘要,并且映射过程不可逆。根据不同的输出消息摘要的长度,SHA
‑
2分为SHA
‑
224、SHA
‑
256、SHA
‑
384、SHA
‑
512等算法,主要用于数字签名、指纹验证以及网络安全协议等领域。其中,SHA
‑
256是一种单向哈希算法,能够将任意长度小于2
64
位的输入消息转换为长度为256位的消息摘要,安全性高,在芯片中应用SHA
‑
256算法时,其性能还有待提高 ...
【技术保护点】
【技术特征摘要】
1.一种可用于安全散列算法SHA256的指令执行设备,其特征在于,包括:多个至少256位的寄存器;指令解码器,被设置为接收SHA256计算的指令并解码,所述指令包括消息字扩展指令,所述消息字扩展指令包括3个字段,用于分别指示存储有第一源操作数的第一源寄存器、存储有第二源操作数的第二源寄存器,及用于存储目标操作数的目标寄存器;执行单元,耦合到所述指令解码器,被设置为响应所述消息字扩展指令的解码结果,基于第一源寄存器存储的所述第一源操作数和第二源寄存器存储的所述第二源操作数执行消息字扩展操作,得到包括新生成消息字的目标操作数并存储在目标寄存器中;其中,第一源寄存器、第二源寄存器和目标寄存器均为至少256位的寄存器;所述第一源操作数包括8个32位的已生成消息字W
j
‑9,W
j
‑
10
,
…
,W
j
‑
16
;所述第二源操作数包括8个32位的已生成消息字W
j
‑1,W
j
‑2,
…
,W
j
‑8;所述目标操作数包括N个32位的新生成消息字和(8
‑
N)个32位的已生成消息字W
j
‑1,W
j
‑2,
…
,W
j+N
‑8,j=16,17,
…
,63;N=1或2,N=1的情况下,新生成消息字为W
j
,N=2的情况下,新生成消息字为W
j+1
,W
j
。2.如权利要求1所述的指令执行设备,其特征在于:在N=1的情况下,所述基于第一源寄存器存储的所述第一源操作数和第二源寄存器存储的所述第二源操作数执行消息字扩展操作,得到包括新生成消息字的目标操作数并存储在目标寄存器中,包括:基于第一源寄存器存储的所述第一源操作数和第二源寄存器存储的所述第二源操作数执行以下扩展运算,得到新生成消息字W
j
并存储在dst[255:224]:W
j
=σ1(W
j
‑2)+W
i
‑7+σ0(W
j
‑
15
)+W
j
‑
16
;将所述第二源操作数中的已生成消息字W
j
‑1,W
j
‑2,
…
,W
j
‑7分别存储到dst[223:192],dst[192:160],dst[159:128],dst[127:96],dst[95:64],dst[63:32]和dst[31:00];其中,dst[n:m]表示用于存储目标操作数的目标寄存器的第n位至第m位,第二源寄存器与目标寄存器相同或不同,第一源寄存器与第二源寄存器、目标寄存器均不同。3.如权利要求1所述的指令执行设备,其特征在于:在N=2的情况下,所述基于第一源寄存器存储的所述第一源操作数和第二源寄存器存储的所述第二源操作数执行消息字扩展操作,得到包括新生成消息字的目标操作数并存储在目标寄存器中,包括:基于第一源寄存器存储的所述第一源操作数和第二源寄存器存储的所述第二源操作数执行以下扩展运算,得到新生成消息字W
j+1
并存储在dst[255:224]:W
j+1
=σ1(W
j
‑1)+W
i
‑6+σ0(W
j
‑
14
)+W
j
‑
15
;基于第一源寄存器存储的所述第一源操作数和第二源寄存器存储的所述第二源操作数执行以下扩展运算,得到新生成消息字W
j
并存储在dst[223:192]:W
j
=σ1(W
j
‑2)+W
i
‑7+σ0(W
j
‑
15
)+W
j
‑
16
;将所述第二源操作数中的已生成消息字W
j
‑1,W
j
‑2,
…
,W
j
‑6分别存储到dst[192:160],dst[159:128],dst[127:96],dst[95:64],dst[63:32]和dst[31:0];其中,dst[n:m]表示用于存储目标操作数的目标寄存器的第n位至第m位,第二源寄存器与目标寄存器相同或不同,第一源寄存器与第二源寄存器、目标寄存器均不同。
4.如权利要求1所述的指令执行设备,其特征在于:所述指令解码器还被设置为在解码所述消息字扩展指令后,继续解码接收到的以下SHA256计算的指令:左移指令,用于指示将第二源寄存器中的数据左移k位,右边补0;在N=1的情况下,k=224;在N=2的情况下,k=192;右移指令,用于指示将第一源寄存器中的数据右移256
‑
k位,左边补0;合并指令,用于指示对左移后的第二源寄存器的数据和右移后的第一源寄存器中的数据进行“或”操作,结果存储在第一源寄存器中;所述执行单元还被设置为在得到包括新生成消息字的目标操作数并存储在目标寄存器后,响应所述左移指令、右移指令和合并指令的解码结果以执行第一源操作数更新操作,将第一源寄存器中的第一源操作数更新为W
j+N
‑9,W
j+N
‑
10,
…
,W
j+N
‑
16
;其中,所述消息字扩展指令、左移指令、右移指令和合并指令构成一个扩展指令组;所述SHA256计算的指令为精简指令集的指令。5.如权利要求4所述的指令执行设备,其特征在于:所述指令解码器被设置为解码连续接收的p个所述扩展指令组,同一扩展指令组中的第一源寄存器、第二源寄存器和目标寄存器互不相同,且相邻两个扩展指令组中,前一个扩展指令组中的第二源寄存器在后一个扩展指令组中作为目标寄存器,前一个扩展指令组中的目标寄存器在后一个扩展指令组中作为第二源寄存器,前一个扩展指令组和后一个扩展指令组中的第一源寄存器相同;所述执行单元被设置为响应所述p个扩展指令组的解码结果,执行消息字扩展操作和第一源操作数更新操作,得到包括q个新生成消息字W
j+q
‑1,W
j+q
‑2,
…
,W
j
的目标操作数并存储在目标寄存器中;其中,在N=1的情况下,2≤p≤8,q=p;在N=2的情况下,2≤p≤4,q=2p。6.如权利要求5所述的指令执行设备,其特征在于:所述指令解码器还被设置在解码连续接收的p个所述扩展指令组后,继续解码接收到的一加法指令,所述加法指令包括的3个字段用于分别指示存储有W
j+q
‑1,W
j+q
‑2,
…
,W
j
的目标寄存器,存储有q个32位常数K
j+q
‑1,K
j+q
‑2,
…
,K
j
的常数寄存器,及用于存储q个相加结果W
j+q
‑1+K
j+q
‑1,W
j+q
‑2+K
j+q
‑2,
…
,W
j
+K
j
的结果寄存器;所述执行单元还被设置为响应所述加法指令的解码结果,基于目标寄存器存储的W
j+q
‑1,W
j+q
‑2,
…
,W
j
和常数寄存器存储的K
j+q
‑1,K
j+q
‑2,
…
,K
j
执行加法操作,得到相加结果W
j+q
‑1+K
j+q
‑1,W
j+q
‑2+K
j+q
‑2,
…
,W
j
+K
j
并存储在结果寄存器中;其中,所述常数寄存器和结果寄存器均为至少256位的寄存器。7.如权利要求6所述的指令执行设备,其特征在于:所述指令解码器还被设置在解码接收的所述加法指令后,继续解码连续接收到的q个压缩指令组,前q
‑
1个压缩指令组均包括一迭代压缩指令和一右移指令,第q个压缩指令组包括一迭代压缩指令,其中:所述迭代压缩指令包括3个字段,分别用于指示存储有W
j+q
‑1+K
j+q
‑1,W
j+q
‑2+K
j+q
‑2,
…
,W
j
+K
j
的结果寄存器,存储有8个待迭代变量的第一变量寄存器,及用于存储对8个待迭代变量进行一次SHA256迭代压缩的结果的第二变量寄存器,所述右移指令用于指示将结果寄存器中的数据右移32位;
所述执行单元还被设置为响应所述q个压缩指令组的解码结果,执行对变量的迭代压缩和对结果寄存器中数据的右移操作,得到经q次迭代压缩后的8个变量;其中,相邻两个压缩指令组中,前一个压缩指令组中的第一变量寄存器在后一个压缩指令组中作为第二变量寄存器,前一个压缩指令组中的第二变量寄存器在后一个压缩指令组中作为第一变量寄存器,相邻两个压缩指令组中的结果寄存器相同。8.一种可用于安全...
【专利技术属性】
技术研发人员:闫超,蔡凯,
申请(专利权)人:声龙新加坡私人有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。