CN106845168B - 一种面向远程计算的控制流隐藏方法 - Google Patents
一种面向远程计算的控制流隐藏方法 Download PDFInfo
- Publication number
- CN106845168B CN106845168B CN201611184867.2A CN201611184867A CN106845168B CN 106845168 B CN106845168 B CN 106845168B CN 201611184867 A CN201611184867 A CN 201611184867A CN 106845168 B CN106845168 B CN 106845168B
- Authority
- CN
- China
- Prior art keywords
- sentence
- program
- branch
- variable
- list group
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 25
- 230000006870 function Effects 0.000 claims description 25
- 238000003780 insertion Methods 0.000 claims description 5
- 238000013507 mapping Methods 0.000 claims description 3
- 238000012545 processing Methods 0.000 claims description 3
- 238000012360 testing method Methods 0.000 claims description 3
- 238000010200 validation analysis Methods 0.000 claims description 3
- 230000003068 static effect Effects 0.000 description 5
- 230000037431 insertion Effects 0.000 description 4
- 238000006243 chemical reaction Methods 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000009466 transformation Effects 0.000 description 2
- 238000010276 construction Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000004886 process control Methods 0.000 description 1
- 230000001681 protective effect Effects 0.000 description 1
- 238000010561 standard procedure Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
- G06F21/14—Protecting executable software against software analysis or reverse engineering, e.g. by obfuscation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/20—Software design
- G06F8/22—Procedural
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L63/00—Network architectures or network communication protocols for network security
- H04L63/04—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks
- H04L63/0428—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload
- H04L63/0435—Network architectures or network communication protocols for network security for providing a confidential data exchange among entities communicating through data packet networks wherein the data content is protected, e.g. by encrypting or encapsulating the payload wherein the sending and receiving network entities apply symmetric encryption, i.e. same key used for encryption and decryption
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computing Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种面向远程计算的控制流隐藏方法,该方法通过将原始程序分解为公开程序、可信程序和条件列表组集合文件,利用Intel第六代处理器的安全执行环境的SGX功能,将程序分枝语句的条件判定放在具有硬件保护功能的可信区域进行,从而实现了程序分枝语句条件的真正隐藏。
Description
技术领域
本发明属于计算机技术技术领域,涉及一种程序控制流隐藏的方法。
背景技术
目前,公有云服务得到了广泛应用,用户可将程序上传至公有云上,由公有云完成计算。然而,由于公有云的不透明性,程序运行的安全难以得到保障。外包程序的算法保密性是云安全中一个重要问题。当用户将程序上传至公有云上,攻击者可通过静态分析和动态分析逆向分析出程序的源代码,从而还原程序算法。如果用户程序具有创新性,这一攻击将侵犯用户的程序版权。即使用户程序不具有创新性,逆向分析程序将泄漏程序逻辑,黑客将通过泄漏的程序逻辑寻找程序弱点(vulnerability),为进一步攻击程序做好准备。因此需要一种程序运行时保护机制,以保证程序远程计算时的程序逻辑保密性。程序控制流是程序逻辑的重要部分,保护程序控制流保密性将大大提高程序逻辑机密性。本发明针对程序控制流,提出一种保密方法。
目前主流的程序的算法保护技术称为程序混淆技术。大多数程序混淆技术假设程序在一个完全不可信的环境下运行。在这种环境下对程序进行变换并隐藏程序是非常困难的。Barak[1]等人在论文中已证明不存在一种通用的混淆方法可以混淆所有的程序。因此目前研究者的方法主要集中于对程序的部分混淆,其中一部分人研究对程序的控制流进行混淆。很多方案都是将程序分枝语句的条件进行数学转换,包括将条件的左右两端进行加密(Sharif[2]等人),对密文进行匹配,该方法仅适用于相等条件;将条件语句转变成未知数学难题(Wang[3]等人),等。无论如何变换,此类方法均将分枝语句条件展现在攻击者面前,理论上攻击者仍可通过静态分析分析出程序逻辑。另一方面,攻击者也可通过动态分析跟踪条件与分支,进一步解析出程序逻辑。
与本发明类似的思路包括将程序分解成两个或多个程序,通过多个程序协同工作完成程序计算。例如,Ge[4]的文章将程序控制跳转分离到另一个进程中,程序指令的跳转地址通过查询另一进程的跳转表获取。该方法只能满足静态跳转,无法满足动态分支判定。同时,另一个进程的跳转表跟主程序在同一个主机上,事实上也暴露给了黑客。Wang[5]的文章将公有云上的程序分支判定部分分离到另一个私有云上,程序跳转通过跨云的远程程序调用实现。由于跨云函数调用的存在,该方法具有较高的开销。
[1]Barak Boaz,Goldreich Oded,Impagliazzo Russell,Rudich Steven,SahaiAmit,Vadhan Salil,et al.On the(im)possibility of obfuscating programs.J ACMMay 2012;59(2).Article 6.
[2]Sharif Monirul,Lanzi Andrea,Giffin Jonathon,Lee Wenke.Impedingmalware analysis using conditional code obfuscation.In:Proceedings of the15th annual network and Distributed System Security Symposium.NDSS;2008.
[3]Wang Zhi,Ming Jiang,Jia Chunfu,Gao Debin.Linear obfuscation tocombat symbolic execution.In:Proceedings of the16th European Symposium onResearch in Computer Security(ESORICS2011).Berlin Heidelberg:Springer;2011.p.210e26.
[4]Ge Jun,Chaudhuri Soma,Tyagi Akhilesh.Control flow basedobfuscation.In:Proceedings of the 5th ACM workshop on Digital RightsManagement.ACM;2005.p.83e92.
[5]Yongzhi Wang,Jinpeng Wei,Toward protecting control flowconfidentiality in cloud-based computation,Computers&Security,Volume 52,July2015,Pages 106-127,ISSN 0167-4048
发明内容
本发明的目的是提供一种程序分枝语句条件的机密性保护方法,解决了现有技术中存在的问题。
一种面向远程计算的控制流隐藏方法,其特征在于,包括以下步骤:
步骤1,获取用户程序,并将用户程序转换为三地址码程序;
所述三地址码程序包括I个语句,其中任意一个语句为si,i=1,2,…I,I为大于等于1的自然数,语句si由J个分支语句xj和M个非分支语句ym组成,j=1,2,…J,m=1,2,…M,J<I,M<I;其中,分支语句xj为:if(a OP b)goto L;a、b为分支语句xj的变量,OP为比较操作;L为如果(a OP b)结果为真则跳转到的语句,L∈{si|i=1,2,...I};
分支语句xj的编号为lj;非分支语句ym的编号为lm;
步骤2,获取三地址码程序中语句si可访问的变量和语句si使用到的变量,将语句si可访问的变量组成变量集合Vi,将语句si使用到的变量组成变量集合Ui;
所述语句si可访问的变量为,在语句si之前的语句及语句si中使用并属于语句si作用域的变量;
所述语句si使用到的变量为,在语句si中出现的变量;
步骤3,构建公开程序,包括:每个语句si均经过步骤31和步骤32的处理;
步骤31,将分支语句xj替换为:if(QuerySGX(Lj,lj))goto L,构造分支语句条件列表组Tj={ja,jb,OP};
Lj为将分支语句xj的参数集合Pj中的元素随机排列形成的参数列表;
参数集合Pj为:Pj=Uj∪SUBSET(Vj-Uj);
其中,Vj为语句分支语句xj可访问的变量组成的变量集合;Uj为分支语句xj使用到的变量组成的变量集合;SUBSET(Vj-Uj)为Vj-Uj的任意子集;
ja为a在Lj中的位置,jb为b在Lj中的位置;ja为大于等于0的整数,jb为大于等于0的整数;
步骤32,在非分支语句ym前插入if(QuerySGX(Lm,lm))goto构造非分支语句条件列表组Tm={false};
其中,Lm为将非分支语句ym的参数集合Pm中的元素随机排列形成的参数列表;ym为非ym的语句;
参数集合Pm为:Pm=Um∪SUBSET(Vm-Um);
其中,Vm为语句非分支语句ym可访问的变量组成的变量集合;Um为分支语句xm使用到的变量组成的变量集合;SUBSET(Vm-Um)为Vm-Um的任意子集;
步骤4,构建条件列表组集合文件,包括:
将所有分支语句的条件列表组和非分支语句的条件列表组组成条件列表组集合文件,所述条件列表组集合文件中包括Tj和lj的映射列表,以及Tm和lm的映射列表,即lj与Tj、lm与Tm相互唯一映射;
将该条件列表组集合文件用对称加密方法进行加密,加密密钥由用户管理;
步骤5,构建可信程序,包括:
读入所述的条件列表组集合文件,接着对条件列表组集合文件解密后,获得映射列表;
构建QuerySGX函数,所述QuerySGX函数的功能包括:调用QuerySGX(Lk,lk),k∈j∪m;
通过lk在获得的映射列表中查找对应的Tk,当Tk={False}时,则返回false;
通过lk在获得的映射列表中查找对应的Tk,当Tk={ja,jb,OP}时,则以ja,jb为索引找到Lk中对应的变量a和b,结合OP,得到三地址码程序中分支语句条件(a OP b),并返回(a OP b)的布尔值;
步骤6,拷贝可信程序、条件列表组集合文件及公开程序至公有云,再将可信程序加载至SGX的enclave中;
步骤7,在公有云中运行程序,包括:
执行公开程序,当遇到QuerySGX函数则调用可信程序中的QuerySGX函数。
进一步地,步骤5中所述的对条件列表组集合文件解密是指:
通过SGX远程验证协议检查可信程序是否完整,若可信程序完整则将用户管理的密钥发送至可信程序;使用密钥对条件列表组集合文件进行解密。
与现有技术相比,本发明具有以下技术效果:
(1)本发明通过利用Intel第六代处理器的安全执行环境的SGX功能,将程序分枝语句的条件判定放在具有硬件保护功能的可信区域进行,从而实现了程序分枝语句条件的真正隐藏,同时引起较小的程序运行开销;
(2)本发明可有效抵御在公有云上的基于静态分析和动态分析的逆向工程攻击。对于每个分支语句,攻击者通过动态分析可观测出传入参数和返回结果,然而,传入参数众多,攻击者很难判定具体哪个参数参与了分枝条件的判定,从而很难还原出原始判定逻辑。对于伪分支语句,虽然该分支语句只返回相同的值,然而由于传入的参数众多,黑客很难区分该情况属于条件未触发还是属于伪分支语句。因此,本发明可以有效实现程序控制流的隐藏。
(3)从效率角度来说,本发明使得控制流隐藏在公有云内部,从而避免了频繁的跨云或跨主机函数调用,从而降低了运行开销。
附图说明
图1为本发明的总体部署图;
图2(a)为实施例中未实施本方法前的程序;图2(b)为实施例中实施本方法后的程序。
具体实施方式
下面通过附图和实施例对本发明作进一步的说明。
步骤1,获取用户程序,并将用户程序转换为三地址码程序;
所述三地址码程序包括I个语句,其中任意一个语句为si,i=1,2,…I,I为大于等于1的自然数,语句si由J个分支语句xj和M个非分支语句ym组成,j=1,2,…J,m=1,2,…M,J<I,M<I;其中,分支语句xj为:if(a OP b)goto L;a、b为分支语句xj的变量,OP为比较操作,为六种操作(>,<,>=,<=,==,!=)中的一种;L为如果(a OP b)结果为真则跳转到的语句,L∈{si|i=1,2,...I};
分支语句xj的唯一编号为lj;非分支语句ym的编号为lm;
本实施例中的语句si是指:程序中的任意一条语句,例如图2(a)中的int size;int low=0。
本实施例中的分支语句xj是指:程序中的选择语句,例如图2中用户程序的if(data[middle]==key){return true;};其中,分支语句xj的变量a和b分别为:data[middle]和key;OP为==操作;L为return true语句;该分支语句的编号lj为11。
步骤2,对三地址码程序进行静态分析,获取三地址码程序中语句si可访问的变量和语句si使用到的变量,将语句si可访问的变量组成变量集合Vi,将语句si使用到的变量组成变量集合Ui;显然语句si可访问但未使用的变量集合为Vi-Ui。
所述语句si可访问的变量为,在语句si之前的语句及语句si中使用并属于语句si作用域的变量;
所述语句si使用到的变量为,在语句si中出现的变量;
如图2(a)所示,例如语句si为:int low=0;则该语句可访问的变量为data、size和low;该语句使用到的变量为:low。
若语句si为分支语句if(data[middle]==key){return true;};则该语句可访问的变量为data、size、low、high、middle、data[middle]、data[low]、data[high]、key;该语句使用到的变量为data[middle]、key;
步骤3,构建公共程序,包括:每个语句si均经过步骤31和步骤32的处理;
1)对于分支语句xj,即if(a OP b)goto L,根据步骤2的定义,可知Uj={a,b}。将分支语句xj替换为:if(QuerySGX(Lj,lj))goto L,构造分支语句条件列表组Tj={ja,jb,OP};Lj为将分支语句xj的参数集合Pj中的元素随机排列形成的参数列表;
参数集合Pj为:Pj=Uj∪SUBSET(Vj-Uj);
其中,Vj为语句分支语句xj可访问的变量组成的变量集合;Uj为分支语句xj使用到的变量组成的变量集合;SUBSET(Vj-Uj)为Vj-Uj的任意子集;
ja为a在Lj中的位置,jb为b在Lj中的位置;ja为大于等于1的自然数,jb为大于等于1的自然数;
QuerySGX函数将在SGX的enclave中执行。
图2(b)显示了对二分查找代码的转换结果。如图2(b)所示,转换后的程序中,原有分支语句都被替换成QuerySGX函数调用(见行9,11,14,17),同行注释中显示了对应的Tj分支语句条件列表组的内容。
例如,图2(a)中的行11的分支语句为:if(data[middle]==key){returntrue;};该分支语句的Vj为(data、size、low、high、middle、data[middle]、data[low]、data[high]、key),Uj为(data[middle]、key),则Vj-Uj为(data、size、low、high、middle),Pj为(key,high,low,middle,data[low],data[high],data[middle]),Lj为(key,high,low,middle,data[low],data[high],data[middle]);如图2(b)替换该分支语句为:if(QuerySGX(key,high,low,middle,data[low],data[high],data[middle]));由于分支语句变量data[middle]和key的编号分别为6和0,OP为==,所以Tj为{6,0,==}。
2)在非分支语句ym前插入if(QuerySGX(Lm,lm))goto构造条件列表组Tm={false};
其中,Lm为将非分支语句ym的参数集合Pm中的元素随机排列形成的参数列表;为非ym的语句;
参数集合Pm为:Pm=Um∪SUBSET(Vm-Um);
其中,Vm为语句非分支语句ym可访问的变量组成的变量集合;Um为分支语句xm使用到的变量组成的变量集合;SUBSET(Vm-Um)为Vm-Um的任意子集;
如图2(b)所示,行9.1为插入在行10前面的非分支语句;行14.1和14.2为插入在行15前面的非分支语句。每行后面的注释显示了Tm的内容。需要说明的是,对于一条非分支语句,可随机插入若干伪分支语句,(如行14.1,14.2所示)。
例如,对于图2(a)中的行10的非分支语句:int middle=(low+high)/2;该非分支语句的Vm为(low,size,high,middle,key),Um为(middle,low,high),则Pm为(key,high,low,size),Lm为(key,high,low,size);如图2(b)在行10的非分支语句前插入的语句为:if(QuerySGX(key,high,low,size))goto line 14;Tm={false}。
步骤4,构建条件列表组集合文件,包括:
将所有分支语句的条件列表组和非分支语句的条件列表组组成条件列表组集合文件SETTs,所述条件列表组集合文件中包括Tj和lj的映射列表,以及Tm和lm的映射列表,即lj与Tj、lm与Tm相互唯一映射;
将该条件列表组集合文件用对称密钥sk进行对称加密,生成文件Esk(SETTs),加密密钥sk由用户管理;
步骤5,构建可信程序,包括:
读入所述的条件列表组集合文件,接着对条件列表组集合文件解密后,获得映射列表;
所述的对条件列表组集合文件解密是指:
通过SGX远程验证协议检查可信程序是否完整,若可信程序完整则将用户管理的密钥发送至可信程序;使用密钥对条件列表组集合文件进行解密。
检查可信程序是否完整的过程为SGX标准过程,详情参见SGX开发手册。
构建QuerySGX函数,所述QuerySGX函数的功能包括:对于函数调用QuerySGX(Lk,lk),k∈j∪m;
通过lk在获得的映射列表中查找对应的Tk,当Tk={False}时,则返回false;即执行当前语句;
通过lk在获得的映射列表中查找对应的Tk,当Tk={ja,jb,OP}时,则以ja,jb为索引找到Lk中对应的变量a和b,结合OP,得到三地址码程序中分支语句条件(a OP b),并返回(a OP b)的布尔值;布尔值为true或false,当布尔值为true时,跳转到语句L;当布尔值为false时,执行当前语句;
步骤6,拷贝可信程序、条件列表组集合文件及公开程序至公有云,创建SGX的enclave,再将可信程序加载至该enclave中;
步骤7,在公有云中运行程序,包括:
执行公开程序时,当遇到QuerySGX函数则调用可信程序中的QuerySGX函数。
本实施例选用的是Intel第六代处理器的安全执行环境的SGX功能,将程序分枝语句的条件判定放在具有硬件保护功能的可信区域进行,从而实现了程序分枝语句条件的真正隐藏。
Intel第六代处理器的安全执行环境的SGX功能详细技术细节参见:
[6]Intel software guard extensions developer guide.https://download.01.org/intel-sgx/linux-1.6/docs/Intel_SGX_Devel oper_Guide.pdf
[7]Intel software guard extensions SDK for Linux OS Developerreference.
https://01.org/intel-software-guard-extensions/documentation/int el-sgx-sdk-developer-reference
[8]Costan,Victor,and Srinivas Devadas.Intel sgx explained.CryptologyePrint Archive,Report 2016/086,2016.https://eprint.iacr.org/2016/086.
Claims (2)
1.一种面向远程计算的控制流隐藏方法,其特征在于,包括以下步骤:
步骤1,获取用户程序,并将用户程序转换为三地址码程序;
所述三地址码程序包括I个语句,其中任意一个语句为si,i=1,2,…I,I为大于等于1的自然数,语句si由J个分支语句xj和M个非分支语句ym组成,j=1,2,…J,m=1,2,…M,J<I,M<I;其中,分支语句xj为:if(a OP b)goto L;a、b为分支语句xj的变量,OP为比较操作;L为如果(a OP b)结果为真则跳转到的语句,L∈{si|i=1,2,...I};
分支语句xj的编号为lj;非分支语句ym的编号为lm;
步骤2,获取三地址码程序中语句si可访问的变量和语句si使用到的变量,将语句si可访问的变量组成变量集合Vi,将语句si使用到的变量组成变量集合Ui;
所述语句si可访问的变量为,在语句si之前的语句及语句si中使用并属于语句si作用域的变量;
所述语句si使用到的变量为,在语句si中出现的变量;
步骤3,构建公开程序,包括:每个语句si均经过步骤31和步骤32的处理;
步骤31,将分支语句xj替换为:if(QuerySGX(Lj,lj))goto L,构造分支语句条件列表组Tj={ja,jb,OP};
Lj为将分支语句xj的参数集合Pj中的元素随机排列形成的参数列表;
参数集合Pj为:Pj=Uj∪SUBSET(Vj-Uj);
其中,Vj为语句分支语句xj可访问的变量组成的变量集合;Uj为分支语句xj使用到的变量组成的变量集合;SUBSET(Vj-Uj)为Vj-Uj的任意子集;
ja为a在Lj中的位置,jb为b在Lj中的位置;ja为大于等于0的整数,jb为大于等于0的整数;
步骤32,在非分支语句ym前插入构造非分支语句条件列表组Tm={false};
其中,Lm为将非分支语句ym的参数集合Pm中的元素随机排列形成的参数列表;为非ym的语句;
参数集合Pm为:Pm=Um∪SUBSET(Vm-Um);
其中,Vm为语句非分支语句ym可访问的变量组成的变量集合;Um为分支语句xj使用到的变量组成的变量集合;SUBSET(Vm-Um)为Vm-Um的任意子集;
步骤4,构建条件列表组集合文件,包括:
将所有分支语句的条件列表组和非分支语句的条件列表组组成条件列表组集合文件,所述条件列表组集合文件中包括Tj和lj的映射列表,以及Tm和lm的映射列表,即lj与Tj、lm与Tm相互唯一映射;
将该条件列表组集合文件用对称加密方法进行加密,加密密钥由用户管理;
步骤5,构建可信程序,包括:
读入所述的条件列表组集合文件,接着对条件列表组集合文件解密后,获得映射列表;
构建QuerySGX函数,所述QuerySGX函数的功能包括:调用QuerySGX(Lk,lk),k∈j∪m;
通过lk在获得的映射列表中查找对应的Tk,当Tk={False}时,则返回false;
通过lk在获得的映射列表中查找对应的Tk,当Tk={ja,jb,OP}时,则以ja,jb为索引找到Lk中对应的变量a和b,结合OP,得到三地址码程序中分支语句条件(a OP b),并返回(aOP b)的布尔值;
步骤6,拷贝可信程序、条件列表组集合文件及公开程序至公有云,再将可信程序加载至SGX的enclave中;
步骤7,在公有云中运行程序,包括:
执行公开程序,当遇到QuerySGX函数则调用可信程序中的QuerySGX函数。
2.如权利要求1所述的控制流隐藏方法,其特征在于,步骤5中所述的对条件列表组集合文件解密是指:
通过SGX远程验证协议检查可信程序是否完整,若可信程序完整则将用户管理的密钥发送至可信程序;使用密钥对条件列表组集合文件进行解密。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611184867.2A CN106845168B (zh) | 2016-12-20 | 2016-12-20 | 一种面向远程计算的控制流隐藏方法 |
PCT/CN2017/117064 WO2018113642A1 (zh) | 2016-12-20 | 2017-12-19 | 一种面向远程计算的控制流隐藏方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611184867.2A CN106845168B (zh) | 2016-12-20 | 2016-12-20 | 一种面向远程计算的控制流隐藏方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106845168A CN106845168A (zh) | 2017-06-13 |
CN106845168B true CN106845168B (zh) | 2019-05-03 |
Family
ID=59139441
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611184867.2A Active CN106845168B (zh) | 2016-12-20 | 2016-12-20 | 一种面向远程计算的控制流隐藏方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN106845168B (zh) |
WO (1) | WO2018113642A1 (zh) |
Families Citing this family (15)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106845168B (zh) * | 2016-12-20 | 2019-05-03 | 西安电子科技大学 | 一种面向远程计算的控制流隐藏方法 |
CN107463838B (zh) * | 2017-08-14 | 2019-10-18 | 广州大学 | 基于sgx的安全监控方法、装置、系统及存储介质 |
CN109583191B (zh) * | 2018-10-31 | 2021-02-02 | 清华大学 | 云端程序控制流完整性保护方法及装置 |
CN109614774B (zh) * | 2018-11-23 | 2021-05-07 | 西安电子科技大学 | 一种基于sgx的程序控制流混淆方法及系统 |
CN109684040B (zh) * | 2018-12-26 | 2019-11-19 | 广州市品高软件股份有限公司 | 一种适用于linux操作系统的云函数执行系统及方法 |
CN109993003A (zh) * | 2019-03-12 | 2019-07-09 | 广州大学 | 一种基于sgx的软件流安全验证方法及装置 |
CN109995776B (zh) * | 2019-03-26 | 2021-10-26 | 西安纸贵互联网科技有限公司 | 一种互联网数据验证方法及系统 |
CN112115487B (zh) * | 2019-06-20 | 2024-05-31 | 华控清交信息科技(北京)有限公司 | 一种数据处理方法、装置和电子设备 |
CN113138797B (zh) * | 2020-01-20 | 2024-04-02 | 上海交通大学 | 面向Intel SGX的程序自动化移植系统 |
CN111506313B (zh) * | 2020-03-04 | 2024-01-23 | 西安电子科技大学 | 一种基于神经网络的程序控制流混淆方法及系统 |
CN111506402B (zh) * | 2020-03-31 | 2023-06-27 | 上海氪信信息技术有限公司 | 面向机器学习建模的计算机任务调度方法、装置、设备及介质 |
CN111859467B (zh) * | 2020-07-23 | 2024-03-26 | 中国工商银行股份有限公司 | 一种基于sgx的云数据完整性审计方法及装置 |
CN112527307B (zh) * | 2020-11-18 | 2023-06-20 | 西安电子科技大学 | 程序控制流隐藏方法、系统及应用 |
CN114764453A (zh) * | 2021-01-14 | 2022-07-19 | 武汉斗鱼网络科技有限公司 | 一种数据处理方法、装置及电子设备 |
CN113672922B (zh) * | 2021-08-17 | 2022-03-25 | 中国科学院软件研究所 | 基于risc-v与o-cfi机制的代码重用攻击防御方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102307208A (zh) * | 2010-09-25 | 2012-01-04 | 广东电子工业研究院有限公司 | 基于云计算的虚拟机运行控制装置及其运行控制方法 |
CN102546672A (zh) * | 2012-03-09 | 2012-07-04 | 浪潮通信信息系统有限公司 | 一种云计算平台带外授权安全加固方法 |
CN104461906A (zh) * | 2014-12-30 | 2015-03-25 | 中国科学院软件研究所 | 一种基于代码转换的mc/dc覆盖准则的软件测试数据生成方法 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101887500B (zh) * | 2010-06-10 | 2013-01-02 | 复旦大学 | 基于标签的程序控制流深度混淆方法 |
US8635635B2 (en) * | 2011-01-25 | 2014-01-21 | Microsoft Corporation | Factoring middleware for anti-piracy |
US9143568B2 (en) * | 2012-12-18 | 2015-09-22 | Microsoft Technology Licensing, Llc. | Peer-to-peer sharing of cloud-based content |
US9792427B2 (en) * | 2014-02-07 | 2017-10-17 | Microsoft Technology Licensing, Llc | Trusted execution within a distributed computing system |
CN106845168B (zh) * | 2016-12-20 | 2019-05-03 | 西安电子科技大学 | 一种面向远程计算的控制流隐藏方法 |
-
2016
- 2016-12-20 CN CN201611184867.2A patent/CN106845168B/zh active Active
-
2017
- 2017-12-19 WO PCT/CN2017/117064 patent/WO2018113642A1/zh active Application Filing
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102307208A (zh) * | 2010-09-25 | 2012-01-04 | 广东电子工业研究院有限公司 | 基于云计算的虚拟机运行控制装置及其运行控制方法 |
CN102546672A (zh) * | 2012-03-09 | 2012-07-04 | 浪潮通信信息系统有限公司 | 一种云计算平台带外授权安全加固方法 |
CN104461906A (zh) * | 2014-12-30 | 2015-03-25 | 中国科学院软件研究所 | 一种基于代码转换的mc/dc覆盖准则的软件测试数据生成方法 |
Non-Patent Citations (1)
Title |
---|
Windows下C/C++程序的静态分析技术;李超;《中国优秀硕士学位论文全文数据库》;20160331;全文 |
Also Published As
Publication number | Publication date |
---|---|
WO2018113642A1 (zh) | 2018-06-28 |
CN106845168A (zh) | 2017-06-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106845168B (zh) | 一种面向远程计算的控制流隐藏方法 | |
Fischer et al. | Stack overflow considered harmful? the impact of copy&paste on android application security | |
Behera et al. | Different obfuscation techniques for code protection | |
US20190089720A1 (en) | Systems and methods for detecting attacks in big data systems | |
Grover et al. | Privado: Practical and secure DNN inference with enclaves | |
Cox et al. | {SpanDex}: Secure Password Tracking for Android | |
Xu et al. | On secure and usable program obfuscation: A survey | |
Sebastian et al. | A study & review on code obfuscation | |
Balachandran et al. | Software protection with obfuscation and encryption | |
Sieck et al. | Util:: lookup: Exploiting key decoding in cryptographic libraries | |
Borzacchiello et al. | Reconstructing C2 servers for remote access trojans with symbolic execution | |
Hataba et al. | Enhanced obfuscation for software protection in autonomous vehicular cloud computing platforms | |
CN104639313B (zh) | 一种密码算法的检测方法 | |
Joshi et al. | Impact of software obfuscation on susceptibility to return-oriented programming attacks | |
Wang et al. | Toward protecting control flow confidentiality in cloud-based computation | |
Probst et al. | An approach for security evaluation and analysis in cloud computing | |
US20130332746A1 (en) | Method, a device and a computer program support for execution of encrypted computer code | |
Kinsy et al. | Sphinx: A secure architecture based on binary code diversification and execution obfuscation | |
Wang et al. | Obfuscating program control flow with Intel SGX | |
Dang | Detecting obfuscated malware using graph neural networks | |
Ioannidis et al. | Securing the Flow: Security and Privacy Tools for Flow-based Programming | |
Dunaev et al. | Aspects of intermediate level obfuscation | |
CN112527307B (zh) | 程序控制流隐藏方法、系统及应用 | |
Forte | Automatic Binary Analysis and Instrumentation of Embedded Firmware for a Control-Flow Integrity Solution | |
Ruchkin et al. | Macros for Coding Information Encryption & Decryption in Trusted Platform Module |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |