FPGA高速实现数字签名算法SHA-1

 2024-03-01 00:06:44  阅读 0

介绍

随着网络的快速发展,安全的需求变得越来越重要。 然而,尽管网络技术突飞猛进,但安全问题仍然比较落后,很多情况下只能依靠虚拟专用网络(VPN)和防火墙。 由于虚拟专用网络是建立在外部结构之上的,因此必须采取一定的措施来保证安全问题。 一种方法是使用互联网协议安全 (IPSec) 标准。 IPSec 是一组在 IP 协议层提供安全、保密通信的协议。 IPSec协议有两种通信模式:通道模式和传输模式。 为了保证高速通信中的数据安全,设计中采用硬件加速来实现IPSec中的加密和认证。 IPSec中的加密部分采用三重DES算法,或者采用RC5、IDEA、CAST-128等算法作为加密手段。 IPSec协议中的认证采用SHA-1和MD5单向散列函数算法实现,SHA-1消息认证算法使用FPGA高速实现。

SHA-1算法简介

安全哈希算法SHA(Hash,SHA)是美国国家标准与技术研究院颁布的国家标准FIPS PUB 180-1,一般简称SHA-1。 它为长度不超过 264 二进制位的消息生成 160 位消息摘要输出。 步骤如下。

签名算法是什么_数字签名算法的编程实现_数字签名算法sha-1的c++实现

首先对消息进行填充,使其长度正好是一个仅比 512 的倍数小 64 位的数字。填充方法是在消息末尾追加一个 1,后面根据需要添加多个 0,然后附加 64 位消息长度(填充之前),使消息长度恰好是 512 位的整数倍。

五个 32 位变量,以十六进制表示形式初始化。 然后算法的主循环开始,一次处理512位消息,循环次数就是消息中512位数据包的数量。

首先将这五个变量复制到其他变量,A复制到a,B复制到b,C复制到c,D复制到d,E复制到e。

主循环有4轮,每轮有20次操作。 每个运算对a、b、c、d、e中的3个进行非线性运算,然后进行移位和加法运算。 运算过程如图1所示,将a、b、c、d、e分别与A、B、C、D、E相加,然后算法继续进行下一次数据分组。 最终的输出由A、B、C、D和E级联形成。

SHA-1算法的FPGA实现

在实现SHA-1算法时,首先使用软件对消息进行预处理,使消息长度恰好是512位的整数倍,然后使用FPGA加速消息摘要的计算。

FPGA编程一般采用HDL或VHDL进行。 本设计采用VHDL语言来描述SHA-1算法。 SHA-1算法FPGA加速器实现分为两部分,分别是80个32位临时值Wt(W0到W79)的生成,以及32位临时值Wt到​​的循环处理生成 160 位的消息摘要。 图2是将子组Mj(0≤j≤15)转变为80个32位Wt(Kt至W79)的电路框图。 设计时,使用一个512位寄存器和2个多路复用器来生成临时值Wt(0≤t≤79)。

数字签名算法sha-1的c++实现_数字签名算法的编程实现_签名算法是什么

图3中的160位输入数据缓冲区用于放置初始数据(5个32位变量A、B、C、D和E),F1234代表四组非线性函数ft(X、Y、 Z),使用多路复用器Mux-1根据需要选择其中之一(ft(X,Y,Z)=(X∧Y)∨((X)∧Z),对于t=0到19;ft(X , Y, Z) = ; ft (X, Y, Z) = 为了加快加法计算速度,采用了进位加法器,具体连接结构如图4所示。

数字签名算法sha-1的c++实现_数字签名算法的编程实现_签名算法是什么

签名算法是什么_数字签名算法的编程实现_数字签名算法sha-1的c++实现

使用Aldec的HDL V5.1进行SHA-1算法的功能模拟。 测试值和中间结果使用++中库函数的输入值和运算结果,并使用这些测试值和中间结果来模拟SHA-1算法。 VHDL语言描述用于验证和错误检查。 经过验证的SHA-1算法的VHDL语言描述使用该公司的ISE 4.1进行逻辑综合、映射、布局和布线,并生成用于时序仿真的网表。 最后,将文件下载到FPGA器件中。 ,完成设计和开发。

FPGA外围电路及控制软件

SHA-1算法的FPGA实现是在PCI卡(安全算法协处理器)上实现的,以实现协议中的安全算法。 在安全算法协处理器中,FPGA执行加密和解密操作。 PIC 控制器(Zenic 使用)充当 PIC 总线和协处理器之间的接口。 SRAM存储FPGA的配置数据。 配置控制器(由该公司的-7实现使用)输出地址和数据信号来配置FPGA,并使用该公司的网络控制器将PCI卡连接到网络。 协处理器的结构如图5所示。

数字签名算法sha-1的c++实现_签名算法是什么_数字签名算法的编程实现

将FPGA配置数据(加密算法的FPGA高速实现)放在硬盘上,通过操作系统BSD Unix 4.4中的PCI卡设备驱动程序通过PCI总线下载到安全算法协处理器的SRAM中,然后使用各种加密算法的配置数据对FPGA进行配置,实现真正的“现场可编程性”。 通过FPGA的内部配置,可以用硬件结构实现各种加解密算法。

在软件控制方面,安全算法协处理器驱动程序通过函数()直接控制协处理器。 该函数有两个输入:来自网络控制器的中断和来自操作系统内核的时钟中断; ()检查消息包头,如果发生硬件中断,()调用()函数; () 检查接收到的数据类型,并将接收到的数据包添加到队列中进行处理; () 确定数据包的最终地址,如果最终地址是本地地址,则该函数将数据包传递给上层软件。 如果最终地址是非本地地址,则数据包被传递到(); 函数 () 从接收到的数据生成 IP 数据包,然后 () 将数据包传递给网络控制器。 软件控制结构如图6所示。

数字签名算法的编程实现_签名算法是什么_数字签名算法sha-1的c++实现

结论

实验结果表明,当FPGA频率为31.42MHz时,数据处理速度为214Mb/​​s,完全满足设计要求。 该设计是“互联网协议安全(IPSec)标准 FPGA 高速实现”项目的一部分。 该设计还将包括三重DES算法、IDEA算法、高级加密标准AES等。

参考

1,S.,H.,关键[J]。

1998 年第 5 届 ACM 会议

2、J.论:用户[J].

, 1997

3、B..应用密码学。 机械工业出版社,1999

4 G.、、和我.. “:

代表开放。”的

1988, 1988,, 德克萨斯州,

第 191-202 页

标签: 算法 加密 操作

如本站内容信息有侵犯到您的权益请联系我们删除,谢谢!!


Copyright © 2020 All Rights Reserved 京ICP5741267-1号 统计代码