CN106295385A - 一种数据保护方法和装置 - Google Patents

一种数据保护方法和装置 Download PDF

Info

Publication number
CN106295385A
CN106295385A CN201510288439.3A CN201510288439A CN106295385A CN 106295385 A CN106295385 A CN 106295385A CN 201510288439 A CN201510288439 A CN 201510288439A CN 106295385 A CN106295385 A CN 106295385A
Authority
CN
China
Prior art keywords
ept
key code
code
critical data
key
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
Application number
CN201510288439.3A
Other languages
English (en)
Other versions
CN106295385B (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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies 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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN201510288439.3A priority Critical patent/CN106295385B/zh
Priority to PCT/CN2016/080006 priority patent/WO2016192483A1/zh
Priority to EP16802406.5A priority patent/EP3287932B1/en
Publication of CN106295385A publication Critical patent/CN106295385A/zh
Priority to US15/820,769 priority patent/US10614238B2/en
Application granted granted Critical
Publication of CN106295385B publication Critical patent/CN106295385B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/629Protecting access to data via a platform, e.g. using keys or access control rules to features or functions of an application
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • G06F12/1009Address translation using page tables, e.g. page table structures
    • 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/52Monitoring 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
    • 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/52Monitoring 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
    • G06F21/54Monitoring 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 by adding security routines or objects to programs
    • 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/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/562Static detection
    • G06F21/563Static detection by source code analysis
    • 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/55Detecting local intrusion or implementing counter-measures
    • G06F21/56Computer malware detection or handling, e.g. anti-virus arrangements
    • G06F21/566Dynamic detection, i.e. detection performed at run-time, e.g. emulation, suspicious activities
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/14Protection against unauthorised use of memory or access to memory
    • G06F12/1416Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights
    • G06F12/145Protection against unauthorised use of memory or access to memory by checking the object accessibility, e.g. type of access defined by the memory independently of subject rights the protection being virtual, e.g. for virtual blocks or segments before a translation mechanism
    • 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/51Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems at application loading time, e.g. accepting, rejecting, starting or inhibiting executable software based on integrity or source reliability
    • 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
    • G06F21/577Assessing vulnerabilities and evaluating computer system security
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/74Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information operating in dual or compartmented mode, i.e. at least one secure mode
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1052Security improvement
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/15Use in a specific computing environment
    • G06F2212/151Emulated environment, e.g. virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • G06F2212/657Virtual address space management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/033Test or assess software
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/03Indexing scheme relating to G06F21/50, monitoring users, programs or devices to maintain the integrity of platforms
    • G06F2221/034Test or assess a computer or a system
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2149Restricted operating environment

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Virology (AREA)
  • Bioethics (AREA)
  • Databases & Information Systems (AREA)
  • Storage Device Security (AREA)

Abstract

本发明公开了一种数据保护方法和装置,用以解决现有技术中存在的无法保证关键数据的安全性的问题。该方法包括:监测应用程序中用于访问关键数据的关键代码是否被调用;当监测到操作系统通过预先配置的第一扩展页表EPT调用所述关键代码时,根据预先设置的与所述关键代码对应的跳板代码,从所述第一EPT切换到预先配置的第二EPT;所述第一EPT中未配置所述关键数据和所述关键代码的内存映射关系,所述第二EPT中配置所述关键数据和所述关键代码的内存映射关系;所述关键数据和所述关键代码分别存储在独立内存区域中;通过所述第二EPT调用并执行所述关键代码后,根据所述跳板代码从所述第二EPT切换回所述第一EPT。

Description

一种数据保护方法和装置
技术领域
本发明涉及数据安全技术领域,尤其涉及一种数据保护方法和装置。
背景技术
2014年4月,被广泛运用于互联网上公钥认证和数据加密的开放式安全套接层协议(Open Secure Sockets Layer,OpenSSL)被发现了一个非常严重的安全漏洞,被称为“心脏出血”(heartbleed)。该漏洞被标识为CVE-2014-0160,产生该漏洞的原因在于其支持的传输层安全(Transport Layer Security,TLS)协议中心跳(heartbeat)扩展的处理过程没有进行边界检测,使得攻击者能够从客户端与服务器端连接的内存泄露中任意读取多达64KB的数据。也就是说,无需任何特权信息或身份验证,攻击者就可能从服务器中读取包括X.509证书的私钥,用户名与密码等在内的关键数据。其中对于服务器私钥的泄露,并非单纯地为服务器相关代码打上安全补丁就能防止其产生的危害,它在未来还有可能让个人和企业陷入危机,需要进行电子商务认证授权机构(CertificateAuthority,CA)证书重新发放、服务商应用进行补丁、用户浏览器升级、密码修改等一系列措施才能降低可能造成的损失。
“心脏出血”漏洞之所以引起如此轩然大波,一个很重要的原因在于OpenSSL是互联网中数据安全传输的基石,而在这之中包括的证书的私钥,用户名与密码等又是这个基石中的关键数据。由此得出结论,云计算平台中一些关键应用程序中的关键数据的泄露,不仅会威胁到云计算平台本身的安全,甚至也有可能让个人计算机(Personal Computer,PC)、手机及其它设备陷入危机,从而造成难以弥补的巨大经济损失。在各种网络攻击,病毒,甚至恶意操作系统,以及零日漏洞(zero-day)等越来越强大的威胁模型下,如何提高云计算平台中关键应用程序的关键数据的安全成为了亟待解决的问题。
现有技术中包括一种解决方法,该方法主要是对关键数据进行加密存储。这是一种常用的方法,对关键数据进行加密能够提高攻击者窃取关键数据的难度,使得攻击者获得的关键数据不可读。
但是,关键数据的加密并不能杜绝关键数据被窃取,由于关键数据是需要被应用程序的正常逻辑所访问的(比如在OpenSSL中需要利用密钥对关键数据进行解密),所以如果对关键数据进行加密,必然也要在某些特定时刻对其进行解密,也就会将明文数据暴露在内存中,同时由于加解密的密钥是存储在内存中的,同样也会暴露在攻击者和恶意操作系统的攻击面中。
发明内容
本发明实施例提供一种数据保护方法和装置,用以解决现有技术中存在的无法保证关键数据的安全性的问题。
本发明实施例采用以下技术方案:
第一方面,提供一种数据保护方法,包括:
监测应用程序中用于访问关键数据的关键代码是否被调用;
在应用程序运行过程中,当监测到操作系统通过预先配置的第一扩展页表EPT调用所述关键代码时,根据预先设置的与所述关键代码对应的跳板代码,从所述第一EPT切换到预先配置的第二EPT;其中,所述第一EPT中未配置所述关键数据和所述关键代码的内存映射关系,所述第二EPT中配置所述关键数据和所述关键代码的内存映射关系;且所述关键数据和所述关键代码分别存储在独立内存区域中;
通过所述第二EPT调用并执行所述关键代码后,根据所述跳板代码,从所述第二EPT切换回所述第一EPT。
结合第一方面,在第一种可能的实现方式中,所述监测应用程序中用于访问关键数据的关键代码是否被调用之前,所述方法还包括:
获取原EPT,所述原EPT中配置有所述应用程序中所有数据的内存映射关系和所有代码的内存映射关系;
确定所述关键数据和用于访问所述关键数据的关键代码;
根据所述关键数据所在的内存区域和所述关键代码所在的内存区域,将所述原EPT中所述关键数据和所述关键代码的内存映射关系删除,并将所述跳板代码的内存映射关系添加到所述原EPT,以获得所述第一EPT。
结合第一方面的第一种可能的实现方式,在第二种可能的实现方式中,所述确定所述关键数据和用于访问所述关键数据的关键代码之后,所述方法还包括:
对所述关键数据所在的内存区域和所述关键代码所在的内存区域进行调整,以使得所述关键数据和所述关键代码分别存储在独立内存区域中;
根据调整后的关键数据和关键代码所在的内存区域,对所述原EPT中所述关键数据和所述关键代码的内存映射关系进行对应调整,将原EPT中的非关键代码的内存映射关系删除,并将所述跳板代码的内存映射关系添加到所述原EPT,以获得所述第二EPT。
结合第一方面的第一种可能的实现方式或第一方面的第二种可能的实现方式,在第三种可能的实现方式中,确定用于访问所述关键数据的关键代码,具体包括:
对所述应用程序中的源代码进行动态分析,确定与所述关键数据相关的第一关键代码集合;
将所述第一关键代码集合中的代码确定为用于访问所述关键数据的关键代码。
结合第一方面的第三种可能的实现方式,在第四种可能的实现方式中,对应用程序中的源代码进行动态分析,确定与所述关键数据相关的第一关键代码集合,具体包括:
对所述关键数据所在的内存区域进行调整,使所述关键数据存储在独立内存区域中;
在运行所述应用程序的过程中执行下述当任意一条指令对所述关键数据所在的内存区域进行访问时,记录该指令对应的关键代码;
根据记录的关键代码,确定第一关键代码集合。
结合第一方面的第一种可能的实现方式、第一方面的第二种可能的实现方式、第一方面的第三种可能的实现方式或第一方面的第四种可能的实现方式,在第五种可能的实现方式中,所述方法还包括:
当通过所述第一EPT调用所述应用程序中的非关键代码导致所述应用程序运行异常时,判断所述非关键代码是否处于第二关键代码集合中,其中,所述第二关键代码集合是通过对应用程序中的源代码进行静态分析后,确定的与所述关键数据相关的代码;
若是,则对确定出的关键代码进行更新,使所述非关键代码更新为关键代码;并
利用确定出的关键数据和更新后的关键代码,重新配置第一EPT和第二EPT。
结合第一方面、第一方面的第一种可能的实现方式、第一方面的第二种可能的实现方式、第一方面的第三种可能的实现方式、第一方面的第四种可能的实现方式或第一方面的第五种可能的实现方式,在第六种可能的实现方式中,根据预先设置的与所述关键代码对应的跳板代码,从所述第一EPT切换到预先配置的第二EPT,具体包括:
根据所述跳板代码调用扩展页表指针替换EPTP switching,以使得所述第一EPT切换到所述第二EPT。
结合第一方面、第一方面的第一种可能的实现方式、第一方面的第二种可能的实现方式、第一方面的第三种可能的实现方式、第一方面的第四种可能的实现方式、第一方面的第五种可能的实现方式或第一方面的第六种可能的实现方式,在第七种可能的实现方式中,根据所述跳板代码,从所述第二EPT切换回所述第一EPT,具体包括:
根据所述跳板函数调用EPTP switching,以使得所述第二EPT切换回所述第一EPT。
结合第一方面、第一方面的第一种可能的实现方式、第一方面的第二种可能的实现方式、第一方面的第三种可能的实现方式、第一方面的第四种可能的实现方式、第一方面的第五种可能的实现方式、第一方面的第六种可能的实现方式或第一方面的第七种可能的实现方式,在第八种可能的实现方式中,通过所述第二EPT调用并执行所述关键代码,具体包括:
通过所述第二EPT调用所述关键代码,并对所述关键代码进行形式化验证;
当对所述关键代码进行形式化验证通过后,执行所述关键代码。
第二方面,提供一种数据保护的装置,包括:
监测单元,用于监测应用程序中用于访问关键数据的关键代码是否被调用;
第一切换单元,用于当所述监测单元监测到操作系统通过预先配置的第一扩展页表EPT调用所述关键代码时,根据预先设置的与所述关键代码对应的跳板代码,从所述第一EPT切换到预先配置的第二EPT;其中,所述第一EPT中未配置所述关键数据和所述关键代码的内存映射关系,所述第二EPT中配置所述关键数据和所述关键代码的内存映射关系;且所述关键数据和所述关键代码分别存储在独立内存区域中;
第二切换单元,用于通过所述第一切换单元切换到的第二EPT调用并执行所述关键代码后,根据所述跳板代码,从所述第二EPT切换回所述第一EPT。
结合第二方面,在第一种可能的实现方式中,所述装置还包括:原EPT获取单元、关键数据和关键代码确定单元和第一EPT获得单元,其中:
所述原EPT获取单元,用于获取原EPT,所述原EPT中配置有所述应用程序中所有数据的内存映射关系和所有代码的内存映射关系;
所述关键数据和关键代码确定单元,用于确定所述关键数据和用于访问所述关键数据的关键代码;
所述第一EPT获得单元,用于根据所述关键数据和关键代码确定单元确定的关键数据所在的内存区域和所述关键数据和关键代码确定单元确定的关键代码所在的内存区域,将所述原EPT获取单元获取的原EPT中所述关键数据和所述关键代码的内存映射关系删除,并将所述跳板代码的内存映射关系添加到所述原EPT,以获得所述第一EPT。
结合第二方面的第一种可能的实现方式,在第二种可能的实现方式中,所述装置还包括:
第二EPT获得单元,用于在所述第一EPT获得单元确定所述关键数据和用于访问所述关键数据的关键代码之后,对所述关键数据所在的内存区域和所述关键代码所在的内存区域进行调整,以使得所述关键数据和所述关键代码分别存储在独立内存区域中;根据调整后的关键数据和关键代码所在的内存区域,对所述原EPT获取单元获取的原EPT中所述关键数据和所述关键代码的内存映射关系进行对应调整,将原EPT中的非关键代码的内存映射关系删除,并将所述跳板代码的内存映射关系添加到所述原EPT,以获得所述第二EPT。
结合第二方面的第一种可能的实现方式或第二方面的第二种可能的实现方式,在第三种可能的实现方式中,所述关键数据和关键代码确定单元,具体包括:
动态分析模块,用于对所述应用程序中的源代码进行动态分析,确定与所述关键数据相关的第一关键代码集合;
关键代码确定模块,用于将所述动态分析模块确定的第一关键代码集合中的代码确定为用于访问所述关键数据的关键代码。
结合第二方面的第三种可能的实现方式,在第四种可能的实现方式中,所述动态分析模块,具体用于:
对所述关键数据所在的内存区域进行调整,使所述关键数据存储在独立内存区域中;当任意一条指令对所述关键数据所在的内存区域进行访问时,记录该指令对应的关键代码;根据记录的关键代码,确定第一关键代码集合。
结合第二方面的第一种可能的实现方式、第二方面的第二种可能的实现方式、第二方面的第三种可能的实现方式或第二方面的第四种可能的实现方式,在第五种可能的实现方式中,所述装置还包括关键代码更新单元和重新配置单元,其中:
所述关键代码更新单元,用于当通过所述第一EPT调用所述应用程序中的非关键代码导致所述应用程序运行异常时,判断所述非关键代码是否处于第二关键代码集合中,其中,所述第二关键代码集合是通过对应用程序中的源代码进行静态分析后,确定的与所述关键数据相关的代码;若是,则对确定出的关键代码进行更新,使所述非关键代码更新为关键代码;
所述重新配置单元,用于利用所述关键数据和所述关键代码更新单元更新后的关键代码,重新配置第一EPT和第二EPT。
结合第二方面、第二方面的第一种可能的实现方式、第二方面的第二种可能的实现方式、第二方面的第三种可能的实现方式、第二方面的第四种可能的实现方式或第二方面的第五种可能的实现方式,在第六种可能的实现方式中,所述第一切换单元,具体用于:
根据所述跳板代码调用扩展页表指针替换EPTP switching,以使得所述第一EPT切换到所述第二EPT。
结合第二方面、第二方面的第一种可能的实现方式、第二方面的第二种可能的实现方式、第二方面的第三种可能的实现方式、第二方面的第四种可能的实现方式、第二方面的第五种可能的实现方式或第二方面的第六种可能的实现方式,在第七种可能的实现方式中,所述第二切换单元,具体用于:
根据所述跳板函数调用EPTP switching,以使得所述第二EPT切换回所述第一EPT。
结合第二方面、第二方面的第一种可能的实现方式、第二方面的第二种可能的实现方式、第二方面的第三种可能的实现方式、第二方面的第四种可能的实现方式、第二方面的第五种可能的实现方式、第二方面的第六种可能的实现方式或第二方面的第七种可能的实现方式,在第八种可能的实现方式中,所述第二切换单元,具体包括:
形式化验证模块,用于通过所述第二EPT调用所述关键代码,并对所述关键代码进行形式化验证;
关键代码执行模块,用于当所述形式化验证模块对所述关键代码进行形式化验证通过后,执行所述关键代码。
本发明实施例的有益效果如下:
本发明实施例中,通过监测应用程序中用于访问关键数据的关键代码是否被调用,当监测到操作系统通过预先配置的第一EPT调用关键代码时,根据预先设置的与关键代码对应的跳板代码,从第一EPT切换到预先配置的第二EPT,当通过第二EPT调用并执行关键代码后,再根据跳板代码,从第二EPT切换回第一EPT。由于第一EPT中未配置关键数据和关键代码的内存映射关系,而第二EPT中配置了关键数据和关键代码的内存映射关系,因此只有通过第二EPT才能访问关键数据,又由于关键数据和关键代码分别存储在独立内存区域中,即关键数据和关键代码与非关键数据和非关键代码是隔离存储的,应用程序中的漏洞没有途径直接通过第二EPT访问关键数据;同时,只有根据预先设置的与关键代码对应的跳板代码才能从第一EPT切换到第二EPT,因此恶意操作程序也无法通过代码植入攻击来切换第二EPT。从而最大限度的保护了应用程序中的关键数据,提高了关键数据的安全性。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。本发明的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本发明的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1为关键应用程序执行环境示意图;
图2为本发明实施例提供的一种数据保护方法的实现流程图;
图3为预处理阶段中的混合分析机制以及自动化重构示意图;
图4为动态分析流程示意图;
图5为VMM配置阶段中基于关键数据和关键代码的EPT构建图;
图6为应用程序运行阶段中的应用程序执行关键代码流程图;
图7为本发明实施例提供的一种数据保护装置的结构示意图;
图8为本发明实施例提供的一种数据保护装置的硬件结构示意图。
具体实施方式
目前在保护关键数据的诸多技术中,对关键数据进行加密存储是使用最为广泛的技术。通过对关键数据进行加密存储,可以在很大程度上提高数据的安全性,增加攻击者获得隐私数据的难度。但是这种方法具有局限性:单纯的加密存储并不能从根本上解决关键数据的安全问题,由于关键数据同样需要在程序中被使用,加密关键数据的秘钥也会被保存在内存中,暴露在攻击者的面前,同时,如果对关键数据访问较多的话,加解密操作也会造成较大的性能损失。另外,以上方法的威胁模型中都没有考虑恶意操作系统,如何在恶意操作系统的威胁模型下防止其对应用程序中关键数据的窃取也是一个值得探究的问题。
在云计算平台中,很多企业所提供的服务是部署在虚拟化环境下的,比如市场上出现的弹性云计算平台(EC2:Elastic Cloud Computing)。在这种环境下,企业用户付费租赁该弹性云计算平台提供的虚拟机进行运算,并对外提供服务,按使用时间、网络流量和存储大小进行付费,可大大降低服务器搭建和维护的费用。除此之外,一些大公司和机构也采用虚拟化的方式来管理计算机,比如采用桌面虚拟化的管理方式,每个员工均分配一台运行在服务器上的虚拟机,通过远程桌面方式从客户端连接。在这些场景中,虚拟机运行于虚拟机监控器(Virtual Machine Monitor,VMM)之上,由VMM控制其计算资源的分配。同时,VMM的运行权限也高于虚拟机,这为使用VMM防护恶意操作系统,增强虚拟机中运行的应用程序关键代码和数据安全提供了机会。
假设某应用程序A运行在一个可能恶意的操作系统上,该操作系统运行在某云计算平台服务商提供的虚拟化环境中,如图1所示。假设应用程序A中有一段关键数据需要保护,该关键数据可能会被传递到不同的内存区域,组成数据集合D,该数据集合D会被代码集合C访问,那么,在网络攻击,零日漏洞,恶意操作系统的威胁模型下,数据集合D可能会被暴露在以下的攻击面中:
1、应用程序A存在漏洞,攻击者可以通过诸如缓冲读溢出等攻击方法从网络窃取和应用程序A处于同个内存区域的数据,其中也可能包括数据集合D;
2、操作系统中存在恶意模块,可以直接读取应用程序A的内存区域,窃取数据集合D;
3、攻击者通过网络攻击或者操作系统中的模块,向应用程序A的内存区域注入恶意代码,主动读取并泄露数据集合D。
这些攻击之所以成为可能,是因为关键数据和整个应用程序的软件栈处于同一个地址空间,该应用程序中任意一个漏洞都可能对关键数据的安全造成威胁。另外,操作系统内核可以映射整个用户态的内存,操作系统过于庞大的可信计算基使得关键数据被暴露在了更大的威胁模型上。
基于上述存在的问题,本发明实施例提供了一种数据保护方案。该技术方案中,通过监测应用程序中用于访问关键数据的关键代码是否被调用,当监测到操作系统通过预先配置的第一EPT调用关键代码时,根据预先设置的与关键代码对应的跳板代码,从第一EPT切换到预先配置的第二EPT,当通过第二EPT调用并执行关键代码后,再根据跳板代码,从第二EPT切换回第一EPT。由于第一EPT中未配置关键数据和关键代码的内存映射关系,而第二EPT中配置了关键数据和关键代码的内存映射关系,因此只有通过第二EPT才能访问关键数据,又由于关键数据和关键代码分别存储在独立内存区域中,即关键数据和关键代码与非关键数据和非关键代码是隔离存储的,应用程序中的漏洞没有途径直接通过第二EPT访问关键数据;同时,只有根据预先设置的与关键代码对应的跳板代码才能从第一EPT切换到第二EPT,因此恶意操作程序也无法通过代码植入攻击来切换第二EPT。从而最大限度的保护了应用程序中的关键数据,提高了关键数据的安全性。
以下结合说明书附图对本发明的实施例进行说明,应当理解,此处所描述的实施例仅用于说明和解释本发明,并不用于限制本发明。并且在不冲突的情况下,本发明中的实施例及实施例的特征可以互相结合。
本发明实施例提供了一种数据保护方法,如图2所示,为该方法的实现流程图,具体包括下述步骤:
步骤21,监测应用程序中用于访问关键数据的关键代码是否被调用。
步骤22,当监测到操作系统通过预先配置的第一扩展页表EPT调用关键代码时,根据预先设置的与关键代码对应的跳板代码,从第一EPT切换到预先配置的第二EPT。
具体的,本发明实施例中可以根据预先设置的与关键代码对应的跳板代码,调用扩展页表指针替换(Extended Page Table Pointer Switching,EPTPSwitching),以使得第一EPT切换到第二EPT。
步骤23,通过第二EPT调用并执行关键代码后,根据跳板代码,从第二EPT切换回第一EPT。
具体的,通过第二EPT调用并执行关键代码后,根据预先设置的与关键代码对应的跳板代码,调用EPTP switching,以使得第二EPT切换回第一EPT。
其中,第一EPT中未配置关键数据和关键代码的内存映射关系,第二EPT中配置关键数据和关键代码的内存映射关系,且关键数据和关键代码分别存储在独立内存区域中;
本发明实施例中,上述涉及到的第一EPT和第二EPT可以是在应用程序运行之前预先进行配置的。
因此,在步骤21之前该方法还可以包括:
获取原EPT,该原EPT中配置有应用程序中所有数据的内存映射关系和所有代码的内存映射关系;
确定应用程序中的关键数据和关键代码;
根据确定出的关键数据所在的内存区域和确定出的关键代码所在的内存区域,将原EPT中关键数据和关键代码的内存映射关系删除,并将跳板代码的内存映射关系添加到原EPT,以获得第一EPT。
可选的,确定关键数据和关键代码之后,该方法还可以包括:
对确定出的关键数据所在的内存区域和确定出的关键代码所在的内存区域进行调整,以使得关键数据和关键代码分别存储在独立内存区域中;
根据调整后的关键数据和关键代码所在的内存区域,对原EPT中关键数据和关键代码的内存映射关系进行相应调整,将原EPT中的非关键代码的内存映射关系删除,并将跳板代码的内存映射关系添加到原EPT中,以获得第二EPT。
其中,为了确定出应用程序中的关键数据,可以根据预先存储在关键数据中的标识来实现。
为了确定出应用程序中用于访问关键数据的关键代码,可以采用静态分析方法或动态分析方法来实现。
本发明实施例中提出了一种动态分析方法,具体实现过程如下:
对应用程序中的源代码进行动态分析,确定与关键数据相关的第一关键代码集合,将第一关键代码集合中的代码确定为用于访问关键数据的关键代码。
其中,对应用程序中的源代码进行动态分析,确定与关键数据相关的第一关键代码集合的具体过程如下:
首先,对关键数据所在的内存区域进行调整,使关键数据存储在独立内存区域中。
其中,将关键数据所在的独立内存区域设置为不可读写状态。
然后,当任意一条指令对关键数据所在的内存区域进行访问时,记录该指令对应的关键代码。
由于关键数据所在的独立内存区域被设置为不可读写状态,因此当任意一条指令对关键数据所在的内存区域进行访问时,会发生内存访问错误,从而触发记录该指令对应的关键代码的操作。
另外,记录该指令对应的关键代码之后,将关键数据所在的独立内存区域再设置为可读写状态,使得该程序可以继续执行下去,否则会一直陷入内存访问错误;同时在该指令的下一条指令上设置调试中断点,使得该指令的下一条指令执行时,设置的调试中断点触发将关键数据所在的独立内存区域重新设置为不可读写状态的操作,从而使得后续对关键数据的访问能够继续进行拦截。
最后,根据记录的关键代码,确定第一关键代码集合。
采用静态分析方法确定出的关键代码可以达到较高的完整性,但是由于其局限性,并没有办法得到很好的精确性,分析出来的相关代码很多其实并非真正相关,因此会造成最后的结果得出较大的安全可信基,使得确定出的关键代码不完全精确,同时在应用程序的运行过程中也会产生较大的性能损失。而采用上述动态分析方法确定出的关键代码可以达到较高的精确性,保证其分析出来的关键代码和关键数据是确切相关的,但是由于其局限性,无法保证百分之百的代码覆盖,使得一些和关键数据相关的代码没能被分析出来,从而在应用程序运行过程中造成假阳性错误。
因此,为了使确定出的关键代码具有较高的准确性和完整性,本发明实施例中还提出了一种混合分析机制,即静态分析和动态分析相结合的方式。
在上述采用动态分析方法确定关键代码的基础上,本发明实施例还可以包括:
当通过第一EPT调用应用程序中的非关键代码导致应用程序运行异常时,判断该非关键代码是否处于第二关键代码集合中;其中,该第二关键代码集合是通过对应用程序中的源代码进行静态分析后,确定的与关键数据相关的代码;
如果判断出该非关键代码处于第二关键代码集合中,则对确定出的关键代码进行更新,使该非关键代码更新为关键代码;并利用确定出的关键数据和更新后的关键代码,重新配置第一EPT和第二EPT。
上述混合分析机制,首先利用动态分析得到精确的但是并不完备的第一关键代码集合,同时通过静态分析得到完备的但是并不精确的第二关键代码集合。在应用程序的运行过程中,采用动态分析得到的第一关键代码集合中的代码作为关键代码,如果在运行过程中出现假阳性错误,即运行发生异常时,即一些非关键代码访问关键数据,而该非关键代码又属于静态分析得到的第二关键代码集合中时,将该非关键代码加入第一关键代码集合。由于在大部分情况下对关键数据的访问模式比较固定,所以通过动态分析得到的结果在大部分情况下都是完整的,假阳性错误这种特殊情况出现情况较小,所以对整体结果不会造成什么影响。
为了进一步保证关键数据的安全性,本发明实施例在执行步骤23时,可以具体包括:
通过第二EPT调用关键代码,并对该关键代码进行形式化验证,只有当对该关键代码进行形式化验证通过后,才执行该关键代码。
本发明实施例中,由于第一EPT中未配置关键数据和关键代码的内存映射关系,而第二EPT中配置了关键数据和关键代码的内存映射关系,因此只有通过第二EPT才能访问关键数据,又由于关键数据和关键代码分别存储在独立内存区域中,即关键数据和关键代码与非关键数据和非关键代码是隔离存储的,应用程序中的漏洞没有途径直接通过第二EPT访问关键数据;同时,只有根据预先设置的与关键代码对应的跳板代码才能从第一EPT切换到第二EPT,因此恶意操作程序也无法通过代码植入攻击来切换第二EPT。从而最大限度的保护了应用程序中的关键数据,提高了关键数据的安全性。
下面对本发明实施例提供的上述数据保护方法进行详细介绍。
首先对虚拟化技术中的EPTP Switching特性进行介绍。
在虚拟化环境中,内存虚拟化是通过两级页表映射实现的。客户虚拟机中每个客户机虚拟地址(Guest Virtual Address,GVA)首先会被映射到一个客户机物理地址(Guest Physical Address,GPA),之后在VMM中,每个GPA又会被映射为一个宿主机物理地址(Host Physical Address,HPA)。也就是说在VMM中会维护一个页表,被称为扩展页表(Extended Page Table,EPT),该页表会对所有客户虚拟机中的物理地址进行映射,只有存在于该页表中的映射的客户机地址才会被反映在真实的物理内存中。该页表通过一个硬件寄存器进行访问,该寄存器被称为EPT Pointer(EPTP)。理论上完全可以通过操作EPT(即改变GPA到HPA之间的映射)来操作客户机中的内存分配,但是在正常模式下,修改EPT中内存映射关系都是由VMM进行操作的,在虚拟机中切换不同的EPTP会引起虚拟机下陷,造成比较大的性能开销。
本发明实施例中利用了EPTP switching的特性,在虚拟机中对EPT进行高效的切换,从而达到内存隔离的目的。EPTP switching的具体特性如下所示:
EPTP switching:该函数的功能是在虚拟机不下陷到VMM的的情况下改变EPT Pointer的值。首先可以在VMM中创建一系列EPT,以及它们各自对应的EPTP,组成EPTP数组,然后将该EPTP数组的首地址填到数据结构VMCS中的一个特定的域EPTP_LIST_ADDR中。在客户虚拟机的non-root模式下,调用相关指令,并将寄存器设为相应的值,来实现EPTP switching的操作,在虚拟机不下陷的情况下高效地将当前的EPTP切换到之前配置好存储在EPTP_LIST_ADDR中的某个EPTP。
本发明实施例利用了EPTP switching的特性,通过合理地操作和配置EPT,将关键数据及其关键代码进行巧妙的隔离和组合,根据不同安全等级的执行环境向上层提供不同的内存分布示图,具有以下三个特点:
首先,它能够防止应用程序中的漏洞泄露关键数据;其次,它能够防止恶意操作系统服务恶意读取和泄露关键数据;再次,由于不需要下陷到虚拟机,该方案能够高效地进行关键数据的隔离和防护。
本发明实施例将整个过程分成了三个阶段:
阶段一,即预处理阶段,通过混合分析机制得到应用程序中的关键数据及其关键代码;
阶段二,即VMM配置阶段,为这些关键数据和关键代码构造一个新的EPT,将它们与非关键数据和非关键代码进行隔离;
阶段三,即应用程序运行阶段,在合适的时间点触发EPTP switching的调用,通过更换EPTP来有效隔离关键数据和关键代码。
本发明实施例的具体思路如下所示:
如图3所示,为预处理阶段中的混合分析机制以及自动化重构示意图。
首先,对应用程序中的源代码进行静态分析和动态分析,确定关键数据及用于访问关键数据的关键代码;
静态分析方法:
本发明实施例介绍一种静态污点分析(static taint analysis)方法,假设关键数据的集合为{s},指向关键数据指针的集合为{sref}。本发明实施例中的目标是找到所有可能解引用关键数据指针的指令集合。
首先定义一系列污点传递规则:
1、对于指针赋值y=x,如果赋值语句的右值x属于{sref},则将左值y也加入{sref};
2、对于函数调用f(y1,..yi,..yn),如果函数的实际参数yi属于{sref},则将其形式参数argi也加入{sref};
3、对于函数调用返回值y=f(y1,..yi,..yn),如果函数的返回值retf属于{sref},则将返回值所赋值的变量y也加入{sref};
4、对于关键数据的解引用指令y=dereference(x),x属于{sref},则将解引用得到的变量y加入{s},将其指针yref加入{sref},并记录该解引用的指令。
在上述规则定义下,根据多变(Polyvariant)分析理论,函数会被迭代多次,{sref}和{s}会持续变化,直到{sref}和{s}达到一个稳定点(即集合元素不再改变),静态污点分析结束。
通过该分析,就可以得到关键数据的数据流,以及访问关键数据的相关指令,从而得到相关代码,它们组成了可能的第一关键代码集合{f1}。
动态分析方法:
如图4所示,为动态分析流程示意图,在本发明实施例中我们采用了内存保护(mprotect)和调试异常(debug exception)技术来实现。具体步骤如下所示:
1、首先将关键数据内存的分配函数换成安全分配函数(secure_malloc),该函数会将关键数据分配到一块被保护起来的内存区域中,假设该内存区域的地址为paddr;
2、同时注册一个内存访问段错误(segmentation fault)的段错误处理函数Segfault_Handler;
3、任意一个指令addr(i)对该关键数据所在的内存进行访问,都会触发内存访问段错误,进入段错误处理函数Segfault_Handler;
4、该段错误处理函数会记录触发关键数据访问的指令,并将其转换为关键代码,同时调用内核模块SeCage_Module,在该指令的下一条指令中设置调试中断点(breakpoint),并且将关键数据内存设为可读写,使得该程序可以继续执行下去,否则会一直陷入段错误处理函数;
5、在执行下一条指令addr(i+1)时,调试中断点会触发调试异常处理函数(DB_Exception_Handler),该函数会重新将关键数据内存设为不可读写,从而使得接下来对关键数据的访问能够继续进行拦截;
按照上述流程执行,直到应用程序运行结束,就能够得出一个访问关键数据的第二关键函数集合{f2}。
其中,本发明实施例在预处理阶段首先采用动态分析得出的结果{f2}作为应用程序运行时的关键代码集合,将静态分析得出的结果{f1}作为参考数据,只有当运行时发生异常,即属于{f1}但是不属于{f2}的函数访问了关键数据的时候,才将相应的函数加入关键代码集合中。这样既可以限制关键代码集合的大小,减小性能损失,同时也保证了分析结果的完整性。
在确定关键数据及用于访问关键数据的关键代码之后,然后利用GCC(GNU Compiler Collection,GNU编译器套件)提供的段属性(section attribute)属性,将确定出的关键代码存储在相同区域的内存中,同时替换关键数据的malloc函数,使得关键数据被分配在同一块内存区域。另外,还需要将关键代码的调用进行替换。
如图5所示,为VMM配置阶段中基于关键数据和关键代码的EPT构建图。其中,基于上述得到的关键数据及其关键代码,在VMM中构建新的EPT(以下称为EPT1),并修改原EPT(以下称为EPT0)中相关GPA到HPA的映射关系。
首先将应用程序的内存分为两部分,数据区域和代码区域,并对它们进行区分对待:
对于数据区域,EPT0中去除关键数据的内存映射关系,而在EPT1中保留所有数据的内存映射关系;
对于代码区域,EPT0中去除关键代码的内存映射关系,保留非关键代码的内存映射关系,而EPT1中去除非关键代码的内存映射关系,保留关键代码的内存映射关系;
另外还需要构建一块内存区域,用于存放一段特殊的代码(被称为跳板代码),该代码被用在两种状态的相互切换,EPT0和EPT1都对该内存映射关系进行维护。
如图6所示,为应用程序运行阶段中的应用程序执行关键代码流程图。
在客户虚拟机应用程序运行阶段,默认执行EPT0,当需要执行关键代码的调用时,由于在上述预处理阶段已经将其替换掉,因此执行流会被重定向到跳板代码。
在跳板代码中,调用EPTP switching,传入相关参数到EPTP,在不下陷到虚拟机的情况下将EPT0替换成EPT1;
通过EPT1调用并执行关键代码,访问关键数据;
当关键代码执行完后返回到跳板代码,再次调用EPTP switching,将EPT1替换成EPT0。
需要说明的是,本发明实施例中需要保证被映射到EPT1中的关键代码是安全的,没有漏洞的。由于这些关键代码的总量很小,也就意味着可信计算基小,所以可以对其进行形式化验证。另外在初始化阶段,还需要保证整个环境是安全的,我们得到的数据是可信的,这也是可以实现的,因为这是一次性的工作,我们可以对得到的数据进行验证。同时,我们也需要对跳板代码进行写保护,防止恶意操作系统对其进行修改和实施代码植入攻击。
另外,上述关键代码和跳板代码均可以以函数的形式表现。
经过上述设计,便可以达到最初的目的,即保护应用程序的关键数据,防止应用程序漏洞和恶意操作系统对其进行修改和泄露。由于关键数据和关键代码和应用程序中的非关键数据和非关键代码是隔离存储的,所以应用程序中的漏洞没有途径通过EPT1对关键代码进行访问;另外,由于关键数据及其关键代码的真实物理映射是由VMM进行维护的,恶意操作系统除非不执行该段代码,否则没有办法通过EPT1读取关键数据;同时,由于在EPT1中,只有跳板代码能够调用EPTP switching(否则由于在EPT1中非关键代码的映射是被去除的,在其它代码点调用EPTP switching会造成内存访问失败),因此恶意操作系统也无法通过代码植入攻击来替换EPT1,从而访问关键数据。
为了更好的理解本发明实施例,下面以保护OpenSSL中的关键数据——私钥为例,对本发明实施例的具体实施过程进行说明。
在OpenSSL中,私钥被存储在数据结构struct rsa_st的几个大数结构(BIGNUM)中,这些大数中最重要的三个是p、q、d,这些大数的泄露将会使得攻击者能够重新构建私钥。另外这些大数会在加密和解密过程中被传递到其它内存区域中,在OpenSSL的加密库中会有几个函数对这些数据进行访问。Heartbleed攻击如果利用内存泄露的漏洞读取到这些大数则会造成私钥的泄露;另外,如果操作系统是恶意的,也能通过读取相关内存区域来泄露秘钥。
使用本发明实施例提出的方法来保护OpenSSL中私钥的安全,具体过程如下:
步骤1,对OpenSSL的源代码进行静态分析,通过预先标记好的关键数据大数p、q、d确定从它们流出去的其它内存区域,得到关键数据集合D,以及访问关键数据集合D的函数集合C。
步骤2,利用GCC的编译选项修改源代码中的函数集合C的定义,将它们统一分配在一个独立内存区域中;并将对这些函数的调用替换,改成对跳板函数的调用。
步骤3,将关键数据集合D中相应的OPENSSL_malloc替换成定义的secure_malloc,在运行时将关键数据分配在一块独立内存区域中。
步骤4,对VMM进行配置,首先开启处理器对EPTP switching的支持,然后根据步骤2和步骤3得到的数据区域和代码区域构建新的EPT(EPT1),修改原EPT(EPT0)中相应数据和代码区域的内存映射关系,将EPT0和EPT1存放在EPT数组中,并将该数组的首地址写入VMCS中的EPTP_LIST_ADDR域中。
步骤5,客户虚拟机中的应用程序默认运行在EPT0中,由于在EPT0中并没有关键数据及其相关函数的内存映射关系,所以在这个状态下应用程序无法访问关键数据。
步骤6,当应用程序需要调用相关函数时,会进入预先定义好的跳板函数。该跳板函数会执行EPTP switching,将当前EPT换成EPT1,然后调用EPT1中的相关函数,并在这些相关函数中访问私钥中的大数,直到相关函数返回,进入跳板函数,执行EPTP switching,将EPT1换回成EPT0,继续在默认环境下执行。
如果在EPT1里的相关函数中调用到了其它库函数或者系统调用,则进入跳板函数,将EPT换成EPT0,在默认环境下执行库函数和系统调用,直到它们返回后再继续执行EPT1中的相关函数。
基于同一发明构思,本发明实施例中还提供了一种数据保护装置及设备,由于上述装置、设备解决问题的原理与数据保护方法相似,因此上述装置、设备的实施可以参见方法的实施,重复之处不再赘述。
如图7所示,为本发明实施例提供的数据保护装置的结构示意图,包括:
监测单元71,用于监测应用程序中用于访问关键数据的关键代码是否被调用;
第一切换单元72,用于当所述监测单元71监测到操作系统通过预先配置的第一扩展页表EPT调用所述关键代码时,根据预先设置的与所述关键代码对应的跳板代码,从所述第一EPT切换到预先配置的第二EPT;其中,所述第一EPT中未配置所述关键数据和所述关键代码的内存映射关系,所述第二EPT中配置所述关键数据和所述关键代码的内存映射关系;且所述关键数据和所述关键代码分别存储在独立内存区域中;
第二切换单元73,用于通过所述第一切换单元72切换到的第二EPT调用并执行所述关键代码后,根据所述跳板代码,从所述第二EPT切换回所述第一EPT。
可选的,所述装置还包括:原EPT获取单元74、关键数据和关键代码确定单元75和第一EPT获得单元76,其中:
所述原EPT获取单元74,用于获取原EPT,所述原EPT中配置有所述应用程序中所有数据的内存映射关系和所有代码的内存映射关系;
所述关键数据和关键代码确定单元75,用于确定所述关键数据和用于访问所述关键数据的关键代码;
所述第一EPT获得单元76,用于根据所述关键数据和关键代码确定单元75确定的关键数据所在的内存区域和所述关键数据和关键代码确定单元75确定的关键代码所在的内存区域,将所述原EPT获取单元74获取的原EPT中所述关键数据和所述关键代码的内存映射关系删除,并将所述跳板代码的内存映射关系添加到所述原EPT,以获得所述第一EPT。
可选的,所述装置还包括:
第二EPT获得单元77,用于在所述关键数据和关键代码确定单元75确定所述关键数据和用于访问所述关键数据的关键代码之后,对所述关键数据所在的内存区域和所述关键代码所在的内存区域进行调整,以使得所述关键数据和所述关键代码分别存储在独立内存区域中;根据调整后的关键数据和关键代码所在的内存区域,对所述原EPT获取单元74获取的原EPT中所述关键数据和所述关键代码的内存映射关系进行对应调整,将原EPT中的非关键代码的内存映射关系删除,并将所述跳板代码的内存映射关系添加到所述原EPT,以获得所述第二EPT。
可选的,所述关键数据和关键代码确定单元75,具体包括:
动态分析模块751,用于对所述应用程序中的源代码进行动态分析,确定与所述关键数据相关的第一关键代码集合;
关键代码确定模块752,用于将所述动态分析模块751确定的第一关键代码集合中的代码确定为用于访问所述关键数据的关键代码。
可选的,所述动态分析模块751,具体用于:
对所述关键数据所在的内存区域进行调整,使所述关键数据存储在独立内存区域中;其中,所述关键数据所在的独立内存区域设置为不可读写状态;当任意一条指令对所述关键数据所在的内存区域进行访问时,记录该指令对应的关键代码;将所述关键数据所在的独立内存区域设置为可读写状态;并在该指令的下一条指令上设置调试中断点,使得该指令的下一条指令执行时,所述调试中断点触发将所述关键数据所在的独立内存区域重新设置为不可读写状态的操作;根据记录的关键代码,确定第一关键代码集合。
可选的,所述装置还包括:关键代码更新单元78和重新配置单元79,其中:
所述关键代码更新单元78,用于当通过所述第一EPT调用所述应用程序中的非关键代码导致所述应用程序运行异常时,判断所述非关键代码是否处于第二关键代码集合中,其中,所述第二关键代码集合是通过对应用程序中的源代码进行静态分析后,确定的与所述关键数据相关的代码;若是,则对确定出的关键代码进行更新,使所述非关键代码更新为关键代码;
所述重新配置单元79,用于利用所述关键数据和所述关键代码更新单元78更新后的关键代码,重新配置第一EPT和第二EPT。
可选的,所述第一切换单元72,具体用于:
根据所述跳板代码调用扩展页表指针替换EPTP switching,以使得所述第一EPT切换到所述第二EPT。
可选的,所述第二切换单元73,具体用于:
根据所述跳板函数调用EPTP switching,以使得所述第二EPT切换回所述第一EPT。
可选的,所述第二切换单元73,具体包括:
形式化验证模块731,用于通过所述第二EPT调用所述关键代码,并对所述关键代码进行形式化验证;
关键代码执行模块732,用于当所述形式化验证模块731对所述关键代码进行形式化验证通过后,执行所述关键代码。
为了描述的方便,以上各部分按照功能划分为各模块(或单元)分别描述。当然,在实施本发明时可以把各模块(或单元)的功能在同一个或多个软件或硬件中实现。
具体实施时,上述数据保护装置可以设置在客户虚拟机中。
相应的,本发明实施例还提供了一种数据保护装置,如图8所示,为该装置的硬件结构示意图,所述装置具备执行上述本发明实施例的功能,所述装置可以采用通用计算机系统结构,计算机系统可具体是基于处理器的计算机。所述处理包括至少一个处理器81,通信总线82,存储器83以及至少一个通信接口84。
处理器81可以是一个通用中央处理器(CPU),微处理器,特定应用集成电路(application-specific integrated circuit,ASIC),或一个或多个用于控制本发明方案程序执行的集成电路。
其中,所述通信总线82可包括一通路,在上述组件之间传送信息。所述通信接口84,使用任何收发器一类的装置,用于与其他设备或通信网络通信,如以太网,无线接入网(RAN),无线局域网(Wireless Local Area Networks,WLAN)等。
计算机系统包括一个或多个存储器83,可以是只读存储器(read-onlymemory,ROM)或可存储静态信息和指令的其他类型的静态存储设备,随机存取存储器(random access memory,RAM)或者可存储信息和指令的其他类型的动态存储设备,也可以是电可擦可编程只读存储器(Electrically ErasableProgrammable Read-Only Memory,EEPROM)、只读光盘(Compact DiscRead-Only Memory,CD-ROM)或其他光盘存储、光碟存储(包括压缩光碟、激光碟、光碟、数字通用光碟、蓝光光碟等)、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质,但不限于此。这些存储器通过通信总线82与处理器81相连接。
其中,所述存储器83用于存储执行本发明方案的应用程序代码,执行本发明方案的应用程序代码保存在存储器中,并由处理器81来控制执行。所述处理器81用于执行所述存储器83中存储的应用程序。
当上述应用程序被所述处理器81执行时,实现如下功能:
监测应用程序中用于访问关键数据的关键代码是否被调用;
在应用程序运行过程中,当监测到操作系统通过预先配置的第一扩展页表EPT调用所述关键代码时,根据预先设置的与所述关键代码对应的跳板代码,从所述第一EPT切换到预先配置的第二EPT;其中,所述第一EPT中未配置所述关键数据和所述关键代码的内存映射关系,所述第二EPT中配置所述关键数据和所述关键代码的内存映射关系;且所述关键数据和所述关键代码分别存储在独立内存区域中;
通过所述第二EPT调用并执行所述关键代码后,根据所述跳板代码,从所述第二EPT切换回所述第一EPT。
在一种可能的实施方式中,所述监测应用程序中用于访问关键数据的关键代码是否被调用之前,还包括:
获取原EPT,所述原EPT中配置有所述应用程序中所有数据的内存映射关系和所有代码的内存映射关系;
确定所述关键数据和用于访问所述关键数据的关键代码;
根据所述关键数据所在的内存区域和所述关键代码所在的内存区域,将所述原EPT中所述关键数据和所述关键代码的内存映射关系删除,并将所述跳板代码的内存映射关系添加到所述原EPT,以获得所述第一EPT。
在另一种可能的实施方式中,所述确定所述关键数据和用于访问所述关键数据的关键代码之后,还包括:
对所述关键数据所在的内存区域和所述关键代码所在的内存区域进行调整,以使得所述关键数据和所述关键代码分别存储在独立内存区域中;
根据调整后的关键数据和关键代码所在的内存区域,对所述原EPT中所述关键数据和所述关键代码的内存映射关系进行对应调整,将原EPT中的非关键代码的内存映射关系删除,并将所述跳板代码的内存映射关系添加到所述原EPT,以获得所述第二EPT。
在另一种可能的实施方式中,确定用于访问所述关键数据的关键代码,具体包括:
对所述应用程序中的源代码进行动态分析,确定与所述关键数据相关的第一关键代码集合;
将所述第一关键代码集合中的代码确定为用于访问所述关键数据的关键代码。
在另一种可能的实施方式中,对应用程序中的源代码进行动态分析,确定与所述关键数据相关的第一关键代码集合,具体包括:
对所述关键数据所在的内存区域进行调整,使所述关键数据存储在独立内存区域中;其中,所述关键数据所在的独立内存区域设置为不可读写状态;
在运行所述应用程序的过程中执行下述当任意一条指令对所述关键数据所在的内存区域进行访问时,记录该指令对应的关键代码;将所述关键数据所在的独立内存区域设置为可读写状态;并在该指令的下一条指令上设置调试中断点,使得该指令的下一条指令执行时,所述调试中断点触发将所述关键数据所在的独立内存区域重新设置为不可读写状态的操作;
根据记录的关键代码,确定第一关键代码集合。
在另一种可能的实施方式中,还包括:
当通过所述第一EPT调用所述应用程序中的非关键代码导致所述应用程序运行异常时,判断所述非关键代码是否处于第二关键代码集合中,其中,所述第二关键代码集合是通过对应用程序中的源代码进行静态分析后,确定的与所述关键数据相关的代码;
若是,则对确定出的关键代码进行更新,使所述非关键代码更新为关键代码;并
利用确定出的关键数据和更新后的关键代码,重新配置第一EPT和第二EPT。
在另一种可能的实施方式中,根据预先设置的与所述关键代码对应的跳板代码,从所述第一EPT切换到预先配置的第二EPT,具体包括:
根据所述跳板代码调用扩展页表指针替换EPTP switching,以使得所述第一EPT切换到所述第二EPT。
在另一种可能的实施方式中,根据所述跳板代码,从所述第二EPT切换回所述第一EPT,具体包括:
根据所述跳板函数调用EPTP switching,以使得所述第二EPT切换回所述第一EPT。
在另一种可能的实施方式中,通过所述第二EPT调用并执行所述关键代码,具体包括:
通过所述第二EPT调用所述关键代码,并对所述关键代码进行形式化验证;
当对所述关键代码进行形式化验证通过后,执行所述关键代码。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和方框图来描述的。应理解可由计算机程序指令实现流程图和方框图中的每一流程和方框、以及流程图和方框图中的流程和方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本发明的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例作出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本发明范围的所有变更和修改。
显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。

Claims (18)

1.一种数据保护方法,其特征在于,包括:
监测应用程序中用于访问关键数据的关键代码是否被调用;
当监测到操作系统通过预先配置的第一扩展页表EPT调用所述关键代码时,根据预先设置的与所述关键代码对应的跳板代码,从所述第一EPT切换到预先配置的第二EPT;其中,所述第一EPT中未配置所述关键数据和所述关键代码的内存映射关系,所述第二EPT中配置所述关键数据和所述关键代码的内存映射关系;且所述关键数据和所述关键代码分别存储在独立内存区域中;
通过所述第二EPT调用并执行所述关键代码后,根据所述跳板代码,从所述第二EPT切换回所述第一EPT。
2.如权利要求1所述的方法,其特征在于,所述监测应用程序中用于访问关键数据的关键代码是否被调用之前,所述方法还包括:
获取原EPT,所述原EPT中配置有所述应用程序中所有数据的内存映射关系和所有代码的内存映射关系;
确定所述关键数据和用于访问所述关键数据的关键代码;
根据所述关键数据所在的内存区域和所述关键代码所在的内存区域,将所述原EPT中所述关键数据和所述关键代码的内存映射关系删除,并将所述跳板代码的内存映射关系添加到所述原EPT,以获得所述第一EPT。
3.如权利要求2所述的方法,其特征在于,所述确定所述关键数据和用于访问所述关键数据的关键代码之后,所述方法还包括:
对所述关键数据所在的内存区域和所述关键代码所在的内存区域进行调整,以使得所述关键数据和所述关键代码分别存储在独立内存区域中;
根据调整后的关键数据和关键代码所在的内存区域,对所述原EPT中所述关键数据和所述关键代码的内存映射关系进行对应调整,将原EPT中的非关键代码的内存映射关系删除,并将所述跳板代码的内存映射关系添加到所述原EPT,以获得所述第二EPT。
4.如权利要求2或3所述的方法,其特征在于,确定用于访问所述关键数据的关键代码,具体包括:
对所述应用程序中的源代码进行动态分析,确定与所述关键数据相关的第一关键代码集合;
将所述第一关键代码集合中的代码确定为用于访问所述关键数据的关键代码。
5.如权利要求4所述的方法,其特征在于,对应用程序中的源代码进行动态分析,确定与所述关键数据相关的第一关键代码集合,具体包括:
对所述关键数据所在的内存区域进行调整,使所述关键数据存储在独立内存区域中;
当任意一条指令对所述关键数据所在的内存区域进行访问时,记录该指令对应的关键代码;
根据记录的关键代码,确定第一关键代码集合。
6.如权利要求2至5任意一项所述的方法,其特征在于,所述方法还包括:
当通过所述第一EPT调用所述应用程序中的非关键代码导致所述应用程序运行异常时,判断所述非关键代码是否处于第二关键代码集合中,其中,所述第二关键代码集合是通过对应用程序中的源代码进行静态分析后,确定的与所述关键数据相关的代码;
若是,则对确定出的关键代码进行更新,使所述非关键代码更新为关键代码;并
利用确定出的关键数据和更新后的关键代码,重新配置第一EPT和第二EPT。
7.如权利要求1-6任意一项所述的方法,其特征在于,根据预先设置的与所述关键代码对应的跳板代码,从所述第一EPT切换到预先配置的第二EPT,具体包括:
根据所述跳板代码调用扩展页表指针替换EPTP switching,以使得所述第一EPT切换到所述第二EPT。
8.如权利要求1-7任意一项所述的方法,其特征在于,根据所述跳板代码,从所述第二EPT切换回所述第一EPT,具体包括:
根据所述跳板函数调用EPTP switching,以使得所述第二EPT切换回所述第一EPT。
9.如权利要求1-8任意一项所述的方法,其特征在于,通过所述第二EPT调用并执行所述关键代码,具体包括:
通过所述第二EPT调用所述关键代码,并对所述关键代码进行形式化验证;
当对所述关键代码进行形式化验证通过后,执行所述关键代码。
10.一种数据保护的装置,其特征在于,包括:
监测单元,用于监测应用程序中用于访问关键数据的关键代码是否被调用;
第一切换单元,用于当所述监测单元监测到操作系统通过预先配置的第一扩展页表EPT调用所述关键代码时,根据预先设置的与所述关键代码对应的跳板代码,从所述第一EPT切换到预先配置的第二EPT;其中,所述第一EPT中未配置所述关键数据和所述关键代码的内存映射关系,所述第二EPT中配置所述关键数据和所述关键代码的内存映射关系;且所述关键数据和所述关键代码分别存储在独立内存区域中;
第二切换单元,用于通过所述第一切换单元切换到的第二EPT调用并执行所述关键代码后,根据所述跳板代码,从所述第二EPT切换回所述第一EPT。
11.如权利要求10所述的装置,其特征在于,所述装置还包括:原EPT获取单元、关键数据和关键代码确定单元和第一EPT获得单元,其中:
所述原EPT获取单元,用于获取原EPT,所述原EPT中配置有所述应用程序中所有数据的内存映射关系和所有代码的内存映射关系;
所述关键数据和关键代码确定单元,用于确定所述关键数据和用于访问所述关键数据的关键代码;
所述第一EPT获得单元,用于根据所述关键数据和关键代码确定单元确定的关键数据所在的内存区域和所述关键数据和关键代码确定单元确定的关键代码所在的内存区域,将所述原EPT获取单元获取的原EPT中所述关键数据和所述关键代码的内存映射关系删除,并将所述跳板代码的内存映射关系添加到所述原EPT,以获得所述第一EPT。
12.如权利要求11所述的装置,其特征在于,所述装置还包括:
第二EPT获得单元,用于在所述关键数据和关键代码确定单元确定所述关键数据和用于访问所述关键数据的关键代码之后,对所述关键数据所在的内存区域和所述关键代码所在的内存区域进行调整,以使得所述关键数据和所述关键代码分别存储在独立内存区域中;根据调整后的关键数据和关键代码所在的内存区域,对所述原EPT获取单元获取的原EPT中所述关键数据和所述关键代码的内存映射关系进行对应调整,将原EPT中的非关键代码的内存映射关系删除,并将所述跳板代码的内存映射关系添加到所述原EPT,以获得所述第二EPT。
13.如权利要求11或12所述的装置,其特征在于,所述关键数据和关键代码确定单元,具体包括:
动态分析模块,用于对所述应用程序中的源代码进行动态分析,确定与所述关键数据相关的第一关键代码集合;
关键代码确定模块,用于将所述动态分析模块确定的第一关键代码集合中的代码确定为用于访问所述关键数据的关键代码。
14.如权利要求13所述的装置,其特征在于,所述动态分析模块,具体用于:
对所述关键数据所在的内存区域进行调整,使所述关键数据存储在独立内存区域中;当任意一条指令对所述关键数据所在的内存区域进行访问时,记录该指令对应的关键代码;根据记录的关键代码,确定第一关键代码集合。
15.如权利要求11-14任意一项所述的装置,其特征在于,所述装置还包括:关键代码更新单元和重新配置单元,其中:
所述关键代码更新单元,用于当通过所述第一EPT调用所述应用程序中的非关键代码导致所述应用程序运行异常时,判断所述非关键代码是否处于第二关键代码集合中,其中,所述第二关键代码集合是通过对应用程序中的源代码进行静态分析后,确定的与所述关键数据相关的代码;若是,则对确定出的关键代码进行更新,使所述非关键代码更新为关键代码;
所述重新配置单元,用于利用所述关键数据和所述关键代码更新单元更新后的关键代码,重新配置第一EPT和第二EPT。
16.如权利要求10-15任意一项所述的装置,其特征在于,所述第一切换单元,具体用于:
根据所述跳板代码调用扩展页表指针替换EPTP switching,以使得所述第一EPT切换到所述第二EPT。
17.如权利要求10-16任意一项所述的装置,其特征在于,所述第二切换单元,具体用于:
根据所述跳板函数调用EPTP switching,以使得所述第二EPT切换回所述第一EPT。
18.如权利要求10-17任意一项所述的装置,其特征在于,所述第二切换单元,具体包括:
形式化验证模块,用于通过所述第二EPT调用所述关键代码,并对所述关键代码进行形式化验证;
关键代码执行模块,用于当所述形式化验证模块对所述关键代码进行形式化验证通过后,执行所述关键代码。
CN201510288439.3A 2015-05-29 2015-05-29 一种数据保护方法和装置 Active CN106295385B (zh)

Priority Applications (4)

Application Number Priority Date Filing Date Title
CN201510288439.3A CN106295385B (zh) 2015-05-29 2015-05-29 一种数据保护方法和装置
PCT/CN2016/080006 WO2016192483A1 (zh) 2015-05-29 2016-04-22 一种数据保护方法和装置
EP16802406.5A EP3287932B1 (en) 2015-05-29 2016-04-22 Data protection method and device
US15/820,769 US10614238B2 (en) 2015-05-29 2017-11-22 Data protection method and apparatus

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201510288439.3A CN106295385B (zh) 2015-05-29 2015-05-29 一种数据保护方法和装置

Publications (2)

Publication Number Publication Date
CN106295385A true CN106295385A (zh) 2017-01-04
CN106295385B CN106295385B (zh) 2019-10-22

Family

ID=57440202

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201510288439.3A Active CN106295385B (zh) 2015-05-29 2015-05-29 一种数据保护方法和装置

Country Status (4)

Country Link
US (1) US10614238B2 (zh)
EP (1) EP3287932B1 (zh)
CN (1) CN106295385B (zh)
WO (1) WO2016192483A1 (zh)

Cited By (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107102888A (zh) * 2017-04-25 2017-08-29 华中科技大学 一种基于硬件虚拟化技术的共享库隔离保护方法及系统
CN108958879A (zh) * 2017-05-24 2018-12-07 华为技术有限公司 一种虚拟机的监控方法和装置
CN109032572A (zh) * 2017-06-08 2018-12-18 阿里巴巴集团控股有限公司 一种基于字节码的java程序方法内联的方法
CN109784062A (zh) * 2018-12-29 2019-05-21 360企业安全技术(珠海)有限公司 漏洞检测方法及装置
CN110348252A (zh) * 2018-04-02 2019-10-18 华为技术有限公司 基于信任区的操作系统和方法
WO2019237867A1 (zh) * 2018-06-12 2019-12-19 杨力祥 一种将权力信息隔离并依托它进行权力检查的方法及计算装置
CN111625784A (zh) * 2020-05-29 2020-09-04 重庆小雨点小额贷款有限公司 一种应用的反调试方法、相关装置及存储介质
CN112989326A (zh) * 2021-04-08 2021-06-18 北京字节跳动网络技术有限公司 一种指令发送方法及装置

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP3656577A1 (en) * 2018-11-21 2020-05-27 Thales Dis France SA In-the-field patching of an operating system using a digital certificate extension
US11816218B2 (en) * 2020-06-01 2023-11-14 Vmware, Inc. Protecting operating system kernel objects using a hypervisor

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130125119A1 (en) * 2011-11-14 2013-05-16 Harshawardhan Vipat Regulating access to and protecting portions of applications of virtual machines
US20130174147A1 (en) * 2011-12-30 2013-07-04 Ravi L. Sahita Low Latency Virtual Machine Page Table Management
US8726392B1 (en) * 2012-03-29 2014-05-13 Symantec Corporation Systems and methods for combining static and dynamic code analysis
US20140380009A1 (en) * 2013-06-24 2014-12-25 Michael LeMay Protected memory view for nested page table access by virtual machine guests

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20070006175A1 (en) * 2005-06-30 2007-01-04 David Durham Intra-partitioning of software components within an execution environment
US20080201540A1 (en) * 2007-02-16 2008-08-21 Ravi Sahita Preservation of integrity of data across a storage hierarchy
US8010763B2 (en) 2007-08-02 2011-08-30 International Business Machines Corporation Hypervisor-enforced isolation of entities within a single logical partition's virtual address space
US8578080B2 (en) * 2011-07-01 2013-11-05 Intel Corporation Secure handling of interrupted events utilizing a virtual interrupt definition table
JP5822685B2 (ja) 2011-11-28 2015-11-24 キヤノン株式会社 スイッチング電源回路
US9268707B2 (en) * 2012-12-29 2016-02-23 Intel Corporation Low overhead paged memory runtime protection
US8887993B2 (en) 2013-04-23 2014-11-18 The Boeing Company Barcode access to electronic resources for complex system parts
CN103413093B (zh) 2013-07-17 2016-04-06 电子科技大学 一种基于内存隔离的xen云平台虚拟机隔离方法
CN103473117A (zh) 2013-09-18 2013-12-25 北京思特奇信息技术股份有限公司 云模式下的虚拟化方法
CN103699498B (zh) * 2013-11-25 2016-08-31 南京大学 一种应用程序关键数据保护系统及其保护方法
US9311508B2 (en) 2013-12-27 2016-04-12 Intel Corporation Processors, methods, systems, and instructions to change addresses of pages of secure enclaves
CN103996004B (zh) * 2014-06-12 2018-09-04 浪潮电子信息产业股份有限公司 一种基于虚拟化的高可用系统设计方法
US9454497B2 (en) * 2014-08-15 2016-09-27 Intel Corporation Technologies for secure inter-virtual-machine shared memory communication

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130125119A1 (en) * 2011-11-14 2013-05-16 Harshawardhan Vipat Regulating access to and protecting portions of applications of virtual machines
US20130174147A1 (en) * 2011-12-30 2013-07-04 Ravi L. Sahita Low Latency Virtual Machine Page Table Management
US8726392B1 (en) * 2012-03-29 2014-05-13 Symantec Corporation Systems and methods for combining static and dynamic code analysis
US20140380009A1 (en) * 2013-06-24 2014-12-25 Michael LeMay Protected memory view for nested page table access by virtual machine guests

Cited By (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107102888A (zh) * 2017-04-25 2017-08-29 华中科技大学 一种基于硬件虚拟化技术的共享库隔离保护方法及系统
CN107102888B (zh) * 2017-04-25 2019-11-22 华中科技大学 一种基于硬件虚拟化技术的共享库隔离保护方法及系统
CN108958879A (zh) * 2017-05-24 2018-12-07 华为技术有限公司 一种虚拟机的监控方法和装置
CN108958879B (zh) * 2017-05-24 2021-02-26 华为技术有限公司 一种虚拟机的监控方法和装置
CN109032572A (zh) * 2017-06-08 2018-12-18 阿里巴巴集团控股有限公司 一种基于字节码的java程序方法内联的方法
CN110348252B (zh) * 2018-04-02 2021-09-03 华为技术有限公司 基于信任区的操作系统和方法
CN110348252A (zh) * 2018-04-02 2019-10-18 华为技术有限公司 基于信任区的操作系统和方法
US11443034B2 (en) 2018-04-02 2022-09-13 Huawei Technologies Co., Ltd. Trust zone-based operating system and method
WO2019237867A1 (zh) * 2018-06-12 2019-12-19 杨力祥 一种将权力信息隔离并依托它进行权力检查的方法及计算装置
CN109784062A (zh) * 2018-12-29 2019-05-21 360企业安全技术(珠海)有限公司 漏洞检测方法及装置
CN111625784A (zh) * 2020-05-29 2020-09-04 重庆小雨点小额贷款有限公司 一种应用的反调试方法、相关装置及存储介质
CN111625784B (zh) * 2020-05-29 2023-09-12 重庆小雨点小额贷款有限公司 一种应用的反调试方法、相关装置及存储介质
CN112989326A (zh) * 2021-04-08 2021-06-18 北京字节跳动网络技术有限公司 一种指令发送方法及装置
WO2022213769A1 (zh) * 2021-04-08 2022-10-13 北京字节跳动网络技术有限公司 一种指令发送方法及装置

Also Published As

Publication number Publication date
WO2016192483A1 (zh) 2016-12-08
US10614238B2 (en) 2020-04-07
CN106295385B (zh) 2019-10-22
EP3287932A1 (en) 2018-02-28
US20180096162A1 (en) 2018-04-05
EP3287932B1 (en) 2020-04-08
EP3287932A4 (en) 2018-05-02

Similar Documents

Publication Publication Date Title
CN106295385A (zh) 一种数据保护方法和装置
Priebe et al. SGX-LKL: Securing the host OS interface for trusted execution
US20210194696A1 (en) System and method for high performance secure access to a trusted platform module on a hardware virtualization platform
CN106462708B (zh) 认证变量的管理方法和装置
Sabt et al. Trusted execution environment: What it is, and what it is not
Ekberg et al. The untapped potential of trusted execution environments on mobile devices
US10310992B1 (en) Mitigation of cyber attacks by pointer obfuscation
CN109086100A (zh) 一种高安全可信移动终端安全体系架构及安全服务方法
US20120216242A1 (en) Systems and Methods for Enhanced Security in Wireless Communication
CN105678192B (zh) 一种基于智能卡的密钥应用方法及应用装置
CN109960903A (zh) 一种应用加固的方法、装置、电子设备及存储介质
EP2876593B1 (en) Method of generating a structure and corresponding structure
CN109583190A (zh) 监控进程的方法和装置
KR20230156129A (ko) 블록체인 기반의 책임 있는 분산 컴퓨팅 시스템
Coppola et al. Automation for industry 4.0 by using secure lorawan edge gateways
US9398019B2 (en) Verifying caller authorization using secret data embedded in code
CN117171733A (zh) 数据使用方法、装置、电子设备及存储介质
Reeves Autoscopy Jr.: Intrusion detection for embedded control systems
Oluwatimi et al. An application restriction system for bring-your-own-device scenarios
Atamli‐Reineh et al. A framework for application partitioning using trusted execution environments
CN106127054A (zh) 一种面向智能设备控制指令的系统级安全防护方法
Sha et al. Catching escapers: A detection method for advanced persistent escapers in industry Internet of Things based on Identity-based Broadcast Encryption (IBBE)
CN115499144A (zh) 入侵检测方法、装置和系统、电子设备、计算机可读介质
US20110258397A1 (en) Method of protection of data during the execution of a software code in an electronic device
Zhan et al. NSGA‐II‐Based Granularity‐Adaptive Control‐Flow Attestation

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant