求实现FPGA模块的加密方法

lyggggly 2012-04-18 11:23:14
将生成加密的bit文件直接下载到FPGA可否实现子模块加密?
将ID验证与子模块一起综合成ngc文件,再给工程用,ngc能否被破解?
...全文
782 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
net_friends 2012-05-03
  • 打赏
  • 举报
回复 1
没用的 现在的技术完全可以达到读取flash的
把flash完全读出来 不就能用了吗
graduated 2012-05-03
  • 打赏
  • 举报
回复
FPGA加密留爪
如此美丽的你 2012-05-03
  • 打赏
  • 举报
回复
基于FPGA的DES、3DES硬件加密技术

传统的加密工作是通过在主机上运行加密软件实现的。这种方法除占用主机资源外,运算速度较慢,安全性也较差。而硬件加密是通过专用加密芯片、FPGA芯片或独立的处理芯片等实现密码运算。相对于软件加密,硬件加密具有加密速度快、占用计算机资源少、安全性高等优点。

设计思路
本设计首先用硬件描述语言(VHDL)进行DES(数据加密标准)、3DES(三重DES)算法编码和系统设计,然后采用FPGA来具体实现。采用FPGA设计灵活,可对芯片内部单元进行配置,可以缩短设计周期和开发时间,同时经过优化可以达到较高的性能。另外有多种EDA开发软件支持FPGA的设计,在本设计中采用了EDA综合工具Synplify和Altera公司的Quartus II 7.2开发软件。


系统的硬件结构
整个系统由FPGA、DSP、时钟电路、电源电路等部分组成,如图1所示。FPGA是系统的核心器件。DSP作为控制单元,控制数据的传输。系统的工作过程是这样的:在DSP的控制下,主机中待加密的明文数据通过PCI总线传送到FPGA的RAM区,然后启动控制模块的状态机,把明文送入DES模块或3DES模块进行相应的加密运算。运算的结果(密文)再返回到主机中。FPGA自带的JTAG接口用来连接下载电缆到主机的并口,便于用逻辑分析议对系统调试。EPCS4是FPGA的配置芯片,用来存储程序。由于系统掉电后FPGA内的程序将丢失,所以每次上电后FPGA首先从EPCS4里读取相应的配置信息。

图1 系统结构框图


考虑到本设计中FPGA的RAM容量不能太小,以便存储较多的数据;另外用户I/O引脚数量应有一定的富裕。最终选择了Altera公司Cyclone III系列的EP3C25F256C8。其I/O引脚数是156个,RAM总量为608Kb。

3DES模块的设计
采用VHDL编程实现DES算法后,通过Synplify生成一个基本的模块——DES核(如图2所示)。

图2 DES核


DES核的引脚功能如下。
clk:时钟输入端,本设计时钟源为50MHz晶振;
reset:复位端,低电平有效;
encrypt:加密、解密选择端,高电平进行加密操作,低电平进行解密操作;
din[63..0]:数据输入端;
din_valid:数据输入有效端;
key_in[55..0]:密钥输入端;
dout[63..0]:数据输出端:
dout_valid:数据输出有效端;
busy:忙信号标志端,当busy为高时说明正在进行算法转换,为低时可以输入数据。


用DES核构成的3DES模块,将其移植到Quartus II 7.2里,通过编程实现对此模块的控制,设计中用到了状态机。状态机是组合逻辑和寄存器逻辑的特殊组合,尤其适合于数字系统的控制设计,系统的状态在一定的条件下相互转移。状态机的转移图如图3所示,下面以加密过程为例,说明具体的实现过程。

图3 控制模块的状态机


系统复位后FPGA进入空闲状态(3DES_IDLE),当算法选择信号chooes=’1’时选择3DES算法;开始信号start=’1’时,状态机进入写密钥状态(3DES_KEY);在写密钥状态FPGA将内部RAM区存储的112位密钥写入3DES模块,写完后判断busy信号,当busy=’0’时进入写数据状态(3DES_DATA);在此状态,RAM中的一个待加密的明文分组64bit传入到3DES模块里,之后3DES模块将此数据进行加密,完成后dout_valid信号变为高电平。状态机检测到此信号变高后进入下一状态(3DES_RDDATA),将加密后的密文写回到RAM区,之后判断是否处理完了所有的明文分组,如果未处理完,当busy=’0’时重复3DES_DATA状态,加密下一个明文分组,直到处理完所有的明文数据,状态机才进入3DES_DONE状态,从而完成了整个加密过程。解密的过程同加密过程一样,通过逻辑加以区分。


DES模块的设计
DES模块采用4个DES核并行处理数据的流水线设计方法。其状态机同3DES类似,所不同的是在写密钥状态向DES模块写入56位密钥,在写数据状态向DES模块写入256位数据,每个DES核处理64位数据,其中第一个DES核处理数据的0~63bit,第二个DES核处理64~127bit,依次类推。操作完成后DES模块将256位的密文或明文再传入到RAM里。采用流水线设计可以使4个DES核并行工作,大大提高了加解密速度。

方案的验证及性能
调试的过程中用到SignalTap,SignalTap宏功能是一种嵌入式逻辑分析器,能够在器件的特定触发点捕获数据并保存到FPGA的嵌入式系统块中。这些数据被送到JTAG接口,通过ByteBlaster II 下载电缆上传到quartus II波形编辑器中进行显示。图4为在调试过程中用SignalTap捕捉到的3DES运算的时序,平均18个时钟周期处理完一个数据分组(64bit)。图5为DES运算的时序,平均36个时钟周期处理完一个数据分组(256bit)。
最终调试DES、3DES算法加解密成功后,将Quartus II 7.2编译生成的编程文件通过下载电缆ByteBlaster II下载到我们的试验板卡上。在Windows XP的系统下,用VC的环境编写出了测试程序和驱动程序,最终测得DES加解密的速度是:230Mb/s;3DES加解密的速度是:120Mb/s。

图4 3DES时序波形图

图5 DES时序波形图

注意事项
用SignalTap进行调试的过程中,要使采样频率大于被测信号的最高频率,否则无法正确反映被测信号的波形变化。由于系统的输入最高频率为50MHz,为了调试正确,利用了FPGA的锁相环对输入时钟进行倍频,从而用100MHz的信号作为采样频率。另外需要设置合适的触发点及采样深度。


系统优缺点分析及改进方法
优点:设计过程中采用了状态机和流水线技术,提高了数据的加解密速度;另外采用FPGA使得设计比较灵活,各模块均用了硬件描述语言编码实现。


不足之处:DES曾被人利用网络计算采用穷举攻击的方法破解过,目前也已经设计出采用穷举攻击在4小时内破解DES的机器。DES本身虽已不再安全,但在数据对安全性要求不高的场合仍然广泛使用着,其改进算法3DES的安全性还是相当强的。
lyggggly 2012-05-02
  • 打赏
  • 举报
回复
如果采用dna加密,读取每块fpga的id,在允许的范围内就输出使能信号驱动算法模块,就是在开发时将客户提供的id预先存入ram,重新综合成ngc文件给用户。这种方法有几个问题想请教一下:
1.dna_port在子模块中能否使用
2.所生成的ngc文件,能否通过读取其中信号,观察规律,修改逻辑,跳过加密部分直接给使能信号赋值
3.通过chipscope观察ngc内部信号连接关系与变化规律,反推算法
4.支持dna加密的fpga芯片有那些
小枫 2012-04-25
  • 打赏
  • 举报
回复
2楼的办法好像不错
falloutmx 2012-04-23
  • 打赏
  • 举报
回复
谁无聊去破解网表啊
lyggggly 2012-04-23
  • 打赏
  • 举报
回复
要给别人用呢?能破解吗?
net_friends 2012-04-18
  • 打赏
  • 举报
回复
不卖给别人 不给别人看 别人不会知道
falloutmx 2012-04-18
  • 打赏
  • 举报
回复
直接给人NGC和顶层文件,人家IP Core都是这么做的

2,425

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 其他硬件开发
社区管理员
  • 其他硬件开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧