CN109583191A - 云端程序控制流完整性保护方法及装置 - Google Patents
云端程序控制流完整性保护方法及装置 Download PDFInfo
- Publication number
- CN109583191A CN109583191A CN201811290307.4A CN201811290307A CN109583191A CN 109583191 A CN109583191 A CN 109583191A CN 201811290307 A CN201811290307 A CN 201811290307A CN 109583191 A CN109583191 A CN 109583191A
- Authority
- CN
- China
- Prior art keywords
- program
- tenant
- enclave
- path information
- execution path
- 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
Links
- 238000000034 method Methods 0.000 title claims abstract description 48
- 230000003014 reinforcing effect Effects 0.000 claims abstract description 37
- 238000004458 analytical method Methods 0.000 claims abstract description 23
- 230000008569 process Effects 0.000 claims description 14
- 230000006870 function Effects 0.000 claims description 10
- 238000013480 data collection Methods 0.000 claims description 8
- 238000004891 communication Methods 0.000 claims description 7
- 230000001052 transient effect Effects 0.000 claims description 4
- 230000004044 response Effects 0.000 claims description 3
- 238000005516 engineering process Methods 0.000 description 11
- 238000010586 diagram Methods 0.000 description 7
- 230000007246 mechanism Effects 0.000 description 7
- 238000012550 audit Methods 0.000 description 4
- 238000004590 computer program Methods 0.000 description 4
- 244000035744 Hura crepitans Species 0.000 description 3
- 238000012790 confirmation Methods 0.000 description 3
- 238000000926 separation method Methods 0.000 description 3
- 238000010200 validation analysis Methods 0.000 description 3
- 238000000151 deposition Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 230000009191 jumping Effects 0.000 description 2
- 238000012795 verification Methods 0.000 description 2
- 238000000429 assembly Methods 0.000 description 1
- 230000000712 assembly Effects 0.000 description 1
- 229910002056 binary alloy Inorganic materials 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000006378 damage Effects 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 235000013399 edible fruits Nutrition 0.000 description 1
- 230000002452 interceptive effect Effects 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000004886 process control Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000000518 rheometry Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
- 230000001960 triggered effect Effects 0.000 description 1
Classifications
-
- 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/52—Monitoring 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
-
- 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/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6209—Protecting access to data via a platform, e.g. using keys or access control rules to a single file or object, e.g. in a secure envelope, encrypted and accessed using a key, or with access control rules appended to the object itself
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Storage Device Security (AREA)
Abstract
本发明实施例提供一种云端程序控制流完整性保护方法及装置,其中,所述方法包括:利用自定义的二进制分析工具分析租户程序生成的二进制文件,构建所述租户程序的合法的程序路径数据集;对所述租户程序进行安全加固,并将加固后的租户程序存储至第一Enclave中;在所述第一Enclave中运行所述加固后的租户程序,收集所述加固后的租户程序运行时产生的程序执行路径信息,并将所述程序执行路径信息实时存储至第二Enclave;所述第二Enclave利用所述程序执行路径信息和所述租户程序的合法的程序路径数据集,验证所述租户程序的控制流的完整性。本发明实施例可以确保置于SGX Enclave中的租户代码正常执行。
Description
技术领域
本发明实施例涉及云安全技术领域,更具体地,涉及一种云端程序控制流完整性保护方法及装置。
背景技术
云计算可以让计算资源集中并做出优化,因此多个用户应用可以更有效地分享服务器资源,例如内存、CPU、存储以及网络带宽等。云计算,随着信息技术的不断发展,早已成为行业的趋势所在。然而,云服务的便利性也带来了严重的安全问题。相对PC时代单机系统被攻击的后果,云服务被攻击的后果更加严重,即云上所有服务的安全性都将受到威胁。如果云服务商无法给予一个客观、公允、可信的安全保证给云租户,就不能让用户对云平台的安全予以信任和信心,这将影响到云平台的业务发展。基于信任模型,云服务的安全威胁主要分为两大类:1)云平台管理员可以访问租户的所有数据和程序;2)攻击者可以利用安全漏洞危害租户的安全。
针对第一类安全威胁,现有云服务平台提供了一系列的安全保障,并利用虚拟服务器的加固、隔离、销毁等虚拟化技术对云租户应用进行隔离。针对第二类安全威胁,即攻击者能够利用安全漏洞危害租户的安全。这一威胁的根源在于租户代码本身存在漏洞,例如攻击者可以通过租户本身存在的内存破坏漏洞,远程劫持租户程序的控制流。针对租户应用的安全性展开研究,需要从技术手段上保障其应用的顺利执行,包括:1)确保云服务平台不能篡改租户代码的执行或者窃取租户数据;2)确保执行的代码是租户所需要运行的代码;3)确保执行的代码免受常见的控制流劫持攻击。通过这几个保障,租户可以不用信任云服务平台而执行自己的代码,且云服务平台可以为脆弱的租户应用程序提供更加强健的防护。采用Intel最新的硬件防护机制SGX(Software Guard Extensions)可确保云服务平台不能篡改租户代码的执行或者窃取租户数据。Intel SGX技术的兴起,对云安全有重大意义,它可以更好地解决信任问题。该防护机制基于密码学理论及硬件保障机制,实现了一个安全执行环境Enclaves,其中执行的代码和数据可以免受其他组件(包括操作系统,VMM,BIOS等)的窃取。这一防护机制能够确保应用可以在一个不可信的环境下可信的执行,且其执行的代码是可以证实的。
微软2014年提出Heaven方案,在前期沙箱工作DrawBridge基础上,应用SGX技术为沙箱内运行的应用提供安全保障,其具体实现方式是通过在Library OS(Windows8及以上)上运行应用及代码库,并且将这些组件整体封装在SGX Enclave中,此外通过Library OS提供有限的Downcall和Upcall外部调用接口与主机进行交互。Heaven方案依赖于LibraryOS,导致其Enclave内运行的代码体积过大,而这些代码是可信基TCB的一部分,因而其安全性受限。同时,其性能损失也比较大。2016年的工作SCONE则将Linux容器放入SGX中进行保护。具体而言,它通过一个隔离层shield提供类似Library os的downcall和upcall,隔离层shield上面运行代码库及程序,这些组件全部置于SGX Enclave中。相比于Heaven,它的可信基(TCB)更小,而且性能更好,但是这一方案目前只支持docker容器和Windows自定义的沙箱,对于云平台常用的其他虚拟化方案尚未支持,且无法保证SGX Enclave内的租户代码正确执行。
发明内容
本发明实施例提供一种克服上述问题或者至少部分地解决上述问题的云端程序控制流完整性保护方法及装置。
第一方面,本发明实施例提供一种云端程序控制流完整性保护方法,包括:
利用自定义的二进制分析工具分析租户程序生成的二进制文件,构建所述租户程序的合法的程序路径数据集;
对所述租户程序进行安全加固,并将加固后的租户程序存储至第一Enclave中;
在所述第一Enclave中运行所述加固后的租户程序,收集所述加固后的租户程序运行时产生的程序执行路径信息,并将所述程序执行路径信息实时存储至第二Enclave;
所述第二Enclave利用所述程序执行路径信息和所述租户程序的合法的程序路径数据集,验证所述租户程序的控制流的完整性,或者,
远程租户通过远程证明方式与所述第二Enclave进行通信,读取所述程序执行路径信息,所述远程租户将所述程序执行路径信息与所述租户程序的合法的程序路径数据集进行比对,验证所述租户程序的控制流的完整性。
第二方面,本发明实施例提供一种云端程序控制流完整性保护装置,包括:
合法路径信息获取模块,用于利用自定义的二进制分析工具分析租户程序生成的二进制文件,构建所述租户程序的合法的程序路径数据集;
安全加固模块,用于对所述租户程序进行安全加固,并将加固后的租户程序存储至第一Enclave中;
程序执行模块,用于在所述第一Enclave中运行所述加固后的租户程序,收集所述加固后的租户程序运行时产生的程序执行路径信息,并将所述程序执行路径信息实时存储至第二Enclave;
验证模块,用于所述第二Enclave利用所述程序执行路径信息和所述租户程序的合法的程序路径数据集,验证所述租户程序的控制流的完整性,或者,
用于远程租户通过远程证明方式与所述第二Enclave进行通信,读取所述程序执行路径信息,所述远程租户将所述程序执行路径信息与所述租户程序的合法的程序路径数据集进行比对,验证所述租户程序的控制流的完整性。
第三方面,本发明实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述程序时实现如第一方面所提供的云端程序控制流完整性保护方法的步骤。
第四方面,本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现如第一方面所提供的云端程序控制流完整性保护方法的步骤。
本发明实施例提供的云端程序控制流完整性保护方法及装置,不依赖于对操作系统的信任,通过将租户代码安全加固之后置于Enclave中,并引入独立的安全服务Enclave,用于存储安全机制的元数据,且在这个Enclave中验证代码执行流程是否正确。除此之外,当远程租户发出请求时,Enclave还可以向远程租户提供证实服务,可以确保置于SGXEnclave中的租户代码正常执行,免受控制流劫持攻击威胁,从而增强云服务客户对云平台的信任度。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为基于SGX的云端程序控制流完整性保护框架的结构示意图;
图2为本发明实施例提供的云端程序控制流完整性保护方法的流程示意图;
图3为本发明实施例提供的云端程序控制流完整性保护装置的结构示意图;
图4为本发明实施例提供的电子设备的实体结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
针对现有技术中存在的缺陷,本发明实施例提供了一种支持租户主动交互式的云端程序控制流完整性保护方法。当云租户信任云平台时,云平台提供能够在SGX环境下运行的控制流完整性保护方案确保租户代码正常执行。当云租户主动请求验证运行时的路径信息时,云平台的Enclave可以将其运行时的路径信息传递给云租户,云租户自身可以确认在执行过程中其程序执行流是否受到干扰,从而增强云服务客户对云平台的信任度。
图1为基于SGX的云端程序控制流完整性保护框架的结构示意图,如图1所示,该框架主要包括:应用程序模块、路径记录和验证模块以及远程租户模块;其中,应用程序模块用于运行租户程序,以及收集代码执行信息;路径记录和验证模块,用于存储应用程序模块收集的代码执行信息,并验证其收集的执行流正确性;远程租户模块,用于与该路径记录和验证模块进行通信,当租户发出请求时,可以验证其收集的执行流。
应用程序模块的具体实现是一个Enclave,记为第一Enclave,Enclave是一段特殊的内存区域,其中存储的代码和数据受CPU的保护,Enclave是一个可信执行环境。路径记录和验证模块的具体实现是另一个独立的Enclave,记为第二Enclave。
基于上述框架,本发明实施例提供云端程序控制流完整性保护方法。图2为本发明实施例提供的云端程序控制流完整性保护方法的流程示意图,包括:
步骤10、利用自定义的二进制分析工具分析租户程序生成的二进制文件,构建所述租户程序的合法的程序路径数据集。
具体地,本发明的核心是验证租户应用代码运行时的执行路径是否符合预期的合法路径。因而,需要对在云平台运行的租户程序进行预处理,并生成所有符合预期的合法路径集合。
在一个实施例中,利用LLVM自定义一个二进制文件分析工具,并利用所述二进制分析工具分析租户程序生成的二进制文件,从而构建所述租户程序的合法的程序路径数据集。
得到租户程序的合法程序路径数据集后,将该数据集存储在云服务器“本地”的Enclave中,用以与租户程序运行时的路径信息做对比,以此检测非预期的程序控制流变化。
步骤20、对所述租户程序进行安全加固,并将加固后的租户程序存储至第一Enclave中。
为了验证租户程序执行的正确性,我们需要收集租户应用代码运行时的程序路径信息。程序执行路径由一系列的程序跳转构成。值得一提的是,由于现代操作系统普遍部署了数据执行保护(DEP)技术,直接跳转指令的跳转目标不能被攻击者篡改,因而这些指令是“安全”的。
出于性能等因素的考虑,本发明实施例不记录程序的直接跳转信息,只记录所有间接跳转和间接调用指令的信息,包括跳转指令的地址、跳转的目标地址、调用指令的地址以及调用的目标地址。
对所述租户程序进行安全加固是指在编译阶段,在租户程序的每一个间接跳转和间接调用指令前插入一段路径收集代码,该代码的一个功能是记录程序执行路径信息,即记录原始间接跳转指令的地址和间接跳转的目标地址,以及原始间接调用指令的地址和间接调用的目标地址。
在本发明实施例中通过编写一个编译器插装模块对所述租户程序进行安全加固,例如通过LLVM Pass实现对所述租户程序进行安全加固。
将经过加固后的租户代码存储至第一Enclave。
步骤30、在所述第一Enclave中运行所述加固后的租户程序,收集所述加固后的租户程序运行时产生的程序执行路径信息,并将所述程序执行路径信息实时存储至第二Enclave;
通过在所述第一Enclave中,使用容器docker或者其他虚拟化技术,运行加固后的租户程序。随着租户应用代码的执行,其中植入的路径收集代码将自动收集程序路径执行信息。
出于安全性考虑,第一Enclave中不能存储所获得的程序执行路径信息,因为第一Enclave一旦被攻击者劫持,其中存储的程序执行路径信息可能被篡改,导致后续验证结果不可信。因而,间接跳转指令前植入的代码会将其记录的信息发送给外部安全模块,即将跳转指令的地址以及跳转的目标地址这两个地址信息发送给第二Enclave进行安全存储,然后才跳转到目标地址中。同样地,间接调用指令之前植入的代码会将其记录的信息发送给外部安全模块,即将调用指令的地址以及调用的目标地址这两个地址信息发送至第二Enclave进行安全存储,然后才开始执行调用。
步骤40、所述第二Enclave利用所述程序执行路径信息和所述租户程序的合法的程序路径数据集,验证所述租户程序的控制流的完整性,或者,
远程租户通过远程证明方式与所述第二Enclave进行通信,读取所述程序执行路径信息,所述远程租户将所述程序执行路径信息与所述租户程序的合法的程序路径数据集进行比对,以验证所述租户程序的控制流的完整性。
具体地,考虑到租户应用代码可能被攻击,其运行时收集的路径信息数据不能存储在租户应用代码所在的第一Enclave内部,因而本发明实施例使用一个独立的用于存储并验证租户程序的执行路径信息的第二Enclave。
第二Enclave的功能相对单一、代码量非常小,因而可信基TCB比较小,可以通过形式化验证或者人工代码审计检查其安全性,即确保其不存在安全漏洞。
形式化验证是指第二Enclave将所述程序执行路径信息与所述租户程序的合法的程序路径数据集进行比对,验证所述租户程序的控制流的完整性。
人工代码审计是指当租户请求验证路径信息时,租户通过远程证明方式与存储并验证该租户的应用代码的路径信息的第二Enclave进行通信,获取租户应用代码运行时的路径信息,与编译阶段预处理得到的合法的程序路径数据集进行比对,验证所述租户程序的控制流的完整性。
本发明实施例提供的云端程序控制流完整性保护方法,不依赖于对操作系统的信任,通过将租户代码安全加固之后置于Enclave中,并引入独立的安全服务Enclave,用于存储安全机制的元数据,且在这个Enclave中验证代码执行流程是否正确,或者,当远程租户发出请求时,该安全服务Enclave还可以向远程租户提供证实服务,可以确保置于SGXEnclave中的租户代码正常执行,免受控制流劫持攻击威胁,从而增强云服务客户对云平台的信任度。
基于上述实施例的内容,所述对所述租户程序进行安全加固的步骤,具体为:
在所述租户程序的每一个间接跳转指令和间接调用指令前插入一段代码,所述代码用于记录程序执行路径信息,并使得所述程序执行路径信息传递到所述第二Enclave中;
其中,所述程序执行路径信息包括原始间接跳转指令的地址和间接跳转的目标地址,以及原始间接调用指令的地址和间接调用的目标地址。
具体地,在所述租户程序的每一个间接跳转指令和间接调用指令前插入一段代码,所述代码完成两个功能,一个是用于记录程序执行路径信息,所述程序执行路径信息包括原始间接跳转指令的地址和间接跳转的目标地址,以及原始间接调用指令的地址和间接调用的目标地址。另一个功能是使得所述程序执行路径信息传递到所述第二Enclave中。这样做的好处在于,即使第一Enclave被攻击者成功攻击了,其也无法篡改已经记录的程序执行流。注意到,控制流劫持攻击者必须劫持某个间接跳转指令(数据流攻击除外),而本发明实施例代码会在每个间接跳转指令跳转之前介入,攻击者所触发的非法跳转信息将被记录下来,并实时发送给外部的第二Enclave,确保了安全性。
基于上述各实施例的内容,所述将所述程序执行路径信息存储至第二Enclave的步骤,具体为:
在所述第二Enclave外部创建一个外部存储空间;
所述第二Enclave通过本地证明方式与所述第一Enclave建立第一可信安全通道;
所述第二Enclave随机生成一个密钥,并利用所述第一可信安全通道将所述密钥传递至第一Enclave;
所述第一Enclave通过所述密钥将所述程序执行路径信息加密存储至所述外部存储空间。
具体地,本发明实施例在第二Enclave外部创建一个外部存储空间,并对存储在该外部存储空间的信息进行加密。
在一个实施例中,利用异或的方式对存储在该外部存储空间的信息进行加密。
用于存储并验证程序执行路径信息的第二Enclave随机生成一个密钥,并通过SGXEnclave之间的本地证明方式建立一个可信安全通道,利用该可信安全通道将该密钥传递到用于运行租户程序的第一Enclave中。
通过共享该外部存储空间,第一Enclave实时往这个外部存储空间加密存储程序执行路径信息,以供第二Enclave从这个外部存储空间解密读取程序执行路径信息。这样做的好处在于确保程序执行路径信息不会被攻击者篡改。
在一个实施例中,该外部存储空间的数据结构为一个循环队列,第一Enclave在队列尾加密存储程序执行路径信息,第二Enclave在队列头解密读取程序执行路径信息。
基于上述各实施例的内容,所述在所述第二Enclave中利用所述程序执行路径信息和所述租户程序的合法的程序路径数据集验证所述租户程序的控制流的完整性,具体为:
所述第二Enclave从所述外部存储空间解密读取所述程序执行路径信息;
所述第二Enclave将所述程序执行路径信息与所述租户程序的合法的程序路径数据集进行比对,若判断某一进程的所述程序执行路径信息不属于所述程序路径数据集,则获知所述租户程序受到攻击,并调用exit()函数中断当前进程。
具体地,所述第二Enclave利用其自身产生的密钥从所述外部存储空间解密读取所述程序执行路径信息之后,实时将所述程序执行路径信息与所述租户程序的合法的程序路径数据集进行比对,若判断某一进程的所述程序执行路径信息不属于所述程序路径数据集,则获知租户程序的控制流被攻击劫持,可能受到了重定向攻击,则通过ocall调用exit()函数中断当前进程,从而中断租户程序的执行,确保了租户程序的运行安全。
基于上述各实施例的内容,所述远程租户通过远程证明方式与所述第二Enclave进行通信的步骤之后,还包括:
若远程租户通过远程证明方式与所述第二Enclave进行通信后,未得到所述第二Enclave的响应,则获知所述第一Enclave遭受到了攻击,所述第二Enclave调用exit()函数中断当前进程。
具体地,本发明实施例支持租户主动对其自身程序的运行进行验证,即当租户想要对执行流信息进行验证以确认其代码正在正常执行时,可以通过远程证明方式与所述第二Enclave建立起可信安全通道,从所述第二Enclave获取程序执行路径信息,若远程租户通过远程证明方式与所述第二Enclave进行通信后,未得到所述第二Enclave的响应,则获知所述第一Enclave遭受到了攻击,所述第二Enclave调用exit()函数中断当前在所述第一Enclave中运行的进程。
远程租户通过与用于存储并验证其程序执行路径信息的第二Enclave进行交互,对该程序执行路径信息进行主动验证,为租户提供了“看得见的”安全保障,并从实际上保护了代码运行时控制流的完整性,保护代码静态完整性和机密性。
基于上述各实施例的内容,所述第二Enclave通过本地证明方式与所述第一Enclave建立第一可信安全通道的步骤,具体为:
所述第二Enclave向所述第一Enclave发送请求;
所述第一Enclave接收到请求后通过特殊的指令请求CPU对所述第一Enclave中运行的租户代码进行签名,并将所述签名发送给所述第二Enclave;
所述第二Enclave接收到所述签名后验证所述签名的正确性,并建立第一可信通道。
具体地,所述第二Enclave通过本地证明方式(Local Attestation)与所述第一Enclave建立第一可信安全通道的步骤为:
首先将所述第二Enclave作为验证方Enclave,所述第一Enclave作为被验证Enclave,验证方Enclave向被验证Enclave发送请求,被验证Enclave通过特殊的指令请求CPU对被验证Enclave中运行的租户代码进行签名,所述签名的密钥与验证方Enclave相关,验证方Enclave收到该签名后验证其正确性,从而确认所述被验证Enclave可信,进而建立第一可信安全通道。
基于上述各实施例的内容,所述远程租户通过远程证明方式与所述第二Enclave进行通信的步骤,具体为:
远程租户向所述第二Enclave发送验证请求,所述第二Enclave请求本地IntelQuoting Enclave对所述第二Enclave进行本地证明,Intel Quoting Enclave验证完后生成一个证明文件发送给所述远程租户;
远程租户对所述证明文件进行验证,并建立第二可信安全通道。
具体地,远程租户通过远程证明方式(Remote Attestation)与所述第二Enclave进行通信的步骤包括:
远程租户向第二Enclave发送验证请求,第二Enclave请求本地Intel QuotingEnclave对其自身进行本地证明,Intel Quoting Enclave验证完后生成一个证明文件发送给所述远程租户;
远程租户对所述证明文件进行验证后确认所述第二Enclave可信,进而建立第二可信安全通道。
如图3所示,为本发明实施例提供的云端程序控制流完整性保护装置的结构示意图,包括:合法路径信息获取模块210、安全加固模块220、程序执行模块230和验证模块240,其中,
合法路径信息获取模块210,用于利用自定义的二进制分析工具分析租户程序生成的二进制文件,构建所述租户程序的合法的程序路径数据集。
具体地,本发明实施例的核心是验证租户应用代码运行时的执行路径是否符合预期的合法路径。因而,合法路径信息获取模块210需要对在云平台运行的租户程序进行预处理,并生成所有符合预期的合法路径集合。
在一个实施例中,合法路径信息获取模块210利用LLVM自定义一个二进制文件分析工具,并利用所述二进制分析工具分析租户程序生成的二进制文件,从而构建所述租户程序的合法的程序路径数据集。
得到租户程序的合法程序路径数据集后,合法路径信息获取模块210将该数据集存储在云服务器“本地”的Enclave中,用以与租户程序运行时的路径信息做对比,以此检测非预期的程序控制流变化。
安全加固模块220,用于对所述租户程序进行安全加固,并将加固后的租户程序存储至第一Enclave中。
具体地,为了验证租户程序执行的正确性,需要收集租户应用代码运行时的程序路径信息。程序执行路径由一系列的程序跳转构成。值得一提的是,由于现代操作系统普遍部署了数据执行保护(DEP)技术,直接跳转指令的跳转目标不能被攻击者篡改,因而这些指令是“安全”的。
出于性能等因素的考虑,本发明实施例不记录程序的直接跳转信息,只记录所有间接跳转和间接调用指令的信息,包括跳转指令的地址、跳转的目标地址、调用指令的地址以及调用的目标地址。
对所述租户程序进行安全加固是指在编译阶段,在租户程序的每一个间接跳转和间接调用指令前插入一段路径收集代码,该代码的一个功能是记录程序执行路径信息,即记录原始间接跳转指令的地址、跳转的目标地址、调用指令的地址以及调用的目标地址。
在本发明实施例中通过编写一个编译器插装模块对所述租户程序进行安全加固,例如通过LLVM Pass实现对所述租户程序进行安全加固。
安全加固模块220将经过加固后的租户代码存储至第一Enclave。
程序执行模块230,用于在所述第一Enclave中运行所述加固后的租户程序,收集所述加固后的租户程序运行时产生的程序执行路径信息,并将所述程序执行路径信息实时存储至第二Enclave;
具体地,程序执行模块230在所述第一Enclave中运行所述加固后的租户程序,收集所述加固后的租户程序运行时产生的程序执行路径信息,并将所述程序执行路径信息实时存储至第二Enclave;
通过在所述第一Enclave中,使用容器docker或者其他虚拟化技术,运行加固后的租户程序。随着租户应用代码的执行,其中植入的路径收集代码将自动收集的程序路径执行信息。
出于安全性考虑,第一Enclave中不能存储所获得的程序执行路径信息,因为第一Enclave一旦被攻击者劫持,其中存储的程序执行路径信息可能被篡改,导致后续验证结果不可信。因而,间接跳转指令前植入的代码会将其记录的信息发送给外部安全模块,即将跳转指令的地址以及跳转的目标地址这两个地址信息发送给第二Enclave进行安全存储,然后才跳转到目标地址中。同样地,间接调用指令之前植入的代码会将其记录的信息发送给外部安全模块,即将调用指令的地址以及调用的目标地址这两个地址信息发送至第二Enclave进行安全存储,然后才开始执行调用。
验证模块240,用于所述第二Enclave利用所述程序执行路径信息和所述租户程序的合法的程序路径数据集,验证所述租户程序的控制流的完整性,或者,
用于远程租户通过远程证明方式与所述第二Enclave进行通信,读取所述程序执行路径信息,所述远程租户将所述程序执行路径信息与所述租户程序的合法的程序路径数据集进行比对,验证所述租户程序的控制流的完整性。
具体地,考虑到租户应用代码可能被攻击,其运行时收集的路径信息数据不能存储在租户应用代码所在的第一Enclave内部,因而验证模块240使用一个独立的用于存储并验证租户程序的执行路径信息的第二Enclave。
第二Enclave的功能相对单一、代码量非常小,因而可信基TCB比较小,可以通过形式化验证或者人工代码审计检查其安全性,即确保其不存在安全漏洞。
形式化验证是指第二Enclave将所述程序执行路径信息与所述租户程序的合法的程序路径数据集进行比对,验证所述租户程序的控制流的完整性。
人工代码审计是指当租户请求验证路径信息时,租户通过远程证明方式与存储并验证该租户的应用代码的路径信息的第二Enclave进行通信,获取租户应用代码运行时的路径信息,与编译阶段预处理得到的合法的程序路径数据集进行比对,验证所述租户程序的控制流的完整性。
本发明实施例提供的云端程序控制流完整性保护装置,不依赖于对操作系统的信任,通过将租户代码安全加固之后置于Enclave中,并引入独立的安全服务Enclave,用于存储安全机制的元数据(程序执行路径信息),且在这个安全服务Enclave中验证代码执行流程是否正确,或者,当远程租户发出请求时,该安全服务Enclave还可以向远程租户提供证实服务,可以确保置于SGX Enclave中的租户代码正常执行,免受控制流劫持攻击威胁,从而增强云服务客户对云平台的信任度。
图4为本发明实施例提供的电子设备的实体结构示意图,如图4所示,该电子设备可以包括:处理器(processor)310、通信接口(Communications Interface)320、存储器(memory)330和通信总线340,其中,处理器310,通信接口320,存储器330通过通信总线340完成相互间的通信。处理器310可以调用存储在存储器330上并可在处理器310上运行的计算机程序,以执行上述各实施例提供的云端程序控制流完整性保护方法,例如包括:利用自定义的二进制分析工具分析租户程序生成的二进制文件,构建所述租户程序的合法的程序路径数据集;对所述租户程序进行安全加固,并将加固后的租户程序存储至第一Enclave中;在所述第一Enclave中运行所述加固后的租户程序,收集所述加固后的租户程序运行时产生的程序执行路径信息,并将所述程序执行路径信息实时存储至第二Enclave;所述第二Enclave利用所述程序执行路径信息和所述租户程序的合法的程序路径数据集,验证所述租户程序的控制流的完整性,或者,远程租户通过远程证明方式与所述第二Enclave进行通信,读取到所述程序执行路径信息,所述远程租户将所述程序执行路径信息与所述租户程序的合法的程序路径数据集进行比对,验证所述租户程序的控制流的完整性。
此外,上述的存储器330中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实施例的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的云端程序控制流完整性保护方法,例如包括:利用自定义的二进制分析工具分析租户程序生成的二进制文件,构建所述租户程序的合法的程序路径数据集;对所述租户程序进行安全加固,并将加固后的租户程序存储至第一Enclave中;在所述第一Enclave中运行所述加固后的租户程序,收集所述加固后的租户程序运行时产生的程序执行路径信息,并将所述程序执行路径信息实时存储至第二Enclave;所述第二Enclave利用所述程序执行路径信息和所述租户程序的合法的程序路径数据集,验证所述租户程序的控制流的完整性,或者,远程租户通过远程证明方式与所述第二Enclave进行通信,读取到所述程序执行路径信息,所述远程租户将所述程序执行路径信息与所述租户程序的合法的程序路径数据集进行比对,验证所述租户程序的控制流的完整性。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种云端程序控制流完整性保护方法,其特征在于,包括:
利用自定义的二进制分析工具分析租户程序生成的二进制文件,构建所述租户程序的合法的程序路径数据集;
对所述租户程序进行安全加固,并将加固后的租户程序存储至第一Enclave中;
在所述第一Enclave中运行所述加固后的租户程序,收集所述加固后的租户程序运行时产生的程序执行路径信息,并将所述程序执行路径信息实时存储至第二Enclave;
所述第二Enclave利用所述程序执行路径信息和所述租户程序的合法的程序路径数据集,验证所述租户程序的控制流的完整性,或者,
远程租户通过远程证明方式与所述第二Enclave进行通信,读取到所述程序执行路径信息,所述远程租户将所述程序执行路径信息与所述租户程序的合法的程序路径数据集进行比对,验证所述租户程序的控制流的完整性。
2.根据权利要求1所述的方法,其特征在于,所述对所述租户程序进行安全加固的步骤,具体为:
在所述租户程序的每一个间接跳转指令和间接调用指令前插入一段代码,所述代码用于记录程序执行路径信息,并使得所述程序执行路径信息传递到所述第二Enclave中;
其中,所述程序执行路径信息包括原始间接跳转指令的地址和间接跳转的目标地址,以及原始间接调用指令的地址和间接调用的目标地址。
3.根据权利要求1所述的方法,其特征在于,所述将所述程序执行路径信息存储至第二Enclave的步骤,具体为:
在所述第二Enclave外部创建一个外部存储空间;
所述第二Enclave通过本地证明方式与所述第一Enclave建立第一可信安全通道;
所述第二Enclave随机生成一个密钥,并利用所述第一可信安全通道将所述密钥传递至第一Enclave;
所述第一Enclave通过所述密钥将所述程序执行路径信息加密存储至所述外部存储空间。
4.根据权利要求3所述的方法,其特征在于,所述在所述第二Enclave中利用所述程序执行路径信息和所述租户程序的合法的程序路径数据集验证所述租户程序的控制流的完整性,具体为:
所述第二Enclave从所述外部存储空间解密读取所述程序执行路径信息;
所述第二Enclave将所述程序执行路径信息与所述租户程序的合法的程序路径数据集进行比对,若判断某一进程的所述程序执行路径信息不属于所述程序路径数据集,则获知所述租户程序受到重定向攻击,调用exit()函数中断当前进程。
5.根据权利要求1所述的方法,其特征在于,所述远程租户通过远程证明方式与所述第二Enclave进行通信的步骤之后,还包括:
若远程租户通过远程证明方式与所述第二Enclave进行通信后,未得到所述第二Enclave的响应,则获知所述第一Enclave遭受到了攻击,所述第二Enclave调用exit()函数中断当前进程。
6.根据权利要求3所述的方法,其特征在于,所述第二Enclave通过本地证明方式与所述第一Enclave建立第一可信安全通道的步骤,具体为:
所述第二Enclave向所述第一Enclave发送请求;
所述第一Enclave接收到请求后通过特殊的指令请求CPU对所述第一Enclave中运行的租户代码进行签名,并将所述签名发送给所述第二Enclave;
所述第二Enclave接收到所述签名后验证所述签名的正确性,并建立第一可信通道。
7.根据权利要求1所述的方法,其特征在于,所述远程租户通过远程证明方式与所述第二Enclave进行通信的步骤,具体为:
远程租户向所述第二Enclave发送验证请求,所述第二Enclave请求本地IntelQuoting Enclave对所述第二Enclave进行本地证明,Intel Quoting Enclave验证完后生成一个证明文件发送给所述远程租户;
远程租户对所述证明文件进行验证,并建立第二可信安全通道。
8.一种云端程序控制流完整性保护装置,其特征在于,包括:
合法路径信息获取模块,用于利用自定义的二进制分析工具分析租户程序生成的二进制文件,构建所述租户程序的合法的程序路径数据集;
安全加固模块,用于对所述租户程序进行安全加固,并将加固后的租户程序存储至第一Enclave中;
程序执行模块,用于在所述第一Enclave中运行所述加固后的租户程序,收集所述加固后的租户程序运行时产生的程序执行路径信息,并将所述程序执行路径信息实时存储至第二Enclave;
验证模块,用于所述第二Enclave利用所述程序执行路径信息和所述租户程序的合法的程序路径数据集,验证所述租户程序的控制流的完整性,或者,
用于远程租户通过远程证明方式与所述第二Enclave进行通信,读取所述程序执行路径信息,所述远程租户将所述程序执行路径信息与所述租户程序的合法的程序路径数据集进行比对,验证所述租户程序的控制流的完整性。
9.一种电子设备,其特征在于,包括:
至少一个处理器;以及
与所述处理器通信连接的至少一个存储器,其中:
所述存储器存储有可被所述处理器执行的程序指令,所述处理器调用所述程序指令能够执行如权利要求1至7任一所述的方法。
10.一种非暂态计算机可读存储介质,其特征在于,所述非暂态计算机可读存储介质存储计算机指令,所述计算机指令使所述计算机执行如权利要求1至7任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811290307.4A CN109583191B (zh) | 2018-10-31 | 2018-10-31 | 云端程序控制流完整性保护方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201811290307.4A CN109583191B (zh) | 2018-10-31 | 2018-10-31 | 云端程序控制流完整性保护方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN109583191A true CN109583191A (zh) | 2019-04-05 |
CN109583191B CN109583191B (zh) | 2021-02-02 |
Family
ID=65921444
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201811290307.4A Active CN109583191B (zh) | 2018-10-31 | 2018-10-31 | 云端程序控制流完整性保护方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109583191B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109960940A (zh) * | 2019-02-18 | 2019-07-02 | 中国科学院软件研究所 | 一种基于日志的嵌入式设备控制流证明方法及系统 |
CN110413345A (zh) * | 2019-07-26 | 2019-11-05 | 云湾科技(嘉兴)有限公司 | 程序验证方法、装置、计算设备及计算机存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105389513A (zh) * | 2015-11-26 | 2016-03-09 | 华为技术有限公司 | 一种虚拟可信平台模块vTPM的可信执行方法和装置 |
CN106845168A (zh) * | 2016-12-20 | 2017-06-13 | 西安电子科技大学 | 一种面向远程计算的控制流隐藏方法 |
CN107194252A (zh) * | 2017-05-09 | 2017-09-22 | 华中科技大学 | 一种完全上下文敏感的程序控制流完整性保护方法和系统 |
CN108701185A (zh) * | 2016-03-29 | 2018-10-23 | 英特尔公司 | 用于用处理器强制安全区域的相互应用隔离的技术 |
-
2018
- 2018-10-31 CN CN201811290307.4A patent/CN109583191B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105389513A (zh) * | 2015-11-26 | 2016-03-09 | 华为技术有限公司 | 一种虚拟可信平台模块vTPM的可信执行方法和装置 |
CN108701185A (zh) * | 2016-03-29 | 2018-10-23 | 英特尔公司 | 用于用处理器强制安全区域的相互应用隔离的技术 |
CN106845168A (zh) * | 2016-12-20 | 2017-06-13 | 西安电子科技大学 | 一种面向远程计算的控制流隐藏方法 |
CN107194252A (zh) * | 2017-05-09 | 2017-09-22 | 华中科技大学 | 一种完全上下文敏感的程序控制流完整性保护方法和系统 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109960940A (zh) * | 2019-02-18 | 2019-07-02 | 中国科学院软件研究所 | 一种基于日志的嵌入式设备控制流证明方法及系统 |
CN109960940B (zh) * | 2019-02-18 | 2021-01-01 | 深圳供电局有限公司 | 一种基于日志的嵌入式设备控制流证明方法及系统 |
CN110413345A (zh) * | 2019-07-26 | 2019-11-05 | 云湾科技(嘉兴)有限公司 | 程序验证方法、装置、计算设备及计算机存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN109583191B (zh) | 2021-02-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Bhat et al. | A survey on various threats and current state of security in android platform | |
US20240098097A1 (en) | Secure over-the-air updates | |
US20200301764A1 (en) | Operating system on a computing system | |
Sufatrio et al. | Securing android: a survey, taxonomy, and challenges | |
US9235705B2 (en) | Secure virtualization system software | |
EP3547189B1 (en) | Method for runtime mitigation of software and firmware code weaknesses | |
JP7397557B2 (ja) | セキュア実行ゲスト所有者環境制御 | |
CN102163266A (zh) | 在主机服务器之间安全地移动虚拟机 | |
CN114402295A (zh) | 安全运行时系统和方法 | |
Kim et al. | Attack detection application with attack tree for mobile system using log analysis | |
Lal et al. | Assuring virtual network function image integrity and host sealing in Telco cloue | |
US10938831B2 (en) | Methods and apparatus to enable services to run in multiple security contexts | |
CN113544674A (zh) | 用于安全接口控件的安全执行客户机所有者控制 | |
Strackx et al. | Salus: Kernel support for secure process compartments | |
CN109583191A (zh) | 云端程序控制流完整性保护方法及装置 | |
Vella et al. | RV-TEE: secure cryptographic protocol execution based on runtime verification | |
Mofrad et al. | SecDATAVIEW: a secure big data workflow management system for heterogeneous computing environments | |
Kazim et al. | Virtualization security in cloud computing | |
Zhu et al. | AppArmor Profile Generator as a Cloud Service. | |
Park et al. | CAFE: A virtualization-based approach to protecting sensitive cloud application logic confidentiality | |
Zhu et al. | Access security policy generation for containers as a cloud service | |
Egners et al. | Hackers in your pocket: A survey of smartphone security across platforms | |
Turhan et al. | The Trust Model For Multi-tenant 5G Telecom Systems Running Virtualized Multi-component Services | |
Abela et al. | Runtime Verification for Trustworthy Computing | |
SK et al. | Securing Docker Containers: Unraveling the Challenges and Solutions |
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 |