论文部分内容阅读
公共云计算服务是使用第三方计算资源的外包计算服务提供模式。云端程序执行的分析与跟踪会导致程序算法和执行逻辑的泄露。敏感程序运行时保护已经成为云计算平台广泛应用的主要瓶颈之一。本文从计算机体系结构角度,采用软硬件结合的方式,聚焦于基于可信硬件的程序逻辑机密性保护,提出一种基于SGX技术的普适性程序控制流混淆方法,具体研究工作如下:针对公有云计算平台的程序执行逻辑泄露问题,融合计算机可信硬件技术与控制流混淆技术,提出一种基于SGX的程序控制流混淆框架,在可信执行环境Enclave中执行程序的路径控制逻辑代码,有效地隐藏了程序逻辑。提出一种程序控制流分割与变换方法,使用控制流查询函数替代分支语句的判断条件,实现了程序控制流信息的精准抽取和隐藏。提出一种伪分支语句构造及插入方法,增大方案的混淆力度。通过理论分析验证本方案能够有效地抵御逆向工程分析:当控制流查询函数参数列表长度为10时,攻击者通过静态分析技术与动态分析技术恢复程序控制流的成功率为别为0.37%与0.61%。为了对抗通过窃听手段获取信息的被动攻击,提出一种打破变量间隐藏关联关系的方法,通过在参数列表中添加合成变量以模糊真实条件变量。为了检测基于消息修改的主动攻击,以前向数据流分析方法为基础,提出一种变量关系挖掘算法,抽取变量约束集合;基于变量约束集合,提出一种数据流一致性审核方法,及时发现针对控制流查询函数的主动攻击并终止程序运行。通过理论分析证明本方案抵御基于窃听的被动攻击与检测基于消息修改的主动攻击的能力。为了降低由于频繁的Enclave内外交互导致的时间开销,提出一种基于缓存机制的可信程序执行方法,通过缓存的使用降低Enclave内外交互频率,提高混淆后程序的执行效率。实验证明所提出的可信程序执行方法将测试用例蒙特卡洛算法求?的执行时间降低为改进前方案的43%。基于所研究的技术,设计和开发了面向Java程序的基于SGX的控制流混淆系统,对方案的可用性和执行时间进行测试。实验结果表明,本文所提方案适用于Hadoop应用程序以及CPU密集型应用程序,使用本方案混淆后程序的执行开销为使用λ表达式替代分支语句解决方案时间开销的12%。