一种基于神经网络的程序控制流混淆方法及系统与流程

文档序号:21777919发布日期:2020-08-07 19:46阅读:205来源:国知局
一种基于神经网络的程序控制流混淆方法及系统与流程

本发明属于程序控制流混淆技术领域,尤其涉及一种基于神经网络的程序控制流混淆方法及系统。



背景技术:

目前,随着互联网的飞速发展和大数据时代的到来,云端计算服务越来越流行,在云计算环境能够给用户带来更强的计算能力和更好的扩展性的同时,也导致了用户重要算法泄露的安全问题。因此,在云计算场景下,当远程环境不可信时,保护程序逻辑的机密性成为重要的安全要求。

程序代码的安全保护是计算机安全领域的一个重点研究内容,控制流混淆是保护程序逻辑的直接方法。程序代码的控制流决定要执行的指令序列,直接反映了程序的逻辑,而控制流混淆将程序的控制流转换为无法理解的形式,可以有效保护程序逻辑的机密性。然而,现有的控制流混淆工作存在普适性不足的问题,严格符合安全定义的混淆方法往往会产生巨大的时间消耗,无法满足云计算环境下程序保护的需要。

现有技术应用中没有利用神经网络实现控制流混淆的方法,人工神经网络(ann)模仿生物神经网络的行为特征,由大量的神经元连接组成,各个神经元之间用可变权值的有向弧连接,通过调节权值使处理结果逼近设定的值,人工神经网络具有极高的容错性以及极强的非线性函数逼近能力,能够很好地近似分支语句的判断条件。

通过上述分析,现有技术存在的问题及缺陷为:

(1)借助可信硬件保护的方法是过于依赖可信硬件,并且云端服务器与可信环境的交互会产生巨大的时间开销。

(2)现有的代码混淆方法适用性不高,不能很好的兼顾安全性、耐受性以及时间开销三方面。

解决以上问题及缺陷的难度为:针对公有云下用户程序安全性问题,基于神经网络自身的不可解释性去设计程序控制流混淆方法,其实是极具挑战性的。(1)应用软件属于数字资产,一旦发布之后,恶意攻击者就可以通过逆向工程对软件进行破解和重组,对核心算法进或关键功能进行剽窃牟利,而控制流混淆是保护用户程序逻辑的最直接方法。(2)用户将程序上传到云端执行,云端的环境是不可信的,用户程序逻辑和算法面临被窃取的风险。在此场景下,控制流混淆方法要同时兼顾安全性以及时间开销。

解决以上问题及缺陷的意义为:本发明结合程序转换技术和神经网络,通过隐藏程序中分支语句中的判断条件,并插入伪分支语句,保证高控制流机密性。本发明的主要思想是利用神经网络二分类模型隐藏分支语句中判断条件的逻辑,所以需要保证神经网络在输入空间的二分类正确率为100%。研究基于神经网络的程序控制流混淆方法及系统具有深远的实践意义。



技术实现要素:

为了解决现有技术存在的问题,本发明提供了一种基于神经网络的程序控制流混淆方法及系统。具体涉及一种面向云计算场景下的的控制流混淆方法及系统,本发明能够隐藏每个分支语句条件的逻辑信息,有效地保护云计算场景中远程执行的应用程序逻辑,避免了程序逻辑被恶意攻击者获取和篡改。

本发明是这样实现的,一种基于神经网络的程序控制流混淆方法包括:

将原始程序中分支语句的判断条件进行隐藏,并将所述分支语句的判断条件转换为第一自定义函数,获得混淆后程序;再根据标准化判断条件训练对应的神经网络二分类模型,并利用所述第一自定义函数调用神经网络推理计算替代原始程序中的条件。

进一步,所述第一自定义函数的一参数表示标准化判断条件的左操作数,另一参数表示当前转换的分支语句在源程序的唯一标识,对应神经网络模型权重的唯一标识;

所述标准化判断条件表示根据不等式原则,将右操作数中所有变量移到左操作数,左右操作数分别加一个随机常数后的标准化不等式;

所述第一自定义函数表示如下:

nnquery(l(s),i(s));

其中,l(s)表示当前转换的分支语句的标准化判断条件的左操作数,i(s)表示当前转换的分支语句在源程序的唯一标识,对应神经网络模型权值的唯一标识。

进一步,所述根据标准化判断条件训练神经网络二分类模型的方法包括:

标准化判断条件的左操作数作为神经网络的输入样本,根据左操作数在标准化判断条件中的评估结果,标记输入样本的类别,制作神经网络的训练集;

使训练的神经网络获取神经网络模型权值,模拟条件分支语句的逻辑;

所述神经网络模型权值w以多元组的形式表示如下:

w={i(s),w(s)}

其中,i(s)表示转换的分支语句在原程序中的唯一标识,w(s)表示对应分支语句的神经网络模型权值;

训练伪分支神经网络二分类模型的方法包括:

输入空间中的最大值为一类,剩余输入样本全为同一类别,制作神经网络的训练集;使训练的神经网络模型始终流向语句s。

进一步,所述将原始程序中分支语句的判断条件进行隐藏前,需进行:在原始语句s之前构造并插入伪分支语句,所述伪分支语句流向s,使程序原本的控制流程不被篡改;并将伪分支语句的判断条件转换为第二自定义函数,获得混淆后程序和伪分支神经网络模型;

所述第二自定义函数表示如下:

nnquery(l(s),i(s))

其中,l(s)表示当前语句s可达变量的随机线性表达式,i(s)表示当前转换的分支语句在源程序的唯一标识,对应神经网络模型权重的唯一标识;

所述第二自定义函数的一参数表示当前语句s可达变量的随机线性表达式,另一参数表示当前转换的分支语句在源程序的唯一标识,对应神经网络模型权重的唯一标识。

本发明的另一目的在于提供一种基于神经网络的程序控制流混淆系统,包括:

伪分支语句插入模块,在原始语句s之前构造并插入伪分支语句,这些伪分支语句最终将流向s,使程序原本的控制流程不被篡改;

变量隐藏模块,将真伪分支语句的判断条件进行转换替代成控制流查询函数,并根据判断条件训练神经网络,获得转换程序和神经网络模型。

本发明的另一目的在于提供一种面向云计算场景下的控制流混淆方法,包含所述的基于神经网络程序控制流混淆方法,还包括:

将所述转换程序和神经网络模型发送至云端远程计算单元,所述转换程序和神经网络模型存储在所述远程计算单元的不可信环境中;

基于所述神经网络模型,在所述远程计算单元中执行所述转换程序。

进一步,所述远程计算单元执行到分支语句时,转换后的分支语句会通过自定义函数调用神经网络模型,神经网络模型根据输入值推理计算出和原始程序相同的执行路径。

本发明的另一目的在于提供一种面向云计算场景下的程序控制流混淆系统包括:

伪分支语句插入模块,在原始语句s之前构造并插入伪分支语句,这些伪分支语句最终将流向s,使程序原本的控制流程不被篡改;

变量隐藏模块,将真伪分支语句的判断条件进行转换替代成控制流查询函数,并根据判断条件训练神经网络,获得转换程序和神经网络模型;

程序发送模块,将所述转换程序和神经网络模型发送至远程计算单元所述转换程序和神经网络模型存储在所述远程计算单元的不可信环境中;

程序执行模块,基于所述神经网络模型,在所述远程计算单元中执行所述转换程序。

本发明的另一目的在于提供一种接收用户输入程序存储介质,所存储的计算机程序使电子设备执行所述基于神经网络的程序控制流混淆方法,包括下列步骤:

步骤一,伪分支语句构造与插入,在原始语句s之前构造并插入伪分支语句,这些伪分支语句最终将流向s,以保证程序原本的控制流程不被篡改;

步骤二,分支语句以及伪分支语句隐藏,将原始程序中分支语句以及插入的伪分支语句进行隐藏,将其转换为控制流查询函数,并根据分支语句逻辑训练神经网络,获得转换程序和神经网络模型。

本发明的另一目的在于提供一种存储在计算机可读介质上的计算机程序产品,包括计算机可读程序,供于电子装置上执行时,提供用户输入接口以实施所述基于神经网络的程序控制流混淆方法。本发明提供一种基于神经网络的工具集(输入接口)以实施所述基于神经网络的程序控制流混淆方法。

结合上述的所有技术方案,本发明所具备的优点及积极效果为:

精准抽取程序敏感的分支信息,根据分支信息训练神经网络,用神经网络调用函数替代分支语句的判断条件,神经网络权值的不可解释性有效地隐藏了程序逻辑;通过在程序中插入伪分支语句进一步混淆控制流,将程序的控制流图复杂化,增大了恶意攻击者阅读和理解程序逻辑的难度;将所述转换程序与神经网络模型权重发送至不可信的远程计算单元,基于所述神经网络模型,在所述远程计算单元运行所述转换程序。本发明利用了神经网络权值的不可解释性,将程序的重要逻辑信息隐藏在神经网络,插入伪分支语句,保证高控制流机密性。

相比于现有技术,本发明的优点进一步包括:

本发明利用神经网络权值的不可解释性有效地隐藏了程序逻辑,避免了应用程序逻辑被恶意攻击者获取和篡改;构造和插入伪分支语句,将程序的控制流图复杂化,增大了恶意攻击者阅读和理解程序逻辑的难度。在保证高控制流机密性的同时,具有较小的性能消耗

本发明结合云计算场景,通过转换每个分支语句的条件,并利用神经网络推理替代分支语句的判断条件,从而保证高控制流机密性。

结合实验或试验数据和现有技术对比得到的效果和优点:

本发明的实验平台选择如图10所示的云计算平台,申请了具有三个节点的计算集群,计算集群中的计算机安装了ubuntu14.04系统,8g内存和500g硬盘。针对cpu密集型应用程序,实验结果如图11所示,基于神经网络的程序混淆方法的单次调用函数平均耗时为5.01us,是使用λ表达式替代分支语句的平均耗时的13.11%,是使用可信环境保护分支语句的平均耗时的7.14%。本发明兼顾安全性的同时,具有较小的时间开销,可以高效的保护用户程序逻辑机密性。

附图说明

为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图做简单的介绍,显而易见地,下面所描述的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下还可以根据这些附图获得其他的附图。

图1是本发明实施例提供的基于神经网络的程序控制流混淆方法程序混淆方法流程图。

图2是本发明实施例的分支语句的判断条件训练神经网络图。

图3是本发明实施例的分支语句判断条件的程序变换图。

图4是本发明实施例的伪分支语句的判断条件训练神经网络图。

图5是本发明实施例的伪分支语句构造与插入的程序变换图。

图6是本发明实施例的基于神经网络的程序控制流混淆系统结构图。

图中:1、伪分支语句构造与插入模块;2、分支语句逻辑隐藏模块。

图7是本发明实施例的面向云计算场景下的控制流混淆方法流程图。

图8是本发明实施例的面向云计算场景下的控制流混淆方法体系结构图。

图9是本发明实施例的面向云计算场景下的控制流混淆系统结构图。

图中:3、程序发送模块;4、程序执行模块。

图10是本发明实施例的云计算平台。

图11是本发明实施例与现阶段混淆方法性能消耗对比。

具体实施方式

为了使本发明的目的、技术方案及优点更加清楚明白,以下结合实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。

现有技术中没有利用神经网络权值的不可解释性有效地隐藏程序逻辑,造成应用程序逻辑被恶意攻击者获取和篡改;而且没有利用构造和插入伪分支语句,将程序的控制流图复杂化,造成恶意攻击者很容易阅读和理解程序逻辑,从而不能提高控制流机密性。

针对现有技术存在的问题,本发明提供了一种基于神经网络的程序控制流混淆方法及系统,下面结合附图对本发明作详细的描述。

如图1所示,本发明实施例提供的基于神经网络的程序控制流混淆方法可以在用户主机上实现,所述的原程序可以是基于soot框架的三地址码的程序;具体包括:

s101,伪分支语句构造与插入,在原始语句s之前构造并插入伪分支语句,这些伪分支语句最终将流向s,以保证程序原本的控制流程不被篡改。

s102,分支语句以及伪分支语句隐藏,将原始程序中分支语句以及插入的伪分支语句进行隐藏,将其转换为控制流查询函数,并根据分支语句逻辑训练神经网络,获得转换程序和神经网络模型。

步骤s102中,将原始程序中分支语句判断条件进行隐藏,将分支语句的判断条件转换为第一自定义函数;所述第一自定义函数的一参数表示标准化判断条件的左操作数,另一参数表示当前转换的分支语句在源程序的唯一标识,对应神经网络模型权重的唯一标识。

具体的,所述第一自定义函数可以表示如下:

nnquery(l(s),i(s))。

其中,l(s)表示当前转换的分支语句的标准化判断条件的左操作数,i(s)表示当前转换的分支语句在源程序的唯一标识,对应神经网络模型权值的唯一标识。标准化判断条件表示根据不等式原则,将右操作数中所有变量移到左操作数,左右操作数分别加一个随机常数后的标准化不等式。需要说明的是所述函数名nnquery只代表一个实例,具体实现时可以是其他函数名。

如图2所示,标准化判断条件的左操作数作为神经网络的输入样本,根据左操作数在标准化判断条件中的评估结果,标记输入样本的类别,制作神经网络的训练集;训练神经网络达到100%的正确率,获取神经网络模型权值,使其能够模拟条件分支语句的逻辑。

所述的神经网络模型权值w可以以多元组的形式表示如下:

w={i(s),w(s)}

其中,i(s)表示转换的分支语句在原程序中的唯一标识,w(s)表示对应分支语句的神经网络模型权值。本实施例中,转换的程序语句在原程序中的唯一标识用转换的程序语句在原程序中的行号表示。

如图3所示,如下以原程序中包括分支语句if(nnquery(x-y+3,b1))gotol2进行具体说明。通过标准化判断条件,原始判断条件由x>y转换为x-y+3>3,根据标准化判断条件构造训练集训练神经网络模型,将比较操作符和右操作数隐藏在不可解释的神经网络模型权值中,此第一自定义函数返回值为x-y+3>3。

构造与插入伪分支语句,在原始语句s之前构造并插入伪分支语句,这些伪分支语句最终将流向s,以保证程序原本的控制流程不被篡改;将伪分支语句的判断条件转换为第二自定义函数,获得混淆后程序和伪分支神经网络模型;所述第二自定义函数的一参数表示当前语句s可达变量的随机线性表达式,另一参数表示当前转换的分支语句在源程序的唯一标识,对应神经网络模型权重的唯一标识。

具体的,所述第二自定义函数可以表示如下:

nnquery(l(s),i(s))

其中,l(s)表示当前语句s可达变量的随机线性表达式,i(s)表示当前转换的分支语句在源程序的唯一标识,对应神经网络模型权重的唯一标识。需要说明的是所述函数名nnquery只代表一个实例,具体实现时可以是其他函数名。

如图4所示,令输入空间中的最大值为一类,剩余输入样本全为同一类别,制作神经网络的训练集;训练神经网络模型达到100%正确率,获取神经网络模型权值,使其能够始终流向语句s。

所述的神经网络模型权值w可以以多元组的形式表示如下:

w={i(s),w(s)}

其中,i(s)表示转换的分支语句在原程序中的唯一标识,w(s)表示对应分支语句的神经网络模型权值。本实施例中,转换的程序语句在原程序中的唯一标识用转换的程序语句在原程序中的行号表示。

如图5所示,如下以原程序中包括分支语句if(nnquery(3*x+a-b+7,b2))gotol1进行具体说明。可达变量的随机线性表达式为3*x+a-b+7,令max为输入空间最大值,此伪分支语句最终应流向l2,所以构造伪分支语句判断条件为3*x+a-b+7>max,根据伪分支语句判断条件构造训练集训练神经网络模型,为此第二自定义函数返回值为false。

如图6所示,本发明提供一种基于神经网络的程序控制流混淆系统,包括:

伪分支语句构造与插入模块1,在原始语句s之前构造并插入伪分支语句,这些伪分支语句最终将流向s,以保证程序原本的控制流程不被篡改。

分支语句逻辑隐藏模块2,将真伪分支语句的判断条件进行转换替代成控制流查询函数,根据分支语句逻辑训练神经网络,获得转换程序和神经网络模型。

如图7所示,本发明实施例提供一种面向云计算场景下的控制流混淆方法,包括:

s201,伪分支语句构造与插入,在原始语句s之前构造并插入伪分支语句,这些伪分支语句最终将流向s,以保证程序原本的控制流程不被篡改。

s202,分支语句逻辑隐藏,将真伪分支语句的判断条件进行转换替代成控制流查询函数,根据分支语句逻辑训练神经网络,获得转换程序和神经网络模型。

s203,将所述转换程序和神经网络模型发送至云端远程计算单元,所述转换程序和神经网络模型存储在所述远程计算单元的不可信环境中。

s204,远程计算单元在执行所述转换程序时,转换后的分支语句会通过自定义函数调用神经网络模型,神经网络模型根据输入值推理计算出和原始程序相同的执行路径。

上述的步骤s201与s202可以在用户主机上实现,所述的源程序可以是基于soot框架的三地址码的程序。

所述的神经网络模型权值w可以以多元组的形式表示如下:

w={i(s),w(s)}。

其中,i(s)表示转换的分支语句在原程序中的唯一标识,w(s)表示对应分支语句的神经网络模型权值。本实施例中,转换的程序语句在原程序中的唯一标识用转换的程序语句在原程序中的行号表示。

如图8所示,对于用户想要在公有云上执行的原始程序p,伪分支语句构造与插入模块在原始语句s之前构造并插入伪分支语句,这些伪分支语句最终将流向s,以保证程序原本的控制流程不被篡改.分支语句逻辑隐藏模块将真伪分支语句的判断条件进行转换替代成控制流查询函数,根据分支语句逻辑训练神经网络,获得转换程序p'和神经网络模型w。p'与p的不同之处在于每个分支语句的条件逻辑被隐藏到神经网络模型w中。转换后,p'与w将被上传到不可信的公有云环境。远程计算单元在执行p'期间,转换后的分支语句会通过自定义函数调用神经网络模型w,神经网络模型w根据输入值推理计算出和原始程序相同的执行路径。

如图9所示,本发明实施例提供一种面向云计算场景下的程序控制流混淆系统,包括:

伪分支语句构造与插入模块1,在原始语句s之前构造并插入伪分支语句,这些伪分支语句最终将流向s,以保证程序原本的控制流程不被篡改。

分支语句逻辑隐藏模块2,将真伪分支语句的判断条件进行转换替代成控制流查询函数,根据分支语句逻辑训练神经网络,获得转换程序和神经网络模型。

程序发送模块3,将所述转换程序和神经网络模型发送至远程计算单元,所述转换程序和神经网络模型存储在所述远程计算单元的不可信环境中;

程序执行模块4,远程计算单元在执行所述转换程序时,转换后的分支语句会通过自定义函数调用神经网络模型,神经网络模型根据输入值推理计算出和原始程序相同的执行路径。

本发明的实验平台选择如图10所示的云计算平台,申请了具有三个节点的计算集群,计算集群中的计算机安装了ubuntu14.04系统,8g内存和500g硬盘。针对cpu密集型应用程序,实验结果如图11所示,基于神经网络的程序混淆方法的单次调用函数平均耗时为5.01us,是使用λ表达式替代分支语句的平均耗时的13.11%,是使用可信环境保护分支语句的平均耗时的7.14%。本发明兼顾安全性的同时,具有较小的时间开销,可以高效的保护用户程序逻辑机密性。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的硬件平台的方式来实现,当然也可以全部通过硬件来实施。基于这样的理解,本发明的技术方案对背景技术做出贡献的全部或者部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如rom/ram、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,都应涵盖在本发明的保护范围之内。

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