专利名称:防御攻击的方法和具有攻击防御功能的装置的制作方法
技术领域:
本发明涉及智能卡安全技术领域,尤其涉及一种供智能卡使用的防御攻击的方法 和具有攻击防御功能的装置。
背景技术:
目前针对智能卡运行期间的SPA (Simple Power Analysis,简易功率分析)/ DPA(Differential Power Analysis,微分功率分析)/Timing(时间)攻击的攻击手段日趋 多样,这些攻击综合运用了能量消耗和电磁辐射等信息分析技术,基本原理是通过对智能 卡运行中能量消耗波形进行分析,确定出重要代码的开始时间和终止时间,并对在此期间 内运行的代码实施攻击,如通过插入攻击程序扰乱正常代码的执行甚至是在代码执行期间 获取重要数据如安全密钥等。目前缺乏一种有效的方法能够抵御上述能量分析攻击,严重影响了智能卡的正常 操作及数据安全。
发明内容
本发明实施例提供一种防御攻击的方法和具有攻击防御功能的装置,用于阻止对 智能卡的能力分析攻击或增加攻击的难度,保证智能卡的正常操作及数据安全。本发明提供一种防御攻击的方法,包括执行设定操作所对应的代码;在执行所述代码的过程中,在所述代码的设定位置引入对所述设定操作的干扰源 代码的执行。本发明还提供一种具有攻击防御功能的装置,包括代码执行单元,用于执行设定操作所对应的代码;干扰程序引入单元,用于在执行所述代码的过程中,在所述代码的设定位置引入 对所述设定操作的干扰源代码的执行。利用本发明提供的防御攻击的方法和具有攻击防御功能的装置,具有以下有益效 果通过引入干扰机制,在智能卡对一些敏感数据的操作过程增加干扰,扰乱正常操作所遵 循的能量功耗波形规律,从而使攻击者无法通过能量分析来提取智能卡的重要操作的有效 运行时间,因而使其无法通过能量分析获得智能卡内部的私密数据,从而起到保护智能卡 内敏感数据的目的。
图1为本发明提供的防御攻击的方法流程图;图2为本发明实施例中针对加解密操作引入的干扰源代码对应的流程图;图3为本发明实施例中针对写操作引入的干扰源代码对应的流程图;图4为本发明实施例中针对加解密操作和写操作均可引入的干扰源代码对应的流程图;图5为本发明提供的具有攻击防御功能的装置结构图。
具体实施例方式下面结合附图和实施例对本发明提供的防御攻击的方法和具有攻击防御功能的 装置进行更详细地说明。现有的能量分析攻击方式利用代码的执行时间、消耗的能量、电磁辐射等信息,通 过先进的仪器和方法获取智能卡中的机密数据比如密钥等,有必要设计一套有效地方法阻 止这类攻击,至少在一定程度上增加攻击的难度。本发明提供一种御攻击的方法,优选地,该方法应用于智能卡,如图1所示,该方 法包括步骤S101,执行设定操作所对应的代码;上述设定操作为需要防御能量分析攻击的操作;智能卡执行的程序能够实现各种操作,通过对程序的解析可以获取实现各种操作 对应的代码,本实施例中需要防御能量分析攻击的操作可以根据需要确定,如选择一些涉 及到敏感数据的操作为需要防御能量分析攻击的操作,例如加解密操作、写操作等,然后 再去分析出这些操作所对应的代码。步骤S102,在执行所述代码的过程中,在所述代码的设定位置引入对所述设定操 作的干扰源代码的执行。本发明智能卡在执行设定操作过程中,通过在设定位置引入干扰源代码,从而扰 乱正常操作所遵循的能量功耗波形,从而使攻击者无法通过能量分析来提取智能卡的重要 操作的有效运行时间,达到防止此类攻击的目的。优选地,上述干扰源代码执行设定流程, 这样由于上述干扰源代码是执行设定流程,因此,对于智能卡来说,可以识别这些设定流 程,因而这些干扰源代码的执行并不影响智能卡的正常操作。具体实施时,在所述代码的设定位置引入对所述设定操作的干扰源代码的执行, 可以采用如下任一种方式1)在设定操作的代码的至少一个设定位置,随机引入对设定操作的干扰源代码的 执行;如可以在设定操作的代码开始或结束位置随机引入干扰源代码;或在设定操作的 代码开始和结束位置随机引入干扰源代码。2)根据预先设置在所述设定位置的引入标识,确定引入对设定操作的干扰源代码 的执行;3)通过执行预先设置在所述设定位置的函数调用代码,引入对设定操作的干扰源 代码的执行。对于2)和3)的情况,需要在固化程序时,在智能卡源程序中增加上述引入标识 /函数调用代码,具体可以采用如下方法确定所述设定操作所对应的代码的关键字;利用 所述关键字采用匹配方法对智能卡存储器中的源程序进行解析,得到所述设定操作所对应 的代码在源程序中的位置;根据所述设定操作所对应的代码在源程序中的位置,在所述代 码的设定位置预先设置所述引入标识/函数调用代码。上述匹配解析过程可以是人工分析解析,也可以是自动分析解析,优选地,上述关键字是设定操作的代码起始和结束位置的代 码,如果采用程序自动分析解析,则可以通过执行一次智能卡中的源程序,利用匹配方法定 位设定操作的代码。本发明通过在固化程序时,在智能卡源程序中增加引入标识/函数调 用代码,可以保证对需要保护的操作和/或数据的有效保护,不会出现遗漏,而且这种方式 通过软件实现,不需要特定的硬件支撑,节约硬件资源和成本。对于干扰源代码的具体位置可以根据需要设定,但该设定位置一定是和上述代码 相关联的,所以只要能达到扰乱正常操作所遵循的波形规律的设定位置就可以实现本发明 目的。优选地,上述设定位置位于上述代码的附近,从而干扰攻击者确定攻击的有效时间
点ο本发明优选实施例中,所述设定位置具体为与所述代码起始位置相邻且位于所述 代码之前的位置,因此在步骤S102中,在设定操作的代码前引入干扰源代码,尤其是引入 实现与所述设定操作的类型相同的操作的干扰源代码,例如如果设定操作为加解密操作, 那么就引入也实现加解密操作的干扰源代码,从而扰乱了正常操作的能量功耗波形的起点 波形,使攻击者不能有效确定敏感数据操作的有效时间;或者所述具体位置为与所述代码 结束位置相邻且位于所述代码之后的位置,因此在步骤S102中,在设定操作的代码后引入 干扰源代码,尤其是引入实现与所述设定操作的类型相同的操作的干扰源代码,例如如果 设定操作为加解密操作,那么就引入也实现加解密操作的干扰源代码,从而扰乱了正常操 作的能量功耗波形的终点波形,也能够使攻击者不能有效确定敏感数据操作的有效时间; 或者所述具体位置为与所述代码起始位置相邻且位于所述代码之前的位置,及与所述代码 结束位置相邻且位于所述代码之后的位置,因此在步骤S102中,在上述代码前和上述代码 后均引入干扰源代码,尤其是引入实现与所述设定操作的类型相同的操作的干扰源代码, 例如如果设定操作为加解密操作,那么就引入也实现加解密操作的干扰源代码,这样改变 了正常能量功耗波形的起点和终点波形,使攻击者根本无法识别出敏感数据操作,即使攻 击者预采用统计分析等手段通过去噪声得到有效波形,也大大增加了去除噪声的难度,而 当所述干扰源代码所执行的操作的类型与所述设定操作的类型相同时,则无法通过去噪声 的方法得到有效波形。为了针对智能卡的多种操作更好地实现扰乱效果,上述干扰源代码优选采用多 种,对于智能卡通过执行预先设置在所述设定位置的函数调用代码,引入对设定操作的干 扰源代码的执行,该函数调用代码包括输入参数,所述函数调用代码根据输入参数调用与 输入参数对应的干扰源代码,其中不同的输入参数对应执行不同设定流程的干扰源代码。 因此,只需在上述设定位置增加相同的函数调用代码,而具体调用哪些干扰源代码,由该函 数调用代码的输入参数决定,从而实现通过设置不同的输入参数在不同操作的代码前后引 入不同的干扰源代码,干扰效果更好。智能卡执行的操作有多种类型,如其中涉及敏感数据的操作有进行数据加解密的 加解密操作和向存储器写入数据的写操作,为了进一步优化干扰效果,每一类型的设定操 作对应至少一个输入参数,在设定操作对应多个输入参数时,该设定操作中所增加的函数 调用代码的输入参数在所述多个输入参数中随机选取。这样可以针对某一类型的操作设计 至少一种干扰源代码,设计多种干扰源代码时可以随机选取一个,随机选取使得加入干扰 源代码的操作执行流程是不可复制的,因而进一步增加了攻击的难度。
不同类型的操作对应的能量功耗波形不同,如加解密操作的能量功耗波形遵循一 定的规律,而写操作的能量功耗波形则遵循另一中规律,为了更好地实现扰乱效果,优选 地,上述设定操作的设定位置引入的干扰源代码所执行的操作,包括与该设定操作是的类 型相同的操作。因此,在上述设定操作的代码的设定位置引入的干扰源代码所执行的设定 流程,能够实现与该设定操作同类型的操作,即对于加解密操作引入的干扰源代码,所执行 的操作也是一种加解密操作,对于写操作引入的干扰源代码,所执行的操作也是一种写操 作,只是这些引入的加解密操作和写操作是事先设定好的,因此能够被智能卡正常识别而 不影响正常的加解密操作和写操作,且由于操作类型相同,从波形上彻底起到了扰乱的作 用。优选地,本实施例中需要防御能量分析攻击的操作具体包括进行数据加解密的加 解密操作和/或向存储器写入数据的写操作。对于加解密操作,所引入的干扰源代码所实现的操作类型为加解密操作,具体的 加解密流程可以灵活设定,所采用的加解密算法也可以灵活设定,优选地,对于加解密操作 引入的干扰源代码,如图2所示,具体执行如下设定流程步骤S201,使用真随机数发生器随机生成加解密次数N,所述N为大于等于0的整 数,可以限定加解密次数N的长度,如限定为1个字节。步骤S202,使用所述真随机数发生器生成N个随机数据D1, D2. . . Dn ;当然,也可以限定随机数据的长度,如限定长度为8个字节或其它长度。步骤S203,使用所述真随机数发生器生成N组随机密钥Kp K2. . . Kn ;步骤S202和步骤S203的执行无先后限制。当然,对于随机密钥应符合的数据特性,可以根据所采用的加解密算法随机产生, 如采用DES加解密算法时,随机产生的上述密钥符合DES随机机密的特性,当然,也可以采 用其它的加解密算法。步骤S204,判断是否执行了 N次加解密运算,若是,结束,否则执行步骤S205 ;步骤S205,取下一组随机密钥Ki及随机数据Di,使用Ki对Di进行加密或解密的运 行,每次i的值都不同,且1 < i <N,返回执行步骤S204。上述过程实现了 N次加解密运算,加解密运算中使用的随机数据及随机密钥也是 随机产生的,由于N为大于等于0的整数,所以是否引入加解密运算及引入加解密运算的 次数都是随机产生的,因而可以保证智能卡在处理同一个加解密操作时的执行流程不可复 制,以便有效防止通过能量分析等途径对智能卡进行攻击。上述设定流程的干扰源代码与 第一输入参数对应,在加解密操作的代码前或后,或前后均增加的函数调用代码可以采用 该第一输入参数。对于写操作,所引入的干扰源代码所实现的操作类型也为写操作,具体的写数据 的流程可以灵活设定,为了能够支持对写操作引入的干扰源代码的执行,本发明实施例中 在存储中预留了一定位置,供写操作引入的干扰源代码写入,优选地,对于写密操作引入的 干扰源代码,如图3所示,具体执行如下设定流程步骤S301,使用真随机数发生器随机生成写次数N’,N’为大于等于0的整数;当然,也可以限定加解密次数N’的长度,如限定为1个字节。步骤S302,使用真随机数发生器随机生成N’个随机数据礼、. . Rn';
当然,也可以事先限定随机数据的长度。步骤S303,判断是否执行了 N’次写数据,若是,结束,否则执行步骤S304 ;步骤S304,取随机数据氏写入存储器的指定预留位置,每次i的值都不同, N’,返回执行步骤S303。上述过程实现了 N’次写数据,N’是随机产生的,每次写入的随机数据也是随机产 生的,由于N’为大于等于0的整数,所以是否引入写操作及引入写数据的次数都是随机产 生的,因而可以保证智能卡在处理同一个写操作时的执行流程不可复制,以便有效防止通 过能量分析等途径对智能卡进行攻击。上述设定流程的干扰源代码与第二输入参数对应, 在写操作的代码前或后,或前后均增加的函数调用代码可以采用该第二输入参数。本发明上述实施例对加解密操作设计了与加解密操作同类型的干扰源代码,对于 写操作设计了与写操作同类型的干扰源代码,本发明另一实施例中,对于加解密操作或写 操作可以引入上述两种干扰源代码的组合,如图4所示,在加解密操作或写操作的代码的 设定位置所引入的干扰源代码,具体执行如下设定流程步骤S401,使用真随机数发生器随机生成加解密次数N,所述N为大于等于0的整 数,可以限定N的长度;步骤S402,使用所述真随机数发生器生成N个随机数据DpD2... DN,可以限定随机 数据的长度,步骤S403,使用所述真随机数发生器生成N组随机密钥&、K2. . . Kn ;步骤S402和步骤S403的执行无先后限制。步骤S404,使用真随机数发生器随机生成写次数N’,N’为大于等于0的整数,可 以限定N’的长度;步骤S404只要在步骤S405之前即可,与步骤S401、步骤S402和步骤S403的执行 无先后限制。步骤S405,使用真随机数发生器随机生成N’个随机数据礼、. . Rn';步骤S406,确定i是否等于N和N’中较小的一个,其中i初始值为1,若等于,则 执行步骤S408,若不等于,执行步骤S407 ;步骤S407,使用Ki对Di进行加密或解密,向存储器的指定预留位置写入Ri, i增 1 ;步骤S408,判断N是否等于N,,若是结束,否则执行步骤S409 ;步骤S409,判断N是否大于N,,若是执行步骤S410,否则执行步骤S411 ;步骤S410,最后执行一次使用Ki对Di进行加密或解密,结束;步骤S411,最后执行一次向存储器的指定预留位置写入氏,结束。上述设定流程的干扰源代码与第三输入参数对应,在加解密操作的代码前或后, 或前后均增加的函数调用代码可以从该第一输入参数和第三输入参数中随机选取;在写操 作的代码前或后,或前后均增加的函数调用代码可以从该第二输入参数和第三输入参数中 随机选取。下面本发明提供的防御能量分析攻击的一个优选实施例。1)程序解析在智能卡执行的源程序中解析出设定操作即需要防御能量分析攻 击的操作所对应的代码;
程序解析可以是人工对智能卡执行的程序进行分析,也可以根据设定操作所对应 的代码的关键字,设计一套软件或系统对智能卡执行的程序采用关键字匹配方法进行分 析,本实施例中分析并整理出的程序中的设定操作,具体为进行数据加解密运算的加解密 和/或向EEPROM(ErasabIe Programmable ROM,可擦除可编程ROM)写数据的EEI3ROM写操作。这些操作一般都涉及到对敏感数据的操作,一般也是攻击者的攻击目标,因此需 要分析出这些操作,在其附近引入干扰操作,打乱原有流程,使攻击者无法定位真正的对敏 感数据操作的起始和终止时间点,从而保证敏感数据的安全性。攻击者是通过能耗等信息来分析卡片当前的操作类型的,一般有明显的能耗变化 的操作是加解密操作和EEPROM写操作,因此在对程序进行分析整理时,只将关注点放在这 类操作上即可。本实施例中经程序分析整理后的程序结构如表1所示表1经程序分析整理后的程序结构
权利要求
1.一种防御攻击的方法,其特征在于,包括 执行设定操作所对应的代码;在执行所述代码的过程中,在所述代码的设定位置引入对所述设定操作的干扰源代码 的执行。
2.如权利要求1所述的方法,其特征在于,所述在所述代码的设定位置引入对所述设 定操作的干扰源代码的执行,具体包括在所述代码的至少一个设定位置,随机引入对所述设定操作的干扰源代码的执行;或者根据预先设置在所述设定位置的引入标识,确定引入对所述设定操作的干扰源代码的 执行;或者通过执行预先设置在所述设定位置的函数调用代码,引入对所述设定操作的干扰源代 码的执行。
3.如权利要求1所述的方法,其特征在于,所述代码的设定位置包括 与所述代码起始位置相邻且位于所述代码之前的位置;或者与所述代码结束位置相邻且位于所述代码之后的位置;或者与所述代码起始位置相邻且位于所述代码之前的位置,及与所述代码结束位置相邻且 位于所述代码之后的位置。
4.如权利要求2所述的方法,其特征在于,在所述代码的设定位置预先设置所述引入 标识/函数调用代码,具体包括确定所述设定操作所对应的代码的关键字;利用所述关键字采用匹配方法对源程序进行解析,得到所述设定操作所对应的代码在 所述源程序中的位置;根据所述设定操作所对应的代码在所述源程序中的位置,在所述设定操作所对应的代 码的设定位置预先设置所述引入标识/函数调用代码。
5.如权利要求2所述的方法,其特征在于,所述函数调用代码包括输入参数,所述函数 调用代码根据输入参数,调用与所述输入参数对应的干扰源代码,其中不同的输入参数对 应不同的干扰源代码。
6.如权利要求5所述的方法,其特征在于,每一类型的设定操作对应至少一个输入参 数,在所述设定操作对应多个输入参数时,所述函数调用代码在所述多个输入参数中随机 选取输入参数。
7.如权利要求1 6任一所述的方法,其特征在于,所述干扰源代码所执行的操作,至 少包括与所述设定操作的类型相同的操作。
8.一种具有攻击防御功能的装置,其特征在于,包括 代码执行单元,用于执行设定操作所对应的代码;干扰程序引入单元,用于在执行所述代码的过程中,在所述代码的设定位置引入对所 述设定操作的干扰源代码的执行。
9.如权利要求8所述的装置,其特征在于,所述干扰程序引入单元,具体用于 在所述代码的至少一个设定位置,随机引入对所述设定操作的干扰源代码的执行;或者,根据预先设置在所述设定位置的引入标识,确定引入对所述设定操作的干扰源代码的 执行;或者,通过执行预先设置在所述设定位置的函数调用代码,引入对所述设定操作的干扰源代 码的执行。
10.如权利要求8所述的装置,其特征在于,干扰程序引入单元,具体用于在与所述代码起始位置相邻且位于所述代码之前的位置,引入对所述设定操作的干扰 源代码的执行;或者,在与所述代码结束位置相邻且位于所述代码之后的位置,引入对所述设定操作的干扰 源代码的执行;或者,在与所述代码起始位置相邻且位于所述代码之前的位置及与所述代码结束位置相邻 且位于所述代码之后的位置,都引入对所述设定操作的干扰源代码的执行。
11.如权利要求9所述的装置,其特征在于,所述干扰程序引入单元在所述代码的设定 位置预先设置所述引入标识/函数调用代码,具体包括确定所述设定操作所对应的代码的关键字;利用所述关键字采用匹配方法对源程序进行解析,得到所述设定操作所对应的代码在 所述源程序中的位置;根据所述设定操作所对应的代码在所述源程序中的位置,在所述设定操作所对应的代 码的设定位置预先设置所述引入标识/函数调用代码。
12.如权利要求9所述的装置,其特征在于,所述干扰程序引入单元所执行的函数调用 代码包括输入参数,所述函数调用代码根据输入参数,调用与所述输入参数对应的干扰源 代码,其中不同的输入参数对应不同的干扰源代码。
13.如权利要求12所述的装置,其特征在于,每一类型的设定操作对应至少一个输入 参数,在所述设定操作对应多个输入参数时,所述干扰程序引入单元所执行的函数调用代 码在所述多个输入参数中随机选取输入参数。
14.如权利要求9 13任一所述的装置,其特征在于,所述干扰程序引入单元所引入的 干扰源代码所执行的操作,至少包括与所述设定操作的类型相同的操作。
15.如权利要求9 13任一所述的装置,其特征在于,所述装置为智能卡。
全文摘要
本发明公开了一种防御攻击的方法和具有攻击防御功能的装置,该方法包括执行设定操作所对应的代码;在执行所述代码的过程中,在所述代码的设定位置引入对所述设定操作的干扰源代码的执行。本发明通过引入干扰源代码,扰乱正常操作所遵循的能量功耗波形规律,从而使攻击者无法通过能量分析来提取智能卡的重要操作的有效运行时间,因而使其无法通过能量分析获得智能卡内部的私密数据,从而起到保护智能卡内敏感数据的目的。
文档编号G06F21/00GK102110206SQ20101060808
公开日2011年6月29日 申请日期2010年12月27日 优先权日2010年12月27日
发明者于付真 申请人:北京握奇数据系统有限公司