著录项信息
专利名称 | 防御攻击的方法和具有攻击防御功能的装置 |
申请号 | CN201010608085.3 | 申请日期 | 2010-12-27 |
法律状态 | 暂无 | 申报国家 | 中国 |
公开/公告日 | 2011-06-29 | 公开/公告号 | CN102110206A |
优先权 | 暂无 | 优先权号 | 暂无 |
主分类号 | G06F21/00 | IPC分类号 | G;0;6;F;2;1;/;0;0查看分类表>
|
申请人 | 北京握奇数据系统有限公司 | 申请人地址 | 北京市朝阳区东直门外西八间房万红西街2号燕东商务花园
变更
专利地址、主体等相关变化,请及时变更,防止失效 |
权利人 | 北京握奇数据股份有限公司 | 当前权利人 | 北京握奇数据股份有限公司 |
发明人 | 于付真 |
代理机构 | 北京同达信恒知识产权代理有限公司 | 代理人 | 黄志华 |
摘要
本发明公开了一种防御攻击的方法和具有攻击防御功能的装置,该方法包括执行设定操作所对应的代码;在执行所述代码的过程中,在所述代码的设定位置引入对所述设定操作的干扰源代码的执行。本发明通过引入干扰源代码,扰乱正常操作所遵循的能量功耗波形规律,从而使攻击者无法通过能量分析来提取智能卡的重要操作的有效运行时间,因而使其无法通过能量分析获得智能卡内部的私密数据,从而起到保护智能卡内敏感数据的目的。
1.一种防御攻击的方法,其特征在于,包括:
执行设定操作所对应的代码;
在执行所述代码的过程中,在所述代码的设定位置引入对所述设定操作的干扰源代码的执行,所述干扰源代码所执行的操作,至少包括与所述设定操作的类型相同的操作;
所述代码的设定位置包括:
与所述代码起始位置相邻且位于所述代码之前的位置;或者
与所述代码结束位置相邻且位于所述代码之后的位置;或者
与所述代码起始位置相邻且位于所述代码之前的位置,及与所述代码结束位置相邻且位于所述代码之后的位置。
2.如权利要求1所述的方法,其特征在于,所述在所述代码的设定位置引入对所述设定操作的干扰源代码的执行,具体包括:
在所述代码的至少一个设定位置,随机引入对所述设定操作的干扰源代码的执行;或者
根据预先设置在所述设定位置的引入标识,确定引入对所述设定操作的干扰源代码的执行;或者
通过执行预先设置在所述设定位置的函数调用代码,引入对所述设定操作的干扰源代码的执行。
3.如权利要求2所述的方法,其特征在于,在所述代码的设定位置预先设置所述引入标识/函数调用代码,具体包括:
确定所述设定操作所对应的代码的关键字;
利用所述关键字采用匹配方法对源程序进行解析,得到所述设定操作所对应的代码在所述源程序中的位置;
根据所述设定操作所对应的代码在所述源程序中的位置,在所述设定操作所对应的代码的设定位置预先设置所述引入标识/函数调用代码。
4.如权利要求2所述的方法,其特征在于,所述函数调用代码包括输入参数,所述函数调用代码根据输入参数,调用与所述输入参数对应的干扰源代码,其中不同的输入参数对应不同的干扰源代码。
5.如权利要求4所述的方法,其特征在于,每一类型的设定操作对应至少一个输入参数,在所述设定操作对应多个输入参数时,所述函数调用代码在所述多个输入参数中随机选取输入参数。
6.一种具有攻击防御功能的装置,其特征在于,包括:
代码执行单元,用于执行设定操作所对应的代码;
干扰程序引入单元,用于在执行所述代码的过程中,在所述代码的设定位置引入对所述设定操作的干扰源代码的执行,所述干扰源代码所执行的操作,至少包括与所述设定操作的类型相同的操作;
干扰程序引入单元,具体用于:
在与所述代码起始位置相邻且位于所述代码之前的位置,引入对所述设定操作的干扰源代码的执行;或者,
在与所述代码结束位置相邻且位于所述代码之后的位置,引入对所述设定操作的干扰源代码的执行;或者,
在与所述代码起始位置相邻且位于所述代码之前的位置及与所述代码结束位置相邻且位于所述代码之后的位置,都引入对所述设定操作的干扰源代码的执行。
7.如权利要求6所述的装置,其特征在于,所述干扰程序引入单元,具体用于:
在所述代码的至少一个设定位置,随机引入对所述设定操作的干扰源代码的执行;或者,
根据预先设置在所述设定位置的引入标识,确定引入对所述设定操作的干扰源代码的执行;或者,
通过执行预先设置在所述设定位置的函数调用代码,引入对所述设定操作的干扰源代码的执行。
8.如权利要求7所述的装置,其特征在于,所述干扰程序引入单元在所述代码的设定位置预先设置所述引入标识/函数调用代码,具体包括:
确定所述设定操作所对应的代码的关键字;
利用所述关键字采用匹配方法对源程序进行解析,得到所述设定操作所对应的代码在所述源程序中的位置;
根据所述设定操作所对应的代码在所述源程序中的位置,在所述设定操作所对应的代码的设定位置预先设置所述引入标识/函数调用代码。
9.如权利要求7所述的装置,其特征在于,所述干扰程序引入单元所执行的函数调用代码包括输入参数,所述函数调用代码根据输入参数,调用与所述输入参数对应的干扰源代码,其中不同的输入参数对应不同的干扰源代码。
10.如权利要求9所述的装置,其特征在于,每一类型的设定操作对应至少一个输入参数,在所述设定操作对应多个输入参数时,所述干扰程序引入单元所执行的函数调用代码在所述多个输入参数中随机选取输入参数。
11.如权利要求8~10任一所述的装置,其特征在于,所述装置为智能卡。
防御攻击的方法和具有攻击防御功能的装置 \n技术领域\n[0001] 本发明涉及智能卡安全技术领域,尤其涉及一种供智能卡使用的防御攻击的方法和具有攻击防御功能的装置。 \n[0002] 背景技术\n[0003] 目前针对智能卡运行期间的SPA(Simple Power Analysis,简易功率分析)/DPA(Differential Power Analysis,微分功率分析)/Timing(时间)攻击的攻击手段日趋多样,这些攻击综合运用了能量消耗和电磁辐射等信息分析技术,基本原理是通过对智能卡运行中能量消耗波形进行分析,确定出重要代码的开始时间和终止时间,并对在此期间内运行的代码实施攻击,如通过插入攻击程序扰乱正常代码的执行甚至是在代码执行期间获取重要数据如安全密钥等。 \n[0004] 目前缺乏一种有效的方法能够抵御上述能量分析攻击,严重影响了智能卡的正常操作及数据安全。 \n[0005] 发明内容\n[0006] 本发明实施例提供一种防御攻击的方法和具有攻击防御功能的装置,用于阻止对智能卡的能力分析攻击或增加攻击的难度,保证智能卡的正常操作及数据安全。 [0007] 本发明提供一种防御攻击的方法,包括: \n[0008] 执行设定操作所对应的代码; \n[0009] 在执行所述代码的过程中,在所述代码的设定位置引入对所述设定操作的干扰源代码的执行,所述干扰源代码所执行的操作,至少包括与所述设定操作的类型相同的操作; \n[0010] 所述代码的设定位置包括: \n[0011] 与所述代码起始位置相邻且位于所述代码之前的位置;或者 \n[0012] 与所述代码结束位置相邻且位于所述代码之后的位置;或者 \n[0013] 与所述代码起始位置相邻且位于所述代码之前的位置,及与所述代码结束位置相邻且位于所述代码之后的位置。 \n[0014] 本发明还提供一种具有攻击防御功能的装置,包括: \n[0015] 代码执行单元,用于执行设定操作所对应的代码; \n[0016] 干扰程序引入单元,用于在执行所述代码的过程中,在所述代码的设定位置引入对所述设定操作的干扰源代码的执行,所述干扰源代码所执行的操作,至少包括与所述设定操作的类型相同的操作; \n[0017] 干扰程序引入单元,具体用于: \n[0018] 在与所述代码起始位置相邻且位于所述代码之前的位置,引入对所述设定操作的干扰源代码的执行;或者, \n[0019] 在与所述代码结束位置相邻且位于所述代码之后的位置,引入对所述设定操作的干扰源代码的执行;或者, \n[0020] 在与所述代码起始位置相邻且位于所述代码之前的位置及与所述代码结束位置相邻且位于所述代码之后的位置,都引入对所述设定操作的干扰源代码的执行。 [0021] 利用本发明提供的防御攻击的方法和具有攻击防御功能的装置,具有以下有益效果:通过引入干扰机制,在智能卡对一些敏感数据的操作过程增加干扰,扰乱正常操作所遵循的能量功耗波形规律,从而使攻击者无法通过能量分析来提取智能卡的重要操作的有效运行时间,因而使其无法通过能量分析获得智能卡内部的私密数据,从而起到保护智能卡内敏感数据的目的。 \n[0022] 附图说明\n[0023] 图1为本发明提供的防御攻击的方法流程图; \n[0024] 图2为本发明实施例中针对加解密操作引入的干扰源代码对应的流程图; [0025] 图3为本发明实施例中针对写操作引入的干扰源代码对应的流程图; [0026] 图4为本发明实施例中针对加解密操作和写操作均可引入的干扰源代码对应的流程图; \n[0027] 图5为本发明提供的具有攻击防御功能的装置结构图。 \n[0028] 具体实施方式\n[0029] 下面结合附图和实施例对本发明提供的防御攻击的方法和具有攻击防御功能的装置进行更详细地说明。 \n[0030] 现有的能量分析攻击方式利用代码的执行时间、消耗的能量、电磁辐射等信息,通过先进的仪器和方法获取智能卡中的机密数据比如密钥等,有必要设计一套有效地方法阻止这类攻击,至少在一定程度上增加攻击的难度。 \n[0031] 本发明提供一种御攻击的方法,优选地,该方法应用于智能卡,如图1所示,该方法包括: \n[0032] 步骤S101,执行设定操作所对应的代码; \n[0033] 上述设定操作为需要防御能量分析攻击的操作; \n[0034] 智能卡执行的程序能够实现各种操作,通过对程序的解析可以获取实现各种操作对应的代码,本实施例中需要防御能量分析攻击的操作可以根据需要确定,如选择一些涉及到敏感数据的操作为需要防御能量分析攻击的操作,例如:加解密操作、写操作等,然后再去分析出这些操作所对应的代码。 \n[0035] 步骤S102,在执行所述代码的过程中,在所述代码的设定位置引入对所述设定操作的干扰源代码的执行。 \n[0036] 本发明智能卡在执行设定操作过程中,通过在设定位置引入干扰源代码,从而扰乱正常操作所遵循的能量功耗波形,从而使攻击者无法通过能量分析来提取智能卡的重要操作的有效运行时间,达到防止此类攻击的目的。优选地,上述干扰源代码执行设定流程,这样由于上述干扰源代码是执行设定流程,因此,对于智能卡来说,可以识别这些设定流程,因而这些干扰源代码的执行并不影响智能卡的正常操作。 \n[0037] 具体实施时,在所述代码的设定位置引入对所述设定操作的干扰源代码的执行,可以采用如下任一种方式: \n[0038] 1)在设定操作的代码的至少一个设定位置,随机引入对设定操作的干扰源代码的执行; \n[0039] 如可以在设定操作的代码开始或结束位置随机引入干扰源代码;或在设定操作的代码开始和结束位置随机引入干扰源代码。 \n[0040] 2)根据预先设置在所述设定位置的引入标识,确定引入对设定操作的干扰源代码的执行; \n[0041] 3)通过执行预先设置在所述设定位置的函数调用代码,引入对设定操作 的干扰源代码的执行。 \n[0042] 对于2)和3)的情况,需要在固化程序时,在智能卡源程序中增加上述引入标识/函数调用代码,具体可以采用如下方法:确定所述设定操作所对应的代码的关键字;利用所述关键字采用匹配方法对智能卡存储器中的源程序进行解析,得到所述设定操作所对应的代码在源程序中的位置;根据所述设定操作所对应的代码在源程序中的位置,在所述代码的设定位置预先设置所述引入标识/函数调用代码。上述匹配解析过程可以是人工分析解析,也可以是自动分析解析,优选地,上述关键字是设定操作的代码起始和结束位置的代码,如果采用程序自动分析解析,则可以通过执行一次智能卡中的源程序,利用匹配方法定位设定操作的代码。本发明通过在固化程序时,在智能卡源程序中增加引入标识/函数调用代码,可以保证对需要保护的操作和/或数据的有效保护,不会出现遗漏,而且这种方式通过软件实现,不需要特定的硬件支撑,节约硬件资源和成本。 \n[0043] 对于干扰源代码的具体位置可以根据需要设定,但该设定位置一定是和上述代码相关联的,所以只要能达到扰乱正常操作所遵循的波形规律的设定位置就可以实现本发明目的。优选地,上述设定位置位于上述代码的附近,从而干扰攻击者确定攻击的有效时间点。 \n[0044] 本发明优选实施例中,所述设定位置具体为与所述代码起始位置相邻且位于所述代码之前的位置,因此在步骤S 102中,在设定操作的代码前引入干扰源代码,尤其是引入实现与所述设定操作的类型相同的操作的干扰源代码,例如:如果设定操作为加解密操作,那么就引入也实现加解密操作的干扰源代码,从而扰乱了正常操作的能量功耗波形的起点波形,使攻击者不能有效确定敏感数据操作的有效时间;或者所述具体位置为与所述代码结束位置相邻且位于所述代码之后的位置,因此在步骤S102中,在设定操作的代码后引入干扰源代码,尤其是引入实现与所述设定操作的类型相同的操作的干扰源代码,例如:\n如果设定操作为加解密操作,那么就引入也实现加解密操作的干扰源代码,从而扰乱了正常操作的能量功耗波形的终点波形,也能够使攻击者不能有效确定敏感数据操作的有效时间;或者所述具体位置为与所述代码起始位置相邻且位 于所述代码之前的位置,及与所述代码结束位置相邻且位于所述代码之后的位置,因此在步骤S102中,在上述代码前和上述代码后均引入干扰源代码,尤其是引入实现与所述设定操作的类型相同的操作的干扰源代码,例如:如果设定操作为加解密操作,那么就引入也实现加解密操作的干扰源代码,这样改变了正常能量功耗波形的起点和终点波形,使攻击者根本无法识别出敏感数据操作,即使攻击者预采用统计分析等手段通过去噪声得到有效波形,也大大增加了去除噪声的难度,而当所述干扰源代码所执行的操作的类型与所述设定操作的类型相同时,则无法通过去噪声的方法得到有效波形。 \n[0045] 为了针对智能卡的多种操作更好地实现扰乱效果,上述干扰源代码优选采用多种,对于智能卡通过执行预先设置在所述设定位置的函数调用代码,引入对设定操作的干扰源代码的执行,该函数调用代码包括输入参数,所述函数调用代码根据输入参数调用与输入参数对应的干扰源代码,其中不同的输入参数对应执行不同设定流程的干扰源代码。\n因此,只需在上述设定位置增加相同的函数调用代码,而具体调用哪些干扰源代码,由该函数调用代码的输入参数决定,从而实现通过设置不同的输入参数在不同操作的代码前后引入不同的干扰源代码,干扰效果更好。 \n[0046] 智能卡执行的操作有多种类型,如其中涉及敏感数据的操作有进行数据加解密的加解密操作和向存储器写入数据的写操作,为了进一步优化干扰效果,每一类型的设定操作对应至少一个输入参数,在设定操作对应多个输入参数时,该设定操作中所增加的函数调用代码的输入参数在所述多个输入参数中随机选取。这样可以针对某一类型的操作设计至少一种干扰源代码,设计多种干扰源代码时可以随机选取一个,随机选取使得加入干扰源代码的操作执行流程是不可复制的,因而进一步增加了攻击的难度。 \n[0047] 不同类型的操作对应的能量功耗波形不同,如加解密操作的能量功耗波形遵循一定的规律,而写操作的能量功耗波形则遵循另一中规律,为了更好地实现扰乱效果,优选地,上述设定操作的设定位置引入的干扰源代码所执行的操作,包括与该设定操作是的类型相同的操作。因此,在上述设定操作的代码的设定位置引入的干扰源代码所执行的设定流程,能够实现与该设定操作同类型的操作,即对于加解密操作引入的干扰源代码,所执行的操作也是一种加解密操作,对于写操作引入的干扰源代码,所执行的操作也是一种写操作,只是这些引入的加解密操作和写操作是事先设定好的,因此能够被智能卡正常识别而不影响正常的加解密操作和写操作,且由于操作类型相同,从波形上彻底起到了扰乱的作用。 \n[0048] 优选地,本实施例中需要防御能量分析攻击的操作具体包括进行数据加解密的加解密操作和/或向存储器写入数据的写操作。 \n[0049] 对于加解密操作,所引入的干扰源代码所实现的操作类型为加解密操作,具体的加解密流程可以灵活设定,所采用的加解密算法也可以灵活设定,优选地,对于加解密操作引入的干扰源代码,如图2所示,具体执行如下设定流程: \n[0050] 步骤S201,使用真随机数发生器随机生成加解密次数N,所述N为大于等于0的整数,可以限定加解密次数N的长度,如限定为1个字节。 \n[0051] 步骤S202,使用所述真随机数发生器生成N个随机数据D1、D2...DN; [0052] 当然,也可以限定随机数据的长度,如限定长度为8个字节或其它长度。 [0053] 步骤S203,使用所述真随机数发生器生成N组随机密钥K1、K2...KN; [0054] 步骤S202和步骤S203的执行无先后限制。 \n[0055] 当然,对于随机密钥应符合的数据特性,可以根据所采用的加解密算法随机产生,如采用DES加解密算法时,随机产生的上述密钥符合DES随机机密的特性,当然,也可以采用其它的加解密算法。 \n[0056] 步骤S204,判断是否执行了N次加解密运算,若是,结束,否则执行步骤S205; [0057] 步骤S205,取下一组随机密钥Ki及随机数据Di,使用Ki对Di进行加密或解密的运行,每次i的值都不同,且1≤i≤N,返回执行步骤S204。 \n[0058] 上述过程实现了N次加解密运算,加解密运算中使用的随机数据及随机密钥也是随机产生的,由于N为大于等于0的整数,所以是否引入加解密运算及引入加解密运算的次数都是随机产生的,因而可以保证智能卡在处理同一个加 解密操作时的执行流程不可复制,以便有效防止通过能量分析等途径对智能卡进行攻击。上述设定流程的干扰源代码与第一输入参数对应,在加解密操作的代码前或后,或前后均增加的函数调用代码可以采用该第一输入参数。 \n[0059] 对于写操作,所引入的干扰源代码所实现的操作类型也为写操作,具体的写数据的流程可以灵活设定,为了能够支持对写操作引入的干扰源代码的执行,本发明实施例中在存储中预留了一定位置,供写操作引入的干扰源代码写入,优选地,对于写密操作引入的干扰源代码,如图3所示,具体执行如下设定流程: \n[0060] 步骤S301,使用真随机数发生器随机生成写次数N’,N’为大于等于0的整数; [0061] 当然,也可以限定加解密次数N’的长度,如限定为1个字节。 \n[0062] 步骤S302,使用真随机数发生器随机生成N’个随机数据R1、R2...RN’; [0063] 当然,也可以事先限定随机数据的长度。 \n[0064] 步骤S303,判断是否执行了N’次写数据,若是,结束,否则执行步骤S304; [0065] 步骤S304,取随机数据Ri写入存储器的指定预留位置,每次i的值都不同,\n1≤i≤N’,返回执行步骤S303。 \n[0066] 上述过程实现了N’次写数据,N’是随机产生的,每次写入的随机数据也是随机产生的,由于N’为大于等于0的整数,所以是否引入写操作及引入写数据的次数都是随机产生的,因而可以保证智能卡在处理同一个写操作时的执行流程不可复制,以便有效防止通过能量分析等途径对智能卡进行攻击。上述设定流程的干扰源代码与第二输入参数对应,在写操作的代码前或后,或前后均增加的函数调用代码可以采用该第二输入参数。 [0067] 本发明上述实施例对加解密操作设计了与加解密操作同类型的干扰源代码,对于写操作设计了与写操作同类型的干扰源代码,本发明另一实施例中,对于加解密操作或写操作可以引入上述两种干扰源代码的组合,如图4所示,在加解密操作或写操作的代码的设定位置所引入的干扰源代码,具体执行如下 设定流程: \n[0068] 步骤S401,使用真随机数发生器随机生成加解密次数N,所述N为大于等于0的整数,可以限定N的长度; \n[0069] 步骤S402,使用所述真随机数发生器生成N个随机数据D1、D2...DN,可以限定随机数据的长度, \n[0070] 步骤S403,使用所述真随机数发生器生成N组随机密钥K1、K2...KN; [0071] 步骤S402和步骤S403的执行无先后限制。 \n[0072] 步骤S404,使用真随机数发生器随机生成写次数N’,N’为大于等于0的整数,可以限定N’的长度; \n[0073] 步骤S404只要在步骤S405之前即可,与步骤S401、步骤S402和步骤S403的执行无先后限制。 \n[0074] 步骤S405,使用真随机数发生器随机生成N’个随机数据R1、R2...RN’; [0075] 步骤S406,确定i是否等于N和N’中较小的一个,其中i初始值为1,若等于,则执行步骤S408,若不等于,执行步骤S407; \n[0076] 步骤S407,使用Ki对Di进行加密或解密,向存储器的指定预留位置写入Ri,i增\n1; \n[0077] 步骤S408,判断N是否等于N’,若是结束,否则执行步骤S409; [0078] 步骤S409,判断N是否大于N’,若是执行步骤S410,否则执行步骤S411; [0079] 步骤S410,最后执行一次使用Ki对Di进行加密或解密,结束; \n[0080] 步骤S411,最后执行一次向存储器的指定预留位置写入Ri,结束。 [0081] 上述设定流程的干扰源代码与第三输入参数对应,在加解密操作的代码前或后,或前后均增加的函数调用代码可以从该第一输入参数和第三输入参数中随机选取;在写操作的代码前或后,或前后均增加的函数调用代码可以从该第二输入参数和第三输入参数中随机选取。 \n[0082] 下面本发明提供的防御能量分析攻击的一个优选实施例。 \n[0083] 1)程序解析:在智能卡执行的源程序中解析出设定操作即需要防御能量 分析攻击的操作所对应的代码; \n[0084] 程序解析可以是人工对智能卡执行的程序进行分析,也可以根据设定操作所对应的代码的关键字,设计一套软件或系统对智能卡执行的程序采用关键字匹配方法进行分析,本实施例中分析并整理出的程序中的设定操作,具体为进行数据加解密运算的加解密和/或向EEPROM(Erasable Programmable ROM,可擦除可编程ROM)写数据的EEPROM写操作。 \n[0085] 这些操作一般都涉及到对敏感数据的操作,一般也是攻击者的攻击目标,因此需要分析出这些操作,在其附近引入干扰操作,打乱原有流程,使攻击者无法定位真正的对敏感数据操作的起始和终止时间点,从而保证敏感数据的安全性。 \n[0086] 攻击者是通过能耗等信息来分析卡片当前的操作类型的,一般有明显的能耗变化的操作是加解密操作和EEPROM写操作,因此在对程序进行分析整理时,只将关注点放在这类操作上即可。 \n[0087] 本实施例中经程序分析整理后的程序结构如表1所示: \n[0088] 表1经程序分析整理后的程序结构 \n[0089] \n[0090] 上述程序结构中,敏感数据操作程序序列即为设定操作所对应的代码集合,每两个敏感数据操作程序序列之间的程序成为程序基本序列。 \n[0091] 2)在程序结构中增加函数调用代码 \n[0092] 在敏感数据操作程序序列前后增加函数调用代码,函数调用代码根据输入参数调用与输入参数对应的干扰源代码,其中不同的输入参数对应不同的干扰 源代码。为了简单起见本实施例中函数调用代码只有一种,通过引入输入参数来形成不同类型的干扰源。 [0093] 函数调用代码具体可以为下面的形式: \n[0094] void intruder(int interferon) \n[0095] 其中interferon为输入参数,int表示整数。 \n[0096] 本实施例中在上述在敏感数据操作程序序列前后增加函数调用代码后的程序结构如表2所示: \n[0097] 表2增加函数调用代码后的程序结构 \n[0098] \n[0099] 本实施例中在敏感数据操作的程序序列前后均增加了函数调用代码,尤其是引入实现与所述设定操作的类型相同的操作的干扰源代码,例如:如果设定操作为加解密操作,那么就引入也实现加解密操作的干扰源代码。至于最后是否引入了干扰由干扰函数本身决定如在上述实施例中,在随机产生的加解密次数N或写次数N’为零时,实际上是没有干扰引入的,本实施例通过函数调用代码根据输入参数调用不同的干扰源代码,使程序真正对敏感数据操作的点变得无法预测,也无法通过统计分析去噪声等手段获取正确的时间点,敏感数据操作的前后都引入干扰,可以大大增加攻击者通过统计分析等手段去除噪声的难度。 \n[0100] 下面给出本发明实施例中干扰源代码的设计。 \n[0101] 不同的输入参数对应不同的干扰源代码。且干扰源代码所执行的操作,包括与实际要保护的这段敏感数据的设定操作的类型相同的操作,有什么样类型 的敏感数据操作程序序列,就可以针对这个程序序列设计相同类型的干扰源代码,一般来讲只有加解密、EEPROM写操作会有明显的能量、时间等现象,才会引起攻击者的注意并加以利用,因此本实施例对加解密、EEPROM写操作分别对应设计了加解密干扰源、EEPROM写干扰源这两类干扰源代码。 \n[0102] 下面就针对加解密干扰源、EEPROM写干扰源的程序设计方法进行描述。 [0103] 以DES算法为例介绍加解密干扰源执行的设定流程: \n[0104] 1)使用真随机数发生器生成长度为1字节的加密次数记为N; \n[0105] 2)使用真随机数发生器生成N个长度为8字节的随机数据D1、D2...DN; [0106] 3)使用真随机数发生器生成N组随机的DES密钥记为K1、K2...KN; [0107] 4)依次使用Ki对Di进行加密或解密,1≤i≤N。 \n[0108] 具体实施时,根据实际的需要对于加解密干扰源执行的设定流程的设计可以很灵活,上面只是提供了一个参考例子。 \n[0109] 对于EEPROM写干扰源,预先开辟一段EEPROM空间作为干扰源的操作空间记为ADDRESS,下面介绍EEPROM写干扰源执行的设定流程: \n[0110] 1)使用真随机数发生器生成长度为1字节的写次数记为N’; \n[0111] 2)使用真随机数发生器生成N’个长度为1字节随机数据R1、R2...RN’; [0112] 3)依次向ADDRESS写入R1、R2...RN’。 \n[0113] 具体实施时,根据实际的需要对于EEPROM干扰源执行的设定流程的设计可以很灵活,上面只是提供了一个参考例子。 \n[0114] 在实际过程中对某一类型操作的干扰的引入也可以使用多种类型的干扰源的组合来实现,且该组合中包括该某一类型的干扰源,比如加解密干扰源和EEPROM写干扰源的组合既可以引入加解密操作也可以引入写操作,组合后具体执行以下流程: [0115] 1)使用真随机数发生器生成长度为1字节的加解密干扰次数记为N; [0116] 2)使用真随机数发生器生成N个长度为8字节的随机数据D1、D2...DN; [0117] 3)使用真随机数发生器生成N组随机的DES密钥记为K1、K2...KN\n[0118] 4)使用真随机数发生器生成长度为1字节的写次数记为N’; \n[0119] 5)使用真随机数发生器生成N’个长度为1字节随机数据R1、R2...RN’; [0120] 6)重复执行如下步骤至i等于N和N’中较小的一个:使用Ki对Di进行加密或解密,向存储器的指定预留位置写入Ri,i增1; \n[0121] 7)若N=N’,则结束,若N>N’,最后执行一次使用Ki对Di进行加密或解密,若N<N’,最后执行一次向存储器的指定预留位置写入Ri。 \n[0122] 引入什么样的干扰源由输入参数确定,如在加解密干扰源对应输入参数A1、EEPROM写干扰源对应输入参数A2、加解密干扰源和EEPROM写干扰源对应输入参数A3时,加解密操作前后增加的函数调用代码的输入参数可以为A1或A3,写操作前后增加的函数调用代码的输入参数可以为A2或A3。 \n[0123] 本发明实施例通过干扰引入机制,在智能卡运行过程中,对一些敏感数据的操作过程增加干扰,使攻击者无法正确定位有效的时间点,比如在进行加解密操作时,会引入额外的加解密干扰,使攻击者无法确定哪个起始点才是真正的加解密操作的开始,使攻击者无法通过能量分析来提取卡片中的安全密钥,达到防止此类攻击的目的,而对于EEPROM写操作也同样采用类似的加扰方式,使攻击者无法获得正确的攻击点。 \n[0124] 本发明提供一种具有攻击防御功能的装置,如图5所示,包括:代码执行单元501,用于执行设定操作所对应的代码;干扰程序引入单元502,用于在执行所述代码的过程中,在所述代码的设定位置引入对所述设定操作的干扰源代码的执行。 \n[0125] 优选地,所述干扰程序引入单元502,具体用于在所述代码的至少一个设定位置,随机引入对所述设定操作的干扰源代码的执行;或者用于根据预先设置在所述设定位置的引入标识,确定引入对所述设定操作的干扰源代码的执行;或者用于通过执行预先设置在所述设定位置的函数调用代码,引入对所述设定操作的干扰源代码的执行。通过在固化程序时,在智能卡源程序中增加引 入标识/函数调用代码,可以保证对需要保护的操作和/或数据的有效保护,不会出现遗漏,而且这种方式通过软件实现,不需要特定的硬件支撑,节约硬件资源和成本。 \n[0126] 优选地,所述干扰程序引入单元502,具体用于在与所述代码起始位置相邻且位于所述代码之前的位置,引入对所述设定操作的干扰源代码的执行,尤其是引入实现与所述设定操作的类型相同的操作的干扰源代码,例如:如果设定操作为加解密操作,那么就引入也实现加解密操作的干扰源代码;或者在与所述代码结束位置相邻且位于所述代码之后的位置,引入对所述设定操作的干扰源代码的执行,尤其是引入实现与所述设定操作的类型相同的操作的干扰源代码,例如:如果设定操作为加解密操作,那么就引入也实现加解密操作的干扰源代码;或者与所述代码起始位置相邻且位于所述代码之前的位置,引入对所述设定操作的干扰源代码的执行,及与所述代码结束位置相邻且位于所述代码之后的位置,引入对所述设定操作的干扰源代码的执行,尤其是引入实现与所述设定操作的类型相同的操作的干扰源代码,例如:如果设定操作为加解密操作,那么就引入也实现加解密操作的干扰源代码。 \n[0127] 优选地,干扰程序引入单元502,在所述代码的设定位置预先设置所述引入标识/函数调用代码,具体包括:确定所述设定操作所对应的代码的关键字;利用所述关键字采用匹配方法对源程序进行解析,得到所述设定操作所对应的代码在所述源程序中的位置;\n根据所述设定操作所对应的代码在所述源程序中的位置,在所述设定操作所对应的代码的设定位置预先设置所述引入标识/函数调用代码。 \n[0128] 优选地,所述干扰程序引入单元502所执行的函数调用代码包括输入参数,所述函数调用代码根据输入参数,调用与输入参数对应的干扰源代码,其中不同的输入参数对应不同的干扰源代码。 \n[0129] 优选地,每一类型的设定操作对应至少一个输入参数,在所述设定操作对应多个输入参数时,所述干扰程序引入单元502所执行的函数调用代码在所述 多个输入参数中随机选取输入参数。 \n[0130] 优选地,所述干扰程序引入单元502引入单元所引入的干扰源代码所执行的操作,包括与所述设定操作的类型相同的操作。 \n[0131] 优选地,所述设定操作为加解密操作,所述干扰程序引入单元502具体用于在所述加解密操作的代码的设定位置引入执行如下设定流程的干扰源代码:使用真随机数发生器随机生成加解密次数N,N为大于等于0的整数;使用所述真随机数发生器生成N个随机数据D1、D2...DN;使用所述真随机数发生器生成N组随机密钥K1、K2...KN;依次使用Ki对Di进行加密或解密,1≤i≤N;和/或 \n[0132] 所述设定操作为写操作,所述干扰程序引入单元502具体用于在所述写操作的代码的设定位置引入执行如下设定流程的干扰源代码:使用真随机数发生器随机生成写次数N’,N’为大于等于0的整数;使用真随机数发生器随机生成N’个随机数据R1、R2...RN’;将R1、R2...RN’依次写入存储器的指定预留位置。 \n[0133] 优选地,所述设定操作为加解密操作或写操作,所述干扰程序引入单元502具体用于在所述加解密操作或写操作的代码的设定位置均引入执行如下设定流程的干扰源代码: \n[0134] 使用真随机数发生器随机生成加解密次数N,所述N为大于等于0的整数; [0135] 使用所述真随机数发生器生成N个随机数据D1、D2...DN; \n[0136] 使用所述真随机数发生器生成N组随机密钥K1、K2...KN; \n[0137] 使用真随机数发生器随机生成写次数N’,N’为大于等于0的整数; [0138] 使用真随机数发生器生成N’个随机数据R1、R2...RN’; \n[0139] 重复执行如下步骤至i等于达N和N’中较小的一个,其中i初始值为0:使用Ki对Di进行加密或解密,向存储器写入Ri,i增1; \n[0140] 若N=N’,则结束,若N>N’,最后执行一次使用Ki对Di进行加密或解密,若N<N’,最后执行一次向存储器的指定预留位置写入Ri。 \n[0141] 本发明上述防御能量分析攻击的装置,通过对程序敏感数据操作前后处增加干扰,使外界攻击者无法正确定位关键操作的起始和终结位置,使其无法通过能量分析获得卡内部的私密数据,从而起到卡内敏感数据的目的。 \n[0142] 优选地,本发明上述实施例提供的具有攻击防御功能的装置为智能卡。优选地,该智能卡还可以包括现有智能卡中装置部分,如包括用于存储数据Flash存储单元;中央处理单元CPU;内存访问控制单元MAC(Memory AccessControl);RAM等器件,还可以包括: [0143] 与BUS连接的USB/UART接口,用于连接外部设备; \n[0144] 算法控制单元,通过BUS与CPU连接,根据CPU的控制在需要时执行各种算法,如安全相关的算法; \n[0145] 时钟产生控制单元,通过BUS与CPU连接,用于负责内部时钟的发生和时钟频率的控制,产生CPU所需的时钟信号; \n[0146] 中断控制单元,通过BUS与CPU连接,根据CPU的控制在需要中断时进行中断控制和处理; \n[0147] 随机数发生器,通过BUS与CPU连接,根据CPU的控制产生CPU所需的随机数。 [0148] 显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。
法律信息
- 2022-12-06
未缴年费专利权终止
IPC(主分类): G06F 21/00
专利号: ZL 201010608085.3
申请日: 2010.12.27
授权公告日: 2013.01.16
- 2018-01-26
专利权人的姓名或者名称、地址的变更
专利权人由北京握奇数据系统有限公司变更为北京握奇数据股份有限公司
地址由100015 北京市朝阳区东直门外西八间房万红西街2号燕东商务花园变更为100015 北京市朝阳区东直门外西八间房万红西街2号燕东商务花园
- 2013-01-16
- 2011-08-10
实质审查的生效
IPC(主分类): G06F 21/00
专利申请号: 201010608085.3
申请日: 2010.12.27
- 2011-06-29
引用专利(该专利引用了哪些专利)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有引用任何外部专利数据! |
被引用专利(该专利被哪些专利引用)
序号 | 公开(公告)号 | 公开(公告)日 | 申请日 | 专利名称 | 申请人 | 该专利没有被任何外部专利所引用! |