CN114253738B - 可信执行环境的内存锁定方法 - Google Patents
可信执行环境的内存锁定方法 Download PDFInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 19
- 230000006870 function Effects 0.000 claims abstract description 14
- 230000008676 import Effects 0.000 claims description 2
- 238000010586 diagram Methods 0.000 description 7
- 210000001956 EPC Anatomy 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/52—Program synchronisation; Mutual exclusion, e.g. by means of semaphores
- G06F9/526—Mutual exclusion algorithms
-
- 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
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的失败处理。
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)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116108454B (zh) * | 2023-04-06 | 2023-06-30 | 支付宝(杭州)信息技术有限公司 | 内存页面管理方法及装置 |
Citations (6)
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)
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系统中的多线程数据传输方法和装置 |
-
2021
- 2021-11-02 CN CN202111287297.0A patent/CN114253738B/zh active Active
Patent Citations (6)
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)
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 |