Java Card虚拟机栈的防错误注入方法及系统技术方案

技术编号:16216812 阅读:32 留言:0更新日期:2017-09-15 23:02
本发明专利技术公开了一种Java Card虚拟机栈的防错误注入方法及系统,包括在启动Java Card虚拟机之前产生随机数;依据随机数计算出Java Card虚拟机栈的内存地址;启动Java Card虚拟机,并将内存地址确定为Java Card虚拟机栈的实际内存地址,以防止攻击者找到Java Card虚拟机栈的实际内存地址后进行错误注入。本发明专利技术通过动态随机调整Java Card虚拟机栈的实际内存地址,使攻击者较难找到Java Card虚拟机栈的实际内存地址,进一步增加攻击者对Java Card虚拟机栈进行错误注入的难度。本发明专利技术在一定程度上防止了对Java Card虚拟机栈的错误注入,提高了Java Card虚拟机栈的安全性。

Error prevention injection method and system for Java Card virtual machine stack

The present invention discloses anti fault injection method and system of Java Card virtual machine stack, including random number generated before starting the Java Card virtual machine; based on the random number to calculate the Java memory address Card virtual machine stack; start Java Card virtual machine, and will determine the memory address for the Java Card virtual machine stack the actual memory address, to prevent an attacker to find Java Card virtual machine stack the actual memory address after fault injection. The present invention through dynamic random adjustment Java Card virtual machine stack the actual memory address, the attacker is difficult to find the Java Card virtual machine stack the actual memory address, to further increase the difficulty of the attacker error injection Java Card virtual machine stack. The invention can prevent the Java Card virtual machine stack fault injection, to improve the security of Java Card virtual machine stack.

【技术实现步骤摘要】
JavaCard虚拟机栈的防错误注入方法及系统
本专利技术涉及JavaCard虚拟机栈防护
,特别是涉及一种JavaCard虚拟机栈的防错误注入方法及系统。
技术介绍
JavaCard支持很多应用,并且具有非常高的安全性。近年来,JavaCard在金融、移动支付等行业中的应用越来越广范,与此同时,针对JavaCard的攻击手段也越来越多,目前非常重要的攻击手段是针对JavaCard虚拟机栈的错误注入,而现有技术中还没有针对这种攻击手段的防护方法,使JavaCard虚拟机栈的安全性降低。因此,如何提供一种解决上述技术问题的JavaCard虚拟机栈的防错误注入方法及系统成为本领域的技术人员需要解决的问题。
技术实现思路
本专利技术的目的是提供一种JavaCard虚拟机栈的防错误注入方法和系统,在使用过程中增加攻击者对JavaCard虚拟机栈进行错误注入的难度,并在一定程度上防止了对JavaCard虚拟机栈的错误注入,提高了JavaCard虚拟机栈的安全性。为解决上述技术问题,本专利技术提供了一种JavaCard虚拟机栈的防错误注入方法,包括:在启动JavaCard虚拟机之前产生随机数;依据所述随机数计算出JavaCard虚拟机栈的内存地址;启动JavaCard虚拟机,并将所述内存地址确定为所述JavaCard虚拟机栈的实际内存地址,以防止攻击者找到JavaCard虚拟机栈的实际内存地址后进行错误注入。可选的,所述依据所述随机数计算出JavaCard虚拟机栈的内存地址的过程具体为:依据所述随机数对所述JavaCard虚拟机栈的内存空间的起始地址和结束地址进行调整,得到调整后的起始地址和结束地址,并依据所述调整后的起始地址和结束地址确定出所述JavaCard虚拟机栈的内存地址。可选的,所述方法还包括:对待进栈的第一数据进行按位取反操作,得到相应的第二数据;将所述第一数据与所述第二数据进行结合得到第三数据,并将所述第三数据压入栈;对待出栈的数据进行反向验证,以判断待出栈的数据是否为所述第一数据,如果是,则所述第一数据正常,并进行所述第一数据的返回;否则,所述第一数据受到错误注入,并进入安全异常处理流程。可选的,所述将所述第一数据与所述第二数据进行结合得到第三数据的过程具体为:将所述第二数据的尾部与所述第一数据的首部相接后得到第三数据;则,所述对待出栈的数据进行反向验证,以判断待出栈的数据是否为所述第一数据的过程具体为:将待出栈的数据从中间分开得到第一部分数据和第二部分数据,将所述第一部分数据进行按位取反得到第三部分数据,并将所述第三部分数据与所述第二部分数据进行比较,当所述第三部分数据与所述第二部分数据相同时,则所述待出栈的数据为所述第一数据;否则,所述出栈后的数据不是所述第一数据,所述第一数据受到错误注入,并进入安全异常处理流程。可选的,所述安全异常处理流程为自动停止后续执行动作。可选的,所述安全异常处理流程为自动复位,并返回至所述JavaCard虚拟机栈的初始化状态。可选的,所述安全异常处理流程为记录异常数据后进行自动复位。为解决上述技术问题,本专利技术提供了一种JavaCard虚拟机栈的防错误注入系统,包括:数据发生器,用于在启动JavaCard虚拟机之前产生随机数;计算模块,用于依据所述随机数计算出JavaCard虚拟机栈的内存地址;定位模块,用于启动JavaCard虚拟机,并将所述内存地址确定为所述JavaCard虚拟机栈的实际内存地址,以防止攻击者找到JavaCard虚拟机栈的实际内存地址后进行错误注入。本专利技术提供了一种JavaCard虚拟机栈的防错误注入方法及系统,包括在启动JavaCard虚拟机之前产生随机数;依据随机数计算出JavaCard虚拟机栈的内存地址;启动JavaCard虚拟机,并将内存地址确定为JavaCard虚拟机栈的实际内存地址,以防止攻击者找到JavaCard虚拟机栈的实际内存地址后进行错误注入。由于攻击者在对JavaCard虚拟机栈进行错误注入时,首先需要找到JavaCard虚拟机栈的位置,也就是需要找到JavaCard虚拟机栈的实际内存地址。本专利技术通过在启动JavaCard虚拟机之前产生随机数,并依据该随机数计算出JavaCard虚拟机栈的内存地址,并在启动JavaCard虚拟机时将该内存地址定位为JavaCard虚拟机栈的实际内存地址,因此在每次启动JavaCard虚拟机时就可以实现动态随机调整JavaCard虚拟机栈的位置,使攻击者较难找到JavaCard虚拟机栈的实际内存地址,进一步增加攻击者对JavaCard虚拟机栈进行错误注入的难度。本专利技术在一定程度上防止了对JavaCard虚拟机栈的错误注入,提高了JavaCard虚拟机栈的安全性。附图说明为了更清楚地说明本专利技术实施例中的技术方案,下面将对现有技术和实施例中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图1为本专利技术提供的一种JavaCard虚拟机栈的防错误注入方法的流程示意图;图2为本专利技术所提的一种JavaCard虚拟机栈的内存地址浮动示意图;图3为本专利技术提供的一种JavaCard虚拟机栈的防错误注入系统的结构示意图。具体实施方式本专利技术的核心是提供一种JavaCard虚拟机栈的防错误注入方法和系统,在使用过程中增加攻击者对JavaCard虚拟机栈进行错误注入的难度,在一定程度上防止了对JavaCard虚拟机栈的错误注入,提高了JavaCard虚拟机栈的安全性。为使本专利技术实施例的目的、技术方案和优点更加清楚,下面将结合本专利技术实施例中的附图,对本专利技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本专利技术一部分实施例,而不是全部的实施例。基于本专利技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本专利技术保护的范围。请参照图1,图1为本专利技术提供的一种JavaCard虚拟机栈的防错误注入方法的流程示意图。该方法包括:步骤10:在启动JavaCard虚拟机之前产生随机数;步骤20:依据随机数计算出JavaCard虚拟机栈的内存地址;步骤30:启动JavaCard虚拟机,并将内存地址确定为JavaCard虚拟机栈的实际内存地址,以防止攻击者找到JavaCard虚拟机栈的实际内存地址后进行错误注入。具体的,在每次启动JavaCard虚拟机之前都通过数据产生器(可以为随机数产生模块)产生随机数,并且依据该随机数可以计算出JavaCard虚拟机栈的内存地址,再启动JavaCard虚拟机,并将JavaCard虚拟机栈的实际内存地址定位为依据随机数计算出的内存地址,这样在每次启动JavaCard虚拟机时都可以对JavaCard虚拟机栈的实际内存地址进行动态调整,并且使随机调整,因而实现对JavaCard虚拟机栈的具体位置的隐藏,使攻击者不易找到JavaCard虚拟机栈的实际内存地址,从而加大了对JavaCard虚拟机栈进行错误注入的难度。需要说明的是,利用随机数计算JavaCard虚拟机栈的内存地址时,是将空闲的内存地址用来作为JavaCard虚拟机栈的内存地址本文档来自技高网...
<a href="http://www.xjishu.com/zhuanli/55/201710339064.html" title="Java Card虚拟机栈的防错误注入方法及系统原文来自X技术">Java Card虚拟机栈的防错误注入方法及系统</a>

【技术保护点】
一种Java Card虚拟机栈的防错误注入方法,其特征在于,包括:在启动Java Card虚拟机之前产生随机数;依据所述随机数计算出Java Card虚拟机栈的内存地址;启动Java Card虚拟机,并将所述内存地址确定为所述Java Card虚拟机栈的实际内存地址,以防止攻击者找到Java Card虚拟机栈的实际内存地址后进行错误注入。

【技术特征摘要】
1.一种JavaCard虚拟机栈的防错误注入方法,其特征在于,包括:在启动JavaCard虚拟机之前产生随机数;依据所述随机数计算出JavaCard虚拟机栈的内存地址;启动JavaCard虚拟机,并将所述内存地址确定为所述JavaCard虚拟机栈的实际内存地址,以防止攻击者找到JavaCard虚拟机栈的实际内存地址后进行错误注入。2.根据权利要求1所述的JavaCard虚拟机栈的防错误注入方法,其特征在于,所述依据所述随机数计算出JavaCard虚拟机栈的内存地址的过程具体为:依据所述随机数对所述JavaCard虚拟机栈的内存空间的起始地址和结束地址进行调整,得到调整后的起始地址和结束地址,并依据所述调整后的起始地址和结束地址确定出所述JavaCard虚拟机栈的内存地址。3.根据权利要求2所述的JavaCard虚拟机栈的防错误注入方法,其特征在于,所述方法还包括:对待进栈的第一数据进行按位取反操作,得到相应的第二数据;将所述第一数据与所述第二数据进行结合得到第三数据,并将所述第三数据压入栈;对待出栈的数据进行反向验证,以判断待出栈的数据是否为所述第一数据,如果是,则所述第一数据正常,并进行所述第一数据的返回;否则,所述第一数据受到错误注入,并进入安全异常处理流程。4.根据权利要求3所述的JavaCard虚拟机栈的防错误注入方法,其特征在于,所述将所述第一数据与所述第二数据进行结合得到第三数据的过程具体为:将所述第二数据...

【专利技术属性】
技术研发人员:李祖猛
申请(专利权)人:东信和平科技股份有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1