一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

基于IntelSGX可信执行环境的在线编译混淆实现方法与流程

2021-12-01 01:28:00 来源:中国专利 TAG:

基于intel sgx可信执行环境的在线编译混淆实现方法
技术领域
1.本发明涉及的是一种信息安全领域的技术,具体是一种基于intel sgx可信执行环境的在线编译混淆实现方法。


背景技术:

2.现有的在线编译平台往往都是将编译环境部署在公司内部服务器中,常用的例如devops。开发者将代码上传后,在线编译系统会自动实现编译、测试等功能,避免了开发环境不同带来的兼容性相关问题的影响。而公有云平台很难提供满足用户在线编译保密代码的需求。


技术实现要素:

3.本发明针对现有公有云平台上进行编译所涉及到的秘密性保护问题,提出一种基于intel sgx可信执行环境的在线编译混淆实现方法,可以作为一个sgx云服务部署在公有云平台上,使得用户可以将代码部署到基于该系统的公有云平台进行安全的在线编译和混淆。
4.本发明是通过以下技术方案实现的:
5.本发明涉及一种基于intel sgx可信执行环境的在线编译混淆实现方法,通过位于不可信环境下的用户远程交互单元直接运行在不可信平台的操作系统中的应用程序、接收用户指令并将任务下发到位于可信执行环境中的安全编译混淆系统的sgx enclave中的编译混淆服务中,当用户远程交互单元与位于可信执行环境中的安全编译混淆系统进行远程认证后,建立与sgx enclave的信任关系及可信信道进行指令操作及文件传输。
6.所述的安全编译混淆系统包括:一个用来接收远程交互单元传输指令并将编译参数传给安全编译enclave和安全链接enclave的初始化enclave、一个用来进行安全编译及安全混淆操作的enclave以及在编译完成后将目标文件链接为可执行文件的链接enclave。
7.所述的指令操作及文件传输包括:用户将加密后的源代码文件上传给该系统,并上传操作指令及编译参数;远程交互单元在接收到信息后启动初始化enclave,并将编译参数传递进去;初始化enclave根据编译参数创建启动编译enclave,进行加密后源代码的解密和编译,生成目标文件,加密后存储在云服务平台上,并返回指令给初始化enclave;最后再由初始化enclave调用链接enclave执行安全链接操作,生成最后的可执行文件;最终由远程交互平台将可执行文件返还给用户,三种enclave是根据llvm在编译过程中的控制流进行划分的,这样的控制流结构可以最大化的降低编译过程中额外的时间开销,以提升安全编译混淆的效率。
8.所述的安全编译混淆系统中的每个enclave均包含llvm代码和用于兼容llvm的兼容性接口,该enclave首先将llvm源代码编译成静态库(*.a)及目标文件(*.o),同时将提供兼容性接口的代码编译成目标文件(*.o)并与sgx相关的代码库进行链接;兼容性接口通过sgx sdk提供的ecall/ocall方法,以解决sgx sdk本身不能给llvm提供完整接口这一问题。
技术效果
9.本发明整体所解决了现有技术对具有隐私性的代码在线编译和混淆无法保障其安全性的问题。本发明通过将本地待编译的代码加密上传到云平台,在enclave内部完成解密和变易混淆等功能,防止源代码在传输信道和公共云平台上可能存在的泄露;与现有技术相比,本发明利用intel sgx的可信执行环境,将原本在线编译所需的安全环境由整个服务器安全降为执行环境的安全,并且该安全执行环境由intel sgx保障,降低了建立信任关系所需要的成本;通过对llvm的控制流进行划分,维持三个稳定的enclave,避免了每次编译时都要重新创建新的enclave这一问题,降低了运行时的时间开销,使其能在有效执行时间内完成功能。
附图说明
10.图1为本发明系统执行流程;
11.图2为该系统中在不可信公有云环境下与用户远程交互部分执行流;
12.图3为该系统中安全编译混淆服务执行流。
具体实施方式
13.如图1所示,为本实施例涉及一种基于intel sgx可信执行环境的在线编译混淆实现方法,包括以下步骤:
14.步骤101.系统进行认证工作,包含系统内部enclave之间的局部认证(local attestation)以及与用户之间的远程认证(remote attestation),建立信任关系的同时建立安全信道;
15.步骤102.用户向该系统上传加密后的源代码,并将编译参数上传,进行安全编译操作;
16.步骤103.系统在多个enclave协同下进行安全编译,生成编译的结果;
17.步骤104.将编译结果生成的可执行文件返还给用户。
18.如图2所示,针对用户远程使用该系统的执行流程,具体步骤如下:
19.步骤201.首先,由于该系统是一个基于sgx的系统,用户对其发起远程认证(remote attestation),认证其sgx实例是否运行的同时建立可信通信信道;
20.步骤202.用户利用建立好的可信信道上传加密后的源代码文件,并指定编译参数;
21.步骤203.待编译完成后用户从远程服务端接收到编译结果。
22.如图3所示,针对服务端安全编译部分的执行流程,具体步骤如下:
23.步骤301.启动该系统的局部认证(local attestation),验证各部分是否真实地运行在enclave中,并建立enclave之间的安全信道;
24.步骤302.在用户使用服务的过程中,启动初始化enclave,并将用户的编译指令传入enclave中,由初始化enclave负责调度编译过程;
25.步骤303.初始化enclave调度编译enclave,将完整编译参数传给编译enclave,由编译enclave将源代码编译成目标文件(*.o);
26.步骤304.初始化enclave调度链接enclave,将目标文件链接在一起生成二进制文
件。
27.经过具体实际实验,利用llvm 3.4和sgx sdk 2.13的版本设置,能够顺利将llvm移植进入sgx enclave,实现安全编译和混淆功能。
28.现有技术在编译多个文件时,需要对每个文件单独创建enclave来完成编译过程,会带来很多额外的时间和性能开销;同时,由于现有工作没有进行精细化的内存管理,往往无法在enclave中执行链接的操作,无法执行完整的编译流程。
29.相较于现有技术,本发明根据llvm的执行流特点,对llvm执行流划分后放入不同的enclave中,执行编译操作;在编译多个文件时无需每次都重新创建enclave,而是通过几个长期的维护的enclave进行调度,这样去除了创建enclave所带来的时间开销,从而在有效的时间内完成安全编译工作,并能执行最后的链接操作,实现完整的安全编译流程。
30.上述具体实施可由本领域技术人员在不背离本发明原理和宗旨的前提下以不同的方式对其进行局部调整,本发明的保护范围以权利要求书为准且不由上述具体实施所限,在其范围内的各个实现方案均受本发明之约束。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献