1、 概述
随着信息社会的发展,数据交换,网上交易等活动日益频繁,从而网络安全成为人们关注的重要问题。随着信息技术的发展与应用,信息安全的内涵也在不断延伸,从最初的信息保密性发展到信息完整性、可用性、可控性和不可否认性,进而又发展为攻(攻击)、防(防范)、测(检测)、控(控制)、管(管理)、评(评估)等多方面的基础理论和实施技术。目前对于安全性有以下三个指标:身份验证、数据完整性和机密性。
HMAC_SHA1算法在身份验证和数据完整性方面可以得到很好的应用,在目前网络安全也得到较好的实现。然而大多数应用通过软件实现,但其安全性很难得到真正的保障,于是研究安全算法的硬件实现已成为热点。本文通过对算法和现场可编程芯片特点的分析,优化设计和实现了硬件系统的HMAC_SHA1_96算法应用方案。
2、 SHA1函数
SHA1函数是由美国国家标准和技术局和美国国家安全局设计的与DSS一起使用的安全散列算法SHA,并作为安全散列标准(SHS)的联邦信息处理标准(FIPS)而公布,SHA1是SHA的修订版。当输入长度小于2 64bit消息时,输出160bit的摘要,其算法步骤如下:
步骤一:填充附加位。一般经过填充使报文长度512取模余64bit。该步骤通常是需要的,即使报文长度已经是所希望的长度。因此填充长度范围为1到512,最高位为1,其余为0。
步骤二:附加报文长度值。即把一个64bit的报文长度数附加在上述报文之后(高字节优先),从而达到512bit的倍数。
步骤三:初始化变量。可以使用160bit的缓存(即160bit寄存器)来存放该散列函数的初始变量、中间摘要及最终摘要,但首先必须初始化, 给初始变量赋值,即:
A=0x67452301,B=0xefcdab98, C=0x98badcfe,D=0x10325476,E=0xc3d2e1f0
步骤四:处理512bit报文分组。在该步骤中包括四个循环,每个循环有20个处理步骤,而每个循环对 B﹑C﹑D所用的非线性函数不同,并且所用的常数也不同:
对于t=0~19,
ft (B,C,D)=(B∧C )∨((¬B)∧D),
Kt=0x5a827999
对于t=20~39,
ft (B,C,D)=B⊕C ⊕D,
Kt=0x6ed9eba1
对于t=40~59,
ft (B,C,D)=(B∧C )∨(B∧D)∨(C∧D),
Kt=0x8f1bbcdc
对于t=60~79,
ft (B,C,D)=B⊕C ⊕D,
Kt=0xca62c1d6
注:∧表示“与”;∨表示“或”;⊕表示“异或”;¬表示“取反”。
在每一步骤中都将执行如下的算法过程(图1)。

归纳为以下形式﹐其中 《《《 表示循环左移: A’, B’, C’, D’, E’← ((A《《《5) + ft (B,C,D)+Et +Wt +Kt ), A, (B《《《30), C, D 由于我们输入的是16个32bit消息,而SHA1运算需要80个32bit数据,所以存在一个由512bit 消息生成2560bit数据的转换过程(即生成W运算) ,其转换机制如下:
对于t=0~15, W t=Mt;
对于t=16~79,
Wt=(M t-3⊕Mt-8⊕Mt-14 ⊕Mt-16)《《《1。
步骤五:结果输出。512bit报文运算完就输出 160bit的报文摘要。
3、HMAC_SHA1_96算法
HMAC_SHA1_96算法[2,3,6] 是基于单向散列函数SHA1和以密钥为基础的完整性检查验证机制,它是从生成的160bit摘要中选择从高到低的96bit作为最终输出。在该算法中主要就是SHA1函数和HMAC算法。它的作用在于生成摘要放在消息后面以验证消息在传输时是否受到修改或变动,保证消息的完整性。根据HMAC的定义,本设计的HMAC_SHA1_96算法原理图如图2。

图2算法的几点说明:① _ipad表示补位后的密钥与ipad 异或的结果,K_opad表示补位后的密钥与opad异或的结果;② 次SHA1运算包括生成W运算;③ 由SHA1运算输出的结果是经过加法处理的结果;④ 虚线部分表示图上忽略的信息分组和相应的SHA1运算部分;⑤ 如果只有512bit消息,则第一轮只需进行两次SAH1运算,就转到第二轮。图2又可写成如下的表达式:
SHA1( K XOR opad, SHA1(K XOR ipad, M) )
其中 K是密钥补位后的新值,即在密钥后补0使之为512bit;ipad是0×36重复16次的一个数组;opad是0×5c重复16次的一个数组;M是消息;XOR表示异或运算;SHA1是安全散列函数。
4、 硬件设计
针对以上算法分析和实现流程特点,结合 FPGA芯片的硬件结构,进行如下的硬件系统设计和优化。
4.1使用RAM结构
在HMAC_SHA1_96算法体系中,有大位数的数据存储,如果要用寄存器来实现,需要大约7000左右的寄存器,占用大量的FPGA芯片资源,这是因为FPGA芯片上,每个LE(逻辑单元)单元只有一个寄存器,这样每个LE单元上其它硬件资源将会浪费。然而FPGA芯片上大量的ESB(嵌入式系统块)资源没有充分利用,而ESB可以用来实现各种类型的存储模块,如RAM、ROM、FIFO和CAM等,在这种情况下,可以采用ESB实现RAM来代替寄存器,从而节省LE硬件资源,并且RAM存储数据,控制起来比寄存器方便很多。
4.2 重复利用相同模块
正如前面算法所述,SHA1算法是由80次运算组成的,而每次运算的结构又是一样的,如果采用水线形式的运算模式,利用80个同样的模块,会占用很多的硬件资源,不符合优化设计的要求,因此可以先优化设计出一个模块,再对该模块复用80 次,每一次运算的结果需存入寄存器,以便送入下一次运算,这样可极大地优化利用FPGA硬件资源。
4.3 模块划分
HMAC_SHA1_96算法体系的硬件实现,必会存在与外围电路的数据握手传输。由于外围电路(8255或CPU)的工作时钟频率与所设计的芯片工作时钟频率不一样,要让设计芯片与外围电路协调工作,就必须专门设计输入输出接口电路,再设计出核心处理模块,从而不受外界电路工作环境影响。由此,可以将本设计分为三个部分:输入模块、算法实现模块和输出模块。
4.3.1 输入模块
由于输入模块会跟外围电路(如8255)连接进行信号或数据传输,根据握手信号ACK和OBF,每次输入8bit数据写到64×8bit的RAM,需要64 次,而外围电路什么时候输入数据由内部信号sha_end控制,该模块的输出一次为32bit,所以相当于一次读4×8bit数据。
4.3.2 算法实现模块
该模块主要进行HAMC_SHA运算,输出160bit摘要,其数据处理流程图见图3(图中 M_RAM用来存储消息),其中又可以分为以下几个主要部分:

① 密钥输入处理部分。处理密钥时需要先对其进行异或运算,然后把其写入两个32×16bit的 RAM,假设分别为I_RAM和O_RAM。I_RAM里数据在第一轮SHA1算法首先运算,而O_RAM 里的数据要到第二轮才开始运算。
② 生成W处理部分。 由于SHA1函数中要进行80次运算,每次运算采用不同的32bit W值,而输入的只有16个32bit数据,于是该算法采用四个不同的W值进行异或运算生成新的W值。这四个W值是从80×32bit的W_RAM读出的,而生成新的 W值再依次写入该RAM中没有使用的位置。
③ SHA1运算部分。是设计的核心部分,需要完成80次运算,每次从32×80bit RAM读出一个32bit W值,最终生成160bit摘要。
④ 摘要处理部分。主要对每一次SHA1运算后生成的摘要与本次的初始密钥进行加法运算,作为下次SHA1运算的初始密钥,或者作为最终输出摘要,或者作为下一轮SHA1运算的消息输入。
⑤ 摘要补位部分[6] 。对第一轮生成的160bit摘要进行补位,方法为:[160]~[190] 0[191] 1 [192]~[479] 0 [480]~[511]=1010100000,将此值写入一个16×32bit的FILL_RAM。
4.3.3 输出模块
同输入模块一样,由于同外围电路进行信号或数据传输,根据握手信号STB和IBF,每次输出8bit数据到外围电路,但该部分主要是一个8×12bit RAM,可以一次写入96bit数据。
4.4 硬件系统总体结构
在数据输出端加锁存器是为了保证输出数据被外围电路采样之前始终有效,从而达到本设计与外围电路协调工作的目的。结构图如图4。

5、 FPGA实现
我们知道,FPGA芯片内部结构是由逻辑阵列块(LAB)、嵌入式系统块(ESB)、快速通道互联和输入输出单元(IOE)组成。LAB是由10个LE、LE 间关联的进位链﹑级连链﹑LAB控制信号和LAB局部互连构成,可以实现快速运算通道,特别适合本设计算术运算单元的硬件实现。ESB如前所说,可以用来实现不同的存储模块,特别适合于大位数的数据存储。快速通道是用来实现LE之间,ESB 与I/O之间的快速互连,并且具有高扇出能力,它是一系列纵横交错的连续式分布通道,能够得到高性能和快速的信号传输,提高本设计运算效率和信号的稳定性。I/O单元由一个双向缓冲器和一个寄存器组成,含有可编程延时,可确保零保持时间或最小的时钟到输出时间,减少设计数据输出的毛刺现象。另外FPGA可以重复使用,以方便修改代码或参数时再重新配置FPGA。
本设计采用Altera的APEX20KE160EQC240_1X 芯片实现,其功能模块及PC接口原理图见图5。


图中FPGA编程器采用QuartusⅡ2.0软件, HMAC_SHA1_96应用环境设置主要配置软件控制HMAC_SHA1_96的运行机制,PCI控制器用来控制FPGA芯片与PCI BUS的通讯。先通过QuartusⅡ2.0软件对代码布局布线生成pof文件或sof文件, pof文件可直接用来配置FPGA,但每次使用时必须重新配置;而sof文件可以先存入EEPROM,再由 EEPROM对FPGA配置,每次上电前由EEPROM配置,这样可以直接应用于信息安全硬件系统中。
责任编辑:gt
相关推荐
理解Verilog编码技巧掌握FPGA中状态机的写法掌握非重叠序列检测代器Verilog代码编写
发烧友学院发表于 2020-04-21 00:00
•
20539次阅读

空间飞器在太空环境中面临的主要问题之一就是辐射。太空中的各种高能粒子(包括高能质子、中子、α粒子、得....
发表于 2020-07-22 17:40•
7次阅读

E2PROM存储器存储单元的损坏主要是由频繁的写操作造成的。若要解决问题,首先耍避免对同一单元进行频....
发表于 2020-07-22 17:32•
10次阅读

在图1所示跟踪环路结构中,为了使码跟踪环同时具有大跟踪范围和高跟踪精度,可以采用多个具有不同相关间距....
发表于 2020-07-22 16:55•
9次阅读

随着数字信号处理理论及应用技术的迅速发展,在一个数字系统中只用一个采样频率已 经很难满足要求。在实际....
发表于 2020-07-22 16:47•
21次阅读

在FPGA中实现在应用编程(In Application Pro—gramming,IAP)有两种方....
发表于 2020-07-22 16:41•
18次阅读

近年来,随着人们对生活品质的追求,每个家庭都越来越需要一个集控中心把家庭中的各种家电连接起来,并实现....
发表于 2020-07-22 16:36•
22次阅读

存储单元采用图2(a)所示的8管双端口结构,每个端口对应一条的字线和一对位线。当字线电位拉高时,对应....
发表于 2020-07-22 16:30•
15次阅读

要实现显著的降温效果,那么散热片必须有足够的表面面积,否则,如果表面积过小,散热片就不能散发掉足够的....
发表于 2020-07-22 16:17•
6次阅读

5月20日,“警用无人机与低空安全技术协同创新中心”在西北工业大学长三角研究院成立。该中心的成立将全....
发表于 2020-07-22 15:57•
33次阅读

业内认为,6G网络的速度有望达到5G的50倍,延迟则缩短到5G的10%。相关专家预测,6G网络或将在....
发表于 2020-07-22 15:48•
45次阅读

“C-RAN建网模式下,由于大量纤芯消耗,光纤直驱的应用场景大大受限,基于WDM技术的前传方案在5G....
发表于 2020-07-22 15:21•
24次阅读

尽管XR市场前景广阔、云XR是最佳路径已成为产业共识,但面向商用的5G云XR端到端结构和解决方案依然....
发表于 2020-07-22 14:46•
18次阅读

2020年是5G商用部署的关键之年,5G领衔新基建的发展,成为经济发展的稳定器和助推器。我国政府高度....
发表于 2020-07-22 14:40•
43次阅读

你好,
在Pg053-xaui中有图像(图4-2),它显示了XAUI的典型背板应用:现在我对上面的图像有疑问。我在Kintex-...
发表于 2020-07-22 14:00•
0次阅读

嗨,
我需要在XC7K325T FPGA中充分利用GTX资源。
结果,我必须以这种方式使用一个四边形,
它的两个频道...
发表于 2020-07-22 13:25•
0次阅读

几乎每一代通讯技术的革命都会催生现象级的产业,2G网络“催熟”了网站,3G网络将社交软件推上产业之巅....
发表于 2020-07-22 11:47•
26次阅读

最近,通信行业许多上市公司披露了2020年上半年的业绩预测或业绩快报。《证券时报》记者梳理了40条公....
发表于 2020-07-22 11:47•
88次阅读

日前,杨凌示范区印发《加快通信基础设施建设及5G创新发展2020年行动计划》的通知,明确指出,202....
发表于 2020-07-22 11:40•
55次阅读

嗨,
我在使用Vivado 2013.4的7系列收发器向导生成示例测试平台时遇到了麻烦。
有一次,我能够生成示例tb,但现在每...
发表于 2020-07-22 10:36•
0次阅读

AD7731是美国ADI公司开发的具有低噪声、高通过率等特性的∑-Δ模数转换器。它可直接接收来自传感....
发表于 2020-07-22 10:34•
30次阅读

Lightreading报道,美国最大电信运营商之一的Verizon日前宣布基于Infinera的I....
发表于 2020-07-22 09:27•
57次阅读

必须看到,我国工业企业数量全球第一,具有丰富的工业互联网应用场景和巨大的市场规模,工业互联网平台发展....
发表于 2020-07-22 08:23•
150次阅读

在90nm工艺时,电流泄漏问题对ASIC和FPGA都变得相当严重。在65nm工艺下,这一问题更具挑战....
发表于 2020-07-21 17:56•
80次阅读

1.信道的选取:电波经过反射、折射、散射等多条路径传播到达接收机后, 总信号的强度服从瑞利分布。同时....
发表于 2020-07-21 17:51•
41次阅读

在测量技术中,高速数字摄像机所拍摄到的大量数字图像需要高速、大容量的图像存储设备来实时快速地存储。用....
发表于 2020-07-21 17:45•
44次阅读

对于速度和实时性能要求非常高的协议,在硬件中以专用协议MAC的形式实现实时功能。而协议的其他功能由运....
发表于 2020-07-21 17:39•
84次阅读

四相绝对移相键控(QPSK)技术以其抗干扰性能强、误码性能好、频谱利用率高等优点,广泛应用于数字通信....
发表于 2020-07-21 17:34•
102次阅读

SpacewiTe是欧空局2003年提出的一种高速的、点对点、全双工的串行总线网络,面向空间应用。它....
发表于 2020-07-21 17:30•
31次阅读

目前,在国内外的应用系统中,ATM功能和UTOPIA接口都由一些技术成熟的专用通信处理芯片来完成,如....
发表于 2020-07-21 17:24•
64次阅读

SOPC技术是一种基于FPGA解决方案的SOC,由美国Altera公司于2000年提出。基于SOPC....
发表于 2020-07-21 17:14•
26次阅读

随着数字电子系统设计规模的扩大,一些实际应用系统中往往含有多个时钟,数据不可避免地要在不同的时钟域之....
发表于 2020-07-21 17:09•
44次阅读

设计的复杂度并不是唯一的限制因素。Altera公司技术营销高级经理Phil Simpson指出,如果....
发表于 2020-07-21 17:02•
45次阅读

7月20日,在华为云TechWave技术峰会上,华为云基础服务领域总裁高江海正式发布了全球独家双零损....
发表于 2020-07-21 16:57•
179次阅读

7月20日,华为云联接与协同业务总裁薛浩在“华为云TechWave技术峰会”发表题为“实时音视频,激....
发表于 2020-07-21 16:45•
192次阅读

7月20日,在华为云TechWave技术峰会上,华为云应用平台ROMA正式发布。华为云应用平台ROM....
发表于 2020-07-21 16:43•
244次阅读

近日,为确保高校学子顺利返津返校,公安交通部门在重点高速公路沿线启用了警用无人机高空执勤、喊话,辅助....
发表于 2020-07-21 15:59•
84次阅读

为加快5G网络基础设施建设,保定移动从网络规划、建设装维、融合组网三个方面加强协同,统筹各方力量形成....
发表于 2020-07-21 15:12•
33次阅读

在一个领域中,如果唯一不变的是变化,那么不需要对电子技术和设计方法的发展变化做多少回顾,就能见证到变化是如何使...
发表于 2020-07-21 15:09•
124次阅读

1.入门首先要掌握HDL(HDL=verilog+VHDL)
第一句话是:还没学数电的先学数电。然后你可以选择verilog或...
发表于 2020-07-21 14:45•
202次阅读

之前都是使用固件库来配置程序的,但是现在这个芯片的固件库没有,手里只有数据手册和参考手册。所以对与这块板子有点...
发表于 2020-07-21 14:39•
0次阅读

日前,济南遥墙国际机场(以下简称:济南机场)800兆数字集群通信系统中期升级及宽窄带融合通信系统项目....
发表于 2020-07-21 14:31•
96次阅读

THS1206有4个模拟信号输入端,每个输入端既可作为4个单独的非极性信号的输入通道,也可作为2个差....
发表于 2020-07-21 10:17•
51次阅读

智慧城市在近年来走进人们的生活,围绕交通、医疗、工业、农业、金融、教育、视频娱乐等重点领域,提供更多....
发表于 2020-07-21 09:45•
162次阅读

关于“进入异常”:在异常发生后,ARM7TDMI内核会作以下工作:
发表于 2020-07-21 09:10•
147次阅读

嗨,我正在使用fpga来控制ov5642相机。
我已经设法通过i2c协议访问寄存器并设置它们的一些值:寄存器值0x3017 0x7f0x...
发表于 2020-07-21 06:52•
0次阅读

I2C(Inter Integrated Circuit)双向二线制串行总线,是由飞利浦公司制定的。....
发表于 2020-07-20 18:08•
63次阅读

英国格拉斯哥大学称,该校科学家通过使用现场可编程逻辑门阵列(FPGA)芯片系统,能够以高出目前标准处....
发表于 2020-07-20 18:04•
122次阅读

脉冲宽度调制(PWM) 是英文“Pluse Width Modulation”的缩写,简称脉宽调制。....
发表于 2020-07-20 17:59•
85次阅读

随着便携和以电池供电的应用快速增加,低功耗设计已成为延长电池寿命所不可或缺的任务。此外,在决定产品尺....
发表于 2020-07-20 17:53•
161次阅读

与开发成本很高的ASIC相比,FPGA可重复编程的性能正受到系统设计者的青睐。此外, FPGA的性能....
发表于 2020-07-20 17:35•
76次阅读

数字化中频(DIF)频谱分析仪在高中频实现数字化处理,具有分析带宽大、RBW小、测量时长短,可对复杂....
发表于 2020-07-20 17:26•
55次阅读

当然,并非所有的可编程逻辑技术都能很好地满足低功耗要求。事实上,当今市场某些所谓的“低功耗”器件的电....
发表于 2020-07-20 17:20•
70次阅读

近年来,数字化浪潮席卷全球,包括制造业、电力、交通、医疗、教育等在内的多个行业都开始拥抱数字化、网络....
发表于 2020-07-20 17:16•
64次阅读

在FPGA系统设计中,按键是最常见的人机交互接口部件。在没有微控制器参与的情况下,FPGA系统中按键....
发表于 2020-07-20 17:13•
55次阅读

在睡眠模式,寄存器的电源Vdd2被切断,因此它的漏电功耗极小;这时候仅仅保持锁存器处于工作状态,寄存....
发表于 2020-07-20 17:13•
83次阅读

Trion Titanium FPGA 是基于16纳米工艺节点,并采用易灵思的 “Quantum™ ....
发表于 2020-07-20 17:01•
124次阅读

7月15日,国家防办、应急管理部继续与水利、气象等部门联合会商,进一步分析研判雨水汛情,安排部署当前....
发表于 2020-07-20 16:22•
101次阅读

基于未来高网络容量和全频谱接入的需求,5G基站建设已成为当前我国移动通信建设的重点,预计未来全国5G....
发表于 2020-07-20 15:30•
240次阅读

随着工业生产与科学技术的发展,大型水轮机组的自动化水平也在不断提高。而这些设备一旦发生故障,将会给人....
发表于 2020-07-20 15:19•
75次阅读

如果我们连接运放的输出到它的反相输入端,然后在同相输入端施加一个电压信号,我们会发现运放的输出电压会....
发表于 2020-07-20 14:57•
145次阅读

从芯片器件的角度讲,FPGA本身构成了半定制电路中的典型集成电路,其中含有数字管理模块、内嵌式单元、....
发表于 2020-07-20 14:26•
358次阅读

据媒体报道,国内规模最大的5G智能电网项目在山东青岛建设完成。据了解,该项目由国网山东青岛供电公司与....
发表于 2020-07-20 12:49•
112次阅读

在为线性调频的雷达视频目标产生模拟信号的过程中,为了得到高质量的视频模拟信号,其前端通常采用数字信号....
发表于 2020-07-20 11:03•
64次阅读

X79000是Xicor公司推出的12位单通道串行D/A转换器。其建立时间仅为6s。该芯片内置参考电....
发表于 2020-07-20 10:57•
45次阅读

TuSimple周三表示,UPS、Penske和US Xpress将分别与公司合作,分三个阶段实施该....
发表于 2020-07-20 10:45•
411次阅读

你好,
在哪里可以找到未编程V7的用户I / O引脚的电气描述(交流阻抗,直流电流)?
(我想这个问题也可以扩展到...
发表于 2020-07-20 10:28•
0次阅读

喜:
现在,我正在设计7系列FPGA的DPR(动态部分重配置),我已经在shell中使用Tcl命令完成了DPR,并生成...
发表于 2020-07-20 08:01•
0次阅读

亲爱的同事,
我必须为我的固件做出Zed Board和virtex -7设备的决定。
我理解这个事实,选择的选择取决于你想做什...
发表于 2020-07-20 07:07•
0次阅读

评论