本发明涉及密码学,特别涉及一种格密码中哈希函数的软硬件协同设计实现方法。
背景技术:
1、量子计算技术的进步预示着传统加密算法可能在不远的将来被破解,这对全球信息安全构成严重威胁。后量子密码学,特别是格密码学,因其对量子攻击的固有抵抗力而成为研究的热点。在此范畴内,哈希函数是构建密码协议的基石,不仅用于数据完整性验证,还是数字签名和密码散列的关键组件。sha-3,作为一种安全哈希算法,因其抗碰撞性和抗预映像攻击的特性,在业界得到了认可。
2、尽管如此,目前sha-3的实现主要依赖于软件层面的优化,面临处理速度和能效不佳的问题,特别是在资源受限的嵌入式系统和物联网设备中。硬件实现能提供更佳的性能,但往往缺乏足够的灵活性和适应性。针对这些问题,结合软硬件各自的优势,软硬件协同设计显得尤为重要。
3、本发明旨在利用开源risc-v指令集架构的特点,提出一种软硬件协同设计的实现方法,以优化sha-3哈希函数。risc-v的可定制性使其成为实现专用指令和加速特定计算的理想平台,本方法通过增加专用的指令扩展,来加速sha-3算法的关键步骤,以此来达到提高计算速度和降低能耗的目的。同时,该方法还包括了对sha-3的算法优化,以减少逻辑资源的使用,并提高数据处理的并行性。
4、此外,本发明还考虑了实现的灵活性和扩展性,使得在不同应用场景下,能够根据具体的安全需求和性能指标,灵活调整硬件资源分配和运行参数。通过这种方式,不仅可以满足当前高效能加密处理的需求,也为未来面对新的安全威胁时的快速适应提供了可能。
5、总之,本发明提出的格密码中哈希函数的软硬件协同设计实现方法,既考虑了在后量子密码环境下对安全性的要求,也注重在实际应用中对效率和灵活性的追求,是对现有技术的一项重要改进和补充,具有极高的实际应用价值。
技术实现思路
1、本发明的目的在于提供一种格密码中哈希函数的软硬件协同设计实现方法,以克服现有技术中的不足。
2、为实现上述目的,本发明提供如下技术方案:
3、本申请公开了一种格密码中哈希函数的软硬件协同设计实现方法,包括带模偏移指令、旋转指令、派pi指令以及埃欧塔iota指令,包括如下步骤:
4、s1:从用户端获取输入数据;
5、s2:通过带模偏移指令和旋转指令实现西塔theta操作,包括若干个旋转和异或,将输入数据进行计算,获取中间值d;
6、s3:通过旋转指令实现柔rho操作,包括若干个旋转,将中间值d进行计算,获取中间值e;
7、s4:通过派pi指令实现派pi操作,包括若干个模数运算,将中间值e进行计算,获取中间值f;
8、s5:通过带模偏移指令实现凯chi操作,包括若干个旋转和异或,将中间值f进行计算,获取中间值h;
9、s6:通过埃欧塔iota指令实现埃欧塔iota操作,包括若干个常量异或运算,将中间值h进行计算,获取输出数据。
10、作为优选,所述带模偏移指令包括西塔theta指令和凯chi指令,因此包括上下方向两个偏移量,所述带模偏移指令中包括两个扩展指令,分别用于执行向上移动操作和向下移动操作,且适用于32位与64位。
11、作为优选,所述带模偏移指令中的西塔theta操作包括如下内容:对所有平面进行异或运算,通过西塔theta指令的写回操作将中间值上下移动到相应的向量寄存器中。
12、作为优选,所述带模偏移指令中的凯chi操作包括如下内容:所有平面通过凯chi指令的写回操作将中间值移动到想要的向量寄存器中。
13、作为优选,所述旋转指令包括西塔theta指令和柔rho指令,在64位架构中包括一个扩展指令;在32位架构中包括两个扩展指令。
14、作为优选,所述旋转指令中的西塔theta操作包括如下内容:右列就行向最高有效方向旋转一位;在64位架构中,包括两个操作数和一个立即数组成的旋转指令,通过立即数的旋转指令定义偏移量;在32位架构中,将两个32位进行组合连接,构成一个64位后再进行旋转操作。
15、作为优选,所述旋转指令中的柔rho操作包括如下内容:通过若干可变数量的位来进行旋转,建立查找表,将位数存储于查找表中,通过从查找表中读取位数来进行旋转操作;
16、在64位架构中,包括两个操作数,分别为向量和立即数;当向量长度乘数大于1时,算法中的五个平面按顺序执行,使用立即数-1;设置计数器从查找表中获取偏移量的行号,进行旋转操作;当向量长度乘数等于1时,立即数包括0、1、2、3和4中任一项,只有一个平面与由立即数定义的行索引进行操作。
17、在32位架构中,将两个32位进行组合连接,构成一个64位再进行旋转操作,包括两个操作数,位两个向量,设置计数器从查找表中获取偏移量的行号,两个扩展指令分别是旋转后64位数据的最低有效32位和最高有效32位。
18、作为优选,所述派pi指令包括派pi操作,包括一个扩展指令,由一个向量和立即数组成;当向量长度乘数大于1时,且当立即数为-1时,算法中的所有五个平面按照顺序执行;当向量长度乘数等于1时,且当立即数为0、1、2、3、4中任一项时,处理平面由立即数进行决定。
19、作为优选,所述埃欧塔iota指令包括埃欧塔iota操作,包括一个扩展指令,包括一个向量寄存器和标量寄存器,所述向量寄存器中存储有数据,所述标量寄存器用于索引轮常量,对数据和轮常量进行异或运算;在64位架构中,轮常量数据宽度为64位,在32位架构中,每个轮常量被分为高32位值和低32位值,使用扩展指令在埃欧塔iota操作中运行两次。
20、本申请公开了一种格密码中哈希函数的软硬件协同设计实现方法,包括存储器和一个或多个处理器,所述存储器中存储有可执行代码,所述一个或多个处理器执行所述可执行代码时,用于实现上述的一种格密码中哈希函数的软硬件协同设计实现方法。
21、本申请公开了一种计算机可读存储介质,其上存储有程序,该程序被处理器执行时,实现上述的一种格密码中哈希函数的软硬件协同设计实现方法。
22、本发明的有益效果:
23、(1)、本发明公开了一个创新的软硬件协同设计方法,旨在利用可扩展的simdrisc-v处理器优化格密码中的哈希函数实现。通过设计自定义向量扩展指令,并适用于32位和64位架构,以提高并行处理能力,并显著提升了哈希函数的数据处理效率。通过这些自定义扩展,结合risc-v的现有向量功能,能够针对各种架构编写高度优化的汇编代码,实现了在提高速度的同时减少能耗。这一技术在物联网设备和移动设备等资源受限环境中尤其有价值,为后量子密码学时代的加密处理设备提供了一种既安全又高效的解决方案。
24、本发明的特征及优点将通过实施例结合附图进行详细说明。
1.一种格密码中哈希函数的软硬件协同设计实现方法,其特征在于:包括带模偏移指令、旋转指令、派pi指令以及埃欧塔iota指令,包括如下步骤:
2.如权利要求1所述的一种格密码中哈希函数的软硬件协同设计实现方法,其特征在于:所述带模偏移指令包括西塔theta指令和凯chi指令,因此包括上下方向两个偏移量,所述带模偏移指令中包括两个扩展指令,分别用于执行向上移动操作和向下移动操作,且适用于32位与64位。
3.如权利要求2所述的一种格密码中哈希函数的软硬件协同设计实现方法,其特征在于:所述带模偏移指令中的西塔theta操作包括如下内容:对所有平面进行异或运算,通过西塔theta指令的写回操作将中间值上下移动到相应的向量寄存器中。
4.如权利要求2所述的一种格密码中哈希函数的软硬件协同设计实现方法,其特征在于:所述带模偏移指令中的凯chi操作包括如下内容:所有平面通过凯chi指令的写回操作将中间值移动到想要的向量寄存器中。
5.如权利要求1所述的一种格密码中哈希函数的软硬件协同设计实现方法,其特征在于:所述旋转指令包括西塔theta指令和柔rho指令,在64位架构中包括一个扩展指令;在32位架构中包括两个扩展指令。
6.如权利要求5所述的一种格密码中哈希函数的软硬件协同设计实现方法,其特征在于:所述旋转指令中的西塔theta操作包括如下内容:右列就行向最高有效方向旋转一位;在64位架构中,包括两个操作数和一个立即数组成的旋转指令,通过立即数的旋转指令定义偏移量;在32位架构中,将两个32位进行组合连接,构成一个64位后再进行旋转操作。
7.如权利要求5所述的一种格密码中哈希函数的软硬件协同设计实现方法,其特征在于:所述旋转指令中的柔rho操作包括如下内容:通过若干可变数量的位来进行旋转,建立查找表,将位数存储于查找表中,通过从查找表中读取位数来进行旋转操作;
8.如权利要求1所述的一种格密码中哈希函数的软硬件协同设计实现方法,其特征在于:所述派pi指令包括派pi操作,包括一个扩展指令,由一个向量和立即数组成;当向量长度乘数大于1时,且当立即数为-1时,算法中的所有五个平面按照顺序执行;当向量长度乘数等于1时,且当立即数为0、1、2、3、4中任一项时,处理平面由立即数进行决定。
9.如权利要求1所述的一种格密码中哈希函数的软硬件协同设计实现方法,其特征在于:所述埃欧塔iota指令包括埃欧塔iota操作,包括一个扩展指令,包括一个向量寄存器和标量寄存器,所述向量寄存器中存储有数据,所述标量寄存器用于索引轮常量,对数据和轮常量进行异或运算;在64位架构中,轮常量数据宽度为64位,在32位架构中,每个轮常量被分为高32位值和低32位值,使用扩展指令在埃欧塔iota操作中运行两次。
