防DPA攻击的集成电路设计方法
发布时间:2007/8/28 0:00:00 访问次数:758
与传统的攻击技术相比,差分功耗分析(DPA,Differential Power Analysis)攻击技术具有更强的攻击性和解密效率,因此防DPA攻击的设计方法越来越引起电路设计工程师的重视。本文从组合逻辑、寄存器、存储器、传输数据结构和中间状态等几个方面对防DPA攻击的电路设计方法进行了介绍。
最近,一种DPA攻击技术被用来破译集成电路中的重要信息。DPA攻击技术的原理是:当芯片在执行不同的指令进行各种运算时,对应的功率消耗也相应变化。通过使用特殊的电子测量仪和数学统计技术,来检测和分析这些变化,从而得到芯片中的特定关键信息。这种利用指令的电流变化来分析密码算法和密码的方法,和以往的攻击技术有根本的不同,因此防DPA攻击的设计方法越来越引起电路设计工程师的重视。align="right" BORDER=0 >
CLASS="maintext">
图1:CMOS AND电路由一个
NAND电路和一个NOT电路组成。
传统的防DPA攻击的方法有两种:一种是用随机数发生器产生额外的噪声和干扰信号,另一种是通过增加滤波电路来消除噪声。这两种方法都具有其固有缺陷,它们都会增加芯片的面积,其中前一种方法还会增加额外功耗,后一种方法则只是相对增加了DPA攻击的难度,并不能彻底解决DPA攻击问题。
本文介绍的防DPA攻击的电路设计方法不同于传统方法,它从DPA的攻击原理出发,专门针对DPA攻击而设计,能有效解决通过分析芯片电流变化来进行攻击的问题。这种防DPA攻击的电路设计方法从分析集成电路的基本电路单元开始,由简到繁设计出防DPA攻击的复杂电路,从根本上解决了DPA攻击问题。
防DPA攻击的基本电路单元
一个典型的CMOS NAND电路通常由4个MOS管组成,包括2个PMOS管和2个NMOS管。图1是一个CMOS AND电路,它是由一个NAND电路(P1和P2的参数相同,N1和N2的参数相同)和一个NOT电路组成。
由于P1和P2的参数相同,而且这两个晶体管是并行的,所以当输入信号A变化或者B发生变化时,这两个PMOS管对AND的瞬态变化的影响一样。而N1和N2是串行的,因此当输入A=1、B=0时,NAND的瞬态特性与输入A=0、B=1时的瞬态特性不同。虽然理想CMOS数字逻辑门在静态条件下不会消耗电流,但当输入信号变化时,它会消耗一定电流。这是因为MOSFET和信号传输线都存在寄生电容,并且当逻辑门处于变化状态时,Vdd和Gnd都存在瞬态电流。因此,这个与门的瞬态电流大小不仅与输入信号的变化有关,还与输出值Q有关。align="LEFT" BORDER=0 >
CLASS="maintext">
图2:防DPA攻击的基本电
路单元的电路结构。
本文介绍的防DPA攻击的基本电路单元,对所有可能的输入信号都表现出相同的电特性。这些电特性包括导通和闭合的PMOS管和NMOS管的数量、输入线的电容负载、输出线的负载以及电路单元自身的瞬态电流。图2为该基本电路单元的电路结构。
这个门电路有A和B两个输入,输入信号是2位的常数汉明权重码(constant Hamming weight representation),即A1和A2分别是0、1时对应“假”逻辑,1、0时对应“真”逻辑。在图2中,信号传输都是以2位汉明码形式进行,因此无论A和B信号如何变化,翻转的MOS管的数量都相同,且是一个常数10。
这个防DPA攻击的基本电路单元还可以表达多种逻辑。当需要表达AND逻辑时,输出为O1、O2,其中O1为汉明码指示位;当需要表达NAND逻辑时,输出为O2、O1,其中O2为2位汉明码指示位;当需要表达OR逻辑时,输出为O7、O8,其中O7为汉明码指示位;当需要表达NOR逻辑时,输出为O8、O7,其中O8为汉明码指示位。而O3、O4、O5和O6是没有作用的输出信号,但为保证各种输入情况下基本单元的对称性和相同性,这几个输出管脚在实际电路设计中应尽量和O1、O2、O7、O8接相同的负载。
防DPA攻击的主要目的是使电路电特性在运算时保持相同,而保持电特性相同很重要的一点是使整个电路在运算时翻转的晶体管数量是一个常数。在传统电路中,翻转的晶体管数量与当前状态和先前状态相关,跟输入参数也相关。本文介绍的电路设计方法能使翻转的晶体管数量在任何运算步骤中都是一个常数。为实现这个目的,电路运算步骤之间增加了一个中间步骤,最简单的中间步骤的设置是在输入参数和电路运算完成之后设置系统中间值。中间步骤的设置能防止有用信息从功耗分析中泄漏出去。align="right" BORDER=0 >
CLASS="maintext">
图3:一种可传输中间态
的防DPA攻击的基本单元。
假设这个基本电路单元处于中间步骤,即所有输入都是同一个逻辑(都是1或都是0),若所有输入都是0,那么4个与逻辑都进行0 AND 0操作,然后再输入有效的常数汉明权重码数据,则A1、A2和B1、B2各有一位从0翻转到1。因此,在这个基本电路单元中,翻转的晶体管数量总是一样的。无论汉明码的值是什
与传统的攻击技术相比,差分功耗分析(DPA,Differential Power Analysis)攻击技术具有更强的攻击性和解密效率,因此防DPA攻击的设计方法越来越引起电路设计工程师的重视。本文从组合逻辑、寄存器、存储器、传输数据结构和中间状态等几个方面对防DPA攻击的电路设计方法进行了介绍。
最近,一种DPA攻击技术被用来破译集成电路中的重要信息。DPA攻击技术的原理是:当芯片在执行不同的指令进行各种运算时,对应的功率消耗也相应变化。通过使用特殊的电子测量仪和数学统计技术,来检测和分析这些变化,从而得到芯片中的特定关键信息。这种利用指令的电流变化来分析密码算法和密码的方法,和以往的攻击技术有根本的不同,因此防DPA攻击的设计方法越来越引起电路设计工程师的重视。align="right" BORDER=0 >
CLASS="maintext">
图1:CMOS AND电路由一个
NAND电路和一个NOT电路组成。
传统的防DPA攻击的方法有两种:一种是用随机数发生器产生额外的噪声和干扰信号,另一种是通过增加滤波电路来消除噪声。这两种方法都具有其固有缺陷,它们都会增加芯片的面积,其中前一种方法还会增加额外功耗,后一种方法则只是相对增加了DPA攻击的难度,并不能彻底解决DPA攻击问题。
本文介绍的防DPA攻击的电路设计方法不同于传统方法,它从DPA的攻击原理出发,专门针对DPA攻击而设计,能有效解决通过分析芯片电流变化来进行攻击的问题。这种防DPA攻击的电路设计方法从分析集成电路的基本电路单元开始,由简到繁设计出防DPA攻击的复杂电路,从根本上解决了DPA攻击问题。
防DPA攻击的基本电路单元
一个典型的CMOS NAND电路通常由4个MOS管组成,包括2个PMOS管和2个NMOS管。图1是一个CMOS AND电路,它是由一个NAND电路(P1和P2的参数相同,N1和N2的参数相同)和一个NOT电路组成。
由于P1和P2的参数相同,而且这两个晶体管是并行的,所以当输入信号A变化或者B发生变化时,这两个PMOS管对AND的瞬态变化的影响一样。而N1和N2是串行的,因此当输入A=1、B=0时,NAND的瞬态特性与输入A=0、B=1时的瞬态特性不同。虽然理想CMOS数字逻辑门在静态条件下不会消耗电流,但当输入信号变化时,它会消耗一定电流。这是因为MOSFET和信号传输线都存在寄生电容,并且当逻辑门处于变化状态时,Vdd和Gnd都存在瞬态电流。因此,这个与门的瞬态电流大小不仅与输入信号的变化有关,还与输出值Q有关。align="LEFT" BORDER=0 >
CLASS="maintext">
图2:防DPA攻击的基本电
路单元的电路结构。
本文介绍的防DPA攻击的基本电路单元,对所有可能的输入信号都表现出相同的电特性。这些电特性包括导通和闭合的PMOS管和NMOS管的数量、输入线的电容负载、输出线的负载以及电路单元自身的瞬态电流。图2为该基本电路单元的电路结构。
这个门电路有A和B两个输入,输入信号是2位的常数汉明权重码(constant Hamming weight representation),即A1和A2分别是0、1时对应“假”逻辑,1、0时对应“真”逻辑。在图2中,信号传输都是以2位汉明码形式进行,因此无论A和B信号如何变化,翻转的MOS管的数量都相同,且是一个常数10。
这个防DPA攻击的基本电路单元还可以表达多种逻辑。当需要表达AND逻辑时,输出为O1、O2,其中O1为汉明码指示位;当需要表达NAND逻辑时,输出为O2、O1,其中O2为2位汉明码指示位;当需要表达OR逻辑时,输出为O7、O8,其中O7为汉明码指示位;当需要表达NOR逻辑时,输出为O8、O7,其中O8为汉明码指示位。而O3、O4、O5和O6是没有作用的输出信号,但为保证各种输入情况下基本单元的对称性和相同性,这几个输出管脚在实际电路设计中应尽量和O1、O2、O7、O8接相同的负载。
防DPA攻击的主要目的是使电路电特性在运算时保持相同,而保持电特性相同很重要的一点是使整个电路在运算时翻转的晶体管数量是一个常数。在传统电路中,翻转的晶体管数量与当前状态和先前状态相关,跟输入参数也相关。本文介绍的电路设计方法能使翻转的晶体管数量在任何运算步骤中都是一个常数。为实现这个目的,电路运算步骤之间增加了一个中间步骤,最简单的中间步骤的设置是在输入参数和电路运算完成之后设置系统中间值。中间步骤的设置能防止有用信息从功耗分析中泄漏出去。align="right" BORDER=0 >
CLASS="maintext">
图3:一种可传输中间态
的防DPA攻击的基本单元。
假设这个基本电路单元处于中间步骤,即所有输入都是同一个逻辑(都是1或都是0),若所有输入都是0,那么4个与逻辑都进行0 AND 0操作,然后再输入有效的常数汉明权重码数据,则A1、A2和B1、B2各有一位从0翻转到1。因此,在这个基本电路单元中,翻转的晶体管数量总是一样的。无论汉明码的值是什