文档介绍:一种基于 FPGA 的可重构密码芯片的设计与实现
杨晓辉, 戴紫彬
解放军信息工程大学电子技术学院,河南郑州 450004
来源:电子技术应用
摘
要: 介绍了 SHA-1、SHA224 及 SHA256 三种安全杂凑算法的基本流程,采用可重构体系结构的设计
思想和方法设计出一款可实现这三种算法的可重构密码芯片,并对关键路径进行了优化设计。最后给出了
基于 Altera 公司的 Cyclone 系列 FPGA 的可重构密码芯片的实现结果。
关键词: SHA-1/SHA-224/SHA-256 可重构密码芯片 FPGA
目前,国内外广泛使用的密码处理芯片大都是实现某种特定密码算法的专用芯片,如 MD5 芯片、SHA-1
芯片等。由于专用密码芯片实现的密码算法是确定的且不可更改的,因此难以满足不同密码用户多层次的
安全性需要。为克服这一缺陷,本文设计一种新型的密码处理芯片——可重构密码芯片。
可重构密码芯片是采用可重构体系结构设计而成的用于对数据进行加/解密处理的集成电路芯片。其内
部逻辑电路能够根据不同密码算法的需求重新组织,构成不同的电路结构,实现不同的功能,从而能够灵
活、快速地实现多种不同的密码算法[1]。此外,由于可重构体系结构设计是建立在某些硬件资源能够被不
同应用需求重复使用的基础之上的,所以其消耗的硬件资源要比只实现某种算法的专用芯片所占用的硬件
资源的总和要少得多。可重构密码芯片不仅可以灵活实现多种密码算法,还可以更加有效地利用硬件资源
以达到节约逻辑资源的目的。本文在分析 SHA-1/SHA-224/256 [2]算法的基础上,选用 Altera 公司的 Cyclone
系列器件,采用 VHDL 语言进行描述,并给出一种能实现该可重构密码芯片的电路设计方案。
1 算法简介
SHA-1 算法输入报文的最大长度不超过 264bit,输入按 512bit 分组进行处理,产生的输出是一个 160bit
的报文摘要。该算法处理包括以下几个步骤:
(1)附加填充比特。对报文进行填充使报文长度与 448 模 512 同余(长度=448 mod 512),填充的比特数
范围从 1 到 512,填充比特串的最高位为 1,其余位为 0。
(2)附加长度值。将用 64bit 表示的初始报文(填充前)的位长度附加在步骤(1)的结果后(低位字节优
先)。
(3)初始化缓存。使用一个 160bit 的缓存存放该散列函数的中间值及最终结果。该缓存的值分别表示
为 A=67452301,B=EFCDAB89,C=0x98BADCEF,D=0x10325476,E=C3D2E1F0。
(4)处理 512bit(16 个字)报文分组序列。算法的核心是一个包含四个循环的模块,每个循环由 20 个处
理步骤组成。四个循环有相似的结构,但每个循环使用不同的逻辑函数,分别表示为 f1、f2、f3、f4。每个
循环都以当前正在处理的 512bit 和 160-bit 缓存值 A、B、C、D、E 为输入,然后更新缓存内容。每个循环
还使用一个额外的常数值 Kt,对应的四轮 Kt取值及逻辑函数 ft如表 1 所示。第四循环最后一步的输出与第
一循环的输入进行模 232相加后得到下一个 512bit 分组计算所需的