CN109993003A - 一种基于sgx的软件流安全验证方法及装置 - Google Patents
一种基于sgx的软件流安全验证方法及装置 Download PDFInfo
- Publication number
- CN109993003A CN109993003A CN201910186987.3A CN201910186987A CN109993003A CN 109993003 A CN109993003 A CN 109993003A CN 201910186987 A CN201910186987 A CN 201910186987A CN 109993003 A CN109993003 A CN 109993003A
- Authority
- CN
- China
- Prior art keywords
- software flow
- module
- sgx
- enclave
- verification
- 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.)
- Pending
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/602—Providing cryptographic facilities or services
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/64—Protecting data integrity, e.g. using checksums, certificates or signatures
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Storage Device Security (AREA)
Abstract
本发明公开了一种基于SGX的软件流安全验证方法及装置,所述方法包括:在SGX虚拟机加载到磁盘中之后,将软件流数据和验证程序加载到SGX加载器中,并构建Enclave空间;使用SGX密钥生成程序生成的密钥对所述软件流数据进行加密;将所述软件流数据划分为多个软件流模块,并为每一软件流模块添加模块标记;当在EPC内存中检测到所述模块标记时,使用所述密钥对软件流模块进行解密,并将解密成功的软件流模块加载到所述Enclave空间;调用所述验证程序对加载到所述Enclave空间的软件流模块进行完整性校验,并执行校验成功的软件流模块数据。本发明通过SGX加密的方式对软件流加载时的合法性和完整性进行验证,从而保证了软件流的安全加载。
Description
技术领域
本发明涉及计算机科学与技术领域,尤其是涉及一种基于SGX的软件流安全验证方法及装置。
背景技术
随着流式计算的发展,数据流中的安全问题也逐渐被人们所关注。对于数据流而言,传统的安全性保护方法已经不能完全适用,因此许多专家和学者提出了流式安全增强方法。而随着免安装技术和流式计算研究的深入,出现了一种软件流加载技术,该技术是在数据流式加载的基础上提出的一种新的软件加载技术。传统的软件必须通过将源码下载到本地,然后进行编译执行,而软件流加载技术则使得客户端能够在软件运行过程中动态地从服务器加载资源。这种方式能够大大降低终端设备的负担,同时符合当前的软件免安装的设计思想。然而在软件流加载过程中,仍然存在很多安全性问题,其中最关键的问题就是如何保证软件流的完整性。
目前,应对软件流加载中的安全问题所采取的方法是在系统中加入恶意代码防范技术,这类技术主要是通过特征码扫描、访问控制技术等手段对加载的软件流数据进行扫描和监控,从而阻止恶意代码的破坏性行为。
但是,恶意代码为了能够长期地在系统中停留,保持对系统的控制权,会利用各种隐藏技术逃避安全防范软件的查杀,甚至一些恶意软件使用系统级的Rootkit技术在系统加载过程中,抢在安全软件之前启动,从而获取操作系统内核的控制权,破坏操作系统内核,甚至终止安全软件的执行,从而使操作系统处于不受保护的状态。而这些恶意软件很难被现有的安全防范技术所识别。
因此现有的软件流加载技术无法对软件流加载过程的安全性进行验证,从而存在被恶意攻击的危险,无法保证软件的安全运行。
发明内容
本发明实施例提供了一种基于SGX的软件流安全验证方法及装置,以解决现有的软件流加载技术存在被恶意攻击风险的问题,从而保证软件流在加载时的完整性和安全性。
为了解决上述技术问题,本发明实施例提供了一种基于SGX的软件流安全验证方法,包括:
在SGX虚拟机加载到磁盘中之后,将软件流数据和验证程序加载到SGX加载器中,并构建Enclave空间;
使用SGX密钥生成程序生成的密钥对所述软件流数据进行加密;
将所述软件流数据划分为多个软件流模块,并为每一软件流模块添加模块标记;
当在EPC内存中检测到所述模块标记时,使用所述密钥对软件流模块进行解密,并将解密成功的软件流模块加载到所述Enclave空间;
调用所述验证程序对加载到所述Enclave空间的软件流模块进行完整性校验,并执行校验成功的软件流模块数据。
进一步地,所述模块标记包括与自身对应的软件流模块的第一哈希值;所述调用所述验证程序对加载到所述Enclave空间的软件流模块进行完整性校验,具体为:
调用所述验证程序计算所述加载到所述Enclave空间的软件流模块的第二哈希值;
当比对所述第一哈希值与所述第二哈希值一致时,判定所述软件流模块完整性校验成功;
当比对所述第一哈希值与所述第二哈希值不一致时,判定所述软件流模块完整性校验失败。
进一步地,所述基于SGX的软件流安全验证方法还包括:
在完成一个软件流模块的完整性校验之后,对所述Enclave空间进行初始化,暂停所述软件流数据的加载和验证操作,并生成所述Enclave空间的身份证书;
当检测到下一软件流模块的访问请求来自所述Enclave空间内部时,若根据所述身份证书匹配到与该访问请求相对应的Enclave空间,则恢复所述软件流数据的加载和验证操作;若根据所述身份证书匹配不到与该访问请求相对应的Enclave空间,则返回验证失败;
当检测到所述访问请求不来自所述Enclave空间内部时,返回访问失败。
进一步地,所述密钥还用于对所述验证程序进行加密和解密。
进一步地,所述SGX密钥生成程序在系统配置的Intel IPP加密库的支持下运行,所述Intel IPP加密库还用于生成所述Enclave空间的身份证书。
为了解决相同的技术问题,本发明还提供了一种基于SGX的软件流安全验证装置,包括:
预加载模块,用于在SGX虚拟机加载到磁盘中之后,将软件流数据和验证程序加载到SGX加载器中,并构建Enclave空间;
数据加密模块,用于使用SGX密钥生成程序生成的密钥对所述软件流数据进行加密;
软件流划分模块,用于将所述软件流数据划分为多个软件流模块,并为每一软件流模块添加模块标记;
解密加载模块,用于当在EPC内存中检测到所述模块标记时,使用所述密钥对软件流模块进行解密,并将解密成功的软件流模块加载到所述Enclave空间;
完整性校验模块,用于调用所述验证程序对加载到所述Enclave空间的软件流模块进行完整性校验,并执行校验成功的软件流模块数据。
进一步地,所述模块标记包括与自身对应的软件流模块的第一哈希值;所述完整性校验模块,用于调用所述验证程序对加载到所述Enclave空间的软件流模块进行完整性校验,具体为:
所述完整性校验模块,用于调用所述验证程序计算所述加载到所述Enclave空间的软件流模块的第二哈希值,当比对所述第一哈希值与所述第二哈希值一致时,判定所述软件流模块完整性校验成功,当比对所述第一哈希值与所述第二哈希值不一致时,判定所述软件流模块完整性校验失败。
进一步地,所述的基于SGX的软件流安全验证装置还包括:
初始化模块,用于在完成一个软件流模块的完整性校验之后,对所述Enclave空间进行初始化,暂停所述软件流数据的加载和验证操作,并生成所述Enclave空间的身份证书;
访问验证模块,用于当检测到下一软件流模块的访问请求来自所述Enclave空间内部时,若根据所述身份证书匹配到与该访问请求相对应的Enclave空间,则恢复所述软件流数据的加载和验证操作;若根据所述身份证书匹配不到与该访问请求相对应的Enclave空间,则返回验证失败;
所述访问验证模块还用于当检测到所述访问请求不来自所述Enclave空间内部时,返回访问失败。
进一步地,所述密钥还用于对所述验证程序进行加密和解密。
进一步地,所述SGX密钥生成程序在系统配置的Intel IPP加密库的支持下运行,所述Intel IPP加密库还用于生成所述Enclave空间的身份证书。
实施本发明实施例,具有如下有益效果:
本发明实施例提供了一种基于SGX的软件流安全验证方法及装置,通过SGX加密的方式对软件流加载时的合法性和完整性进行验证,从而保证了软件流的安全加载;一方面,本发明在软件流加载运行之前会通过SGX对软件流模块进行加密和解密,利用Enclave的隔离功能,能够阻止恶意代码的进入从而有效防止了软件流被恶意攻击的风险;另一方面,本发明采用了CRC冗余校验技术,在软件流加载的过程中,对已加载的软件流模块进行完整性度量,从而能够保证软件流加载的完整性;而且,本发明将软件流按功能模块进行划分,然后分模块加载到用户终端,有效提高了软件流的加载效率。
附图说明
图1是本发明实施例一提供的基于SGX的软件流安全验证方法的一种流程示意图;
图2是本发明实施例一提供的基于SGX的软件流安全验证装置的一种结构示意图;
图3是本发明实施例一提供的基于SGX的软件流安全验证装置的另一种结构示意图;
图4是本发明实施例一提供的基于SGX的软件流安全验证方法的另一种流程示意图;
图5是本发明实施例一提供的基于SGX的软件流安全验证方法的应用场景示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参见图1,本发明实施例提供了一种基于SGX的软件流安全验证方法,包括:
步骤S1、在SGX虚拟机加载到磁盘中之后,将软件流数据和验证程序加载到SGX加载器中,并构建Enclave空间;
请结合图4和图5,在本发明实施例中,需要说明的是,在步骤S1中,首先需要在计算机上将需要运行的虚拟机从服务器加载到磁盘中,其中,所述计算机为配备了Intel SGX芯片的计算机,所述服务器是一台安装了Windows 2000Server/Advanced Server系统的计算机,该服务器控制一段IP范围,客户端登录该服务器将会自动获取IP地址。作为优选方案,本实施例中的服务器使用Ubuntu14.04作为操作系统,数据库为MySQL;客户端的处理器为第6代酷睿TM处理器,操作系统为Microsoft10,64-bit。
需要说明的是,在加载好所述虚拟机后,操作系统启动Enclave创建程序,将软件流数据和软件流验证程序加载到SGX Loader加载器中,即将需要加载的应用程序或镜像的代码和数据首先加载到SGX Loader加载器中,为将其加载至Enclave做准备,然后在SGX的可信模式下动态申请构建一个Enclave。在该过程中修改SwapContext在Windows内核中的函数以确保完整注册上下文在Enclave执行期间正确加载。所述Enclave是由SGX创建的一块隔离区域,用于封装合法软件的安全操作。SwapContext中保存的是当前的上下文环境,并且能够切换到指定的上下文环境中。
需要说明的是,SGX全称Intel Software Guard Extensions,其是对英特尔体系(IA)的一个扩展,用于增强软件的安全性。这种方式并不是识别和隔离平台上的所有恶意软件,而是将合法软件的安全操作封装在一个Enclave中,保护其不受恶意软件的攻击,特权或者非特权的软件都无法访问enclave,也就是说,一旦软件和数据位于Enclave中,即便操作系统或者和VMM(Hypervisor)也无法影响Enclave里面的代码和数据。Enclave的安全边界只包含CPU和它自身。SGX创建的Enclave也可以理解为一个可信执行环境TEE(TrustedExecution Environment)。SGX中一个CPU可以运行多个安全Enclaves,并发执行亦可。
步骤S2、使用SGX密钥生成程序生成的密钥对所述软件流数据进行加密;
在本发明实施例步骤S2中,调用SGX的密钥生成程序来产生加密密钥,该密钥的产生方法由SGX来完成,该密钥包含了SGX的版本密钥、CPU机器密钥和用户密钥,使用上述密钥可以对需要加载的应用程序的代码和数据进行加密,例如对本实施例中的软件流验证程序进行加密;所述密钥产生程序需要配置Intel IPP加密库,而本步骤是在Enclave外部使用加密库,因此需要首先在代码中引入ippcp.h文件。
步骤S3、将所述软件流数据划分为多个软件流模块,并为每一软件流模块添加模块标记;
在本发明实施例中,需要将所要加载的软件流划分为多个软件流模块,并为每一软件流模块添加模块标记;需要说明的是,本实施例中软件流验证程序的验证方法采用循环冗余校验(Cyclic Redundancy Check,CRC)方法,其中校验过程中使用到的软件流模块标记包括软件流模块编号,字节序列长度,整个软件的哈希值与该模块哈希值的异或值,以及验证标志位。
步骤S4、当在EPC内存中检测到所述模块标记时,使用所述密钥对软件流模块进行解密,并将解密成功的软件流模块加载到所述Enclave空间;
需要说明的是,软件流加载到内存之前首先通过EPC分配一段连续的物理内存,MmAllocateContiguousMemorySpecifyCache函数能够分配非页面内存,并且保证在物理内存上连续。然后使用一个链表的结构沿着Enclave Page的路线缓存来跟踪它,当检测到模块标记时,将当前的软件流模块通过所述密钥解密,如果解密成功,说明该软件流是符合本方法中加密标准的,然后将该模块加载进Enclave。
步骤S5、调用所述验证程序对加载到所述Enclave空间的软件流模块进行完整性校验,并执行校验成功的软件流模块数据。
需要说明的是,加载完成后的软件流模块通过软件流验证程序计算哈希值,并将此哈希值和模块标记中的哈希值进行比对,如果比对成功则复制该软件流模块,并且将验证标志位置为1。具体的,将解密成功并完整性校验成功的程序和数据加载进Enclave中,然后对加载进Enclave中的每个EPC内容进行复制。通过硬件隔离的Enclave中的镜像程序开始执行,构建基于SGX技术的硬件隔离完成。由于使用了硬件隔离,进一步保障Enclave的机密性和完整性,保障了不同的Enclave之间不会发生冲突更不会允许其互相访问。
可以理解的是,Intel SGX是一种基于硬件的TEE系统。该功能已经集成在IntelSky-Lake系列。区别以往的TEE系统有着较大的可信计算基(Trusted Computing Base,TCB),SGX的可信计算基非常小,仅仅包含CPU和Enclave本身。任何的特权软件,比如OS,Hypervisor,BIOS,SMM等都不包含在可信计算机内。Enclave有SGX硬件专门预留的EPC(Enclave Page Cache)内存。EPC是PRM(Processor Reserved Memory)的子集,并被系统软件按照4KB粒度进行分页管理。每一个EPC页面只能分配给一个Enclave。CPU阻止任何Non-Enclave去访问PRM,任何Non-Enclave的访问都会导致一个失败的事务(AbortedTransaction)。在目前SkyLake的处理器上面,失败的写操作被忽略,失败的读操作直接返回一个全1的值。
每个Enclave的程序指定一段ELRANGE(Enclave Linear AddressRange)的虚拟空间供自身运行。页表负责把虚拟地址映射为EPC所在的物理地址。页表的工作原理和以往的页表一样,比如会进行权限的检测、会设置Access Bit和Dirty Bit等等。Enclave和Non-Enclave可以通过EENTER和EEXIT来主动切换工作模式。Enclave运行时可能会被中断或者异常打断,这个时候Enclave会通过AEX(Asynchronous Enclave Exit)机制退出,切换到Non-Enclave工作模式。在模式切换过程中,运行状态会保存到SSA结构体(State SaveArea)里面,同时清除TLB以保证Enclave的安全。
在本发明实施例中,进一步地,所述模块标记包括与自身对应的软件流模块的第一哈希值;所述调用所述验证程序对加载到所述Enclave空间的软件流模块进行完整性校验,具体为:
调用所述验证程序计算所述加载到所述Enclave空间的软件流模块的第二哈希值;
当比对所述第一哈希值与所述第二哈希值一致时,判定所述软件流模块完整性校验成功;
当比对所述第一哈希值与所述第二哈希值不一致时,判定所述软件流模块完整性校验失败。
在本发明实施例中,进一步地,所述基于SGX的软件流安全验证方法还包括:
在完成一个软件流模块的完整性校验之后,对所述Enclave空间进行初始化,暂停所述软件流数据的加载和验证操作,并生成所述Enclave空间的身份证书;
当检测到下一软件流模块的访问请求来自所述Enclave空间内部时,若根据所述身份证书匹配到与该访问请求相对应的Enclave空间,则恢复所述软件流数据的加载和验证操作;若根据所述身份证书匹配不到与该访问请求相对应的Enclave空间,则返回验证失败;
当检测到所述访问请求不来自所述Enclave空间内部时,返回访问失败。
在本发明实施例中,需要说明的是,操作系统启动Enclave初始化程序时,即禁止继续加载和验证软件流模块,然后通过步骤1中所加载的加密库生成Enclave身份证书,并对这个证书进行加密,加密后的结果存储到Enclave的线程控制结构(Thread ControlStructure,TCS)中,用于恢复和验证其身份。其中,所述加密算法采用高级加密标准(Advanced Encryption Standard,AES)算法加密。
需要说明的是,在验证之后的软件流模块时,构建外部检测机制,首先判断访问请求是否来源于Enclave内部,如果是则继续,如果不是则返回访问失败;然后根据生成Enclave的身份证书来验证访问请求是否来源于同一个Enclave,如果是则通过检测,如果不是则根据身份证书记录表,进入到下一个Enclave进行匹配,直到所有正在运行的Enclave全部匹配完成,如果还是没有验证成功,则返回验证失败。
在本发明实施例中,可以理解的是,SGX的保护是针对应用程序的地址空间的。SGX利用处理器提供的指令,在内存中划分处一部分区域(EPC)并将应用程序地址空间中的Enclave映射到这部分内存区域。这部分内存区域是加密的,通过CPU中的内存控制单元进行加密和地址转化。
当处理器访问Enclave中数据时,CPU自动切换到一个新的CPU模式,叫做Enclave模式。Enclave模式会强制对每一个内存访问进行额外的硬件检查。由于数据是放在EPC中,为了防止已知的内存攻击,EPC中的内存内容会被内存加密引擎(MEE)加密的。EPC中的内存内容只有当进入CPU package时,才会解密;返回EPC内存中会被加密。EPC是指一个保留加密的内存区域。Enclave中的数据代码必需在其中执行。为了在EPC中执行一个二进制程序,SGX指令允许将普通的页复制到EPC页中。
在本发明实施例中,进一步地,所述密钥还用于对所述验证程序进行加密和解密。
在本发明实施例中,进一步地,所述SGX密钥生成程序在系统配置的Intel IPP加密库的支持下运行,所述Intel IPP加密库还用于生成所述Enclave空间的身份证书。
在本发明实施例中,需要说明的是,考虑到现有的软件流加载模式因无法对软件流加载过程的安全性进行验证而存在软件流被恶意程序攻击风险的问题,本发明通过SGX加密的方式对软件流加载时的合法性和完整性进行验证,从而保证了软件流的安全加载;一方面,本发明在软件流加载运行之前会通过SGX对软件流模块进行加密和解密,利用Enclave的隔离功能,能够阻止恶意代码的进入从而有效防止了软件流被恶意攻击的风险;另一方面,本发明采用了CRC冗余校验技术,在软件流加载的过程中,对已加载的软件流模块进行完整性度量,从而能够保证软件流加载的完整性;而且,本发明将软件流按功能模块进行划分,然后分模块加载到用户终端,有效提高了软件流的加载效率。
请参见图2,为了解决相同的技术问题,本发明还提供了一种基于SGX的软件流安全验证装置,包括:
预加载模块,用于在SGX虚拟机加载到磁盘中之后,将软件流数据和验证程序加载到SGX加载器中,并构建Enclave空间;
数据加密模块,用于使用SGX密钥生成程序生成的密钥对所述软件流数据进行加密;
软件流划分模块,用于将所述软件流数据划分为多个软件流模块,并为每一软件流模块添加模块标记;
解密加载模块,用于当在EPC内存中检测到所述模块标记时,使用所述密钥对软件流模块进行解密,并将解密成功的软件流模块加载到所述Enclave空间;
完整性校验模块,用于调用所述验证程序对加载到所述Enclave空间的软件流模块进行完整性校验,并执行校验成功的软件流模块数据。
在本发明实施例中,进一步地,所述模块标记包括与自身对应的软件流模块的第一哈希值;所述完整性校验模块,用于调用所述验证程序对加载到所述Enclave空间的软件流模块进行完整性校验,具体为:
所述完整性校验模块,用于调用所述验证程序计算所述加载到所述Enclave空间的软件流模块的第二哈希值,当比对所述第一哈希值与所述第二哈希值一致时,判定所述软件流模块完整性校验成功,当比对所述第一哈希值与所述第二哈希值不一致时,判定所述软件流模块完整性校验失败。
请参见图3,在本发明实施例中,进一步地,所述的基于SGX的软件流安全验证装置还包括:
初始化模块,用于在完成一个软件流模块的完整性校验之后,对所述Enclave空间进行初始化,暂停所述软件流数据的加载和验证操作,并生成所述Enclave空间的身份证书;
访问验证模块,用于当检测到下一软件流模块的访问请求来自所述Enclave空间内部时,若根据所述身份证书匹配到与该访问请求相对应的Enclave空间,则恢复所述软件流数据的加载和验证操作;若根据所述身份证书匹配不到与该访问请求相对应的Enclave空间,则返回验证失败;
所述访问验证模块还用于当检测到所述访问请求不来自所述Enclave空间内部时,返回访问失败。
在本发明实施例中,进一步地,所述密钥还用于对所述验证程序进行加密和解密。
在本发明实施例中,进一步地,所述SGX密钥生成程序在系统配置的Intel IPP加密库的支持下运行,所述Intel IPP加密库还用于生成所述Enclave空间的身份证书。
综上,实施本发明实施例,具有如下有益效果:
本发明实施例提供了一种基于SGX的软件流安全验证方法及装置,通过SGX加密的方式对软件流加载时的合法性和完整性进行验证,从而保证了软件流的安全加载;一方面,本发明实施例在软件流加载运行之前会通过SGX对软件流模块进行加密和解密,利用Enclave的隔离功能,能够阻止恶意代码的进入从而有效防止了软件流被恶意攻击的风险;另一方面,本发明实施例采用了CRC冗余校验技术,在软件流加载的过程中,对已加载的软件流模块进行完整性度量,从而能够保证软件流加载的完整性;而且,本发明实施例将软件流按功能模块进行划分,然后分模块加载到用户终端,有效提高了软件流的加载效率。
以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。
Claims (10)
1.一种基于SGX的软件流安全验证方法,其特征在于,包括:
在SGX虚拟机加载到磁盘中之后,将软件流数据和验证程序加载到SGX加载器中,并构建Enclave空间;
使用SGX密钥生成程序生成的密钥对所述软件流数据进行加密;
将所述软件流数据划分为多个软件流模块,并为每一软件流模块添加模块标记;
当在EPC内存中检测到所述模块标记时,使用所述密钥对软件流模块进行解密,并将解密成功的软件流模块加载到所述Enclave空间;
调用所述验证程序对加载到所述Enclave空间的软件流模块进行完整性校验,并执行校验成功的软件流模块数据。
2.根据权利要求1所述的基于SGX的软件流安全验证方法,其特征在于,所述模块标记包括与自身对应的软件流模块的第一哈希值;所述调用所述验证程序对加载到所述Enclave空间的软件流模块进行完整性校验,具体为:
调用所述验证程序计算所述加载到所述Enclave空间的软件流模块的第二哈希值;
当比对所述第一哈希值与所述第二哈希值一致时,判定所述软件流模块完整性校验成功;
当比对所述第一哈希值与所述第二哈希值不一致时,判定所述软件流模块完整性校验失败。
3.根据权利要求1所述的基于SGX的软件流安全验证方法,其特征在于,还包括:
在完成一个软件流模块的完整性校验之后,对所述Enclave空间进行初始化,暂停所述软件流数据的加载和验证操作,并生成所述Enclave空间的身份证书;
当检测到下一软件流模块的访问请求来自所述Enclave空间内部时,若根据所述身份证书匹配到与该访问请求相对应的Enclave空间,则恢复所述软件流数据的加载和验证操作;若根据所述身份证书匹配不到与该访问请求相对应的Enclave空间,则返回验证失败;
当检测到所述访问请求不来自所述Enclave空间内部时,返回访问失败。
4.根据权利要求1所述的基于SGX的软件流安全验证方法,其特征在于,所述密钥还用于对所述验证程序进行加密和解密。
5.根据权利要求3所述的基于SGX的软件流安全验证方法,其特征在于,所述SGX密钥生成程序在系统配置的Intel IPP加密库的支持下运行,所述Intel IPP加密库还用于生成所述Enclave空间的身份证书。
6.一种基于SGX的软件流安全验证装置,其特征在于,包括:
预加载模块,用于在SGX虚拟机加载到磁盘中之后,将软件流数据和验证程序加载到SGX加载器中,并构建Enclave空间;
数据加密模块,用于使用SGX密钥生成程序生成的密钥对所述软件流数据进行加密;
软件流划分模块,用于将所述软件流数据划分为多个软件流模块,并为每一软件流模块添加模块标记;
解密加载模块,用于当在EPC内存中检测到所述模块标记时,使用所述密钥对软件流模块进行解密,并将解密成功的软件流模块加载到所述Enclave空间;
完整性校验模块,用于调用所述验证程序对加载到所述Enclave空间的软件流模块进行完整性校验,并执行校验成功的软件流模块数据。
7.根据权利要求6所述的基于SGX的软件流安全验证装置,其特征在于,所述模块标记包括与自身对应的软件流模块的第一哈希值;所述完整性校验模块,用于调用所述验证程序对加载到所述Enclave空间的软件流模块进行完整性校验,具体为:
所述完整性校验模块,用于调用所述验证程序计算所述加载到所述Enclave空间的软件流模块的第二哈希值,当比对所述第一哈希值与所述第二哈希值一致时,判定所述软件流模块完整性校验成功,当比对所述第一哈希值与所述第二哈希值不一致时,判定所述软件流模块完整性校验失败。
8.根据权利要求6所述的基于SGX的软件流安全验证装置,其特征在于,还包括:
初始化模块,用于在完成一个软件流模块的完整性校验之后,对所述Enclave空间进行初始化,暂停所述软件流数据的加载和验证操作,并生成所述Enclave空间的身份证书;
访问验证模块,用于当检测到下一软件流模块的访问请求来自所述Enclave空间内部时,若根据所述身份证书匹配到与该访问请求相对应的Enclave空间,则恢复所述软件流数据的加载和验证操作;若根据所述身份证书匹配不到与该访问请求相对应的Enclave空间,则返回验证失败;
所述访问验证模块还用于当检测到所述访问请求不来自所述Enclave空间内部时,返回访问失败。
9.根据权利要求6所述的基于SGX的软件流安全验证装置,其特征在于,所述密钥还用于对所述验证程序进行加密和解密。
10.根据权利要求8所述的基于SGX的软件流安全验证装置,其特征在于,所述SGX密钥生成程序在系统配置的Intel IPP加密库的支持下运行,所述Intel IPP加密库还用于生成所述Enclave空间的身份证书。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201910186987.3A CN109993003A (zh) | 2019-03-12 | 2019-03-12 | 一种基于sgx的软件流安全验证方法及装置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201910186987.3A CN109993003A (zh) | 2019-03-12 | 2019-03-12 | 一种基于sgx的软件流安全验证方法及装置 |
Publications (1)
| Publication Number | Publication Date |
|---|---|
| CN109993003A true CN109993003A (zh) | 2019-07-09 |
Family
ID=67130402
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN201910186987.3A Pending CN109993003A (zh) | 2019-03-12 | 2019-03-12 | 一种基于sgx的软件流安全验证方法及装置 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN109993003A (zh) |
Cited By (11)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN110532767A (zh) * | 2019-08-19 | 2019-12-03 | 上海交通大学 | 面向sgx安全应用的内部隔离方法 |
| CN111291389A (zh) * | 2020-01-20 | 2020-06-16 | 苏州浪潮智能科技有限公司 | 一种计算机核心程序全生命周期的保护方法及系统 |
| CN111859467A (zh) * | 2020-07-23 | 2020-10-30 | 中国工商银行股份有限公司 | 一种基于sgx的云数据完整性审计方法及装置 |
| CN112182560A (zh) * | 2020-09-17 | 2021-01-05 | 上海交通大学 | 针对Intel SGX内部高效的隔离方法、系统及介质 |
| WO2021005591A1 (en) * | 2019-07-11 | 2021-01-14 | Cyber Armor Ltd. | System and method of verifying runtime integrity |
| CN112270010A (zh) * | 2020-11-17 | 2021-01-26 | 上海好连网络科技有限公司 | 可执行文件远程安全加载的方法 |
| CN112446032A (zh) * | 2020-11-20 | 2021-03-05 | 南方科技大学 | 可信执行环境构建方法、系统及存储介质 |
| CN113139213A (zh) * | 2021-05-13 | 2021-07-20 | 中国工商银行股份有限公司 | 多版本数据完整性云审计方法及系统 |
| CN114398156A (zh) * | 2022-03-24 | 2022-04-26 | 阿里云计算有限公司 | 数据通道构建方法及装置 |
| CN117786668A (zh) * | 2023-12-28 | 2024-03-29 | 北京长扬软件有限公司 | 一种应用程序动态完整性度量方法和系统 |
| WO2025010804A1 (zh) * | 2023-07-13 | 2025-01-16 | 海光信息技术股份有限公司 | 一种软件文件、软件运行方法及其相关装置 |
Citations (11)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN1487740A (zh) * | 2002-09-30 | 2004-04-07 | 北京中视联数字系统有限公司 | 数字电视广播中的软件下载方法 |
| WO2015138246A1 (en) * | 2014-03-13 | 2015-09-17 | Intel Corporation | Symmetric keying and chain of trust |
| US20150347768A1 (en) * | 2013-12-19 | 2015-12-03 | Intel Corporation | Policy-Based Trusted Inspection of Rights Managed Content |
| CN106845168A (zh) * | 2016-12-20 | 2017-06-13 | 西安电子科技大学 | 一种面向远程计算的控制流隐藏方法 |
| CN107463838A (zh) * | 2017-08-14 | 2017-12-12 | 广州大学 | 基于sgx的安全监控方法、装置、系统及存储介质 |
| CN107506659A (zh) * | 2017-07-27 | 2017-12-22 | 西安电子科技大学 | 一种基于sgx的通用数据库的数据保护系统及方法 |
| CN107544918A (zh) * | 2017-08-17 | 2018-01-05 | 致象尔微电子科技(上海)有限公司 | 一种内存页共享方法 |
| CN107851163A (zh) * | 2015-07-20 | 2018-03-27 | 英特尔公司 | 用于i/o数据的完整性、防重放和真实性保证的技术 |
| US20180204025A1 (en) * | 2015-09-23 | 2018-07-19 | Intel Corporation | Cryptographic cache lines for a trusted execution environment |
| CN108768978A (zh) * | 2018-05-16 | 2018-11-06 | 浙江大学 | 一种基于sgx的远端存储服务方法及系统 |
| CN109359487A (zh) * | 2018-10-09 | 2019-02-19 | 湖北文理学院 | 一种基于硬件隔离的可扩展安全影子存储及标签管理方法 |
-
2019
- 2019-03-12 CN CN201910186987.3A patent/CN109993003A/zh active Pending
Patent Citations (11)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN1487740A (zh) * | 2002-09-30 | 2004-04-07 | 北京中视联数字系统有限公司 | 数字电视广播中的软件下载方法 |
| US20150347768A1 (en) * | 2013-12-19 | 2015-12-03 | Intel Corporation | Policy-Based Trusted Inspection of Rights Managed Content |
| WO2015138246A1 (en) * | 2014-03-13 | 2015-09-17 | Intel Corporation | Symmetric keying and chain of trust |
| CN107851163A (zh) * | 2015-07-20 | 2018-03-27 | 英特尔公司 | 用于i/o数据的完整性、防重放和真实性保证的技术 |
| US20180204025A1 (en) * | 2015-09-23 | 2018-07-19 | Intel Corporation | Cryptographic cache lines for a trusted execution environment |
| CN106845168A (zh) * | 2016-12-20 | 2017-06-13 | 西安电子科技大学 | 一种面向远程计算的控制流隐藏方法 |
| CN107506659A (zh) * | 2017-07-27 | 2017-12-22 | 西安电子科技大学 | 一种基于sgx的通用数据库的数据保护系统及方法 |
| CN107463838A (zh) * | 2017-08-14 | 2017-12-12 | 广州大学 | 基于sgx的安全监控方法、装置、系统及存储介质 |
| CN107544918A (zh) * | 2017-08-17 | 2018-01-05 | 致象尔微电子科技(上海)有限公司 | 一种内存页共享方法 |
| CN108768978A (zh) * | 2018-05-16 | 2018-11-06 | 浙江大学 | 一种基于sgx的远端存储服务方法及系统 |
| CN109359487A (zh) * | 2018-10-09 | 2019-02-19 | 湖北文理学院 | 一种基于硬件隔离的可扩展安全影子存储及标签管理方法 |
Cited By (18)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US11139983B2 (en) | 2019-07-11 | 2021-10-05 | Cyber Armor Ltd. | System and method of verifying runtime integrity |
| WO2021005591A1 (en) * | 2019-07-11 | 2021-01-14 | Cyber Armor Ltd. | System and method of verifying runtime integrity |
| CN110532767A (zh) * | 2019-08-19 | 2019-12-03 | 上海交通大学 | 面向sgx安全应用的内部隔离方法 |
| CN111291389A (zh) * | 2020-01-20 | 2020-06-16 | 苏州浪潮智能科技有限公司 | 一种计算机核心程序全生命周期的保护方法及系统 |
| CN111291389B (zh) * | 2020-01-20 | 2022-06-24 | 苏州浪潮智能科技有限公司 | 一种计算机核心程序全生命周期的保护方法及系统 |
| CN111859467A (zh) * | 2020-07-23 | 2020-10-30 | 中国工商银行股份有限公司 | 一种基于sgx的云数据完整性审计方法及装置 |
| CN111859467B (zh) * | 2020-07-23 | 2024-03-26 | 中国工商银行股份有限公司 | 一种基于sgx的云数据完整性审计方法及装置 |
| CN112182560B (zh) * | 2020-09-17 | 2022-04-26 | 上海交通大学 | 针对Intel SGX内部高效的隔离方法、系统及介质 |
| CN112182560A (zh) * | 2020-09-17 | 2021-01-05 | 上海交通大学 | 针对Intel SGX内部高效的隔离方法、系统及介质 |
| CN112270010A (zh) * | 2020-11-17 | 2021-01-26 | 上海好连网络科技有限公司 | 可执行文件远程安全加载的方法 |
| CN112270010B (zh) * | 2020-11-17 | 2024-04-12 | 上海好连网络科技有限公司 | 可执行文件远程安全加载的方法 |
| CN112446032A (zh) * | 2020-11-20 | 2021-03-05 | 南方科技大学 | 可信执行环境构建方法、系统及存储介质 |
| CN112446032B (zh) * | 2020-11-20 | 2022-05-31 | 南方科技大学 | 可信执行环境构建方法、系统及存储介质 |
| CN113139213A (zh) * | 2021-05-13 | 2021-07-20 | 中国工商银行股份有限公司 | 多版本数据完整性云审计方法及系统 |
| CN114398156A (zh) * | 2022-03-24 | 2022-04-26 | 阿里云计算有限公司 | 数据通道构建方法及装置 |
| CN114398156B (zh) * | 2022-03-24 | 2022-09-09 | 阿里云计算有限公司 | 数据通道构建方法及装置 |
| WO2025010804A1 (zh) * | 2023-07-13 | 2025-01-16 | 海光信息技术股份有限公司 | 一种软件文件、软件运行方法及其相关装置 |
| CN117786668A (zh) * | 2023-12-28 | 2024-03-29 | 北京长扬软件有限公司 | 一种应用程序动态完整性度量方法和系统 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN109993003A (zh) | 一种基于sgx的软件流安全验证方法及装置 | |
| Hunt et al. | Confidential computing for OpenPOWER | |
| US10749683B2 (en) | Technologies for end-to-end biometric-based authentication and platform locality assertion | |
| CN107771335B (zh) | 受保护区域 | |
| US8397306B1 (en) | Security domain in virtual environment | |
| US8839450B2 (en) | Secure vault service for software components within an execution environment | |
| Jin et al. | Architectural support for secure virtualization under a vulnerable hypervisor | |
| JP5909829B2 (ja) | ハイパーバイザ環境においてカーネルルートキットに対する保護を実行するシステムおよび方法 | |
| EP2207121B1 (en) | Protecting content on virtualized client platforms | |
| Nanavati et al. | Cloud security: A gathering storm | |
| Wang et al. | Design and implementation of SecPod, a framework for virtualization-based security systems | |
| US20120226903A1 (en) | Secure platform voucher service for software components within an execution environment | |
| Dimitrov | Hardware rooted security in industry 4.0 systems | |
| US20210342174A1 (en) | Privacy preserving introspection for trusted execution environments | |
| Kinebuchi et al. | Monitoring integrity using limited local memory | |
| Lin et al. | HyperPS: a virtual-machine memory protection approach through hypervisor's privilege separation | |
| Evtyushkin et al. | Flexible hardware-managed isolated execution: Architecture, software support and applications | |
| Cheng et al. | DriverGuard: Virtualization-based fine-grained protection on i/o flows | |
| Nakano et al. | Secure offloading of intrusion detection systems from VMs with Intel SGX | |
| Leon et al. | Hypervisor-based white listing of executables | |
| Wang et al. | The road to trust: Building enclaves within confidential VMs | |
| Luțaș et al. | U-HIPE: hypervisor-based protection of user-mode processes in Windows | |
| Sahita et al. | Mitigating the lying-endpoint problem in virtualized network access frameworks | |
| Deyannis et al. | An enclave assisted snapshot-based kernel integrity monitor | |
| Wang et al. | Kernel and application integrity assurance: Ensuring freedom from rootkits and malware in a computer system |
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 | ||
| RJ01 | Rejection of invention patent application after publication | ||
| RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190709 |