本说明书涉及通信,尤其涉及hmac-sha256安全认证方法。
背景技术:
1、sha256安全哈希算法(secure hash algorithm),是一种被广泛使用的密码杂凑函数,可以产生出一个256位元(32位元组)的散列值(hash value),用于确保信息传输完整一致。
2、hmac算法是一种执行“校验和”的算法,它通过对数据进行“校验”来检查数据是否被更改了。在发送数据以前,hmac算法对数据块和双方约定的公钥进行“散列操作”,以生成称为“摘要”的东西,附加在待发送的数据块中。当数据和摘要到达其目的地时,就使用hmac算法来生成另一个校验和,如果两个数字相匹配,那么数据未被做任何篡改。
3、而将hamc和sha256两种算法联合使用,可以进一步提升校验的安全性。目前常用的方案时用cpu串行实现hmac-sha256数据处理。但其处理方式复杂,轮次较多,导致cpu输出结果的速率较低;且由于cpu只能串行执行命令,无法满足git/s以上速率的要求。
技术实现思路
1、为克服相关技术中存在的问题,本说明书提供了hmac-sha256安全认证方法。
2、根据本说明书实施例的hmac-sha256安全认证方法,应用于可编程逻辑芯片,包括:
3、按组依次发送报文,每轮最多同时处理64组报文;
4、每组报文对应一组密钥,所述的对应的密钥进行hmac的第一次异或计算;
5、由第一次异或后的密钥分别与对应的每组报文组合作为一组线程数据,并对每组线程进行编号;
6、所有线程依次通过sha256认证算法进行第一轮调度;
7、对第一轮调度结果中每组线程编号对应的一组密钥进行复用;
8、对复用的密钥进行hmac的第二次异或计算;
9、第二次异或后的密钥分别与对应的第一轮调度结果中每组线程结果组合作为一组线程数据,并对每组线程进行编号;
10、所有线程依次通过sha256认证算法进行第二轮调度,得到mac值。
11、进一步地,每组报文对应的密钥长度为512bit,若小于512bit,需要进行填充,经过填充后进行hmac第一次异或计算;若大于512bit,需要先进行一次sha256计算,得到256bit结果,再对256bit字节的结果进行填充,填充至512bit字节,经过填充后进行hmac第一次异或计算;经过hmac第一次异或后的密钥与对应的报文组成的一组线程数据,以长度512bit/节拍进行数据包发送。
12、进一步地,对第一轮调度中每组线程编号的范围在0~63;
13、对第二轮调度中每组线程编号的范围在64~127;
14、在每轮调度中,若有线程数据包为空,则不发送数据。
15、进一步地,同一线程内数据包之间保序发送,不同线程间数据包无需保序。
16、进一步地,在第一轮调度中,每组线程对应一个寄存器,在发送每组线程的数据包时附带对应的编程号、以及每组线程数据包的结束标记、对应密钥以及每组线程对应进行sha256认证算法的散列初值并分别存储在对应线程的寄存器中;
17、在第二轮调度中,每组线程对应一个寄存器,在发送每组线程的数据时附带对应的编程号、每组线程数据包的结束标记以及散列初值分别存储到对应线程的寄存器中。
18、进一步地,复用第一轮调度线程编号对应的密钥包括对第64组编号线程复用第0组编号寄存器中的密钥,以此类推,直至第127组编号线程复用第63组编号寄存器中的密钥。
19、进一步地,第二次异或后的密钥分别与对应的第一轮调度中每组线程结果组合作为一组线程数据:
20、将复用的第0组编号的密钥作hmac的第二次异或,异或后的密钥与第64组编号寄存器中的第0组散列值组合作为第64组编号线程数据,以此类推,直至复用第63组编号的密钥作hmac的第二次异或,异或后的密钥与第127组编号寄存器中的第63组散列值组合作为第127组编号线程数据。
21、进一步地,第二轮调度中,获取的每组密钥需要满足长度为512bit,若小于512bit,需要进行填充,经过填充后进行hmac第一次异或计算;若大于512bit,需要先进行一次sha256计算,得到256bit结果,再对256bit字节的结果进行填充,填充至512bit字节,经过填充后进行hmac第一次异或计算;由第二次异或后的密钥与第一轮调度后对应的每组散列值组合成一组线程数据,每组线程以长度512bit/节拍进行数据包发送。
22、进一步地,在完成组合第二轮调度编号线程的数据包情况下将第一轮调度中对应使用的寄存器内容删除。
23、优选的,可编程逻辑芯片为fpga芯片。
24、本说明书的实施例提供的技术方案可以包括以下有益效果:
25、本说明书实施例可实现多线程并行执行数据处理,提高信息处理速率。
26、应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书。
1.hmac-sha256安全认证方法,应用于可编程逻辑芯片,其特征在于,包括:
2.根据权利要求1所述的hmac-sha256安全认证方法,其特征在于,每组报文对应的密钥长度为512bit,若小于512bit,需要进行填充,经过填充后进行hmac第一次异或计算;若大于512bit,需要先进行一次sha256计算,得到256bit结果,再对256bit的结果进行填充,填充至512bit,经过填充后进行hmac第一次异或计算;;
3.根据权利要求2所述的hmac-sha256安全认证方法,其特征在于,对第一轮调度中每组线程编号的范围在0~63;
4.根据权利要求3所述的hmac-sha256安全认证方法,其特征在于,同一线程内数据包之间保序发送,不同线程间数据包无需保序。
5.根据权利要求4所述的hmac-sha256安全认证方法,其特征在于,在第一轮调度中,每组线程对应一个寄存器,在发送每组线程的数据包时附带对应的编程号、以及每组线程数据包的结束标记、对应密钥以及每组线程对应进行sha256认证算法的散列初值并分别存储在对应线程的寄存器中;
6.根据权利要求5所述的hmac-sha256安全认证方法,其特征在于,复用第一轮调度线程编号对应的密钥包括对第64组编号线程复用第0组编号寄存器中的密钥,以此类推,直至第127组编号线程复用第63组编号寄存器中的密钥。
7.根据权利要求6所述的hmac-sha256安全认证方法,其特征在于,第二次异或后的密钥分别与对应的第一轮调度结果中每组线程组合作为一组线程:
8.根据权利要求7所述的hmac-sha256安全认证方法,其特征在于,第二轮调度中,获取的每组密钥需要满足长度为512bit,若小于512bit,需要进行填充,经过填充后进行hmac第二次异或计算,若大于512bit,需要先进行一次sha256计算,得到256bit结果,再进行填充,经过填充后进行hmac第二次异或计算;由第二次异或后的密钥与第一轮调度后对应的每组散列值组合成一组线程数据,每组线程以长度512bit/节拍进行数据包发送。
9.根据权利要求7所述的hmac-sha256安全认证方法,其特征在于,在完成组合第二轮调度编号线程的数据包情况下将第一轮调度中对应使用的寄存器内容删除。
10.根据权利要求1所述的hmac-sha256安全认证方法,其特征在于,所述的可编程逻辑芯片为fpga芯片。