- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
基于DS28E01的FPGA加密认证系统的设计
唯一识别号及附加数据(常数)在内的 HASH运算结果,运算的结果是 160位的 MAC(消息认证码),同时,FPGA内部也会同安全存储器一样进行包含密钥、随机数、附加数据及器件识别号在内的 HASH计算并产生一个期望的MAC。然后,在 FPGA内会对这两个 MAC进行比较,如果一样,则 FPGA认为该电路是"合法"电路,因为它拥有正确的密钥。此时 FPGA进入正常工作状态,开启/执行其配置数据中的所有功能,会执行所有的功能。如果 FPGA和DS28EO1两者产生的MAC不匹配,则系统会认为该电路是一个"非法"电路,因为该系统不具有正确的密码。此时 FPGA进入非正常运行状态,只执行有限的功能。
3.2、加密认证模块的程序设计
为了实现加密认证的功能,我们在 FPGA中利用 VHDL语言设计了 IFF模块,在 IFF模块的内部是根据SHA-1算法实现了对输入密码的HASH函数运算以及与DS28E01中产生的MAC的比较功能,IFF模块的接口定义如图 2所示:
其中,CLKIN是一个大于 20M的时钟;IFF是认证启动信号,在 IFF信号上升沿的时候模块内部开始启动 HSAH运算过程以及密码比较过程;RESET是复位信号,高电平有效;IB则是 FPGA通过 1-Wire协议与 DS28E01通讯的信号;FOE信号是 IFF模块的输出线,在IFF内部 MAC比较完成后,如果 FPGA认定该电路具有正确的密码,则会置 FOE信号为低电平,反之如果 FPGA认定该电路不是合法的电路,则会置 FOE信号为高电平,在 FPGA内部可以根据FOE的信号来实现不同的功能。这样,系统就可以根据电路是否是被拷贝的来实现不同的功能,防止了设计被拷贝。
在 IFF模块中,实现了标准的 SHA-1算法,其中算法流程图见图3,在 FPGA配置完成之后,在 RESET信号与时钟信号的控制下,FPGA内部就会运行 SHA-1算法产生相应的MAC,与由 DS28E01产生的 MAC进行比较,根据比较结果将 FOE设置为不同的状态,然后 FPGA就可以根据 FOE的状态来判断是否是合法电路。其中的初始化主要完成消息填充和附加原始消息长度以及在算法中需要的函数和常数的定义。
4、设计总结
在现在电子设计的成本越来越高的情况下,基于 SRAM的 FPGA由于自身限制,容易使得设计者的设计被复制,从而给设计者提出了设计具有加密功能的电子系统,由于 SHA-1 算法引擎的 DS28E01芯片作为加密认证系统的核心芯片,并利用 DS28E01针对 Xilinx公司的 X3CS500E开发了实际的加密认证系统,并将此系统应用于实际的产品中,取得了良好的效果。
图 3 SHA-1算法流程图(Figure 3. SHA-1 algorithm flow)
本文作者创新点:针对基于 SRAM的 FPGA在配置过程中设计数据容易被克隆的现象,设计了基于安全存储器的加密认证系统,增强了系统的安全性。
来源:维库开发网