CN114253738B - 可信执行环境的内存锁定方法 - Google Patents

可信执行环境的内存锁定方法 Download PDF

Info

Publication number
CN114253738B
CN114253738B CN202111287297.0A CN202111287297A CN114253738B CN 114253738 B CN114253738 B CN 114253738B CN 202111287297 A CN202111287297 A CN 202111287297A CN 114253738 B CN114253738 B CN 114253738B
Authority
CN
China
Prior art keywords
addr
page
mlock
sgx
program
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
CN202111287297.0A
Other languages
English (en)
Other versions
CN114253738A (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.)
Shanghai Jiaotong University
Original Assignee
Shanghai Jiaotong University
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 Shanghai Jiaotong University filed Critical Shanghai Jiaotong University
Priority to CN202111287297.0A priority Critical patent/CN114253738B/zh
Publication of CN114253738A publication Critical patent/CN114253738A/zh
Application granted granted Critical
Publication of CN114253738B publication Critical patent/CN114253738B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • G06F9/526Mutual exclusion algorithms
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Computer Security & Cryptography (AREA)
  • Storage Device Security (AREA)

Abstract

一种可信执行环境的内存锁定方法,由SGX程序通过SGX提供的外部函数调用发送调用接口及其参数至用户态模块,用户态模块通过系统调用将调用接口和参数转发至内核模块,通过内核模块进行内存页锁定操作、解锁操作和查询操作,分别对应给EPC页加上MLOCK标记、给EPC页去掉MLOCK标记和检查MLOCK标记;操作结果通过用户态模块返回给SGX程序;解锁操作应当在锁定操作后执行;查询操作可以在任何状态下执行。本发明实现SGX内的程序只需要一个外部函数调用就能锁定一段EPC内存区域,同时也支持解锁和查询锁定状态的功能。使得被锁定的EPC访问速度会提高,并且能提高安全性,防止含有机密数据的EPC页换出后,被恶意攻击者破坏数据的机密性和完整性。

Description

可信执行环境的内存锁定方法
技术领域
本发明涉及的是一种信息安全领域的技术,具体是一种可信执行环境(TEE)的内存锁定方法。
背景技术
Intel SGX技术是Intel CPU对可信执行环境(TEE)的实现方案。EPC对于SGX程序属于稀缺资源,只有128M。
EPC的换入换出过程如图1所示。当EPC内存不足时,操作系统会用LRU算法,把最久没有访问过的EPC页对称加密后,放入普通内存(DRAM)中。这一过程成为EPC换出;在需要时,把DRAM中的EPC页解密到EPC的过程称为EPC换入。
EPC的换入换出操作涉及加解密操作,是非常耗时的操作。访问一个被换出的页会有很大延迟,所以将热度较高的内存区域锁定住能提高访问性能。同时EPC交换也会使SGX的安全性降低,被换出的EPC处于未被保护的内存区域,可能受到恶意的操作系统和软件攻击。因此在某些场合下,出于性能考虑或者安全性考虑,希望一段内存永远不被交换出去,目前SGX不支持内存锁定。
发明内容
本发明针对现有SGX技术无法对EPC内存页进行细粒度操作的缺陷,提出一种可信执行环境的内存锁定方法,通过EPC页标记(MLOCK)并在交换扫描的过程中跳过有特定标记的EPC页,从而始终位于EPC中。SGX内的程序只需要一个外部函数调用就能锁定一段EPC内存区域,同时也支持解锁和查询锁定状态的功能。使得被锁定的EPC访问速度会提高,并且能提高安全性,防止含有机密数据的EPC页换出后,被恶意攻击者破坏数据的机密性和完整性。
本发明是通过以下技术方案实现的:
本发明涉及一种可信执行环境的内存锁定方法,由SGX程序通过SGX提供的外部函数调用发送调用接口及其参数至用户态模块,用户态模块通过系统调用将调用接口和参数转发至内核模块,通过内核模块进行内存页锁定操作、解锁操作和查询操作,分别对应给EPC页加上MLOCK标记、给EPC页去掉MLOCK标记和检查MLOCK标记;操作结果通过用户态模块返回给SGX程序;解锁操作应当在锁定操作后执行;查询操作可以在任何状态下执行。
所述的调用接口包括:mlock、munlock和mincore,其中:由用户态模块调用并发送给内核模块的页面锁定接口mlock(BEGIN_ADDR,END_ADDR)表示锁定从BEGIN_ADDR到END_ADDR之间所有地址所有的页,其中BEGIN_ADDR和END_ADDR都必须已经将页内偏移清零了,以免泄露访问模式;锁定后所有的内存页将不会被交换到DRAM;页面解锁接口munlock(BEGIN_ADDR,END_ADDR)表示解锁从BEGIN_ADDR到END_ADDR之间所有地址的所在页,其中BEGIN_ADDR和END_ADDR都必须已经将页内偏移清零了,以免泄露访问模式;查询接口mincore(ADDR)表示查询ADDR所在的页是否有MLOCK标记,其中ADDR必须已经将页内偏移清零了,以免泄露访问模式。
所述的调用接口的参数包括:mlock_ocall、munlock_ocall和mincore_ocall,其中:锁定参数mlock_ocall(BEGIN_ADDR,END_ADDR)表示锁定从BEGIN_ADDR到END_ADDR之间所有地址所有的页,其中BEGIN_ADDR和END_ADDR都必须将页内偏移清零,以免泄露访问模式;锁定后所有的内存页将不会被交换到DRAM;解锁参数munlock_ocall(BEGIN_ADDR,END_ADDR)表示解锁从BEGIN_ADDR到END_ADDR之间所有地址的所在页,其中BEGIN_ADDR和END_ADDR都必须将页内偏移清零,以免泄露访问模式;查询参数mincore_ocall(ADDR)表示查询ADDR所在的页是否有MLOCK标记,其中ADDR都必须将页内偏移清零,以免泄露访问模式。
所述的用户态模块内置SGX程序运行时通过链接所使用的各种链接库,如/lib/x86_64-linux-gnu/libsgx_urts.so,由SGX程序通过链接库作为中转,将调用接口的请求输出至内核模块。
所述的内核模块的入口是/dev/isgx,内核模块接受用户态发起的系统调用(ioctl)以及系统调用对应的参数并进行EPC换入换出,并在EPC不足时选择选择一个EPC页换出。
技术效果
本发明通过SGX程序内锁定内存的方案,能够有效防止有敏感数据的内容被换出到不安全的内存区域,保护数据的机密性和完整性并提高锁定区域的访问速度。
附图说明
图1为EPC内存交换过程示意图;
图2为mlock接口流程图;
图3为给EPC页加上MLOCK标记示意图;
图4为内核模块处理mlock流程图;
图5为munlock接口流程图;
图6为mincore接口流程图;
图7为内核换出算法示意图;
图8为换出时跳过MLOCK页示意图。
具体实施方式
本实施例涉及的一种可信执行环境的内存锁定方法,由SGX程序通过SGX提供的外部函数调用发送调用接口及其参数至用户态模块,用户态模块通过系统调用将调用接口和参数转发至内核模块,通过内核模块进行内存页锁定操作、解锁操作和查询操作,分别对应给EPC页加上MLOCK标记、给EPC页去掉MLOCK标记和检查MLOCK标记;操作结果通过用户态模块返回给SGX程序;解锁操作应当在锁定操作后执行;查询操作可以在任何状态下执行。
所述的内存页锁定操作包括:
1)SGX程序导入包含mlock_ocall定义的头文件;
2)SGX程序调用头文件里导入的mlock_ocall函数,提供锁定的起始地址和终止地址;
3)用户态模块将请求类型(mlock)和参数一并用ioctl发送至内核模块;
4)内核模块收到mlock的系统调用后,遍历从BDGIN_ADDR到END_ADDR的地址,分别利用Radix树查出地址所在的页,当找不到拥有该地址的enclave或者该页不存在就返回失败代码,否则给页加上MLOCK标志位;当所有页是有效的,且都有MLOCK标志位才返回成功给用户态模块;
5)内核模块将mlock是否成功的信息返回至用户态模块,用户态模块再将结果返回至SGX程序,供程序员在SGX程序内进行mlock的失败处理。
如图5所示,所述的解锁操作包括:
a)在SGX程序内导入包含munlock_ocall定义的头文件;
b)SGX程序调用头文件里导入的munlock_ocall函数,提供解锁的起始地址和终止地址;
c)用户态模块将请求类型(munlock)和参数一并用ioctl发送至内核模块;
d)内核模块收到munlock的ioctl后,遍历从BDGIN_ADDR到END_ADDR的地址,分别利用Radix树查出地址所在的页:当找不到拥有该地址的enclave或者该页不存在就返回失败代码,否则给页去掉MLOCK标志位。当所有页都是有效的页,才返回成功给用户态模块;
e)内核模块将munlock是否成功的信息返回至用户态模块,用户态模块再将结果返回至SGX程序,供程序员在SGX程序内进行munlock的失败处理。
所述的查询操作包括:
i)在SGX程序内,导入包含mincore_ocall定义的头文件。
ii)SGX程序调用头文件里导入的mincore_ocall函数,提供查询的地址;
iii)用户态模块将请求类型(mincore)和参数一并用ioctl发送至内核模块;
iv)内核模块收到mincore的ioctl后,利用Radix树查出ADDR所在的页:当找不到拥有该地址的enclave或者该页不存在就返回失败代码,否则返回MLOCK标志位是否存在;
v)内核模块将mincore是否成功的信息返回至用户态模块,用户态模块再将结果返回至SGX程序,供程序员在SGX程序内进行mincore的失败处理。
如图7所示,在引入了MLOCK标记后,内核模块需要采用不一样的换出算法。当换出条件触发后,内核模块遍历所有EPC中的页,当带有MLOCK标记就跳过,当没有MLOCK标记,就按照原算法继续判断(检查访问标志位等),选择换出的页。
如图8所示,为在扫描EPC页链表,选择换出的页时,具有MLOCK标记的页会被跳过:
经过具体实际实验,本发明能够将需要保护的区域锁住之后,访问速度将提高7倍。
使用mlock 未使用mlock
访问100万次的总时间 984.212646ms 6.932876563s
与现有技术相比,本方法可以保证热数据和敏感数据不被换出,在需要高性能和高安全性的场合具有优势。
上述具体实施可由本领域技术人员在不背离本发明原理和宗旨的前提下以不同的方式对其进行局部调整,本发明的保护范围以权利要求书为准且不由上述具体实施所限,在其范围内的各个实现方案均受本发明之约束。

Claims (6)

1.一种可信执行环境的内存锁定方法,其特征在于,由SGX程序通过SGX提供的外部函数调用发送调用接口及其参数至用户态模块,用户态模块通过系统调用将调用接口和参数转发至内核模块,通过内核模块进行内存页锁定操作、解锁操作和查询操作,分别对应给EPC页加上MLOCK标记、给EPC页去掉MLOCK标记和检查MLOCK标记;操作结果通过用户态模块返回给SGX程序;解锁操作应当在锁定操作后执行;查询操作可以在任何状态下执行;
所述的调用接口包括:mlock、munlock和mincore,其中:由用户态模块调用并发送给内核模块的页面锁定接口mlock(BEGIN_ADDR,END_ADDR)表示锁定从BEGIN_ADDR到END_ADDR之间所有地址所有的页,其中BEGIN_ADDR和END_ADDR都必须已经将页内偏移清零了,以免泄露访问模式;锁定后所有的内存页将不会被交换到DRAM;页面解锁接口munlock(BEGIN_ADDR,END_ADDR)表示解锁从BEGIN_ADDR到END_ADDR之间所有地址的所在页,其中BEGIN_ADDR和END_ADDR都必须已经将页内偏移清零了,以免泄露访问模式;查询接口mincore(ADDR)表示查询ADDR所在的页是否有MLOCK标记,其中ADDR都必须已经将页内偏移清零了,以免泄露访问模式;
所述的调用接口的参数包括:mlock_ocall、munlock_ocall和mincore_ocall,其中:锁定参数mlock_ocall(BEGIN_ADDR,END_ADDR)表示锁定从BEGIN_ADDR到END_ADDR之间所有地址所有的页,其中BEGIN_ADDR和END_ADDR都必须将页内偏移清零,以免泄露访问模式;锁定后所有的内存页将不会被交换到DRAM;解锁参数munlock_ocall(BEGIN_ADDR,END_ADDR)表示解锁从BEGIN_ADDR到END_ADDR之间所有地址的所在页,其中BEGIN_ADDR和END_ADDR都必须将页内偏移清零,以免泄露访问模式;查询参数mincore_ocall(ADDR)表示查询ADDR所在的页是否有MLOCK标记,其中ADDR必须将页内偏移清零,以免泄露访问模式。
2.根据权利要求1所述的可信执行环境的内存锁定方法,其特征是,所述的用户态模块内置SGX程序运行时通过链接所使用的各种链接库,由SGX程序通过链接库作为中转,将调用接口的请求输出至内核模块。
3.根据权利要求1所述的可信执行环境的内存锁定方法,其特征是,内核模块接受用户态发起的系统调用(ioctl)以及系统调用对应的参数并进行EPC换入换出,并在EPC不足时选择选择一个EPC页换出。
4.根据权利要求1~3中任一所述的可信执行环境的内存锁定方法,其特征是,所述的内存页锁定操作包括:
1)SGX程序导入包含mlock_ocall定义的头文件;
2)SGX程序调用头文件里导入的mlock_ocall函数,提供锁定的起始地址和终止地址;
3)用户态模块将请求类型(mlock)和参数一并用ioctl发送至内核模块;
4)内核模块收到mlock的系统调用后,遍历从BDGIN_ADDR到END_ADDR的地址,分别利用Radix树查出地址所在的页,当找不到拥有该地址的enclave或者该页不存在就返回失败代码,否则给页加上MLOCK标志位;当所有页是有效的,且都有MLOCK标志位才返回成功给用户态模块;
5)内核模块将mlock是否成功的信息返回至用户态模块,用户态模块再将结果返回至SGX程序,供程序员在SGX程序内进行mlock的失败处理。
5.根据权利要求1~3中任一所述的可信执行环境的内存锁定方法,其特征是,所述的解锁操作包括:
a)在SGX程序内导入包含munlock_ocall定义的头文件;
b)SGX程序调用头文件里导入的munlock_ocall函数,提供解锁的起始地址和终止地址;
c)用户态模块将请求类型(munlock)和参数一并用ioctl发送至内核模块;
d)内核模块收到munlock的ioctl后,遍历从BDGIN_ADDR到END_ADDR的地址,分别利用Radix树查出地址所在的页:当找不到拥有该地址的enclave或者该页不存在就返回失败代码,否则给页去掉MLOCK标志位,当所有页都是有效的页,才返回成功给用户态模块;
e)内核模块将munlock是否成功的信息返回至用户态模块,用户态模块再将结果返回至SGX程序,供程序员在SGX程序内进行munlock的失败处理。
6.根据权利要求1~3中任一所述的可信执行环境的内存锁定方法,其特征是,所述的查询操作包括:
i)在SGX程序内,导入包含munlock_mincore定义的头文件;
ii)SGX程序调用头文件里导入的mincore_ocall函数,提供查询的地址;
iii)用户态模块将请求类型(mincore)和参数一并用ioctl发送至内核模块;
iv)内核模块收到mincore的ioctl后,利用Radix树查出ADDR所在的页:当找不到拥有该地址的enclave或者该页不存在就返回失败代码,否则返回MLOCK标志位是否存在;
v)内核模块将mincore是否成功的信息返回至用户态模块,用户态模块再将结果返回至SGX程序,供程序员在SGX程序内进行mincore的失败处理。
CN202111287297.0A 2021-11-02 2021-11-02 可信执行环境的内存锁定方法 Active CN114253738B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111287297.0A CN114253738B (zh) 2021-11-02 2021-11-02 可信执行环境的内存锁定方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111287297.0A CN114253738B (zh) 2021-11-02 2021-11-02 可信执行环境的内存锁定方法

Publications (2)

Publication Number Publication Date
CN114253738A CN114253738A (zh) 2022-03-29
CN114253738B true CN114253738B (zh) 2024-05-24

Family

ID=80790422

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111287297.0A Active CN114253738B (zh) 2021-11-02 2021-11-02 可信执行环境的内存锁定方法

Country Status (1)

Country Link
CN (1) CN114253738B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116108454B (zh) * 2023-04-06 2023-06-30 支付宝(杭州)信息技术有限公司 内存页面管理方法及装置

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110096853A (zh) * 2019-04-12 2019-08-06 福建天晴在线互动科技有限公司 基于Mono的Unity安卓应用加固方法、存储介质
CN110377436A (zh) * 2019-07-12 2019-10-25 清华大学 持久性内存的数据存储访问方法、设备及装置
CN110622164A (zh) * 2017-04-30 2019-12-27 微软技术许可有限责任公司 驱动程序代码子集在单独保护域中的执行
CN111177019A (zh) * 2019-08-05 2020-05-19 腾讯科技(深圳)有限公司 一种内存分配管理方法、装置、设备及存储介质
CN112182560A (zh) * 2020-09-17 2021-01-05 上海交通大学 针对Intel SGX内部高效的隔离方法、系统及介质
CN112711774A (zh) * 2021-03-25 2021-04-27 腾讯科技(深圳)有限公司 数据处理方法、装置、设备及存储介质

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9558121B2 (en) * 2012-12-28 2017-01-31 Intel Corporation Two-level cache locking mechanism
US10055577B2 (en) * 2016-03-29 2018-08-21 Intel Corporation Technologies for mutual application isolation with processor-enforced secure enclaves
CN110399235B (zh) * 2019-07-16 2020-07-28 阿里巴巴集团控股有限公司 Tee系统中的多线程数据传输方法和装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110622164A (zh) * 2017-04-30 2019-12-27 微软技术许可有限责任公司 驱动程序代码子集在单独保护域中的执行
CN110096853A (zh) * 2019-04-12 2019-08-06 福建天晴在线互动科技有限公司 基于Mono的Unity安卓应用加固方法、存储介质
CN110377436A (zh) * 2019-07-12 2019-10-25 清华大学 持久性内存的数据存储访问方法、设备及装置
CN111177019A (zh) * 2019-08-05 2020-05-19 腾讯科技(深圳)有限公司 一种内存分配管理方法、装置、设备及存储介质
CN112182560A (zh) * 2020-09-17 2021-01-05 上海交通大学 针对Intel SGX内部高效的隔离方法、系统及介质
CN112711774A (zh) * 2021-03-25 2021-04-27 腾讯科技(深圳)有限公司 数据处理方法、装置、设备及存储介质

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
"EnclaveDB: A Secure Database Using SGX";Christian Priebe;《2018 IEEE Symposium on Security and Privacy (SP)》;20180726;第264-278页 *
"事务内存机制在系统安全中的应用:现状与展望";李从午;《信息安全学报》;20191115;第4卷(第06期);第45-55页 *

Also Published As

Publication number Publication date
CN114253738A (zh) 2022-03-29

Similar Documents

Publication Publication Date Title
CN109766165B (zh) 一种内存访问控制方法、装置、内存控制器及计算机系统
JP6292594B2 (ja) 重複排除に基づくデータセキュリティ
US9734357B2 (en) Process authenticated memory page encryption
CN110928646B (zh) 一种访问共享内存的方法、装置、处理器和计算机系统
EP2151763A1 (en) Method and apparatus for obfuscating virtual to physical memory mapping
EP3798856B1 (en) Secure address translation services using message authentication codes and invalidation tracking
US8677457B2 (en) Security for codes running in non-trusted domains in a processor core
EP1627277A2 (en) Memory protection systems and methods for writable memory
KR20180026722A (ko) 제어되는 암호화 키 관리에 의해 소프트웨어 모듈들을 격리하기 위한 방법을 위한 메모리 캐시들 및 캐싱된 소프트웨어 모듈 아이덴티티들의 보안 핸들링
CN109992992B (zh) 一种可信的敏感数据保护方法及系统
CN111143247B (zh) 存储装置数据完整性保护方法及其控制器、片上系统
CN114253738B (zh) 可信执行环境的内存锁定方法
US11755221B1 (en) System for protecting CPU core by identifying data and instructions
CN108363930B (zh) 一种内存数据保护方法及系统
CN113395271A (zh) 一种云计算平台中数据安全访问方法及云计算平台
CN116366317A (zh) 远端内存访问保护机制构建方法、远端内存节点及设备
CN111159097A (zh) 一种片上访存保护系统及方法
US20220350932A1 (en) Data storage device performing in-storage processing
US20230081189A1 (en) Container management for cryptanalysis attack protection
US11055226B2 (en) Mitigation of cache-latency based side-channel attacks
CN111857947B (zh) 内存隔离方法、隔离检查电路和cpu芯片
CN115687185A (zh) 基于mmap内存映射的手持端低功耗数据采集方法
US11507514B2 (en) Secure memory translations
US20050182909A1 (en) Memory access control in an electronic apparatus
US11841970B1 (en) Systems and methods for preventing information leakage

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