CN111177712A - 一种基于TEE的WebAssembly模型执行引擎 - Google Patents
一种基于TEE的WebAssembly模型执行引擎 Download PDFInfo
- Publication number
- CN111177712A CN111177712A CN201911418092.4A CN201911418092A CN111177712A CN 111177712 A CN111177712 A CN 111177712A CN 201911418092 A CN201911418092 A CN 201911418092A CN 111177712 A CN111177712 A CN 111177712A
- Authority
- CN
- China
- Prior art keywords
- function
- call
- model
- trusted
- init
- 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.)
- Granted
Links
Images
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/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
-
- 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/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- 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/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
- G06F21/6245—Protecting personal data, e.g. for financial or medical purposes
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Medical Informatics (AREA)
- Databases & Information Systems (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种基于TEE的WebAssembly模型执行引擎,所述WebAssembly模型执行引擎包括函数解析、函数执行、内存管理、函数管理功能模块和接口;所述接口包括可信层接口和不可信层接口,可信层接口由Rust编译的初始化函数wasm_init、模型调用函数wasm_call、关闭函数wasm_close组成;可信层接口用于实现功能模块在SGX中执行具体的可信操作;不可信层接口由Rust编译的初始化函数init、模型调用函数call、关闭函数close和C语言编译的可信层的C头文件组成。C头文件用于申明初始化函数init、模型调用函数call、关闭函数close,函数init、call、close用于对应可信层代码的功能封装。本发明通过采用Intel SGX技术改造数据共享模型执行引擎,确保模型执行过程中数据不可被窃取,实现了一个可信的模型执行引擎。
Description
技术领域
本发明属于模型执行引擎设计领域,具体涉及一种基于TEE的WebAssembly模型执行引擎。
背景技术
目前的WebAssembly虚拟机直接运行在普通环境中,在没有额外保护的情况下执行WebAssembly模型。在云服务器等开放环境中,程序与数据运行在不可信环境,容易收到攻击,无法保证程序与数据的安全。
发明内容
本发明针对现有技术的不足,提出了一种基于TEE的WebAssembly模型执行引擎,该WebAssembly模型执行引擎在可信环境中执行,能有效保证程序与数据的安全。
本发明采用的技术方案如下:一种基于TEE的WebAssembly模型执行引擎,所述WebAssembly模型执行引擎包括函数解析、函数执行、内存管理、函数管理功能模块和接口;所述接口包括可信层接口和不可信层接口,可信层接口由Rust编译的初始化函数wasm_init、模型调用函数wasm_call、关闭函数wasm_close组成;可信层接口用于实现功能模块在SGX中执行具体的可信操作;不可信层接口由Rust编译的初始化函数init、模型调用函数call、关闭函数close和C语言编译的可信层的C头文件组成。C头文件用于申明初始化函数init、模型调用函数call、关闭函数close,初始化函数init、模型调用函数call、关闭函数close用于对应可信层代码的功能封装。
进一步地,将WebAssembly模型执行引擎封装成SDK,便于外界的调用方便以及程序的可扩展性。
进一步地,所述初始化函数init、模型调用函数call、关闭函数close还可以用于实现功能模块中不需要在SGX中执行的功能执行。
本发明的有益效果是:本发明设计并实现了基于可信执行环境的隐私保护技术,通过采用Intel SGX技术改造数据共享模型执行引擎,确保模型执行过程中数据不可被窃取。具体的,我们用Intel SGX改造了WebAssembly虚拟机,实现了一个可信的模型执行引擎。增强了在不可信环境中数据共享的安全性和隐私性。
附图说明
图1为本发明执行引擎的整体架构设计示意图;
图2为接口结构示意图。
具体实施方式
WebAssembly模型执行引擎通常包括函数解析、函数执行、内存管理、函数管理功能模块和接口;目前的WebAssembly虚拟机直接运行在普通环境中,在没有额外保护的情况下执行WebAssembly模型。在云服务器等开放环境中,程序与数据运行在不可信环境,容易收到攻击,无法保证程序与数据的安全。为了赋予WebAssembly模型执行引擎可行性,我们用Intel SGX改造了WebAssembly虚拟机,根据SGX设计规范将接口包括可信层接口和不可信层接口,整体架构设计如图1所示,可信层接口用于实现功能模块在SGX中执行具体的可信操作;不可信层用于实现功能模块中不需要在SGX中执行的功能执行,以及对应可信层代码的功能封装。
接口设计的难点在于跨语言调用。开发Intel SGX可信应用需要用到Intel SGXSDK,而Intel SGX SDK是用Rust开发的,因此我们需要先将Rust开发的SGX可信库编译成C库,所以,该平台的开发会涉及到两种语言,先将Rust实现的SGX可信应用在C语言的帮助下编译成.so动态库。
具体的接口设计如图2所示,WebAssembly模型执行引擎接口(WASM TrustedLibrary)由可信层接口(Trusted)和不可信层接口(Untrusted)两部分组成。Trusted部分在SGX中实现WebAssembly模型执行引擎(WebAssembly VM)的初始化wasm_init()、模型调用wasm_call()、关闭wasm_close(),三个函数采用Rust编写。然后,Unstrusted部分对这三个函数做了一层封装,分别是init(),call(),close()。并编写了adaptor.h,它是WebAssembly VM可信库的C头文件,声明了WebAssembly VM可信层的接口,用以辅助生成.so动态链接库。最后,将整个WebAssembly模型执行引擎根据应用需求通过语言封装成SDK,即可方便供其他应用调用。本实施方式中,以Golang为例对整个WebAssembly模型执行引擎的接口进行详细阐述。在接口中,用C作为中转语言,通过用C语言编写的可信库的C头文件adapter.h即可实现在rust实现的执行引擎基础上开放Golang接口。具体来说,我们定义了需要暴露给Golang调用的两个虚拟机相关接口:
adapter.h
void init();
void call(char*args,int input_len,char*result,int result_capacity,int*result_len);
其中,close()可自动实现,无需定义。
接着,Golang的函数调用到C库后,C库调用wasm虚拟机的untrusted部分接口,以间接实现对trusted部分,也即sgx wasm虚拟机的调用。
trusted部分的初始化函数的接口调用设计如下:
Wasm.Init()
->C.Init()
->init_enclave()
->sgxwasm_init(enclave_id,retval)
trusted部分的调用合约函数的接口调用设计如下:
其中,sgxwasm_call()包括部署、加载和调用功能,具体地:
1.部署(deploy)
wasm的部署,将一个wasm文件部署到本地的BitXMesh节点上,此部分由外部应用发起调用,指定一个wasm文件的路径,经过部署过程后会将wasm文件放置的Enclave的bin目录下同时加载解析得到一个ABI JSON字符串。
sgx_enclave_wasm_deploy<P:AsRef<path::Path>>(path:P)->Result<String>
参数:path wasm的路径。
返回值:wasm exported callable function API的ABI,
该API是在untrusted部分执行的,该API会将指定的路径下的wasm文件加载到Enclave的bin目录下,同时将wasm加载解析,得到wasm module导出的外部可调用函数,后续使用者可以通过该ABI调用wasm的功能。
特别注意:wasm支持传入的参数只有整形(i32、i64)和浮点型(f32、f64)。
2.加载(load)
wasm的加载是将wasm二进制装载到Enclave内部,该过程首先会将wasm读成bytes数组,再加载到内部,加载可以提供一个名词,后续调用通过该名称即可调用。
参数:module wasm的bytes序列
name为该wasm指定模块名称
enclave外部Init Enclave返回的enclave结构
返回值:加载是否成功,以及错误消息(wasm格式错误、解释错误)
3.调用(Invoke)
wasm的调用是调用已经加载到Enclave的wasm函数。
参数:module名称
exported_field导出的函数名称
args调用参数
返回值:该调用返回的值RuntimeValue(也是4个)
最终通过Enclave内的wasm vm提供的invoke_export完成调用。
在untrusted部分的Call函数,称为stub,其他功能的调用都是通过该stub函数分发,参数如下:
参数调用时将相关参数序列化成json字符串。
本发明通过用Intel SGX技术改造WebAssembly模型执行引擎的接口,确保模型执行过程中数据不可被窃取。增强了在不可信环境中数据共享的安全性和隐私性。可用于开发可信数据共享平台等相关应用。
Claims (3)
1.一种基于TEE的WebAssembly模型执行引擎,所述WebAssembly模型执行引擎包括函数解析、函数执行、内存管理、函数管理功能模块和接口;其特征在于,所述接口包括可信层接口和不可信层接口,可信层接口由Rust编译的初始化函数wasm_init、模型调用函数wasm_call、关闭函数wasm_close组成;可信层接口用于实现功能模块在SGX中执行具体的可信操作;不可信层接口由Rust编译的初始化函数init、模型调用函数call、关闭函数close和C语言编译的可信层的C头文件组成。C头文件用于申明初始化函数init、模型调用函数call、关闭函数close,初始化函数init、模型调用函数call、关闭函数close用于对应可信层代码的功能封装。
2.根据权利要求1所述的WebAssembly模型执行引擎,其特征在于,将WebAssembly模型执行引擎封装成SDK。
3.根据权利要求1所述的WebAssembly模型执行引擎,其特征在于,所述初始化函数init、模型调用函数call、关闭函数close还可以用于实现功能模块中不需要在SGX中执行的功能执行。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911418092.4A CN111177712B (zh) | 2019-12-31 | 2019-12-31 | 一种基于TEE的WebAssembly模型执行引擎 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911418092.4A CN111177712B (zh) | 2019-12-31 | 2019-12-31 | 一种基于TEE的WebAssembly模型执行引擎 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111177712A true CN111177712A (zh) | 2020-05-19 |
CN111177712B CN111177712B (zh) | 2022-06-03 |
Family
ID=70657785
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911418092.4A Active CN111177712B (zh) | 2019-12-31 | 2019-12-31 | 一种基于TEE的WebAssembly模型执行引擎 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111177712B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112148296A (zh) * | 2020-08-18 | 2020-12-29 | 华控清交信息科技(北京)有限公司 | 一种编译运行方法、装置和用于编译运行的装置 |
CN112433816A (zh) * | 2020-11-27 | 2021-03-02 | 北京达佳互联信息技术有限公司 | 基于Javascript引擎的性能优化方法和装置 |
CN113254065A (zh) * | 2021-07-14 | 2021-08-13 | 广州易方信息科技股份有限公司 | 应用软件兼容方法及装置 |
CN115982784A (zh) * | 2023-03-21 | 2023-04-18 | 紫光同芯微电子有限公司 | 一种WebAssembly模块调用函数的方法及装置 |
CN117130721A (zh) * | 2023-08-04 | 2023-11-28 | 北京中电华大电子设计有限责任公司 | WebAssembly代码的执行方法及装置 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180004675A1 (en) * | 2016-07-01 | 2018-01-04 | Vedvyas Shanbhogue | Application execution enclave memory method and apparatus |
CN109858288A (zh) * | 2018-12-26 | 2019-06-07 | 中国科学院信息工程研究所 | 实现虚拟机安全隔离的方法与装置 |
CN110069920A (zh) * | 2019-03-06 | 2019-07-30 | 上海交通大学 | 基于虚拟化保证sgx安全性的方法和系统 |
CN110119302A (zh) * | 2019-04-23 | 2019-08-13 | 上海隔镜信息科技有限公司 | 虚拟机监视器以及虚拟可信执行环境构建方法 |
CN110489942A (zh) * | 2019-08-06 | 2019-11-22 | 南开大学 | 一种WebAssembly文件的处理方法及系统 |
-
2019
- 2019-12-31 CN CN201911418092.4A patent/CN111177712B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20180004675A1 (en) * | 2016-07-01 | 2018-01-04 | Vedvyas Shanbhogue | Application execution enclave memory method and apparatus |
CN109858288A (zh) * | 2018-12-26 | 2019-06-07 | 中国科学院信息工程研究所 | 实现虚拟机安全隔离的方法与装置 |
CN110069920A (zh) * | 2019-03-06 | 2019-07-30 | 上海交通大学 | 基于虚拟化保证sgx安全性的方法和系统 |
CN110119302A (zh) * | 2019-04-23 | 2019-08-13 | 上海隔镜信息科技有限公司 | 虚拟机监视器以及虚拟可信执行环境构建方法 |
CN110489942A (zh) * | 2019-08-06 | 2019-11-22 | 南开大学 | 一种WebAssembly文件的处理方法及系统 |
Non-Patent Citations (2)
Title |
---|
INTEL: "Overview of Intel Protected File System Library Using SGX", 《HTTPS://INTEL.LY/34NPZMN》 * |
ZYSKIND G等: "Enigma Catalyst: A machine.based investing platform and infrastructure for crypto.assets", 《HTTPS://WWW.ENIGMA.CO/ENIGMA_CATALYST.PDF》 * |
Cited By (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112148296A (zh) * | 2020-08-18 | 2020-12-29 | 华控清交信息科技(北京)有限公司 | 一种编译运行方法、装置和用于编译运行的装置 |
CN112148296B (zh) * | 2020-08-18 | 2022-03-15 | 华控清交信息科技(北京)有限公司 | 一种编译运行方法、装置和用于编译运行的装置 |
CN112433816A (zh) * | 2020-11-27 | 2021-03-02 | 北京达佳互联信息技术有限公司 | 基于Javascript引擎的性能优化方法和装置 |
CN113254065A (zh) * | 2021-07-14 | 2021-08-13 | 广州易方信息科技股份有限公司 | 应用软件兼容方法及装置 |
CN115982784A (zh) * | 2023-03-21 | 2023-04-18 | 紫光同芯微电子有限公司 | 一种WebAssembly模块调用函数的方法及装置 |
CN115982784B (zh) * | 2023-03-21 | 2023-09-12 | 紫光同芯微电子有限公司 | 一种WebAssembly模块调用函数的方法及装置 |
CN117130721A (zh) * | 2023-08-04 | 2023-11-28 | 北京中电华大电子设计有限责任公司 | WebAssembly代码的执行方法及装置 |
CN117130721B (zh) * | 2023-08-04 | 2024-03-29 | 北京中电华大电子设计有限责任公司 | WebAssembly代码的执行方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111177712B (zh) | 2022-06-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111177712B (zh) | 一种基于TEE的WebAssembly模型执行引擎 | |
CN112866412B (zh) | 一种部署智能合约的方法、区块链节点和存储介质 | |
EP3123340B1 (en) | Object oriented marshaling scheme for calls to a secure region | |
CN108681457B (zh) | 基于代码下沉与残码解释的Android应用程序保护方法 | |
Bracha et al. | Modules as objects in Newspeak | |
CN108920133B (zh) | 跨语言编程方法、装置、电子设备及存储介质 | |
Eddelbuettel et al. | Rcpp: Seamless R and C++ integration | |
EP3180734B1 (en) | Restrictive access control for modular reflection | |
CN105068932B (zh) | 一种Android应用程序加壳的检测方法 | |
WO2017107706A1 (zh) | 基于arm指令虚拟化的elf文件保护方法及系统 | |
US8863079B2 (en) | Efficient and expansive conversions between reference and primitive | |
US6823504B1 (en) | Method and apparatus for interfacing a javascript interpreter with library of host objects implemented in java | |
CN109684794B (zh) | 一种代码保护虚拟机kvm系统实现方法、装置、计算机设备及存储介质 | |
WO2022148390A1 (zh) | 一种在区块链中部署、更新、调用智能合约的方法 | |
US6951014B1 (en) | Method and apparatus for representation of a JavaScript program for execution by a JavaScript interpreter | |
US9152442B2 (en) | Callbacks in virtual machines | |
CN114816417B (zh) | 一种交叉编译方法、装置、计算设备及存储介质 | |
Puder et al. | Smartphone cross-compilation framework for multiplayer online games | |
Arzt et al. | Towards cross-platform cross-language analysis with soot | |
KR101392046B1 (ko) | 동적 라이브러리를 갖는 인터페이스를 단순화하는 방법, 시스템 및 컴퓨터 판독가능한 저장 매체 | |
JP2013041598A (ja) | プログラムコードの生成方法、プログラム開発システム、携帯用データキャリア、及びプログラム | |
US20110321009A1 (en) | Implementing encryption via aspect oriented programming | |
Mostinckx et al. | Mirages: Behavioral intercession in a mirror-based architecture | |
Hamidy et al. | SecSharp: Towards Efficient Trusted Execution in Managed Languages (Work in Progress) | |
CN117170738B (zh) | Python与Fortran互调用的方法、系统、设备及存储介质 |
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 |