一种基于VM引擎的保护方法与流程

文档序号:17639899发布日期:2019-05-11 00:36阅读:250来源:国知局

本发明属于信息安全技术领域,涉及一种保护机制,主要涉及一种基于vm引擎的保护方法。



背景技术:

传统指令引擎的最大特点就是其指令系统,通过执行一些表达式,可以让这个指令引擎拥有计算功能,但是解密者可以通过逆向技术,获取指令流的全部内容。在信息安全方面,传统的指令引擎有待提高。



技术实现要素:

为了解决上述技术问题,本发明提供了一种基于vm引擎的保护方法。

本发明所采用的技术方案是:

一种基于vm引擎的保护方法,其特征在于,包括以下步骤:

步骤1:vm(虚拟机)被预先指定了一个正确的非压缩结果uncompressedresult和一个正确的压缩结果compressedresult。

步骤2:被验证方输入一个虚拟指令流vins,vm引擎会执行被验证方输入的虚拟指令流vins,得到执行后的结果result1;

步骤3:如果步骤2中的执行结果result1正确,即result1等于步骤1中的uncompressedresult,则将步骤2中输入的指令流vins进行压缩得到输出消息result2,否则显示输出结果不正确,判定输入方为非法用户,验证失败;

步骤4:检查步骤3中经过压缩的输出消息result2的格式与步骤1中的预先指定的正确的压缩结果compressedresult是否相同,如果相同,判定为格式正确,则验证通过。

在上述的一种基于vm引擎的保护方法,步骤2的实现包括以下子步骤:

步骤1.1:vm引擎在执行虚拟指令流vins时,执行的同时能够动态新增后续指令流、复制后续指令流、修改后续指令流和删除后续指令流,其中,

新增后续指令流是指之前没有d指令,新增一个d指令;

复制后续指令流是指指令由a形式变成aa形式;

修改后续指令流是指指令由a形式变成b形式;

删除后续指令流是指在有了其它的变换形式之后,删除某些(个)不再需要的指令。

在上述的一种基于vm引擎的保护方法,步骤2中所述vm引擎的保护机制是内置vm,由被验证方输入指令流vins,执行后判断结果是否正确;而传统vm引擎的保护机制是内置vm和指令流,并根据指令流来处理破解者输入的数据,最后判断结果是否正确。

在上述的一种基于vm引擎的保护方法,步骤2中所述vm引擎的保护机制vm是固定的,但支持动态指令流,即:指令流在运行时,可以动态新增、复制、修改和删除后续指令流;而传统vm引擎的保护机制vm是固定的,指令流也是固定的,只有执行过程中产生的数据是变化的。

在上述的一种基于vm引擎的保护方法,步骤3的实现包括以下子步骤:

步骤3.1:根据输入的指令流和预先指定的vm运行结果,使用crc128变形算法进行计算,得到crc128算法的输入常量值iv,其中vm运行结果包括步骤1中的正确的非压缩结果uncompressedresult和正确的压缩结果compressedresult;

步骤3.2:用步骤3.1计算出的iv值,作为crc128变形算法的输入常量值,对输入的指令流再用crc128算法进行计算。crc128算法依据itu-ieee国际规范,只有指定的输入才能压缩得到正确的输出消息。对于错误的输入指令,每1bit的错误输入都将导致压缩结果大面积错乱,从而不能得到正确的输出消息。

在上述的一种基于vm引擎的保护方法,步骤5中crc128变形算法为crc128算法的变形实现,其本质遵循crc128算法的itu-eee国际规范,区别在于crc128变形算法会根据期望的crc128算法的输出结果,计算得到crc128算法的输入常量值iv。

在上述的一种基于vm引擎的保护方法,步骤4中所谓的压缩的特征在于:

压缩是基于crc128算法的一种特性,crc128算法能将步骤4中的输入指令(指令长度大于128比特)作为算法的输入进行计算,得到一个固定为128比特的值,得到的值的比特长度比原输入指令的长度短,因此称为压缩。其中crc128算法依据itu-ieee国际规范。

因此,本发明具有如下优点:本发明在阻止攻击者试图破解指令流和数据方面具有创新性,并且快速高效。vm引擎既能够保证数据的完整性,又能提供防篡改与检验机制,在安全性上得到保证,具有良好的技术优势。可应用的领域包括带有自我保护性的指令系统、数据传输、数字版权保护、特殊环境下的软件的保护等。

具体实施方式

下面通过实施例,对本发明的技术方案作进一步具体的说明。

本发明包括以下步骤:

步骤1:vm(虚拟机)被预先指定了一个正确的非压缩结果uncompressedresult和一个正确的压缩结果compressedresult。

步骤2:被验证方输入一个虚拟指令流vins,vm引擎会执行被验证方输入的虚拟指令流vins,得到执行后的结果result1;实现包括以下子步骤:

步骤1.1:vm引擎在执行虚拟指令流vins时,执行的同时能够动态新增后续指令流、复制后续指令流、修改后续指令流和删除后续指令流,其中,

新增后续指令流是指之前没有d指令,新增一个d指令;

复制后续指令流是指指令由a形式变成aa形式;

修改后续指令流是指指令由a形式变成b形式;

删除后续指令流是指在有了其它的变换形式之后,删除某些(个)不再需要的指令。

比如,输入一个序列号,即初始的虚拟指令ins0,ins0首先执行新增虚拟指令操作,通过采用设定算法进行变换,生成新的虚拟指令ins1,ins1又执行修改虚拟指定操作,ins1虚拟指令通过采用设定算法进行变换,生成新的虚拟指令ins2,以此类推,经过类似变换,可以生成各种虚拟指令流。

步骤2中vm引擎的保护机制是内置vm,由被验证方输入指令流vins,执行后判断结果是否正确;而传统vm引擎的保护机制是内置vm和指令流,并根据指令流来处理破解者输入的数据,最后判断结果是否正确。

并且,vm引擎的保护机制vm是固定的,但支持动态指令流,即:指令流在运行时,可以动态新增、复制、修改和删除后续指令流;而传统vm引擎的保护机制vm是固定的,指令流也是固定的,只有执行过程中产生的数据是变化的。

步骤3:如果步骤2中的执行结果result1正确,即result1等于步骤1中的uncompressedresult,则将步骤2中输入的指令流vins进行压缩得到输出消息result2,否则显示输出结果不正确,判定输入方为非法用户,验证失败;包括以下子步骤:

步骤3.1:根据输入的指令流和预先指定的vm运行结果,使用crc128变形算法进行计算,得到crc128算法的输入常量值iv,其中vm运行结果包括步骤1中的正确的非压缩结果uncompressedresult和正确的压缩结果compressedresult;

步骤3.2:用步骤3.1计算出的iv值,作为crc128变形算法的输入常量值,对输入的指令流再用crc128算法进行计算。crc128算法依据itu-ieee国际规范,只有指定的输入才能压缩得到正确的输出消息。对于错误的输入指令,每1bit的错误输入都将导致压缩结果大面积错乱,从而不能得到正确的输出消息。

步骤4:检查步骤3中经过压缩的输出消息result2的格式与步骤1中的预先指定的正确的压缩结果compressedresult是否相同,如果相同,判定为格式正确,则验证通过。

步骤4中crc128变形算法为crc128算法的变形实现,其本质遵循crc128算法的itu-eee国际规范,区别在于crc128变形算法会根据期望的crc128算法的输出结果,计算得到crc128算法的输入常量值iv。

步骤4中所谓的压缩的特征在于:

压缩是基于crc128算法的一种特性,crc128算法能将步骤4中的输入指令(指令长度大于128比特)作为算法的输入进行计算,得到一个固定为128比特的值,得到的值的比特长度比原输入指令的长度短,因此称为压缩。其中crc128算法依据itu-ieee国际规范。

应当理解的是,本说明书未详细阐述的部分均属于现有技术。

应当理解的是,上述针对较佳实施例的描述较为详细,并不能因此而认为是对本发明专利保护范围的限制,本领域的普通技术人员在本发明的启示下,在不脱离本发明权利要求所保护的范围情况下,还可以做出替换或变形,均落入本发明的保护范围之内,本发明的请求保护范围应以所附权利要求为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1