CN111177712A - 一种基于TEE的WebAssembly模型执行引擎 - Google Patents

一种基于TEE的WebAssembly模型执行引擎 Download PDF

Info

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
Application number
CN201911418092.4A
Other languages
English (en)
Other versions
CN111177712B (zh
Inventor
尹可挺
匡立中
李伟
邱炜伟
胡为
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Qulian Technology Co Ltd
Original Assignee
Hangzhou Qulian Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hangzhou Qulian Technology Co Ltd filed Critical Hangzhou Qulian Technology Co Ltd
Priority to CN201911418092.4A priority Critical patent/CN111177712B/zh
Publication of CN111177712A publication Critical patent/CN111177712A/zh
Application granted granted Critical
Publication of CN111177712B publication Critical patent/CN111177712B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/57Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring 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/53Monitoring 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting 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/6245Protecting 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模型执行引擎
技术领域
本发明属于模型执行引擎设计领域,具体涉及一种基于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部分的调用合约函数的接口调用设计如下:
Figure BDA0002351689250000031
其中,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数组,再加载到内部,加载可以提供一个名词,后续调用通过该名称即可调用。
Figure BDA0002351689250000032
参数:module wasm的bytes序列
name为该wasm指定模块名称
enclave外部Init Enclave返回的enclave结构
返回值:加载是否成功,以及错误消息(wasm格式错误、解释错误)
3.调用(Invoke)
wasm的调用是调用已经加载到Enclave的wasm函数。
Figure BDA0002351689250000041
参数:module名称
exported_field导出的函数名称
args调用参数
返回值:该调用返回的值RuntimeValue(也是4个)
最终通过Enclave内的wasm vm提供的invoke_export完成调用。
在untrusted部分的Call函数,称为stub,其他功能的调用都是通过该stub函数分发,参数如下:
Figure BDA0002351689250000042
参数调用时将相关参数序列化成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中执行的功能执行。
CN201911418092.4A 2019-12-31 2019-12-31 一种基于TEE的WebAssembly模型执行引擎 Active CN111177712B (zh)

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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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文件的处理方法及系统

Patent Citations (5)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
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