数字签名算法SHA_第1页
数字签名算法SHA_第2页
数字签名算法SHA_第3页
数字签名算法SHA_第4页
数字签名算法SHA_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

数字签名算法SHA

摘要:随着网络的迅速发展,信息安全越来越重要,信息认证是验证收到信息来源和内容的基本技术。常用的信息验证码是使用单向散列函数生成验证码,安全散列算法SHA-1使用在是因特网协议安全性(IPSec)标准中。在设计中使用FPGA高速实现SHA-1认证算法,以PCI卡形式处理认证服务。

关键词:数字签名算法;现场可编程门阵列(FPGA);计算机安全

引言

随着网络的迅速发展,对安全性的需要越发重要。然而,尽管网络技术进步很快,安全性问题仍然相对落后,并且在很多情况下只能靠虚拟私人网VPN和防火墙。因虚拟私人网是构建在Internet外部结构上的,必须采取某些措施保证安全性问题。一种方法是使用因特网协议安全性(IPSec)标准。IPSec是一组协议,它在IP协议层提供安全保密的通信。IPSec协议有通道和传输两种通信模式,为了保证在高速通信中的数据安全,在设计中使用硬件加速来实现IPSec中的加密和认证。IPSec中的加密部分使用三重DES算法,或使用RC5、IDEA、Blowfish和CAST-128等算法作为加密手段。在IPSec协议中认证使用SHA-1和MD5单向散列函数算法实现,通过使用FPGA高速实现SHA-1消息认证算法。

SHA-1算法介绍

安全散列算法SHA(SecureHashAlgorithm,SHA)是美国国家标准和技术局发布的国家标准FIPSPUB180-1,一般称为SHA-1。其对长度不超过264二进制位的消息产生160位的消息摘要输出,步骤如下。

首先填充消息使其长度恰好为一个比512的倍数仅小64位的数。填充方法是附一个1在消息后面,后接所要求的多个0,然后在其后附上64位的消息长度(填充前),使消息长度恰好是512位的整数倍。

5个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的编程一般用VerilogHDL或者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)。

图3中160位输入数据缓冲器用来放置初始数据(5个32位变量A、B、C、D和E),而F1234代表SHA-1算法中的4组非线性函数ft(X,Y,Z),根据需要用多路选择器Mux-1选择其中一个(ft(X,Y,Z)=(X∧Y)∨((X)∧Z),对于t=0至19;ft(X,Y,Z)=X臲臵,对于t=20至39;ft(X,Y,Z)=(X∧Y)∨(X∧Z)∨(Y∧Z),对于t=40至59;ft(X,Y,Z)=X臲臵,对于t=60至79),4个常数为Kt存在ROM中(即组件),32×5加法器将5个32位数相加,为加快相加的计算速度使用先行进位加法器来执行,具体连接结构见图4。

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

FPGA的外围电路和控制软件

将SHA-1算法的FPGA实现做在PCI卡(安全性算法协处理器)上,实现协议中的安全性算法。在安全性算法协处理器中,FPGA执行加密解密操作,PIC控制器(用Zenic公司的ZEN7201AF)作为PIC总线与协处理器的接口,SRAM存置FPGA的配置数据,配置控制器(用Xilinx公司的XC95108-7实现)输出地址和数据信号对FPGA进行配置,用Realtek公司的网络控制器RTL8019AS实现PCI卡与网络连接,协处理器的结构见图5。而FPGA的配置数据(加密算法的FPGA高速实现)放在硬盘上,通过操作系统BSDUnix中的PCI卡设备驱动程序,经由PCI总线下载到安全性算法协处理器的SRAM中,后用各种加密算法的配置数据对FPGA进行配置,实现真正“现场可编程”,各种加密解密算法都可以通过FPGA的内部配置用硬件结构实现了。

在软件控制方面,安全性算法协处理器驱动程序是通过函数Sebsw_intr()直接控制协处理器,此函数有来自网络控制器的中断和来自操作系统内核的时钟中断两个输入;Sebsw_hdr_chk()检验消息包的头部,如果发生硬件中断,Sebsw_intr()调用Sebsw_hdr_chk()函数;函数ether_input()检查接收到的数据类型,将接收到的分组加入到队列处理;函数ipinput()决定分组的最终地址,如果最终地址为本地地址,函数将分组传给更上一层软件,如果最终地址为非本地地址,则将分组传给ip_forward();函数ip_output()从收到的数据中生成IP数据包,然后Sebsw_start()将数据包传给网络控制器。

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论