近年来,现场可编程门阵列(Field Programmable Gate Array,FPGA)由于其高性能、低价格、高开发速度、方便的编程方式等特点得到了广泛的应用。但对FPGA进行DPA(DifferenTIal Power Analysis,差分功耗分析)攻击已经成为FPGA应用中信息安全的主要威胁之一,受到了广泛的关注。
DPA是SCA(Side Channel Attacks,旁路攻击)技术的一种,其攻击思想为:以电路的功耗特性为基础,利用功耗与内部密钥的关系,将大量采样到的包含该内部密钥运算的功耗波形 数据根据所猜测的密钥进行划分,使得所划分的两部分具有不同的功耗特性。最后,对两部分的功耗数据相减得到功耗差分曲线,如果猜测正确,差分曲线将出现明 显的尖峰。
因此,进行DPA攻击的根本原因是电路逻辑表示的不对称性引起的。本文将应用FPGA的自身结构特点,结合目前常用的抗DPA攻击的电路级防护技术,深入研究与分析在FPGA平台上实现针对DPA攻击的电路级防护技术。
1 FPGA上的电路防护技术 1.1 FPGA的底层结构FPGA的简化结构如图1所示。FPGA内部最主要的、设计工程中最需关注的部件是CLB(Configurable Logic Block,可配置逻辑块),IOB(Input/Output Block,输入/输出块),Block RAM(块RAM)、DCM(Digital Clock Manager,数字时钟管理器)和MulTIplier(乘法器)。其中CLB是FPGA具有可编程能力的主要承担者,Virtex-5的一个 slice的主要组成单元包括4个6输入查找表、4个触发器和若干个选择器。
1.2 双轨电路技术的实现
双轨电路技术是指无论是输入还是输出都是用两根线来表示的。由图2可见,在SDDL与门中,信号A就由A和共同表示,而输出Z也由Z和表 示。在这种表示下,一个变量可以有4种不同的逻辑值(0,0),(0,1),(1,0)以及(1,1)。SDDL将(0,1)和(1,0)分别用来表示逻 辑0和逻辑1。这样电路内部的逻辑0和逻辑1就变成了对称的,从而使得各自的功耗相同。另外,逻辑门还引入了一个prch预充电信号。在prch有效的情 况下,输出是(O,0),这个值也就是变量为预充电时在电路中的表示方式。电路的工作分为两个状态:运算状态和预充电状态。这两个状态交替更换,也就是在 prch上加载一个固定周期的脉冲。如此一来,电路中变量值的变化就是(0,O)到(O,1)或(1,O),或者是(0,1)或(1,0)到(O,0), 每次翻转都是只有一根信号线进行翻转。逻辑O和逻辑1达到了完全的平衡。
1.3 预充电技术的实现普通逻辑门不能提供持续转换活动,逻辑门的输入不变将导致门的数据独立。解决这个问题要通过增加预充电电路来提供变换。当时钟为高时,连接预充电电 路输入一个预充电相位,连接点变化到逻辑O;当时钟为低时,电路输入计算相位,实际计算完成。在FPGA上采用预充电逻辑的目的是要求在预充电相位期间 slice的输出必须是逻辑O,有两种方式来完成。在一个Xilinx的slice中,每个LUT后跟着专门的多路选择器和内存单元,可配置为寄存器或锁 存器。这里考虑使用多路复用器和内存单元来实现预充电,每种方法各有优点和缺点:
(1)使用时钟控制的多路复用器来实现预充电功能。将每个片子中单独的内存单元作为寄存器,但是除了寄存器的普通时钟还要分配一个反向时钟。这种方法的缺点是复制一个时钟信号并生成直接和互补信号将明显增加功耗和电路面积,布线也将复杂化。
(2)使用内存单元作为带有反向使能输入的异步清零锁存器来实现预充电功能。只需要一个单独信号给寄存器和预充电锁存器,预充电功能由连接反向使能输入和锁存器的清零输入实现,使用这种方法的缺点是专门设计的寄存器存储器需要一个单独的slice。
2 DES加密模块的实现要在FPGA上实现安全防护结构来确保关键部件的功耗恒定。这里选择从双轨和预充电技术在FPGA上实现旁路安全防护逻辑。当前的技术水平需要在FPGA上进行精确控制布局和布线。下面从S盒硬件宏的实现和DES加密核的实现来介绍基于FPGA的DES加密模块实现。
2.1 S盒硬件宏的实现S盒的设计是DES算法关键部分,S盒设计的优劣将影响整个算法性能。在采用FPGA实现时,应从资源和速度的角度出发,有效利用FPGA可配置属 性,充分考虑器件内部结构,尽可能使两者都达到最优。在设计中,由于综合工具的介入,所输出的网表很难被设计者所理解,同时要找到一种更好的方法来控制组 合电路,因此要建立硬件宏模块,简称硬宏。这与传统的设计流程不同之处是要充分利用:FPG Editor的功能,目的是从FPGA底层结构的配置上实现双轨和预充电技术。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)