攻击监控方法及具有攻击监控功能的装置转让专利

申请号 : CN201010612608.1

文献号 : CN102053927B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 于付真

申请人 : 北京握奇数据系统有限公司

摘要 :

本发明提供了一种攻击监控方法,用于监控数据处理设备是否受到攻击,包括:在数据处理设备运行程序时,监控程序中的关键程序序列,获取所述关键程序序列的已运行的指令数目;将所述已运行的指令数目与预设的指令的数目范围进行比较;如果所述已运行的指令数目在所述预设的指令的数目范围之外,则判断所述数据处理设备受到攻击;反之,则判断所述数据处理设备未受到攻击。通过上述技术方案,能够监控数据处理装置是否受到攻击,保证程序对敏感数据的操作是在授权下进行的,从而避免对敏感数据非授权的访问。本发明还提供了攻击监控装置和智能卡。

权利要求 :

1.一种攻击监控方法,用于监控数据处理设备是否受到干扰攻击,其特征在于,干扰攻击的干扰源包括电压脉冲、时钟脉冲、复位信号脉冲、环境温度、光脉冲、电磁场脉冲、大范围光照,所述攻击监控方法包括:在所述数据处理设备运行程序时,监控所述程序中的关键程序序列,获取所述关键程序序列的已运行的指令数目;

将所述已运行的指令数目与预设的指令的数目范围进行比较;

如果所述已运行的指令数目在所述预设的指令的数目范围之外,则判断所述数据处理设备受到攻击;

反之,则判断所述数据处理设备未受到攻击;其中,

所述将所述已运行的指令数目与预设的指令的数目范围进行比较,包括:在所述程序执行完毕后,将所述程序的所有关键程序序列的已运行的指令数目的总和与预设的所述程序的所有关键程序序列的指令的总和的数目范围进行比较;和/或在所述程序中的每个关键程序序列执行完毕后,将所述每个关键程序序列的已运行的指令数目与预设的该关键程序序列的指令的数目范围进行比较;以及所述获取所述关键程序序列的已运行的指令数目,包括:

初始化已运行指令数,运行所述关键程序序列,每运行一条所述关键程序序列的指令,按预设规则处理所述已运行指令数;或者,初始化硬件指令统计器,运行所述关键程序序列,每运行一条所述关键程序序列的指令,所述硬件指令统计器按预设规则动作。

2.根据权利要求1所述的攻击监控方法,其特征在于,在所述数据处理设备运行程序之前,还包括:获取并在所述程序中设置所述程序的所有关键程序序列的指令的总和的数目范围;

和/或

获取并在所述程序中设置所述程序的每个关键程序序列的指令的数目范围。

3.根据权利要求2所述的攻击监控方法,其特征在于,

所述获取并在所述程序中设置所述程序的所有关键程序序列的指令的总和的数目范围,具体为:对所述程序进行分析,提取所有关键程序序列;

对每一个关键程序序列进行分析,确定所述每一个关键程序序列中的指令的极大值与极小值;

对所有关键程序序列的极大值求和获得最大值,对所有关键程序序列的极小值求和获得最小值,从而确定所述程序的所有关键程序序列的指令的总和的数目范围;

在所述程序中设置所述程序的所有关键程序序列的指令的总和的数目范围;

所述获取并在所述程序中设置所述程序的每个关键程序序列的指令的数目范围,具体为:对所述程序进行分析,提取所有关键程序序列;

对每一个关键程序序列进行分析,确定所述每一个关键程序序列中的指令的极大值与极小值,从而确定所述程序的每个关键程序序列的指令的数目范围;

在所述程序中设置所述程序的每个关键程序序列的指令的数目范围。

4.根据权利要求1所述的攻击监控方法,其特征在于,在判断所述数据处理设备受到攻击的情况下,使所述数据处理设备停止运行所述程序,在判断所述数据处理设备未受到攻击的情况下,使所述数据处理设备继续运行所述程序。

5.一种具有攻击监控功能的装置,其特征在于,用于监控所述装置是否受到干扰攻击,干扰攻击的干扰源包括电压脉冲、时钟脉冲、复位信号脉冲、环境温度、光脉冲、电磁场脉冲、大范围光照,所述装置包括:计数模块,用于在数据处理设备运行程序时,监控所述程序中的关键程序序列,获取所述关键程序序列的已运行的指令数目;

比较模块,将所述已运行的指令数目与预设的指令的数目范围进行比较;

判断模块,如果所述已运行的指令数目在所述预设的指令的数目范围之外,则判断所述数据处理设备受到攻击;反之,则判断所述数据处理设备未受到攻击;其中,所述比较模块用于在所述程序执行完毕后,将所述程序的所有关键程序序列的已运行的指令数目的总和与预设的所述程序的所有关键程序序列的指令的总和的数目范围进行比较;和/或用于在所述程序中的每个关键程序序列执行完毕后,将所述每个关键程序序列的已运行的指令数目与预设的该关键程序序列的指令的数目范围进行比较;以及所述计数模块还用于初始化已运行指令数,运行所述关键程序序列,每运行一条所述关键程序序列的指令,按预设规则处理所述已运行指令数;或者,用于初始化硬件指令统计器,运行所述关键程序序列,每运行一条所述关键程序序列的指令,所述硬件指令统计器按预设规则动作。

6.根据权利要求5所述的装置,其特征在于,还包括:

分析模块,用于在所述数据处理设备运行程序之前获取所述程序的所有关键程序序列的指令的总和的数目范围;和/或,在所述数据处理设备运行程序之前用于获取所述程序的每个关键程序序列的指令的数目范围。

7.根据权利要求6所述的装置,其特征在于,

所述分析模块在所述数据处理设备运行程序之前对所述程序进行分析,提取所有关键程序序列,对每一个关键程序序列进行分析,确定所述每一个关键程序序列中的指令的极大值与极小值,对所有关键程序序列的极大值求和获得最大值,对所有关键程序序列的极小值求和获得最小值,从而确定所述程序的所有关键程序序列的指令的总和的数目范围;

所述分析模块在所述数据处理设备运行程序之前对所述程序进行分析,提取所有关键程序序列;对每一个关键程序序列进行分析,确定所述每一个关键程序序列中的指令的极大值与极小值,从而确定所述程序的每个关键程序序列的指令的数目范围。

8.根据权利要求5所述的装置,其特征在于,所述装置在判断所述数据处理设备受到攻击的情况下,使所述数据处理设备停止运行所述程序,在判断所述数据处理设备未受到攻击的情况下,使所述数据处理设备继续运行所述程序。

说明书 :

攻击监控方法及具有攻击监控功能的装置

技术领域

[0001] 本发明涉及数据安全技术领域,尤其涉及攻击监控方法及具有攻击监控功能的装置。

背景技术

[0002] 目前,针对程序运行期间的攻击日趋多样化,干扰攻击就是其中的一种,干扰攻击通过改变IC的正常行为以制造一个可以利用的错误,通过干扰源包括电压脉冲、时钟脉冲、复位信号脉冲、环境温度、光脉冲、电磁场脉冲、大范围光照等等来造成程序流程混乱,从而对正在运行的程序进行攻击。
[0003] 为了避免上述情况的发生,需要一套机制来监控程序运行期间是否受到攻击。

发明内容

[0004] 本发明要解决的技术问题在于,提供攻击监控方法和具有攻击监控功能的装置,能够监控数据处理装置是否受到攻击。
[0005] 有鉴于此,本发明提供了一种攻击监控方法,用于监控数据处理设备是否受到攻击,包括:在所述数据处理设备运行程序时,监控所述程序中的关键程序序列,获取所述关键程序序列的已运行的指令数目;将所述已运行的指令数目与预设的指令的数目范围进行比较;如果所述已运行的指令数目在所述预设的指令的数目范围之外,则判断所述数据处理设备受到攻击;反之,则判断所述数据处理设备未受到攻击。
[0006] 通过上述技术方案,能够监控数据处理装置是否受到攻击,保证程序对敏感数据的操作是在授权下进行的,从而避免对敏感数据非授权的访问。
[0007] 在上述技术方案中,优选地,所述将所述已运行的指令数目与预设的指令的数目范围进行比较,包括:在所述程序执行完毕后,将所述程序的所有关键程序序列的已运行的指令数目的总和与预设的所述程序的所有关键程序序列的指令的总和的数目范围进行比较;和/或在所述程序中的每个关键程序序列执行完毕后,将所述每个关键程序序列的已运行的指令数目与预设的该关键程序序列的指令的数目范围进行比较。
[0008] 在上述技术方案中,优选地,所述获取所述关键程序序列的已运行的指令数目,包括:初始化已运行指令数,运行所述关键程序序列,每运行一条所述关键程序序列的指令,按预设规则处理所述已运行指令数;初始化已运行指令数,可以将所述已运行指令数置为零,也可以是其他数值等,所述预设规则可以是已运行指令数加1或者减1,或者其他规则。或者,初始化硬件指令统计器,运行所述关键程序序列,每运行一条所述关键程序序列的指令,所述硬件指令统计器按预设规则动作。初始化硬件指令统计器,可以将所述硬件指令统计器置为零,也可以是其他数值等,所述预设规则可以是已运行指令数加1或者减1,或者其他规则。
[0009] 在上述技术方案中,优选地,该攻击监控方法还包括:在所述数据处理设备运行程序之前,
[0010] 获取并在所述程序中设置所述程序的所有关键程序序列的指令的总和的数目范围;
[0011] 和/或
[0012] 获取并在所述程序中设置所述程序的每个关键程序序列的指令的数目范围。
[0013] 在上述技术方案中,优选地,所述获取并在所述程序中设置所述程序的所有关键程序序列的指令的总和的数目范围,具体为:对所述程序进行分析,提取所有至少一个关键程序序列;对每一个关键程序序列进行分析,确定所述每一个关键程序序列中的指令的极大值与极小值;对所有关键程序序列的极大值求和获得最大值,对所有关键程序序列的极小值求和获得最小值,从而确定所述程序的所有关键程序序列的指令的总和的数目范围;在所述程序中设置所述程序的所有关键程序序列的指令的总和的数目范围;所述获取并在所述程序中设置所述程序的每个关键程序序列的指令的数目范围,具体为:对所述程序进行分析,提取所有关键程序序列;对每一关键程序序列进行分析,确定所述每一个关键程序序列中的指令的极大值与极小值,从而确定所述程序的每个关键程序序列的指令的数目范围;在所述程序中设置所述程序的每个关键程序序列的指令的数目范围。
[0014] 在上述技术方案中,优选地,对所述关键程序序列的分析的过程具体为:执行所述关键程序序列;计算所述关键程序序列的极大均值与极小均值;将所述极大均值与所述极小均值增加到程序统计器的真值中。
[0015] 在上述技术方案中,优选地,对所述关键程序序列的分析的过程具体为:启动硬件机器指令记数器;执行所述关键程序序列;获取已执行的指令数目,并将所述已执行的指令数目增加到程序统计器的真值中。
[0016] 在上述技术方案中,优选地,将计数结果与所述关键程序序列中的指令的数目范围进行比较的过程具体为:获取所述程序统计器的真值;判断所述真值是否在所述极小值和所述极大值的区间内;如果判断结果为是,则设置程序执行正常;如果判断结果为否,则设置程序执行异常。
[0017] 在上述技术方案中,优选地,在判断所述数据处理设备受到攻击的情况下,使所述数据处理设备停止运行所述程序,在判断所述数据处理设备未受到攻击的情况下,使所述数据处理设备继续运行所述程序。
[0018] 在上述技术方案中,优选地,所述数据处理设备为智能卡。
[0019] 本发明还提供了一种具有攻击监控功能的装置,包括:计数模块,用于在所述数据处理设备运行程序时,监控所述程序中的关键程序序列,获取所述关键程序序列的已运行的指令数目;比较模块,将所述已运行的指令数目与预设的指令的数目范围进行比较;判断模块,如果所述已运行的指令数目在所述预设的指令的数目范围之外,则判断所述数据处理设备受到攻击;反之,则判断所述数据处理设备未受到攻击。
[0020] 通过上述技术方案,能够监控数据处理装置是否受到攻击,保证程序对敏感数据的操作是在授权下进行的,从而避免对敏感数据非授权的访问。
[0021] 在上述技术方案中,优选地,所述比较模块用于在所述程序执行完毕后,将所述程序的所有关键程序序列的已运行的指令数目的总和与预设的所述程序的所有关键程序序列的指令的总和的数目范围进行比较;和/或用于在所述程序中的每个关键程序序列执行完毕后,将所述每个关键程序序列的已运行的指令数目与预设的该关键程序序列的指令的数目范围进行比较。
[0022] 在上述技术方案中,优选地,所述计数模块包括:指令数初始化单元,初始化已运行指令数,运行所述关键程序序列,每运行一条所述关键程序序列的指令,按预设规则处理所述已运行指令数;初始化已运行指令数,可以将所述已运行指令数置为零,也可以是其他数值等,所述预设规则可以是已运行指令数加1或者减1,或者其他规则。或者,硬件指令统计器初始化单元,初始化硬件指令统计器,运行所述关键程序序列,每运行一条所述关键程序序列的指令,所述硬件指令统计器按预设规则动作。初始化硬件指令统计器,可以将所述硬件指令统计器置为零,也可以是其他数值等,所述预设规则可以是已运行指令数加1或者减1,或者其他规则。
[0023] 在上述技术方案中,优选地,分析模块还用于在所述数据处理设备运行程序之前获取所述程序的所有关键程序序列的指令的总和的数目范围;和/或,用于在所述数据处理设备运行程序之前获取所述程序的每个关键程序序列的指令的数目范围。
[0024] 在上述技术方案中,优选地,分析模块在所述数据处理设备运行程序之前对所述程序进行分析,提取所有至少一个关键程序序列,对每一个关键程序序列进行分析,确定所述每一个关键程序序列中的指令的极大值与极小值,对所有关键程序序列的极大值求和获得最大值,对所有关键程序序列的极小值求和获得最小值,从而确定所述程序的所有关键程序序列的指令的总和的数目范围;分析模块在所述数据处理设备运行程序之前对所述程序进行分析,提取所有关键程序序列;对每一个关键程序序列进行分析,确定所述每一个关键程序序列中的指令的极大值与极小值,从而确定所述程序的每个关键程序序列的指令的数目范围。
[0025] 在上述技术方案中,优选地,所述数据处理设备为智能卡。
[0026] 在上述技术方案中,优选地,所述具有攻击监控功能的系统是智能卡。
[0027] 在上述技术方案中,优选地,在判断所述数据处理设备受到攻击的情况下,使所述数据处理设备停止运行所述程序,在判断所述数据处理设备未受到攻击的情况下,使所述数据处理设备继续运行所述程序。
[0028] 根据上述技术方案,可有效保护保存在智能卡中的关键数据,提高智能卡的安全性。保证在智能卡使用过程中,一些必须的程序流程得以执行,避免出现对命令的处理未按照设计的预定顺序执行,完成对程序关键流程进行监控,确保在程序运行期间某些必须的流程按预定的顺序执行,从而有效防止针对程序执行流程进行的攻击,绕过某些必要的安全检查访问智能卡中的关键数据的情况。

附图说明

[0029] 图1示出了根据本发明的实施例的攻击监控方法的流程图;
[0030] 图2示出了根据本发明的实施例的对程序进行分析的过程的流程图;
[0031] 图3A示出了根据本发明的一个实施例的对关键程序序列进行分析的过程的流程图;
[0032] 图3B示出了根据本发明的另一实施例的对关键程序序列进行分析的过程的流程图;
[0033] 图4示出了根据本发明的另一实施例的攻击监控方法的流程图;
[0034] 图5示出了根据本发明的实施例的具有攻击监控功能的装置的结构框图;
[0035] 图6A示出了图5中示出的攻击监控系统中作为一个实例的分析模块的结构框图;
[0036] 图6B示出了图5中示出的攻击监控系统中作为另一实例的分析模块的结构框图;
[0037] 图7示出了图5中示出的攻击监控系统中的比较模块的结构框图;
[0038] 图8示出了采用本发明的方法对程序分析整理后的结构的示意图;
[0039] 图9示出了采用本发明的方法对程序分析整理后需要记录的数据的结构的示意图;
[0040] 图10示出了采用本发明的方法进行初始化程序流程统计器的过程的流程图;
[0041] 图11A示出了采用本发明的方法进行程序关键序列记录的一个实施例的具体过程的流程图;
[0042] 图11B示出了采用本发明的方法进行程序关键序列记录的另一个实施例的具体过程的流程图;
[0043] 图12示出了采用本发明的方法进行程序统计分析的具体过程的流程图;
[0044] 图13示出了采用本发明的方法得到的程序的最终结构的示意图。

具体实施方式

[0045] 下面结合附图和具体实施方式对本发明进行进一步的详细描述。
[0046] 在下面的描述中阐述了很多具体细节以便于充分理解本发明,但是,本发明还可以采用不同于在此所描述内容的其他方式来实施,因此,本发明并不限于下面公开的具体实施例的限制。
[0047] 图1示出了根据本发明的实施例的攻击监控方法的流程图。
[0048] 根据本发明的攻击监控方法,用于监控数据处理设备是否受到攻击,包括:步骤S10,在所述数据处理设备运行程序时,监控所述程序中的关键程序序列,获取所述关键程序序列的已运行的指令数目;步骤S20,将所述已运行的指令数目与预设的指令的数目范围进行比较;步骤S30,判断所述已运行的指令数目是否在所述预设的指令的数目范围之外,如果判断结果为否,则进入步骤S40,如果判断结果为是,则进入步骤S50;步骤S40,确定该数据处理设备未受到攻击;步骤S50,确定该数据处理设备受到攻击。
[0049] 通过上述技术方案,能够监控数据处理装置是否受到攻击,保证程序对敏感数据的操作是在授权下进行的,从而避免对敏感数据非授权的访问。
[0050] 在上述技术方案中,优选地,所述将所述已运行的指令数目与预设的指令的数目范围进行比较,包括:在所述程序执行完毕后,将所述程序的所有关键程序序列的已运行的指令数目的总和与预设的所述程序的所有关键程序序列的指令的总和的数目范围进行比较;和/或在所述程序中的每个关键程序序列执行完毕后,将所述每个关键程序序列的已运行的指令数目与预设的该关键程序序列的指令的数目范围进行比较。
[0051] 在上述技术方案中,优选地,所述获取所述关键程序序列的已运行的指令数目,包括:初始化已运行指令数,运行所述关键程序序列,每运行一条所述关键程序序列的指令,按预设规则处理所述已运行指令数;初始化已运行指令数,可以将所述已运行指令数置为零,也可以是其他数值等,所述预设规则可以是已运行指令数加1或者减1,或者其他规则。或者,初始化硬件指令统计器,运行所述关键程序序列,每运行一条所述关键程序序列的指令,所述硬件指令统计器按预设规则动作。初始化硬件指令统计器,可以将所述硬件指令统计器置为零,也可以是其他数值等,所述预设规则可以是已运行指令数加1或者减1,或者其他规则。
[0052] 在上述技术方案中,优选地,根据本发明的攻击监控方法还包括:在所述数据处理设备运行程序之前,获取并在所述程序中设置所述程序的所有关键程序序列的指令的总和的数目范围;和/或,获取并在所述程序中设置所述程序的每个关键程序序列的指令的数目范围。
[0053] 在上述技术方案中,优选地,所述获取并在所述程序中设置所述程序的所有关键程序序列的指令的总和的数目范围,具体为:对所述程序进行分析,提取所有至少一个关键程序序列;对每一个关键程序序列进行分析,确定所述每一个关键程序序列中的指令的极大值与极小值;对所有关键程序序列的极大值求和获得最大值,对所有关键程序序列的极小值求和获得最小值,从而确定所述程序的所有关键程序序列的指令的总和的数目范围;在所述程序中设置所述程序的所有关键程序序列的指令的总和的数目范围。所述获取并在所述程序中设置所述程序的每个关键程序序列的指令的数目范围,具体为:对所述程序进行分析,提取所有关键程序序列;对每一个关键程序序列进行分析,确定所述每一个关键程序序列中的指令的极大值与极小值,从而确定所述程序的每个关键程序序列的指令的数目范围;在所述程序中设置所述程序的每个关键程序序列的指令的数目范围。
[0054] 在上述技术方案中,优选地,对关键程序序列的分析的过程可以具体为:执行关键程序序列;计算关键程序序列的极大均值与极小均值;将所述极大均值与所述极小均值增加到程序统计器的真值中。
[0055] 在上述技术方案中,优选地,对关键程序序列的分析的过程可以具体为:启动硬件机器指令记数器;执行所述关键程序序列;获取已执行的指令数目,并将所述已执行的指令数目增加到程序统计器的真值中。
[0056] 在上述技术方案中,优选地,该数据处理设备可以为智能卡。本领域技术人员应当理解,该数据处理设备可以是任何具有数据处理能力的设备,例如,计算机、传感器节点、PDA等等。
[0057] 在上述技术方案中,优选地,在判断所述数据处理设备受到攻击的情况下,使所述数据处理设备停止运行所述程序,在判断所述数据处理设备未受到攻击的情况下,使所述数据处理设备继续运行所述程序。
[0058] 图2示出了根据本发明的实施例的对程序进行分析的过程的流程图。
[0059] 对程序进行分析的过程具体为:步骤S102,对程序进行分析,提取关键程序序列;步骤S104,对关键程序序列进行编号,并获取第一个程序序列;步骤S106,对关键程序序列进行分析,提取极大值与极小值;步骤S108,判断关键程序序列是否是最后一个程序序列,如果判断结果为是,则进入步骤S110,如果判断结果为否,则进入步骤S114;步骤110,对所有程序序列的极大值求和获得最大值,对所有程序序列的极小值求和获得最小值;步骤S112,启动程序统计器,初始化所述程序统计器的真值,结束;步骤S114,获取下一个程序序列,并返回步骤S106。
[0060] 在上述技术方案中,优选地,如图3A所示,对关键程序序列进行分析的过程具体为:步骤S202,执行原程序序列;步骤S204,计算原程序序列的极大均值与极小均值;步骤S206,将极大均值与极小均值增加到程序统计器的真值中。
[0061] 在上述技术方案中,优选地,如图3B所示,作为选择,对关键程序序列进行分析的过程可以具体为:步骤S202’,启动硬件机器指令记数器;步骤S204’,执行原程序序列;步骤S206’,获取已执行机器指令数目,并将所述已执行机器指令数目增加到所述程序统计器的真值中。
[0062] 在上述技术方案中,优选地,在判断所述数据处理设备受到攻击的情况下,使所述数据处理设备停止运行所述程序,在判断所述数据处理设备未受到攻击的情况下,使所述数据处理设备继续运行所述程序。
[0063] 图4示出了根据本发明的另一实施例的攻击监控方法的流程图。该攻击监控方法用于监控数据处理设备是否受到攻击,具体包括:步骤S302,获取程序统计器的真值;步骤S304,判断真值是否在极小值和极大值的区间内,如果判断结果为是,则进入步骤S306,如果判断结果为否,则进入步骤S308;步骤S306,设置程序执行正常;步骤S308,设置程序执行异常。
[0064] 在上述技术方案中,优选地,所述关键程序序列是一个程序整体。
[0065] 通过上述方法,能够有效地防止数据处理设备受到攻击,从而保证了数据安全。
[0066] 图5示出了根据本发明的实施例的具有攻击监控功能的装置的结构框图。
[0067] 根据本发明的攻击监控系统500包括:计数模块502,用于在数据处理设备运行程序时,监控程序中的关键程序序列,获取所述关键程序序列的已运行的指令数目;比较模块504,将所述已运行的指令数目与预设的指令的数目范围进行比较;判断模块506,如果所述已运行的指令数目在所述预设的指令的数目范围之外,则判断所述数据处理设备受到攻击;反之,则判断所述数据处理设备未受到攻击。
[0068] 在上述技术方案中,优选地,所述比较模块用于在所述程序执行完毕后,将所述程序的所有关键程序序列的已运行的指令数目的总和与预设的所述程序的所有关键程序序列的指令的总和的数目范围进行比较;和/或用于在所述程序中的每个关键程序序列执行完毕后,将所述每个关键程序序列的已运行的指令数目与预设的该关键程序序列的指令的数目范围进行比较。
[0069] 在上述技术方案中,优选地,所述计数模块502还用于初始化已运行指令数,运行所述关键程序序列,每运行一条所述关键程序序列的指令,按预设规则处理所述已运行指令数;初始化已运行指令数,可以将所述已运行指令数置为零,也可以是其他数值等,所述预设规则可以是已运行指令数加1或者减1,或者其他规则。或者,用于初始化硬件指令统计器,运行所述关键程序序列,每运行一条所述关键程序序列的指令,所述硬件指令统计器按预设规则动作。初始化硬件指令统计器,可以将所述硬件指令统计器置为零,也可以是其他数值等,所述预设规则可以是已运行指令数加1或者减1,或者其他规则。
[0070] 在上述技术方案中,优选地,进一步包括:分析模块508,用于在所述数据处理设备运行程序之前获取所述程序的所有关键程序序列的指令的总和的数目范围;和/或,在所述数据处理设备运行程序之前用于获取所述程序的每个关键程序序列的指令的数目范围。
[0071] 在上述技术方案中,优选地,所述分析模块在所述数据处理设备运行程序之前对所述程序进行分析,提取所有至少一个关键程序序列,对每一个关键程序序列进行分析,确定所述每一个关键程序序列中的指令的极大值与极小值,对所有关键程序序列的极大值求和获得最大值,对所有关键程序序列的极小值求和获得最小值,从而确定所述程序的所有关键程序序列的指令的总和的数目范围;所述分析模块在所述数据处理设备运行程序之前对所述程序进行分析,提取所有关键程序序列;对每一个关键程序序列进行分析,确定所述每一个关键程序序列中的指令的极大值与极小值,从而确定所述程序的每个关键程序序列的指令的数目范围。
[0072] 在
[0073] 在上述技术方案中,优选地,如图6A所示,作为一个实例,分析模块508包括:执行模块5082,执行关键程序序列;计算模块5084,计算关键程序序列的极大均值与极小均值;增加模块5086,将极大均值与极小均值增加到程序统计器的真值中。
[0074] 在上述技术方案中,优选地,如图6B所示,作为另一个实例,分析模块508包括:启动模块5082’,启动硬件机器指令记数器;执行模块5084’,执行关键程序序列;增加模块
5086’,获取已执行机器指令数目,并将已执行机器指令数目增加到程序统计器的真值中。
[0075] 在上述技术方案中,优选地,如图7所示,比较模块504包括:真值获取模块5042,获取程序统计器的真值;真值判断模块5044,判断所述真值是否在极小值和极大值的区间内;状态设置模块5046,如果真值判断模块5044的判断结果为是,则设置程序执行正常,如果真值判断模块5044的判断结果为否,则设置程序执行异常。
[0076] 在上述技术方案中,优选地,所述数据处理设备可以为智能卡。
[0077] 在上述技术方案中,优选地,所述具有攻击监控功能的装置可以为智能卡。
[0078] 在上述技术方案中,优选地,所述关键程序序列是一个程序整体。
[0079] 在上述技术方案中,优选地,在判断所述数据处理设备受到攻击的情况下,使所述数据处理设备停止运行所述程序,在判断所述数据处理设备未受到攻击的情况下,使所述数据处理设备继续运行所述程序。
[0080] 根据上述技术方案,可有效保护保存在智能卡中的关键数据,提高智能卡的安全性。保证在智能卡使用过程中,必须的程序流程得以执行,避免出现对命令的处理未按照设计的预定顺序执行的情况,从而完成对程序关键流程进行监控,确保在程序运行期间必须的流程按预定的顺序执行,有效防止针对程序执行流程进行的攻击,绕过必要的安全检查访问智能卡中的关键数据的情况发生。
[0081] 根据本发明的方法可以理解为:通过对要保护的程序序列的执行情况加以记录,在整个处理流程的关键位置加以校验,来达到对程序的管理及流程上的监控,有效防止一些特定的攻击手段,有效保护保存在智能卡中的关键数据,提高智能卡的安全性。具体实现如下:设置程序关键流程统计器,关键流程一旦执行就会刷新这个统计器,在特定时间点,对统计器进行分析,若其值在预先设定的范围内,那么则认为关键流程已执行,若不在范围内,则认为关键流程未被执行,以此来达到对程序关键流程的监控目的,并且通过设计这个范围可以做到对安全级别的控制。共分3个部分来实现以上功能:
[0082] 1.初始化程序流程统计器
[0083] 这部分主要是对程序统计器的输入参数进行设置。
[0084] 2.程序关键序列记录
[0085] 这部分完成对程序序列的统计工作。
[0086] 3.程序统计分析
[0087] 这部分完成对统计结果的分析工作,分析本次运行期间程序的执行情况。
[0088] 下面参照图8至图14进行具体说明。
[0089] 首先是初始化程序流程统计器,对程序进行分析,分析整理关键的程序序列。
[0090] 程序分析整理后的结构如图8所示。
[0091] 统计出每个关键程序序列的机器指令数目,那么每个关键的程序序列就会存在一个机器指令数目的极大值;统计每个程序序列的关键机器指令数目,那么每个关键的程序序列就会存在一个机器指令数目的极小值。
[0092] 任何程序最后都会被编译器编译成机器代码,那么一个程序序列最终也是由一系列的机器指令组成的,那么每个程序序列的机器代码数量就是一个度量,统计出其值就是这个程序序列的极大值;而程序序列可能存在条件分支,那么在程序正常运行时必然有个主分支,那么只统计这些主分支上的机器指令数目就可以得出另外一个度量,因为此流程为其主流程,那么程序正常运行期间这些机器指令是一定会执行的,因此其值就可以作为此程序序列的极小值。
[0093] 整理后需要记录的数据如图9所示。
[0094] 那么将所有关键程序序列的极小值相加得到一个值minValue,将所有关键程序的极大值相加得到一个值maxValue。
[0095] 将minValue、maxValue作为输入参数来启动程序统计器。
[0096] 程序统计器会统计程序运行期间的机器指令执行情况,那么将会使用一个程序计数器记录机器指令的处理数目,为了方便记忆设计TrueValue记录,因此在程序统计器启动的时候需要清0TrueValue。
[0097] 可参考图10示出的流程图,初始化程序流程统计器的过程包括:步骤S1202,对程序进行分析,提取重要程序序列;步骤S1204,对程序序列进行编号并获取第一个程序序列;步骤S1206,对程序序列进行分析,提取极大值与极小值;步骤S1208,判断是否是最后一个程序序列,在判断结果为否的情况下,进入步骤S1210,在判断结果为是的情况下,进入步骤S1212;步骤S1210,获取下一个程序序列,进入步骤S1206;步骤S1212,对所有程序序列的极大值求和获得maxValue,对极小值求和获得minValue;步骤S1214,启动程序统计器,初始化统计计数器TrueValue。
[0098] 其次是,程序关键序列记录
[0099] 本发明提供两种实现方法:
[0100] 方法1简单实现容易,方法2实现复杂需要一些硬件的支持,下面参考图11A和图11B分别就以上两种方法进行说明:
[0101] 方法1:
[0102] 数据结构定义如下:
[0103] Typedef struct{
[0104] Private:
[0105] Int minValue;
[0106] Int maxValue;
[0107] Int TrueValue;
[0108] Public:
[0109] int Initializition(int minValue,int maxValue);
[0110] int AddRecord(int IncValue);
[0111] int StatAnalyse(void);
[0112] }
[0113] 将每个关键程序序列独立成单独的函数,在函数处理返回前,一次性的完成程序序列记录,即将统计器TrueValue增加本序列的极大值与极小值的均值。
[0114] 如图11A所示,该过程包括:步骤S1302,序列开始;步骤S1304,原程序序列;步骤S1306,计算本序列极大均值与极小均值的IncValue;步骤S1308,调用函数AddRecord将TrueValue增加IncValue;步骤S1310,序列结束。
[0115] 方法2:
[0116] 数据结构定义如下:
[0117] Typedef struct{
[0118] Private:
[0119] Int minValue;
[0120] Int maxValue;
[0121] Int TrueValue;
[0122] Public:
[0123] int Initializition(int minValue,int maxValue);
[0124] int NoteStart(void);
[0125] int NoteEnd(void);
[0126] int StatAnalyse(void);
[0127] }
[0128] 若机器硬件本身设计对机器指令的统计模块,那么可以用此模块完成对程序序列的统计工作:
[0129] 在进入此程序序列时,启动硬件统计模块。
[0130] 程序序列执行,硬件统计模块完成机器指令的统计工作。
[0131] 程序序列结束时,读取硬件统计模块的统计数据,将其加到统计器TrueValue中,完成程序序列记录。
[0132] 若机器硬件本身无机器指令的统计模块,可以利用程序计数器达到上述目的。
[0133] 如图11B所示,该过程包括:步骤S1302’,序列开始;步骤S1304’,调用NoteStart,启动硬件机器指令计数器;步骤S1306’,原程序序列;步骤S1308’,调用NoteEnd获取已执行机器指令数目IncValue,将TrueValue增加IncValue;步骤S1310’,序列结束。
[0134] 最后是程序统计分析。
[0135] 通过对程序统计器的分析,完成对程序流程的监控目的。要求TrueValue在minValue与maxValue区间之内,那么就判断为程序按照预定的流程进行,一些关键的程序序列已被覆盖,那么则认可本次处理。
[0136] 当受到攻击时,会影响一些程序的执行,有些程序序列没有被执行,比如程序序列2的极大值为50,极小值为45,那么设置minValue=45、maxValue=50,那么当程序序列
2受到外界的攻击导致程序执行异常,导致程序序列2有一些程序未被执行到,这样统计器就会统计出本序列执行的机器指令数目,假设统计出的数目为10即TrueValue=10,这样通过TrueValue与minValue、maxValue的比较就可以发现TrueValue不在[minValue,maxValue]区间内,即发现此攻击。
[0137] 如图12所示,具体过程包括:步骤S1402,统计分析开始;步骤S1404,获取TureValue;步骤S1406,判断TrueValue是否在[minValue,maxValue]区间内,如果判断结果为是,则进入步骤S1408,如果判断结果为否,则进入步骤S1410;步骤S1408,设置程序执行正常;步骤S1410,设置程序执行异常;步骤S1412,统计分析结束。
[0138] 程序的最终结构如图13所示,首先是统计器统计启动,然后是程序基本序列1和程序关键序列1,直至程序基本序列n和程序关键序列n,最后是统计器统计分析。
[0139] 本领域技术人员应当理解,可以根据实际情况,可以将一个程序整体当成一个关键的程序序列,也可以单独对一个程序序列启动统计器的统计和分析功能。
[0140] 根据上述技术方案,可有效保护保存在于诸如智能卡的数据处理装置中的关键数据,提高可智能卡的安全性。保证在智能卡使用过程中,一些必须的程序流程得以执行,避免出现对命令的处理未按照设计的预定顺序执行的情况,完成对程序关键流程进行监控,从而确保在程序运行期间某些必须的流程按预定的顺序执行,有效防止一些针对程序执行流程进行的攻击,绕过某些必要的安全检查访问智能卡中的关键数据的情况的发生。
[0141] 以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。