CN107544918B - 一种内存页共享方法 - Google Patents

一种内存页共享方法 Download PDF

Info

Publication number
CN107544918B
CN107544918B CN201710708056.6A CN201710708056A CN107544918B CN 107544918 B CN107544918 B CN 107544918B CN 201710708056 A CN201710708056 A CN 201710708056A CN 107544918 B CN107544918 B CN 107544918B
Authority
CN
China
Prior art keywords
secure
container
memory page
page
epc
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
Application number
CN201710708056.6A
Other languages
English (en)
Other versions
CN107544918A (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.)
Haiguang Information Technology Co Ltd
Original Assignee
Haiguang Information 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 Haiguang Information Technology Co Ltd filed Critical Haiguang Information Technology Co Ltd
Priority to CN201710708056.6A priority Critical patent/CN107544918B/zh
Publication of CN107544918A publication Critical patent/CN107544918A/zh
Application granted granted Critical
Publication of CN107544918B publication Critical patent/CN107544918B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Storage Device Security (AREA)

Abstract

本发明涉及一种内存页共享方法,方法包括:第一安全容器enclave主动发起共享属于它的某个安全内存页EPC,或者收到第二安全容器共享属于第一安全容器某个EPC页的请求;第一安全容器验证第二安全容器的合法性;验证通过,则获取第二安全容器的安全容器身份标签和EPC页在第二安全容器所属的进程空间中映射的虚拟地址;在EPC页对应的安全内存页属性表EPCM中建立安全容器身份标签表;在安全容器身份标签表中插入一个条目,该条目记录第二安全容器的安全容器身份标签和虚拟地址;通知操作系统建立EPC页在第二安全容器所属的进程空间中的映射页表项。通过扩展EPCM,实现多个enclave共享EPC页,同一个EPC页在不同enclave中有自己的虚拟地址,enclave访问共享EPC如同访问属于自身的EPC页一样。

Description

一种内存页共享方法
技术领域
本发明涉及内存页共享方法,尤其是涉及一种基于Intel SGX中enclave的内存页共享方法。
背景技术
随着计算机和互联网的发展和普及,越来越多人的人将重要数据存储在计算机上或者远程云端,或者通过互联网支付、转账等。其中最担心的问题是信息泄露和黑客攻击。针对开放式平台使用的信息安全解决方案,Intel提出了SGX(Software GuardExtensions)方案。该方案使用一组新的指令,增加内存访问权限,将特定的程序和数据置于受保护的安全容器enclave中,从而达到隔离保护的目的。
对于一个enclave,只有该enclave本身可以访问其中的程序和数据,而其它的enclave、基本输入输出系统BIOS、操作系统OS、直接内存存取DMA、显卡等软硬件没有访问权限。要访问enclave中的程序和数据,首先要经过权限验证进入enclave模式,再经过一系列的合法检查,才能运行enclave中的程序和访问其中的数据。运行完成enclave中的程序之后,回到应用程序。
这种设计有几个显著的缺点:1)enclave之间不能共享程序代码,对于相同的程序代码,每个enclave都要复制一份,这将导致enclave中程序代码重复,体积变大;2)一个enclave不能调用另一个enclave的程序,也不能直接访问另一个enclave的数据;3)enclave之间不能共享数据,也不能直接交换数据。两个enclave之间要交换数据,必须先将数据从一个enclave中复制到内存,再从内存复制到另一个enclave中。4)enclave之间不能直接通信。
发明内容
本发明主要针对enclave之间由于相互隔离导致的上述不足之处,本发明设计出一种enclave之间共享内存的方法,从而解决了:1、enclave之间共享EPC页,重复利用PIC程序(Position Independent Code),减小程序代码对EPC(Enclave Page Cache)的开销。2、实现跨越enclave函数调用;3、多个enclave之间可以通过共享内存高效传输数据。4、为enclave之间通信提供了一种同步通信机制。
为实现上述目的,本发明提供了一种内存页共享方法,方法包括:第一安全容器enclave发出请求,请求共享其有权访问的某个安全内存页EPC;或者收到第二安全容器enclave共享属于第一安全容器enclave某个EPC页的请求;第一安全容器enclave验证第二安全容器的合法性;如果验证通过,则获取第二安全容器的安全容器身份标签和安全内存页在第二安全容器所属的进程空间中映射的虚拟地址;在安全内存页对应的安全内存页属性表(EPCM)中插入一个条目,该条目记录第二安全容器的安全容器身份标签和所述虚拟地址;上述条目形成安全容器身份标签表;通知操作系统建立安全内存页在第二安全容器所属的进程空间中的映射页表项。
优选的,安全容器身份标签表中包含至少一个条目,每个条目记录允许访问该安全内存页的安全容器的安全容器身份标签,以及该安全内存页在在该安全容器所属进程空间中映射的虚拟地址。
优选的,在安全容器身份标签表中插入一个条目由处理器完成。
优选的,在安全容器身份标签表中插入一个条目包括,向系统中添加一条用于实现共享安全内存页的指令。
优选的,所述方法还包括:释放所述安全内存页。
优选的,释放安全内存页具体包括:如果安全容器身份标签表中只记录有当前进程中的安全容器,则当前进程中安全容器enclave退出时,释放安全容器身份标签表;否则,从安全容器身份标签表中移除当前安全容器enclave的对应项。
本发明通过扩展EPCM,实现多个enclave共享EPC,同一个EPC页在不同的enclave中有自己的虚拟地址,enclave访问共享EPC如同访问属于自身的EPC一样。使用共享EPC,1)enclave之间可以共享代码,一些PIC程序共享EPC,减少代码对EPC的开销;2)实现跨越enclave的函数调用,一个enclave直接调用另一个enclave的函数,实现自身功能和访问对方数据;3)enclave之间共享数据,避免内存复制和进入、退出enclave的开销;4)为enclave之间提供了一种同步通信机制,使得enclave之间的同步操作变得容易。
附图说明
图1为本发明实施例提供的一种内存页共享方法流程图;
图2为根据本发明一个实施例实现一种内存页共享方法的示意图。
具体实施方式
下面通过附图和实施例,对本发明的技术方案做进一步的详细描述。
如图1所示,为本发明实施例提供的一种内存页共享方法流程图。
本发明实施例提供了一种内存页共享方法,方法包括:首先,第一安全容器enclave发出请求,请求共享其有权访问的某个安全内存页EPC;或者收到第二安全容器enclave共享属于第一安全容器enclave某个EPC页的请求;接着所述第一安全容器enclave验证第二安全容器的合法性。在一个实施例中,上述验证步骤通过硬件验证实现。如果验证失败,则拒绝共享;如果验证通过,则获取第二安全容器的安全容器身份标签和要共享的安全内存页在第二安全容器所属的进程空间中映射的虚拟地址;然后,在该安全内存页对应的安全内存页属性表EPCM中建立安全容器身份标签表;在安全容器身份标签表中插入一个条目,该条目记录第二安全容器的安全容器身份标签和上述映射得到的虚拟地址;通知操作系统建立安全内存页在第二安全容器所属的进程空间中的映射页表项。在一个实施例之后,在安全容器身份标签表中插入一个条目由处理器完成。
下面具体描述在安全内存页属性表EPCM中建立安全容器身份标签表,并在该标签表中插入条目的过程。
SGX中,EPC页是受保护的内存页,我们在此称之为安全内存页。每个EPC页都有唯一的安全内存属性表EPCM(EPC Map)与之对应,EPCM记录了EPC的一些属性,如EPC页是否有效、EPC所属安全容器enclave的安全容器身份标签SECS_ID(SGX enclave controlstructure ID)、EPC页的类型、虚拟地址、读写权限以及是否可以被访问等。在现有技术中,每一个EPC最多只能被一个enclave所有,通过EPCM中的SECS_ID项标识。
针对每个EPC页最多只能被一个enclave访问的不足之处,我们对安全内存属性表EPCM进行扩展,在其中添加多组{SECS_ID,虚拟地址}项条目,上述条目形成一个安全容器身份标签表,即SECS_ID表,从而使得该表对应的EPC能够被所添加的多个SECS_ID对应的多个安全容器所访问。
该表的大小根据实际需求自定义。在一个实施例之后,扩展后的EPCM结构如下表所示。
Figure BDA0001382000160000041
表中,SECS_ID为enclave的SECS(SGX enclave control structure)身份标识,enclave只有被验证通过才能得到它的SECS_ID。虚拟地址为EPC页在所属enclave所在进程空间中虚拟地址。
共享EPC页,可以通过添加一条共享EPC页的指令,由硬件实现。
如图2所示,为根据本发明一个实施例实现一种内存页共享方法的示意图。
虚线箭头为不同enclave访问自己的安全内存页EPC过程,相互隔离,无法互相访问。实线箭头为不同enclave访问共享的安全内存页EPC过程。在各自进程中,如进程1中的安全容器1发出一个访问请求。请求中包含的虚拟地址通过查询内核空间中的页表,得到转换后的物理地址,根据物理地址找到相应的安全内存页EPC。对应的EPC页中处理器检查EPCM时查看其中的SECS_ID表,只要发现其中存在一项,其SECS_ID和当前enclave的SECS_ID一致,那么检查通过,允许访问EPC,否则触发错误信号。
一个enclave进程退出时,处理器检查该enclave使用的所有EPC页,读取EPC页对应的EPCM,如果EPC页只被当前enclave所有,体现在扩展后的EPCM中,即EPCM中建立的安全容器身份标签表中如果只记录有当前安全容器,那么该EPC页将被释放。否则,从EPC页对应的EPCM中的SECS_ID表中移除该enclave的对应项。一个共享的EPC页只能被最后一个引用该EPC页的enclave释放。
以上所述的具体实施方式,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施方式而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (6)

1.一种用于在安全容器(enclave)间共享安全内存页(EPC)的方法,应用于Intel SGX架构,包括:
第一安全容器请求共享其有权访问的安全内存页,所述安全内存页具有与之对应的唯一的安全内存属性表,所述安全内存属性表记录所述安全内存页所属的安全容器的身份标签和其在该安全容器所属进程空间中映射的虚拟地址;
接收第二安全容器对所述安全内存页的共享请求;
所述第一安全容器验证第二安全容器的合法性;
如果验证通过,所述第一安全容器在所述安全内存页对应的安全内存页属性表中插入条目,所述条目记录所述第二安全容器的安全容器身份标签和所述安全内存页在所述第二安全容器所属的进程空间中映射的虚拟地址;
通知操作系统建立所述安全内存页在第二安全容器所属的进程空间中的映射页表项。
2.根据权利要求1所述的方法,其特征在于,所述第一安全容器验证第二安全容器的合法性的验证步骤通过硬件验证实现。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
第一安全容器在安全容器身份标签表中插入至少一个条目由处理器完成。
4.根据权利要求1所述的方法,其特征在于,所述第一安全容器在安全容器身份标签表中插入至少一个条目包括:
第一安全容器向系统中添加一条用于实现共享安全内存页的指令。
5.根据权利要求1所述的方法,其特征在于,还包括:释放所述安全内存页。
6.根据权利要求5所述的方法,其特征在于,所述释放安全内存页具体包括:
如果所述安全容器身份标签表中只记录有当前进程中的安全容器,则当前进程中安全容器退出时,释放所述安全容器身份标签表;
否则,从所述安全容器身份标签表中移除当前安全容器的对应的条目。
CN201710708056.6A 2017-08-17 2017-08-17 一种内存页共享方法 Active CN107544918B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710708056.6A CN107544918B (zh) 2017-08-17 2017-08-17 一种内存页共享方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710708056.6A CN107544918B (zh) 2017-08-17 2017-08-17 一种内存页共享方法

Publications (2)

Publication Number Publication Date
CN107544918A CN107544918A (zh) 2018-01-05
CN107544918B true CN107544918B (zh) 2021-01-15

Family

ID=60957529

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710708056.6A Active CN107544918B (zh) 2017-08-17 2017-08-17 一种内存页共享方法

Country Status (1)

Country Link
CN (1) CN107544918B (zh)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110874468B (zh) * 2018-08-31 2024-02-09 华为技术有限公司 应用程序安全保护方法以及相关设备
CN109359487B (zh) * 2018-10-09 2022-02-18 湖北文理学院 一种基于硬件隔离的可扩展安全影子存储及标签管理方法
CN109947666B (zh) * 2019-02-27 2023-04-25 余炀 可信执行环境缓存隔离方法及装置、电子设备和存储介质
CN109993003A (zh) * 2019-03-12 2019-07-09 广州大学 一种基于sgx的软件流安全验证方法及装置
CN112256395B (zh) * 2020-10-23 2023-01-31 海光信息技术股份有限公司 安全内存分配、虚拟cpu调度方法及相关装置
CN112817780B (zh) * 2021-02-01 2022-03-11 上海交通大学 一种实现安全与高性能进程间通信的方法和系统
CN116257368A (zh) * 2021-12-10 2023-06-13 华为技术有限公司 一种计算机系统中的通信方法及相关产品

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102073821A (zh) * 2011-01-27 2011-05-25 北京工业大学 基于xen平台的虚拟安全通信隧道的建立方法
CN104573553A (zh) * 2014-12-30 2015-04-29 中国航天科工集团第二研究院七O六所 一种面向Xen的虚拟机内存共享的安全隔离方法
CN105339945A (zh) * 2013-07-23 2016-02-17 英特尔公司 安全处理环境中的特征许可
CN105550576A (zh) * 2015-12-11 2016-05-04 华为技术服务有限公司 容器间通信的方法与装置
CN105745661A (zh) * 2013-12-19 2016-07-06 英特尔公司 对权限管理的内容的基于策略的受信任的检测

Family Cites Families (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2894588B1 (en) * 2014-01-13 2018-08-15 Nxp B.V. Data processing device, method for executing an application and computer program product
US9407636B2 (en) * 2014-05-19 2016-08-02 Intel Corporation Method and apparatus for securely saving and restoring the state of a computing platform
US10181027B2 (en) * 2014-10-17 2019-01-15 Intel Corporation Interface between a device and a secure processing environment
CN106547618B (zh) * 2016-10-19 2019-10-29 沈阳微可信科技有限公司 通信系统和电子设备

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102073821A (zh) * 2011-01-27 2011-05-25 北京工业大学 基于xen平台的虚拟安全通信隧道的建立方法
CN105339945A (zh) * 2013-07-23 2016-02-17 英特尔公司 安全处理环境中的特征许可
CN105745661A (zh) * 2013-12-19 2016-07-06 英特尔公司 对权限管理的内容的基于策略的受信任的检测
CN104573553A (zh) * 2014-12-30 2015-04-29 中国航天科工集团第二研究院七O六所 一种面向Xen的虚拟机内存共享的安全隔离方法
CN105550576A (zh) * 2015-12-11 2016-05-04 华为技术服务有限公司 容器间通信的方法与装置

Also Published As

Publication number Publication date
CN107544918A (zh) 2018-01-05

Similar Documents

Publication Publication Date Title
CN107544918B (zh) 一种内存页共享方法
Rutkowska Beyond the CPU: Defeating hardware based RAM acquisition
CN110928646A (zh) 一种访问共享内存的方法、装置、处理器和计算机系统
US7364087B2 (en) Virtual firmware smart card
US11625275B2 (en) Technologies for controlling memory access transactions received from one or more I/O devices
CN108055133A (zh) 一种基于区块链技术的密钥安全签名方法
JP5607170B2 (ja) 安全なポータブルオブジェクト
CN109828827A (zh) 一种检测方法、装置及相关设备
CN102054138A (zh) 向经过认证的防病毒代理提供扫描存储器的直接访问权
CN110278192B (zh) 外网访问内网的方法、装置、计算机设备及可读存储介质
CN106716435B (zh) 设备与安全处理环境之间的接口
CN105049445B (zh) 一种访问控制方法及独立式访问控制器
CN110839014A (zh) 一种认证方法、装置、计算机系统及可读存储介质
CN107562514B (zh) 一种物理内存访问控制与隔离方法
CN112528181A (zh) 二维码管理方法、装置、计算机设备及可读存储介质
CN110061988B (zh) 嵌入式设备的鉴权方法、嵌入式设备、业务服务器及存储介质
US20040193832A1 (en) Physical mode windows
US10609013B2 (en) Twin factor authentication for controller
US10268823B2 (en) Device, system, and method for securing executable operations
CN111259380A (zh) 内存页转移方法和函数调用方法
KR20020010753A (ko) 운영 체계에서 사용자 메모리 유효성 검증 방법
CN111382441B (zh) 一种应用处理器、协处理器及数据处理设备
CN114065257A (zh) 地址空间的保护方法、保护装置、设备和存储介质
JP6322967B2 (ja) データ保護装置、方法、および、プログラム
CN111382111B (zh) 一种应用处理器、协处理器及数据处理设备

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
TA01 Transfer of patent application right

Effective date of registration: 20180110

Address after: 300143 Tianjin Haitai Huayuan Industrial Zone No. 18 West North 2-204 industrial incubation -3-8

Applicant after: Hai Guang Information Technology Co., Ltd.

Address before: 201203 3F, No. 1388, 02-01, Zhang Dong Road, Pudong New Area, Shanghai

Applicant before: Analog Microelectronics (Shanghai) Co., Ltd.

TA01 Transfer of patent application right
CB02 Change of applicant information

Address after: 300143 Tianjin Haitai Huayuan Industrial Zone No. 18 West North 2-204 industrial incubation -3-8

Applicant after: Haiguang Information Technology Co., Ltd

Address before: 300143 Tianjin Haitai Huayuan Industrial Zone No. 18 West North 2-204 industrial incubation -3-8

Applicant before: HAIGUANG INFORMATION TECHNOLOGY Co.,Ltd.

CB02 Change of applicant information
GR01 Patent grant
GR01 Patent grant