CN112231239A - 一种页交换方法、装置、cpu、可信硬件及计算机设备 - Google Patents

一种页交换方法、装置、cpu、可信硬件及计算机设备 Download PDF

Info

Publication number
CN112231239A
CN112231239A CN202011119397.8A CN202011119397A CN112231239A CN 112231239 A CN112231239 A CN 112231239A CN 202011119397 A CN202011119397 A CN 202011119397A CN 112231239 A CN112231239 A CN 112231239A
Authority
CN
China
Prior art keywords
page
exchange data
trusted hardware
memory
encrypted
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
CN202011119397.8A
Other languages
English (en)
Other versions
CN112231239B (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.)
Haiguang Information Technology Co Ltd
Original Assignee
Haiguang Information Technology 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 Haiguang Information Technology Co Ltd filed Critical Haiguang Information Technology Co Ltd
Priority to CN202011119397.8A priority Critical patent/CN112231239B/zh
Publication of CN112231239A publication Critical patent/CN112231239A/zh
Application granted granted Critical
Publication of CN112231239B publication Critical patent/CN112231239B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • 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/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory
    • 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/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0877Cache access modes
    • G06F12/0882Page mode
    • 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/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/128Replacement control using replacement algorithms adapted to multidimensional cache systems, e.g. set-associative, multicache, multiset or multilevel
    • 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/1408Protection against unauthorised use of memory or access to memory by using cryptography
    • 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/602Providing cryptographic facilities or services
    • 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/64Protecting data integrity, e.g. using checksums, certificates or signatures
    • 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/72Details relating to flash memory management
    • G06F2212/7202Allocation control and policies

Landscapes

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

Abstract

本申请实施例提供一种页交换方法、装置、CPU、可信硬件及计算机设备,方法包括:确定物理内存中待释放的第一内存页,第一内存页的数据为交换数据;在物理内存中申请临时内存空间;调用可信硬件的密钥生成命令,以控制可信硬件生成对交换数据进行加解密的第一密钥;调用可信硬件的加密命令,以控制可信硬件使用第一密钥对非加密状态的交换数据进行加密,其中,加密的交换数据缓存在临时内存空间中;将临时内存空间中缓存的加密的交换数据加载至硬盘,并释放第一内存页和临时内存空间。进一步,本申请实施例还可调用可信硬件生成加密的交换数据的摘要值,以在交换回交换数据时能够进行完整性验证提供基准。本申请实施例可提升交换数据的安全性。

Description

一种页交换方法、装置、CPU、可信硬件及计算机设备
技术领域
本申请实施例涉及数据处理技术领域,具体涉及一种页交换方法、装置、CPU、可信硬件及计算机设备。
背景技术
在计算机体系中,物理内存有限的内存空间往往无法满足应用程序对于内存空间的使用需求,因此为提高物理内存的利用率,操作系统内核可将物理内存中最近访问频次较少或者最近未被访问的数据交换到硬盘中,从而释放物理内存的内存空间,而在需要使用物理内存交换出的数据时,操作系统内核可再从硬盘中将数据交换回到物理内存中;由于物理内存一般使用内存页进行数据管理,因此上述机制也称为页交换(swapping)机制,在页交换机制中,物理内存交换到硬盘的数据可称为是交换数据。
虽然页交换机制有助于操作系统提升物理内存的利用率,但是物理内存交换到硬盘的交换数据存在着安全风险,因此如何改进页交换方案,以提升交换数据的安全性,成为了本领域技术人员亟需解决的问题。
发明内容
有鉴于此,本申请实施例提供一种页交换方法、装置、CPU、可信硬件及计算机设备,以提升交换数据的安全性。
为实现上述目的,本申请实施例提供如下技术方案:
一种页交换方法,应用于CPU,所述方法包括:
确定物理内存中待释放的第一内存页,所述第一内存页的数据为待交换到硬盘的交换数据;
在物理内存中申请临时内存空间;
调用可信硬件的密钥生成命令,以控制所述可信硬件生成对所述交换数据进行加解密的第一密钥;
调用可信硬件的加密命令,以控制所述可信硬件使用所述第一密钥对非加密状态的交换数据进行加密,其中,加密的交换数据缓存在所述临时内存空间中;
将所述临时内存空间中缓存的加密的交换数据加载至硬盘,并释放所述第一内存页和所述临时内存空间。
可选的,在将所述临时内存空间中缓存的加密的交换数据加载至硬盘之前,所述方法还包括:
调用可信硬件的摘要生成命令,以控制所述可信硬件生成加密的交换数据的第一摘要值;
调用可信硬件的存储空间写命令,以控制所述可信硬件将所述第一摘要值写入可信硬件对应的存储空间。
本申请实施例还提供一种页交换方法,应用于可信硬件,所述方法包括:
基于CPU调用的密钥生成命令生成第一密钥,所述第一密钥用于对交换数据进行加解密,所述交换数据为物理内存中待释放的第一内存页的数据;
基于CPU调用的加密命令,使用所述第一密钥对非加密状态的交换数据进行加密;
将加密的交换数据缓存至CPU在物理内存中申请的临时内存空间,以便CPU将所述临时内存空间中缓存的加密的交换数据加载至硬盘。
可选的,在将加密的交换数据缓存至CPU在物理内存中申请的临时内存空间之前,所述方法还包括:
基于CPU调用的摘要生成命令,生成加密的交换数据的第一摘要值;
基于CPU调用的存储空间写命令,将所述第一摘要值写入所述可信硬件对应的存储空间。
本申请实施例还提供一种页交换方法,应用于CPU,所述方法包括:
在访问物理内存的第一内存页时,如果检测到第一内存页的交换数据被交换到硬盘,在物理内存中申请临时内存空间;其中,硬盘中的交换数据为经由可信硬件使用第一密钥加密的交换数据;
将加密的交换数据从硬盘加载至所述临时内存空间;
在物理内存中为交换数据重新分配第二内存页;
调用可信硬件的解密命令,以控制可信硬件使用第一密钥对临时内存空间中加密的交换数据进行解密,其中,解密的交换数据保存在所述第二内存页;
将第一内存页的页表项重新映射到第二内存页,并释放所述临时内存空间。
可选的,在物理内存中为交换数据重新分配第二内存页之前,所述方法还包括:
调用可信硬件的摘要生成命令,以控制所述可信硬件生成加密的交换数据的第二摘要值;
调用可信硬件的存储空间读命令,以控制可信硬件从对应的存储空间读取加密的交换数据的第一摘要值;
获取所述可信硬件传递的所述第一摘要值。
可选的,所述方法还包括:
比较第一摘要值与第二摘要值是否一致;
若第一摘要值与第二摘要值一致,进入执行所述在物理内存中为交换数据重新分配第二内存页的步骤;
若第一摘要值与第二摘要值不一致,确定所述加密的交换数据被篡改。
本申请实施例还提供一种页交换装置,应用于CPU,所述页交换装置包括:
待释放内存页确定模块,用于确定物理内存中待释放的第一内存页,所述第一内存页的数据为待交换到硬盘的交换数据;
临时空间申请模块,用于在物理内存中申请临时内存空间;
密钥生成命令调用模块,用于调用可信硬件的密钥生成命令,以控制所述可信硬件生成对所述交换数据进行加解密的第一密钥;
加密命令调用模块,用于调用可信硬件的加密命令,以控制所述可信硬件使用所述第一密钥对非加密状态的交换数据进行加密,其中,加密的交换数据缓存在所述临时内存空间中;
交换及释放模块,用于将所述临时内存空间中缓存的加密的交换数据加载至硬盘,并释放所述第一内存页和所述临时内存空间。
本申请实施例还提供一种页交换装置,应用于CPU,所述页交换装置包括:
临时空间申请模块,用于在访问物理内存的第一内存页时,如果检测到第一内存页的交换数据被交换到硬盘,在物理内存中申请临时内存空间;其中,硬盘中的交换数据为经由可信硬件使用第一密钥加密的交换数据;
临时加载模块,用于将加密的交换数据从硬盘加载至所述临时内存空间;
第二内存页分配模块,用于在物理内存中为交换数据重新分配第二内存页;
解密命令调用模块,用于调用可信硬件的解密命令,以控制可信硬件使用第一密钥对临时内存空间中加密的交换数据进行解密,其中,解密的交换数据保存在所述第二内存页;
映射及释放模块,用于将第一内存页的页表项重新映射到第二内存页,并释放所述临时内存空间。
本申请实施例还提供一种CPU,所述CPU被配置为执行如上述任一项CPU执行的页交换方法。
本申请实施例还提供一种页交换装置,应用于可信硬件,所述页交换装置包括:
第一密钥生成模块,用于基于CPU调用的密钥生成命令生成第一密钥,所述第一密钥用于对交换数据进行加解密,所述交换数据为物理内存中待释放的第一内存页的数据;
加密模块,用于基于CPU调用的加密命令,使用所述第一密钥对非加密状态的交换数据进行加密;
数据至临时空间缓存模块,用于将加密的交换数据缓存至CPU在物理内存中申请的临时内存空间,以便CPU将所述临时内存空间中缓存的加密的交换数据加载至硬盘。
本申请实施例还提供一种可信硬件,所述可信硬件被配置为执行如上述可信硬件执行的页交换方法。
本申请实施例还提供一种计算机设备,包括如上述所述的CPU,以及如上述所述的可信硬件。
本申请实施例提供的页交换方法中,CPU可确定物理内存中待释放的第一内存页,并在物理内存中申请临时内存空间,所述第一内存页的数据为待交换到硬盘的交换数据;从而CPU可调用可信硬件的密钥生成命令,以控制所述可信硬件生成对所述交换数据进行加解密的第一密钥;且CPU可调用可信硬件的加密命令,以控制所述可信硬件使用所述第一密钥对非加密状态的交换数据进行加密,其中,加密的交换数据缓存在所述临时内存空间中;进而在临时内存空间缓存加密的交换数据后,CPU可将所述临时内存空间中缓存的加密的交换数据加载至硬盘,并释放所述第一内存页和所述临时内存空间,以实现将物理内存中第一内存页的交换数据交换到硬盘中,且保障交换到硬盘的交换数据为经过可信硬件加密后的交换数据。
由于可信硬件可为加解密算法提供可信赖环境,并且可信硬件使用的第一密钥仅由可信硬件管理,因此在页交换机制中,本申请实施例使用CPU控制可信硬件对交换到硬盘的交换数据进行加密,可在可信环境下实现交换数据的加密,保障交换数据能够进行可靠的加密,从而降低了交换到硬盘的加密的交换数据被攻击篡改的风险,提升了硬盘中的交换数据的安全性。
进一步的,本申请实施例可调用可信硬件计算加密的交换数据的第一摘要值,来为后续加密的交换数据的完整性验证提供基准,即可在后续从硬盘交换回加密的交换数据到物理内存时,能够基于第一摘要值对加密的交换数据进行相应的完整性验证,来验证加密的交换数据是否被篡改,可在加密的交换数据被篡改时实现准确验证,进一步提升了交换数据的安全性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为交换机制的示例图;
图2为安全内存加密场景下的交换机制示例图;
图3为本申请实施例提供的计算机体系结构示例图;
图4为本申请实施例提供的页交换方法的流程图;
图5为本申请实施例提供的页交换方法的另一流程图;
图6为本申请实施例提供的页交换方法的再一流程图;
图7为本申请实施例提供的页交换方法的又一流程图;
图8为本申请实施例提供的页交换方法的又另一流程图;
图9为本申请实施例提供的页交换机制的示例图;
图10为本申请实施例提供的页交换装置的框图;
图11为本申请实施例提供的页交换装置的另一框图;
图12为本申请实施例提供的页交换装置的再一框图;
图13为本申请实施例提供的页交换装置的又一框图;
图14为本申请实施例提供的页交换装置的又另一框图;
图15为本申请实施例提供的页交换装置的又再一框图;
图16为本申请实施例提供的页交换装置的另又一框图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
为便于理解交换机制,图1示出了交换机制的示例,如图1所示:物理内存以内存页(page)方式进行数据管理,即物理内存是通过内存页的方式进行数据存储,如图1示例,假设物理内存具有内存页1至内存页n(n的具体数值可根据实际情况而定,本申请实施例并不限制),为提升物理内存的利用率,操作系统内核(如CPU)可将最近访问频次较少或者最近未被访问的内存页进行释放,并将该内存页中的数据交换到硬盘;假设图1中内存页1的最近访问频次较少或者最近未被访问,则内存页1中的数据可作为交换数据被交换到硬盘,以得以释放内存页1;
在页交换机制中,硬盘中设置有交换分区,用于临时保存物理内存交换到硬盘的交换数据;当需释放内存页1时,操作系统内核可将内存页1中的交换数据交换到硬盘的交换分区;后续,如果操作系统内核需要使用到该交换数据,则可在物理内存中重新为交换数据分配内存页,图1示例的内存页k可作为是为交换数据重新分配的内存页,从而交换分区中的交换数据可交换回到内存页k;
可以看出,页交换机制涉及到将交换数据从物理内存交换到硬盘,和将交换数据从硬盘交换回到物理内存这两个阶段。
交换数据一般是用户进程数据,如操作系统的用户态进程数据,在交换数据交换到硬盘时,恶意用户极可能通过对硬盘的非法访问,来篡改硬盘中的交换数据,因此为防止物理内存交换到硬盘的交换数据被篡改,页交换机制需要考虑交换数据的安全性问题,目前有几种考虑交换数据安全性的方案,但是均存在不同程度的问题:
在一种方案中,交换数据的安全性主要依赖于硬盘的安全性,如通过硬盘加密技术对交换到硬盘的交换数据进行加密,使得硬盘中的交换数据以密文形式存储;但是硬盘加密技术一般是通过软件或者硬件方式对硬盘进行全盘加密实现,无疑会带来较大的性能开销,同时,交换数据的加密发生在非可信环境下(例如,硬盘中的交换数据加密可能由硬盘控制器执行或者加密软件执行,而硬盘控制器和加密软件执行加密的环境极可能是不可信的),无法可靠保障交换数据的安全性。
在另一种方案中,安全内存加密方案可对物理内存中的数据进行加密,即安全内存加密方案可使得物理内存中的数据处于加密状态,从而保障物理内存中的数据安全性;但是,安全内存加密方案是基于物理地址混淆实现,即内存页中的数据是基于内存页的物理地址进行加解密,而在页交换机制中,由于物理内存交换出数据时的内存页,与物理内存交换回数据时的内存页可能不同(如图1示例中的内存页1不同于内存页k),因此如果使用安全内存加密方案对交换到硬盘的交换数据进行加密,则在将交换数据换回到物理内存时,由于内存页的改变,将导致加密的交换数据无法被解密,从而造成交换数据在交换回到物理内存时存在无法解析的情况;
基于此,安全内存加密方案一般放弃对交换到硬盘的交换数据进行加密,即在需从物理内存交换数据到硬盘时,安全内存加密方案将物理内存中加密的交换数据进行解密,然后再将解密的交换数据交换到硬盘;也就是说,在安全内存加密方案中,物理内存中的交换数据虽然是加密的,但硬盘中的交换数据是以明文形式存储,如图2示例所示,内存页1的数据是经安全加密的密文,而在交换到硬盘的交换分区时,内存页1中的数据需解密为明文,才交换到硬盘的交换分区,在数据由硬盘交换回到重新分配的内存页2时,内存控制器对硬盘交换回的明文形式的数据进行安全加密后,再保存到内存页2;可见,硬盘中明文形式存储的交换数据,无疑导致硬盘中的交换数据的安全性极低,特别是在交换数据为用户定义的安全敏感数据时,硬盘中明文形式的交换数据的安全风险极大。
可以看出,依赖硬盘加密技术对交换数据进行加密,存在性能开销较大,且由于硬盘的非可信环境,也使得交换数据没有可靠的安全保障;而安全内存加密方案则由于是基于内存页的物理地址进行数据的加解密,存在无法适用页交换场景的情况,只能将明文的交换数据交换到硬盘中,交换数据存在严重的安全风险。
基于此,本申请实施例提供改进的页交换方案,在将交换数据从物理内存交换到硬盘时,在可信环境下对交换数据进行加密,并在将交换数据从硬盘交换回到物理内存时,在可信环境下对交换数据进行解密,以防止交换数据在硬盘中被篡改,提升交换数据的安全性。
基于在可信环境下,对交换数据进行加解密的思想,本申请实施例可设置可信硬件,由可信硬件对交换数据进行加解密,具体的,在将交换数据从物理内存交换到硬盘时,由可信硬件对交换数据进行加密,并在将交换数据从硬盘交换回到物理内存时,由可信硬件对交换数据进行解密;进一步,本申请实施例也可由CPU控制可信硬件对交换数据进行完整性验证,例如,在将交换数据从物理内存交换到硬盘时,由CPU控制可信硬件确定对交换数据进行完整性验证的基准,并在将交换数据从硬盘交换回到物理内存时,由CPU控制可信硬件基于所述基准对交换数据进行完整性验证;
可选的,可信硬件例如TPM(Trusted Platform Module,可信平台模块)硬件,TPM硬件是一种符合可信计算组织发布的可信计算标准规范的硬件芯片,由可度量的核心信任源CRTM(core root of trust for measurement,可信度量根的核心)和TPM芯片共同组成;在其他可能的实现中,可信硬件也可以是计算机体系中专用设置的用于负责数据安全的安全处理器;
在本申请实施例中,可信硬件可由CPU控制,即CPU可控制可信硬件对交换数据进行加解密;进一步,CPU还可控制可信硬件对交换数据进行完整性验证。
基于上述思路,在可选实现中,图3示出了本申请实施例提供的计算机体系结构,如图3所示,该计算机体系结构可以包括:可信硬件10,CPU(central processing unit,中央处理器)20,内存控制器30,物理内存40和硬盘50;
如前文所述,可信硬件10是本申请实施例设置的用于对交换数据进行加解密的硬件器件;在本申请实施例中,可信硬件20可为交换数据在硬盘的密封存储提供安全保障,也可为执行的加解密算法提供可信赖环境;进一步的,本申请实施例也可由CPU控制可信硬件对交换数据进行完整性验证;在可能的实现中,可信硬件例如TPM硬件、安全处理器等;
CPU20可控制可信硬件的功能执行,如可信硬件受CPU的控制,以对交换数据进行加解密及对交换数据进行完整性验证;
可选的,可信硬件可以是独立于CPU的芯片,在本申请实施例中,CPU和TPM不直接访问物理内存,而是会通过内存控制器访问物理内存,物理内存和硬盘之间也通过内存控制器进行数据交互。
基于本申请实施例提供的上述结构,下面分别针对交换数据从物理内存交换到硬盘的阶段,以及交换数据从硬盘交换回到物理内存的阶段,对本申请实施例提供的页交换方案进行介绍。
针对交换数据从物理内存交换到硬盘的阶段,在可选实现中,图4示出了本申请实施例提供的页交换方法可选流程,该流程可由CPU和可信硬件执行实现,可选的,如图4所示,该流程可以包括:
步骤S10、CPU确定物理内存中待释放的第一内存页,所述第一内存页的数据为待交换到硬盘的交换数据。
第一内存页可以是物理内存中任一待释放的内存页,在可选实现中,CPU可检测进程页表映射的内存页在设定的最近时间段内的访问频次,从而将所述访问频次不大于预定频次的内存页确定为待释放的第一内存页;
可选的,本申请实施例可设置预定频次的数值为0,则可将进程页表映射的所述最近时间段内未被访问的内存页,作为是待释放的第一内存页;可以理解的是,依据内存访问的时间和空间的局部性原理,一个内存页在最近时间段内被访问,则后续该内存页很可能被再次访问,因此该内存页不能被释放,从而在本示例中,CPU可将所述最近时间段内未被访问的内存页,作为是待释放的第一内存页;
在其他可能的实现中,预定频次的数值也可以大于0,从而本申请实施例可将进程页表映射的所述最近时间段内被访问,但访问频次较少的内存页,作为是待释放的第一内存页;需要说明的是,预定频次的具体数值可以根据实际情况定义,本申请实施例并不设限,所述最近时间段的时间长度也可根据实际情况定义,本申请实施例并不设限。
当然,本申请实施例也可通过其他方式确定待释放的第一内存页,而不限于上述描述的确定第一内存页的方式,例如CPU也可通过二次机会算法等算法判定物理内存中最近时间段内没有被访问的内存页,作为待释放的第一内存页。
在确定物理内存中待释放的第一内存页的情况下,本申请实施例需将第一内存页中的数据交换到物理内存中,从而第一内存页中的数据即待交换到硬盘的交换数据。
需要说明的是,第一内存页中的交换数据可能是加密的,也可能是非加密的;例如,在安全内存加密场景下,第一内存页中的交换数据是加密的;当然,本申请实施例也适用于第一内存页中的交换数据不是加密的情况。
步骤S11、CPU在物理内存中申请临时内存空间。
在本申请实施例中,交换数据不直接从第一内存页交换到硬盘,而是需要经过可信硬件(如TPM硬件)对交换数据进行加密后,才将加密后的交换数据交换到硬盘,以保障硬盘中交换数据的安全性;并且由于第一内存页的物理页帧不能直接访问,因此本申请实施例可由CPU在物理内存中申请临时内存空间,来存储可信硬件对交换数据进行加密后的加密结果,以便后续再从临时内存空间中将加密后的交换数据交换到硬盘;基于此,本申请实施例可由CPU在物理内存中申请临时内存空间,来临时保存交换数据的加密结果。
可选的,CPU内核可利用高端内存效率更改,来使用临时性的内存空间,因此在可选实现中,CPU可对第一内存页的物理页帧进行临时映射(物理内存中每一页的内存空间也称为物理页帧),从而基于临时映射的地址,在物理内存中申请临时内存空间;例如,CPU可对第一内存页的物理页帧临时建立高端内存映射,从而基于临时建立的高端内存映射的地址,在物理内存中申请临时内存空间;更为具体的可选实现中,CPU可通过kmap_atomic()接口,来对第一内存页的物理页帧临时建立高端内存映射。
在本申请实施例中,CPU所申请的临时内存空间类似于临时变量的作用,用于暂时保存加密后的交换数据。
步骤S12、CPU调用可信硬件的密钥生成命令。
步骤S13、可信硬件基于所述密钥生成命令生成第一密钥,所述第一密钥用于对所述交换数据进行加解密。
在步骤S12和步骤S13中,可信硬件可受CPU的控制生成用于对所述交换数据进行加解密的密钥,为便于说明,本申请实施例将可信硬件对交换数据进行加解密的密钥称为第一密钥;也就是说,CPU可调用可信硬件的密钥生成命令,从而可信硬件可基于所述密钥生成命令,生成对所述交换数据进行加解密的第一密钥,以为可信硬件后续对所述交换数据进行加解密提供密钥基础。
在可选实现中,可信硬件生成第一密钥可以包括创建第一密钥和加载第一密钥两个过程,从而所述密钥生成命令可以包括密钥创建命令和密钥加载命令,也就是说,CPU可分别调用可信硬件的密钥创建命令和密钥加载命令,以控制可信硬件生成所述第一密钥;从而,可信硬件基于CPU调用的密钥创建命令,可创建第一密钥,基于CPU调用的密钥加载命令,可加载所述第一密钥;在可信硬件加载第一密钥的具体可选实现中,可信硬件可将创建的第一密钥加载至可信硬件的内部。
以可信硬件为TPM硬件为例,在TPM2.0规范中,TPM2_Create命令用于使TPM硬件创建密钥对象,TPM2_Load命令用于使TPM硬件加载密钥对象至TPM硬件的内部;在使用TPM硬件作为所述可信硬件时,在可选实现中,CPU可调用TPM硬件的TPM2_Create命令和TPM2_Load命令,进而,TPM硬件可基于TPM2_Create命令创建第一密钥,基于TPM2_Load命令将创建的第一密钥加载至TPM硬件的内部。
步骤S14、CPU调用可信硬件的加密命令。
步骤S15、可信硬件基于所述加密命令,使用所述第一密钥对非加密状态的交换数据进行加密。
在CPU控制可信硬件生成第一密钥后(如CPU控制可信硬件创建并加载第一密钥后),CPU可调用可信硬件的加密命令,以使得可信硬件基于所述加密命令,使用生成的第一密钥对非加密状态的交换数据进行加密。
需要说明的是,可信硬件在使用步骤S13生成的第一密钥对交换数据进行加密时,交换数据应是非加密状态的;例如,在安全内存加密场景下,物理内存中的数据处于加密状态,即第一内存页中的交换数据基于安全内存加密方案的第二密钥以及第一内存页的物理地址进行加密,为便于说明,安全内存加密方案使用的密钥可称为第二密钥;基于此,在可信硬件使用步骤S13生成的第一密钥对交换数据进行加密前,安全内存加密方案应先基于第二密钥以及第一内存页的物理地址,对第一内存页中已加密的交换数据进行解密,也就是说,本申请实施例所指的非加密状态的交换数据具体为:基于第二密钥以及第一内存页的物理地址,解密的交换数据;从而,可信硬件可再使用步骤S13生成的第一密钥对上述解密的交换数据进行加密。
当然,本申请实施例也可适用于非安全内存加密的场景,例如物理内存中的数据本身就是非加密状态。
在可选实现中,如果第一内存页中非加密状态的交换数据的数据量较大(如内存页的数据量一般是4KB),可信硬件可能一次无法完成对交换数据的加密,则CPU还可将非加密状态的交换数据分段为多段数据,从而CPU可多次调用可信硬件的加密命令,以控制可信硬件使用所述第一密钥分别对分段的各段数据进行加密,得到多段的加密数据;例如,在安全内存加密场景下,CPU可将基于第二密钥以及第一内存页的物理地址进行解密的交换数据,分段为多段数据,从而CPU可多次调用可信硬件的加密命令,进而可信硬件可基于CPU多次调用的加密命令,使用所述第一密钥分别对分段的各段数据进行加密,得到多段的加密数据;此时,使用第一密钥加密的多段的加密数据构成,使用第一密钥加密的交换数据。
在进一步的可选实现中,由于第一密钥加载在可信硬件的内部,CPU并无法得到第一密钥,因此本申请实施例可在可信硬件生成第一密钥时,由CPU保存所述第一密钥的密钥句柄,以使得后续在从硬盘换回加密的交换数据到物理内存时,CPU可基于保存的所述密钥句柄,清楚告知可信硬件使用哪个密钥,来对硬盘中换回的加密的交换数据进行解密。密钥的密钥句柄可用于标识密钥。
步骤S16、可信硬件将加密的交换数据缓存至所述临时内存空间。
可信硬件在使用所述第一密钥,对物理内存中非加密状态的交换数据进行加密后,可得到加密的交换数据,在可选实现中,加密的交换数据可由多段的加密数据构成;进而,可信硬件可将所述加密的交换数据缓存至所述临时内存空间。
步骤S17、CPU将所述临时内存空间中缓存的加密的交换数据加载至硬盘,并释放所述第一内存页和所述临时内存空间。
可信硬件在将加密的交换数据缓存至所述临时内存空间后,CPU可将临时内存空间中缓存的加密的交换数据加载至硬盘中,从而实现第一内存页中的交换数据交换到硬盘中,并保证交换到硬盘中的交换数据为经过可信硬件加密后的交换数据,降低硬盘中的交换数据被篡改的风险,提升了硬盘中的交换数据的安全性;在具体的可选实现中,本申请实施例可将临时内存空间中缓存的加密的交换数据,拷贝至硬盘的交换分区;
同时,由于第一内存页中的交换数据已交换到硬盘,因此本申请实施例可释放所述第一内存页,从而CPU可更为高效的利用物理内存的内存空间;
在CPU将临时内存空间中缓存的加密的交换数据,加载至硬盘后,临时内存空间已完成暂时保存加密的交换数据的任务,因此CPU可释放所述临时内存空间;在具体的可选实现中,CPU可撤销对第一内存页的物理页帧的临时映射,并释放所述临时内存空间,例如,CPU可调用kunmap_atomic接口,撤销对第一内存页的物理页帧的高端内存映射,以实现撤销对第一内存页的物理页帧的临时映射。
在进一步的实现中,PTE(Page Table Entry,页表项)为物理内存的虚拟地址到物理地址映射关系中,保存物理地址及内存属性的数据项;例如第一内存页的PTE为第一内存页的虚拟地址到物理地址的映射关系中,保存物理地址及内存属性的数据项;从而本申请实施例在将加密的交换数据交换到硬盘前,CPU还需确定第一内存页的PTE(如通过反向映射遍历,映射到第一内存页的所有虚拟地址的页表PTE),进而CPU需将第一内存页的PTE中的present(当前)比特位进行清零;在第一内存页的PTE中的present比特位进行清零后,CPU可将临时内存空间中缓存的加密的交换数据加载至硬盘,并释放第一内存页和临时内存空间。
基于图4所示流程,站在CPU的角度,CPU可确定物理内存中待释放的第一内存页,并在物理内存中申请临时内存空间,所述第一内存页的数据为待交换到硬盘的交换数据;从而CPU可调用可信硬件的密钥生成命令,以控制所述可信硬件生成对所述交换数据进行加解密的第一密钥;且CPU可调用可信硬件的加密命令,以控制所述可信硬件使用所述第一密钥对非加密状态的交换数据进行加密,其中,加密的交换数据缓存在所述临时内存空间中;进而在临时内存空间缓存加密的交换数据后,CPU可将所述临时内存空间中缓存的加密的交换数据加载至硬盘,并释放所述第一内存页和所述临时内存空间,以实现将物理内存中第一内存页的交换数据交换到硬盘中,且保障交换到硬盘的交换数据为经过可信硬件加密后的交换数据。
由于可信硬件可为加解密算法提供可信赖环境,并且可信硬件使用的第一密钥仅由可信硬件管理,因此在页交换机制中,本申请实施例使用CPU控制可信硬件对交换到硬盘的交换数据进行加密,可在可信环境下实现交换数据的加密,保障交换数据能够进行可靠的加密,从而降低了交换到硬盘的加密的交换数据被攻击篡改的风险,提升了硬盘中的交换数据的安全性。
在进一步的可选实现中,本申请实施例还可在将加密的交换数据缓存在所述临时内存空间之前,确定加密的交换数据的摘要值,以在后续从硬盘中交换回加密的交换数据到物理内存时,能够为加密的交换数据的完整性验证提供基准,从而在加密的交换数据被篡改时能够实现准确验证,进一步提升交换数据的安全性;可选的,图5示出了本申请实施例提供的页交换方法的另一可选流程,该流程可由CPU和可信硬件执行实现,如图5所示,该流程可以包括:
步骤S20、CPU确定物理内存中待释放的第一内存页,所述第一内存页的数据为待交换到硬盘的交换数据。
步骤S21、CPU在物理内存中申请临时内存空间。
步骤S22、CPU调用可信硬件的密钥生成命令。
步骤S23、可信硬件基于所述密钥生成命令生成第一密钥,所述第一密钥用于对所述交换数据进行加解密。
可选的,CPU还可保存所述第一密钥的密钥句柄。
步骤S24、CPU调用可信硬件的加密命令。
步骤S25、可信硬件基于所述加密命令,使用所述第一密钥对非加密状态的交换数据进行加密。
步骤S26、可信硬件将加密的交换数据缓存至所述临时内存空间。
可选的,步骤S20至步骤S26的介绍,可参照前文步骤S10至步骤S16部分,此处不再赘述。
在可信硬件使用所述第一密钥对非加密状态的交换数据进行加密,并缓存加密的交换数据至临时内存空间后,区别于图4所示流程,本申请实施例可进一步对加密后的交换数据确定摘要值,以为从硬盘换回加密的交换数据时,为加密的交换数据的完整性验证提供基准,具体可如下步骤S27至步骤S30所示。
步骤S27、CPU调用可信硬件的摘要生成命令。
步骤S28、可信硬件基于所述摘要生成命令,生成加密的交换数据的第一摘要值。
本申请实施例可利用加密的交换数据的第一摘要值(为便于说明,加密的交换数据的摘要值称为第一摘要值),在从硬盘换回加密的交换数据时,为加密的交换数据的完整性验证提供基准,即所述第一摘要值是验证加密的交换数据是否完整的基准值。在本申请实施例中,CPU可调用可信硬件的摘要生成命令(如摘要计算命令),以控制可信硬件生成加密的交换数据的第一摘要值。
在可选的具体实现中,以摘要值为哈希(hash)摘要值为例,加密的交换数据的第一摘要值可以是加密的交换数据的第一哈希摘要值,相应的,CPU可调用可信硬件(如TPM硬件)的哈希计算命令,控制可信硬件生成加密的交换数据的第一哈希摘要值;
在更为具体的可选实现中,如果使用第一密钥加密的交换数据包括:使用第一密钥加密的多段的加密数据,则需向可信硬件分段多次输入加密数据,以使得可信硬件可基于多段的加密数据,计算得到加密的交换数据的第一哈希摘要值;此时,在可选实现中,CPU调用的哈希计算命令(即摘要生成命令)可以具体包括:哈希摘要值计算启动命令,分段多次输入命令,以及哈希摘要值输出命令;
基于此,CPU可调用可信硬件的哈希摘要值计算启动命令,以控制可信硬件基于哈希摘要值计算启动命令,启动哈希摘要值计算;CPU可调用可信硬件的分段多次输入命令,以向可信硬件输入多段的加密数据;CPU可调用可信硬件的哈希摘要值输出命令,以控制可信硬件基于哈希摘要值输出命令,生成多段的加密数据对应的第一哈希摘要值,从而实现生成加密的交换数据的第一摘要值;
以可信硬件为TPM硬件为例,在TPM2.0规范中,TPM2_HashSequenceStart,TPM2_SequenceUpdate,TPM2_SequenceComplete三个命令分别用于启动哈希摘要值计算、分段多次输入数据、输出计算的哈希摘要值,则哈希摘要值计算启动命令的一种可选形式可以是TPM2_HashSequenceStart命令,分段多次输入命令的一种可选形式可以是TPM2_SequenceUpdate命令,哈希摘要值输出命令的一种可选形式可以是TPM2_SequenceComplete命令。
步骤S29、CPU调用可信硬件的存储空间写命令。
步骤S30、可信硬件基于所述存储空间写命令,将所述第一摘要值写入可信硬件对应的存储空间。
在生成加密的交换数据的第一摘要值后,为保障除所述可信硬件的其他器件无法访问所述第一摘要值,本申请实施例可将所述第一摘要值存储在可信硬件对应的存储空间;例如将第一摘要值存储在只有可信硬件可以访问的非易失性内存空间,相应的,CPU可调用可信硬件的非易失性内存空间写命令,以控制可信硬件将所述第一摘要值写入可信硬件对应的非易失性内存空间。
以可信硬件为TPM硬件为例,在TPM2.0规范中,TPM的NV Ram是只有TPM硬件可以访问的非易失性内存空间,从而CPU可调用TPM NV Ram写命令,以控制TPM硬件将所述第一摘要值写入TPM的NV Ram。
步骤S27至步骤S30可实现确定加密的交换数据的第一摘要值,并使得可信硬件保存所述第一摘要值,为后续从硬盘交换回加密的交换数据到物理内存时,进行加密的交换数据的完整性验证提供了基准。
步骤S31、CPU将所述临时内存空间中缓存的加密的交换数据加载至硬盘,并释放所述第一内存页和所述临时内存空间。
在可信硬件生成并保存所述第一摘要值后,CPU可将临时内存空间中缓存的加密的交换数据加载至硬盘中,并释放所述第一内存页和所述临时内存空间。步骤S31的具体介绍可参照前文步骤S17部分的描述,此处不再赘述。
进一步的,CPU还可在将加密的交换数据加载至硬盘之前,将第一内存页的PTE中的present比特位进行清零。
可选的,所述可信硬件可以选用TPM硬件,也可以选用安全处理器;以可信硬件选用TPM硬件为例,基于TPM2.0规范中,在安全内存加密的场景下,本申请实施例可利用图6所示流程实现将交换数据从物理内存交换到硬盘,可选的,图6示出了本申请实施例提供的页交换方法的再一可选流程,如图6所示,该流程可以包括:
步骤S40、CPU确定物理内存中待释放的第一内存页,所述第一内存页的数据为待交换到硬盘的交换数据,所述第一内存页中的交换数据基于第二密钥以及第一内存页的物理地址进行加密。
在安全内存加密场景下,物理内存中内存页的数据使用安全内存加密相应的第二密钥,以及内存页相应的物理地址进行加密;相应的,第一内存页中的交换数据基于第二密钥以及第一内存页的物理地址进行加密。
步骤S41、CPU通过kmap_atomic()接口,对第一内存页的物理页帧临时建立高端内存映射,基于临时建立的高端内存映射的地址,在物理内存中申请临时内存空间。
步骤S42、CPU调用TPM硬件的TPM2_Create命令。
步骤S43、TPM硬件基于TPM2_Create命令,创建第一密钥。
步骤S44、CPU调用TPM硬件的TPM2_Load命令。
步骤S45、TPM硬件基于TPM2_Load命令,将创建的第一密钥加载至TPM硬件的内部。
步骤S46、CPU将基于第二密钥以及第一内存页的物理地址进行解密的交换数据,分段为多段数据。
本申请实施例在第一内存页的交换数据已基于第二密钥以及第一内存页的物理地址进行加密的情况下,为实现使用第一密钥对交换数据进行加密,需先基于第二密钥以及第一内存页的物理地址对交换数据进行解密;在交换数据已解密的情况下,TPM硬件可能一次无法完成交换数据的加密,此时,CPU可将基于第二密钥以及第一内存页的物理地址进行解密的交换数据,分段为多段数据。
步骤S47、CPU多次调用TPM硬件的加密命令。
步骤S48、TPM硬件基于多次调用的加密命令,使用第一密钥分别对分段的各段数据进行加密,得到多段的加密数据,所述多段的加密数据构成加密的交换数据。
步骤S49、TPM硬件将加密的交换数据缓存至临时内存空间。
步骤S50、CPU调用TPM硬件的TPM2_HashSequenceStart命令。
步骤S51、TPM硬件基于TPM2_HashSequenceStart命令,启动哈希摘要值计算。
步骤S52、CPU调用TPM硬件的TPM2_SequenceUpdate命令,以向TPM硬件输入多段的加密数据。
步骤S53、CPU调用TPM硬件的TPM2_SequenceComplete命令。
步骤S54、TPM硬件基于所述TPM2_SequenceComplete命令,生成多段的加密数据对应的第一哈希摘要值。
步骤S55、CPU调用TPM硬件的TPM NV Ram写命令。
步骤S56、TPM硬件基于TPM NV Ram写命令,将所述第一摘要值写入TPM的NV Ram。
步骤S57、CPU将第一内存页的PTE中的present比特位进行清零,将所述临时内存空间中缓存的加密的交换数据拷贝至硬盘,并释放所述第一内存页和所述临时内存空间。
本申请实施例提供的页交换方法可在将交换数据从物理内存交换到硬盘的阶段,由CPU控制可信硬件对物理内存交换到硬盘的交换数据进行加密,并计算加密的交换数据的第一摘要值,由于可信硬件可为加解密算法提供可信赖环境,并且可信硬件加密交换数据所使用的第一密钥仅由可信硬件管理,因此本申请实施例可在可信环境下实现交换数据的加密,保障交换数据能够进行可靠的加密,降低了交换到硬盘的加密的交换数据被攻击篡改的风险,提升了硬盘中的交换数据的安全性。并且,本申请实施例可调用可信硬件计算加密的交换数据的第一摘要值,来为后续加密的交换数据的完整性验证提供基准,即可在后续从硬盘交换回加密的交换数据到物理内存时,能够基于第一摘要值对加密的交换数据进行相应的完整性验证,来验证加密的交换数据是否被篡改,可在加密的交换数据被篡改时实现准确验证,进一步提升了交换数据的安全性。
针对交换数据从硬盘换回到物理内存的阶段,在可选实现中,图7示出了本申请实施例提供的页交换方法的又一可选流程,该流程可由CPU和可信硬件执行实现,可选的,如图7所示,该流程可以包括:
步骤S60、CPU在访问第一内存页时,如果检测到第一内存页的交换数据被交换到硬盘,在物理内存中申请临时内存空间;其中,硬盘中的交换数据为经由可信硬件使用第一密钥加密的交换数据。
CPU在访问第一内存页时,如果第一内存页出现缺页异常,且该缺页异常是由于第一内存页的交换数据被交换到硬盘所引起,则CPU可在物理内存中申请临时内存空间,该临时内存空间用于暂时保存从硬盘换回的交换数据。基于前文本申请实施例提供的页交换方法,可以理解的是,交换到硬盘的交换数据为加密状态的,即交换到硬盘的交换数据是经由可信硬件使用第一密钥进行加密的交换数据。
可选的,CPU申请临时内存空间的可选方式可参照前文相应部分的描述,此处不再赘述。
在可选实现中,如果CPU基于映射到第一内存页的虚拟地址,访问第一内存页,则CPU可获取所述虚拟地址对应的PTE(即第一内存页的PTE),如果所述PTE的present比特位被清零,则可判定第一内存页出现缺页异常;第一内存页出现缺页异常可能由多种原因导致,比如是由于第一内存页的PTE数据为空而导致普通缺页异常,又比如第一内存页的PTE数据虽然不为空,但是第一内存页的数据被交换到硬盘,由于数据交换到硬盘而导致的缺页异常;基于此,本申请实施例可判断第一内存页的PTE的数据是否为空,如果所述PTE的数据为空,则判定第一内存页是普通缺页异常,如果所述PTE的数据不为空,则判定第一内存页是由于数据交换到硬盘而导致的缺页异常,从而本申请实施例可在所述PTE的数据不为空时,检测到第一内存页的交换数据被交换到硬盘。
步骤S61、CPU将加密的交换数据从硬盘加载至所述临时内存空间。
CPU在申请临时内存空间后,可将硬盘中加密的交换数据,由硬盘加载至所述临时内存空间。在可选实现中,CPU在确定第一内存页的PTE的present比特位被清零,且所述PTE的数据不为空时,可确定第一内存页的交换数据被交换到硬盘,此时,CPU可利用PTE的数据项来索引硬盘的存储空间,从而从硬盘中寻找到第一内存页交换出的加密的交换数据,PTE的数据项与硬盘的entry(存储空间)可存在对应关系,从而CPU可利用PTE的数据项来索引硬盘的存储空间,从硬盘中寻找到第一内存页交换出的加密的交换数据;CPU在从硬盘中寻找到该加密的交换数据后,可将加密的交换数据缓存至所申请的临时内存空间,并删除硬盘中的该加密的交换数据。
步骤S62、CPU在物理内存中为交换数据重新分配第二内存页。
从硬盘交换回交换数据时,需要在物理内存中为交换数据重新分配内存页,因此CPU可在物理内存中为交换数据重新分配第二内存页,为便于说明,为交换数据重新分配的内存页可称为第二内存页。
可选的,由于重新分配的第二内存页的物理页帧,无法直接访问,因此CPU在为交换数据重新分配第二内存页时,还可为第二内存页建立临时映射。
步骤S63、CPU调用可信硬件的解密命令。
步骤S64、可信硬件基于所述解密命令,使用第一密钥对临时内存空间中加密的交换数据进行解密。
步骤S65、可信硬件将解密的交换数据保存到所述第二内存页。
在CPU为交换数据重新分配第二内存页,并建立第二内存页的临时映射后,CPU可调用可信硬件的解密命令,以控制可信硬件对临时内存空间中暂存的加密的交换数据进行解密;由于在将交换数据从第一内存页交换到硬盘时,可信硬件是使用第一密钥对交换数据进行加密,因此在可信硬件对临时内存空间中的加密的交换数据进行解密时,可信硬件应使用所述第一密钥,对临时内存空间中的加密的交换数据进行解密。
可选的,可信硬件的解密命令例如TPM硬件的解密命令。
可选的,CPU在调用可信硬件的解密命令时,可向可信硬件传递第一密钥的密钥句柄(如前文所述,CPU可在可信硬件生成第一密钥时,保存第一密钥的密钥句柄,该密钥句柄可对所述第一密钥进行标识),从而可信硬件可根据所述密钥句柄,在响应CPU调用的解密命令时,使用所述密钥句柄对应的第一密钥,对临时内存空间中加密的交换数据进行解密。
在更为具体的可选实现中,如果加密的交换数据由多段的加密数据构成,则加密的交换数据的数据量较大(一般与内存页的数据量4KB相对应),此时,可信硬件可分段多次,使用第一密钥对各段的加密数据进行解密,从而得到解密的交换数据;基于此,CPU可多次调用可信硬件的解密命令,从而可信硬件可基于多次调用的解密命令,使用第一密钥分别对各段的加密数据进行解密,得到解密的交换数据。
可信硬件在得到解密的交换数据后,可将解密的交换数据保存到所述第二内存页。
可选的,进一步,在安全内存加密场景下,由于物理内存中内存页的数据需经由第二密钥和内存页的物理地址进行加密,因此本申请实施例在将解密的交换数据保存到所述第二内存页后,内存控制器还可基于第二密钥和第二内存页的物理地址,对第二内存页中保存的解密的交换数据进行加密,从而使得物理内存中的数据保持为加密状态;当然,本申请实施例也可适用于物理内存中的数据不加密的场景。
步骤S66、CPU将第一内存页的PTE重新映射到第二内存页,并释放所述临时内存空间。
在将解密的交换数据保存到第二内存页后,CPU可为第二内存页重新建立映射,即需将原本针对第一内存页的访问引导到第二内存页,此时,本申请实施例可将第一内存页的PTE重新映射到第二内存页,从而实现为第二内存页重新建立映射。
同时,申请的临时内存空间已完成暂存加密的交换数据的作用,本申请实施例可对所述临时内存空间进行释放。
可选的,进一步,如果CPU在为交换数据重新分配第二内存页时,为第二内存页建立了临时映射,则在解密的交换数据保存到第二内存页后,CPU还可解除第二内存页的临时映射;从而CPU在解除第二内存页的临时映射后,可将第一内存页的PTE重新映射到第二内存页,以为第二内存页重新建立映射。
可选的,进一步,由于可信硬件的第一密钥已完成交换数据由物理内存交换到硬盘的加密过程,以及交换数据由硬盘换回到物理内存的解密过程,因此所述第一密钥可进行销毁;基于此,在解密的交换数据保存在第二内存页后,CPU可调用可信硬件的密钥销毁命令,可信硬件基于所述密钥销毁命令,可销毁所述第一密钥。在更为具体的可选实现中,可信硬件的密钥销毁命令例如TPM硬件的密钥销毁命令。
基于图7所示流程,站在CPU的角度,CPU在访问物理内存的第一内存页时,如果检测到第一内存页的交换数据被交换到硬盘,则CPU可在物理内存中申请临时内存空间,此时,硬盘中的交换数据为经由可信硬件使用第一密钥加密的交换数据;在申请临时内存空间后,CPU可将加密的交换数据从硬盘加载至所述临时内存空间,并在物理内存中为交换数据重新分配第二内存页;从而,CPU可调用可信硬件的解密命令,以控制可信硬件使用第一密钥对临时内存空间中加密的交换数据进行解密,其中,解密的交换数据保存在所述第二内存页;进而,CPU可将第一内存页的PTE重新映射到第二内存页,并释放所述临时内存空间,实现将硬盘中加密的交换数据,解密后换回到物理内存中重新分配的第二内存页。
由于可信硬件可为加解密算法提供可信赖环境,并且可信硬件加密和解密交换数据所使用的第一密钥仅由可信硬件管理,因此在页交换机制中,本申请实施例使用CPU控制可信硬件将硬盘中加密的交换数据,解密后换回到物理内存中,可在可信环境下实现换回交换数据时的解密,从而在交换数据经由可信硬件加密并被交换到硬盘的基础上,可实现交换数据顺利换回到物理内存中。
在进一步的可选实现中,本申请实施例可在从硬盘换回加密的交换数据时,进行完整性验证;可选的,图8示出了本申请实施例提供的页交换方法的又另一可选流程,该流程可由CPU和可信硬件执行实现,如图8所示,该流程可以包括:
步骤S70、CPU在访问第一内存页时,如果检测到第一内存页的交换数据被交换到硬盘,在物理内存中申请临时内存空间;其中,硬盘中的交换数据为经由可信硬件使用第一密钥加密的交换数据。
步骤S71、CPU将加密的交换数据从硬盘加载至所述临时内存空间。
可选的,步骤S70和步骤S71可参照前文步骤S60和步骤S61的描述,此处不再赘述。在CPU将加密的交换数据从硬盘加载到临时内存空间后,区别于图7所示流程,本申请实施例可进一步对临时内存空间中加密的交换数据进行完整性验证,具体如下步骤S72至步骤S76所示。
步骤S72、CPU调用可信硬件的摘要生成命令。
步骤S73、可信硬件基于所述摘要生成命令,生成加密的交换数据的第二摘要值。
可选的,步骤S72和步骤S73生成第二摘要值的原理,与前文生成第一摘要值的原理类似,可相互参照。为区别于将加密的交换数据交换到硬盘时,加密的交换数据的第一摘要值,本申请实施例在将加密的交换数据由硬盘换回到物理内存时,将加密的交换数据的摘要值称为第二摘要值。
以摘要值为哈希(hash)摘要值为例,加密的交换数据的第二摘要值可以是加密的交换数据的第二哈希摘要值,相应的,CPU可调用可信硬件(如TPM硬件)的哈希计算命令,控制可信硬件生成加密的交换数据的第二哈希摘要值;
在更为具体的可选实现中,如果加密的交换数据包括多段的加密数据,则CPU调用的哈希计算命令可以具体包括:哈希摘要值计算启动命令,分段多次输入命令,以及哈希摘要值输出命令;
相应的,CPU可调用可信硬件的哈希摘要值计算启动命令,以使得可信硬件基于哈希摘要值计算启动命令,启动哈希摘要值计算;CPU可调用可信硬件的分段多次输入命令,以向可信硬件输入多段的加密数据;CPU可调用可信硬件的哈希摘要值输出命令,以使得可信硬件基于哈希摘要值输出命令,生成多段的加密数据对应的第二哈希摘要值,从而实现生成临时内存空间中加密的交换数据的第二摘要值。
可以理解的是,加密的交换数据的第二摘要值,为加密的交换数据当前的摘要值,由于在加密的交换数据由物理内存交换到硬盘时,本申请实施例计算过作为基准的第一摘要值,为验证加密的交换数据是否完整,本申请实施例需将所述第二摘要值与所述第一摘要值进行比对,基于此,本申请实施例还需获取到所述第一摘要值。
步骤S74、CPU调用可信硬件的存储空间读命令。
步骤S75、可信硬件基于所述存储空间读命令,从可信硬件对应的存储空间读取加密的交换数据的第一摘要值,将所述第一摘要值传递给CPU。
由于加密的交换数据的第一摘要值,存储在可信硬件对应的存储空间,因此CPU为获取所述第一摘要值,可调用可信硬件的存储空间读命令,以控制可信硬件从对应的存储空间,读取出加密的交换数据的第一摘要值;可信硬件读取到所述第一摘要值后,可将所述第一摘要值传递给CPU,相应的,CPU可获取可信硬件传递的所述第一摘要值。
在可选实现中,第一摘要值可存储在只有可信硬件可以访问的非易失性内存空间,从而CPU可调用可信硬件的非易失性内存空间读命令,以控制可信硬件从可信硬件对应的非易失性内存空间,读取所述第一摘要值;以可信硬件为TPM硬件为例,在TPM2.0规范中,TPM的NV Ram是只有TPM硬件可以访问的非易失性内存空间,从而CPU可调用TPM NV Ram读命令,以控制TPM硬件从TPM的NV Ram读取所述第一摘要值。
步骤S76、CPU比较第一摘要值与第二摘要值是否一致,若否,执行步骤S77,若是,执行步骤S78。
本申请实施例可通过比较第一摘要值与第二摘要值是否一致,来验证加密的交换数据是否完整,即如果比较第一摘要值与第二摘要值不一致,则说明加密的交换数据被篡改,此时可停止交换数据换回到物理内存的流程,如果比较第一摘要值与第二摘要值一致,则可执行步骤S78,继续后续交换数据换回到物理内存的流程。
步骤S77、确定硬盘中加密的交换数据被篡改。
步骤S78、CPU在物理内存中为交换数据重新分配第二内存页,为第二内存页建立临时映射。
步骤S79、CPU调用可信硬件的解密命令。
步骤S80、可信硬件基于所述解密命令,使用第一密钥对临时内存空间中加密的交换数据进行解密。
步骤S81、可信硬件将解密的交换数据保存到所述第二内存页。
步骤S82、CPU解除第二内存页的临时映射,将第一内存页的PTE重新映射到第二内存页,并释放所述临时内存空间。
可选的,CPU还可调用可信硬件的密钥销毁命令,从而可信硬件基于所述密钥销毁命令,可销毁所述第一密钥。
本申请实施例提供的页交换方法可在将交换数据从硬盘换回到物理内存的阶段,由CPU将硬盘中的交换数据加载至临时内存空间,从而CPU可控制可信硬件对临时内存空间中加密的交换数据,计算第二摘要值;CPU在比较作为基准的第一摘要值与所计算的第二摘要值一致时,可验证加密的交换数据完整,进而控制可信硬件使用加密时的第一密钥,对加密的交换数据进行解密,从而解密的交换数据可保存到重新分配的第二内存页中,实现加密的交换数据在完整的情况下,经解密后换回到物理内存中重新分配的第二内存页,保障交换数据顺利由硬盘交换回到物理内存中。
本申请实施例提供的页交换方法,可在将交换数据从物理内存交换到硬盘时,由CPU控制可信硬件在可信环境下对交换数据进行加密和确定摘要值,在将交换数据从硬盘交换回到物理内存时,由CPU控制可信硬件在可信环境下对交换数据进行解密和完整性验证,从而提升交换数据的安全性。示例的,如图9所示示例,在安全内存加密场景下,内存页1的数据被加密以密文形式存储在物理内存中,在需将内存页1的数据交换到硬盘时,内存控制器解密内存页1的数据得到明文,解密的数据再由可信硬件加密后,最终以加密密文的形式存储在硬盘的交换分区中;相应的,在从硬盘换回数据到物理内存时,硬盘中经可信硬件加密的数据,可经可信硬件解密后,再经过内存控制器加密,以密文形式保存到重新分配的内存页2中;可见,本申请实施例可保障物理内存中的数据为经过安全内存加密的加密数据,交换到硬盘的数据为经过可信硬件加密的数据,从而极大地提升了数据的安全性。
本申请实施例可适用于带有可信硬件(如带有硬件TPM可信计算模块)的计算机体系,从而通过可信硬件实现对交换数据的加解密和完整性验证,保障交换数据的完整性和安全性,并且交换数据的安全性不再依赖于硬盘本身的安全性,可以抵御针对硬盘的非法访问和攻击,同时,使得安全内存加密方案可以适用于页交换机制。
进一步,计算机体系如果设置了专门负责数据安全的安全处理器,则安全处理器拥有系统最高的安全级别,其也可以执行关键的安全相关算法和密封存储安全相关敏感数据,因此安全处理器也可以作为可信硬件来使用,从而替代TPM硬件实现对交换数据的加解密和完整性验证。相应的,CPU调用的TPM命令,可以替换为安全处理器的命令,以控制安全处理处理相关加解密和摘要值生成。
上文描述了本申请实施例提供的多个实施例方案,各实施例方案介绍的各可选方式可在不冲突的情况下相互结合、交叉引用,从而延伸出多种可能的实施例方案,这些均可认为是本申请实施例披露、公开的实施例方案。
针对交换数据从物理内存交换到硬盘的阶段,下面从CPU的角度,对本申请实施例提供的页交换装置进行介绍,下文描述的页交换装置可与上文描述的页交换方法的内容相互对应参照。
在可选实现中,图10示出了本申请实施例提供的页交换装置的可选框图,如图10所示,该装置可以包括:
待释放内存页确定模块100,用于确定物理内存中待释放的第一内存页,所述第一内存页的数据为待交换到硬盘的交换数据;
临时空间申请模块110,用于在物理内存中申请临时内存空间;
密钥生成命令调用模块120,用于调用可信硬件的密钥生成命令,以控制所述可信硬件生成对所述交换数据进行加解密的第一密钥;
加密命令调用模块130,用于调用可信硬件的加密命令,以控制所述可信硬件使用所述第一密钥对非加密状态的交换数据进行加密,其中,加密的交换数据缓存在所述临时内存空间中;
交换及释放模块140,用于将所述临时内存空间中缓存的加密的交换数据加载至硬盘,并释放所述第一内存页和所述临时内存空间。
可选的,图11示出了本申请实施例提供的页交换装置的另一可选框图,结合图10和图11所示,该装置还可以包括:
第一摘要生成及写调用模块150,用于在交换及释放模块140将所述临时内存空间中缓存的加密的交换数据加载至硬盘之前,调用可信硬件的摘要生成命令,以控制所述可信硬件生成加密的交换数据的第一摘要值;调用可信硬件的存储空间写命令,以控制所述可信硬件将所述第一摘要值写入可信硬件对应的存储空间。
可选的,加密命令调用模块130,用于调用可信硬件的加密命令,以控制所述可信硬件使用所述第一密钥对非加密状态的交换数据进行加密,包括:
将非加密状态的交换数据分段为多段数据;
多次调用可信硬件的加密命令,以控制可信硬件使用所述第一密钥分别对分段的各段数据进行加密,得到多段的加密数据,其中,多段的加密数据构成加密的交换数据。
可选的,第一摘要生成及写调用模块150,用于调用可信硬件的摘要生成命令,以控制所述可信硬件生成加密的交换数据的第一摘要值,包括:
调用可信硬件的哈希摘要值计算启动命令,以控制可信硬件启动哈希摘要值计算;
调用可信硬件的分段多次输入命令,以向可信硬件输入多段的加密数据;
调用可信硬件的哈希摘要值输出命令,以控制可信硬件生成多段的加密数据对应的第一哈希摘要值,所述第一哈希摘要值为加密的交换数据的第一摘要值。
可选的,第一摘要生成及写调用模块150,用于调用可信硬件的存储空间写命令,以控制所述可信硬件将所述第一摘要值写入可信硬件对应的存储空间,包括:
调用可信硬件的非易失性内存空间写命令,以控制可信硬件将所述第一摘要值写入可信硬件对应的非易失性内存空间。
可选的,临时空间申请模块110,用于在物理内存中申请临时内存空间,包括:
对第一内存页的物理页帧进行临时映射,基于临时映射的地址,在物理内存中申请临时内存空间。
可选的,临时空间申请模块110,用于对第一内存页的物理页帧进行临时映射,包括:
对第一内存页的物理页帧临时建立高端内存映射。
可选的,加密命令调用模块130,用于调用可信硬件的加密命令,以控制所述可信硬件使用所述第一密钥对非加密状态的交换数据进行加密,包括:
调用可信硬件的密钥创建命令,以控制所述可信硬件创建第一密钥;
调用可信硬件的密钥加载命令,以控制所述可信硬件加载所述第一密钥。
可选的,本申请实施例提供的装置还可用于:
保存所述第一密钥的密钥句柄。
可选的,所述第一内存页中的交换数据基于第二密钥与第一内存页的物理地址进行加密;所述非加密状态的交换数据为:基于第二密钥以及第一内存页的物理地址,解密的交换数据。
可选的,本申请实施例提供的装置还可用于:
在交换及释放模块140将所述临时内存空间中缓存的加密的交换数据加载至硬盘之前,将第一内存页的页表项中的当前比特位进行清零。
本申请实施例还提供一种CPU,在交换数据从物理内存交换到硬盘的阶段,该CPU可通过装载上述相应的页交换装置,以实现执行本申请实施例提供的CPU角度相应的页交换方法,即在交换数据从物理内存交换到硬盘的阶段,CPU可被配置为执行本申请实施例提供的CPU角度相应的页交换方法。
针对交换数据从硬盘交换回物理内存的阶段,下面从CPU的角度,对本申请实施例提供的页交换装置进行介绍,下文描述的页交换装置可与上文描述的页交换方法的内容相互对应参照。
可选的,图12示出了本申请实施例提供的页交换装置的再一可选框图,如图12所示,该装置可以包括:
临时空间申请模块200,用于在访问物理内存的第一内存页时,如果检测到第一内存页的交换数据被交换到硬盘,在物理内存中申请临时内存空间;其中,硬盘中的交换数据为经由可信硬件使用第一密钥加密的交换数据;
临时加载模块210,用于将加密的交换数据从硬盘加载至所述临时内存空间;
第二内存页分配模块220,用于在物理内存中为交换数据重新分配第二内存页;
解密命令调用模块230,用于调用可信硬件的解密命令,以控制可信硬件使用第一密钥对临时内存空间中加密的交换数据进行解密,其中,解密的交换数据保存在所述第二内存页;
映射及释放模块240,用于将第一内存页的页表项重新映射到第二内存页,并释放所述临时内存空间。
可选的,图13示出了本申请实施例提供的页交换装置的又一可选框图,结合图12和图13所示,该装置还可以包括:
第二摘要生成命令调用模块250,用于在第二内存页分配模块220在物理内存中为交换数据重新分配第二内存页之前,调用可信硬件的摘要生成命令,以控制所述可信硬件生成加密的交换数据的第二摘要值;
第一摘要值获取模块260,用于调用可信硬件的存储空间读命令,以控制可信硬件从对应的存储空间读取加密的交换数据的第一摘要值;获取所述可信硬件传递的所述第一摘要值。
可选的,图14示出了本申请实施例提供的页交换装置的又另一可选框图,结合图13和图14所示,该装置还可以包括:
完整性验证模块270,用于比较第一摘要值与第二摘要值是否一致;若第一摘要值与第二摘要值一致,进入执行所述在物理内存中为交换数据重新分配第二内存页的步骤;若第一摘要值与第二摘要值不一致,确定所述加密的交换数据被篡改。
可选的,所述加密的交换数据包括多段的加密数据;相应的,第二摘要生成命令调用模块250,用于调用可信硬件的摘要生成命令,以控制所述可信硬件生成加密的交换数据的第二摘要值,包括:
调用可信硬件的哈希摘要值计算启动命令,以控制可信硬件启动哈希摘要值计算;
调用可信硬件的分段多次输入命令,以向可信硬件输入多段的加密数据;
调用可信硬件的哈希摘要值输出命令,以控制可信硬件生成多段的加密数据对应的第二哈希摘要值,所述第二哈希摘要值为加密的交换数据的第二摘要值。
可选的,本申请实施例提供的装置还可用于:
在解密命令调用模块230调用可信硬件的解密命令时,向可信硬件传递第一密钥的密钥句柄。
可选的,解密命令调用模块230,用于调用可信硬件的解密命令,以控制可信硬件使用第一密钥对临时内存空间中加密的交换数据进行解密,包括:
多次调用可信硬件的解密命令,以控制可信硬件使用第一密钥分别对各段的加密数据进行解密,得到解密的交换数据。
可选的,本申请实施例提供的装置还可用于:
在第二内存页分配模块220在物理内存中为交换数据重新分配第二内存页时,建立第二内存页的临时映射;
在解密的交换数据保存在所述第二内存页后,解除第二内存页的临时映射,并调用可信硬件的密钥销毁命令,以控制可信硬件销毁所述第一密钥。
可选的,在解密的交换数据保存在所述第二内存页后,解密的交换数据可再基于第二密钥以及第二内存页的物理地址进行加密。
本申请实施例还提供一种CPU,在交换数据从硬盘交换回物理内存的阶段,该CPU可通过装载上述相应的页交换装置,以实现执行本申请实施例提供的CPU角度相应的页交换方法,即在交换数据从硬盘交换回物理内存的阶段,CPU可被配置为执行本申请实施例提供的CPU角度相应的页交换方法。
针对交换数据从物理内存交换到硬盘的阶段,下面从可信硬件的角度,对本申请实施例提供的页交换装置进行介绍,下文描述的页交换装置可与上文描述的页交换方法的内容相互对应参照。
在可选实现中,图15示出了本申请实施例提供的页交换装置的又再一可选框图,如图15所示,该装置可以包括:
第一密钥生成模块300,用于基于CPU调用的密钥生成命令生成第一密钥,所述第一密钥用于对交换数据进行加解密,所述交换数据为物理内存中待释放的第一内存页的数据;
加密模块310,用于基于CPU调用的加密命令,使用所述第一密钥对非加密状态的交换数据进行加密;
数据至临时空间缓存模块320,用于将加密的交换数据缓存至CPU在物理内存中申请的临时内存空间,以便CPU将所述临时内存空间中缓存的加密的交换数据加载至硬盘。
可选的,图16示出了本申请实施例提供的页交换装置的另又一可选框图,结合图15和图16所示,该装置还可以包括:
第一摘要生成及写模块330,用于在数据至临时空间缓存模块320将加密的交换数据缓存至CPU在物理内存中申请的临时内存空间之前,基于CPU调用的摘要生成命令,生成加密的交换数据的第一摘要值;基于CPU调用的存储空间写命令,将所述第一摘要值写入所述可信硬件对应的存储空间。
可选的,所述非加密状态的交换数据被分段为多段数据;加密模块310,用于基于CPU调用的加密命令,使用所述第一密钥对非加密状态的交换数据进行加密,包括:
基于CPU多次调用的加密命令,使用所述第一密钥分别对分段的各段数据进行加密,得到多段的加密数据,其中,多段的加密数据构成加密的交换数据。
可选的,第一摘要生成及写模块330,用于基于CPU调用的摘要生成命令,生成加密的交换数据的第一摘要值,包括:
基于CPU调用的哈希摘要值计算启动命令,启动哈希摘要值计算;
基于CPU调用的分段多次输入命令,获得输入的多段的加密数据;
基于CPU调用的哈希摘要值输出命令,生成多段的加密数据对应的第一哈希摘要值,所述第一哈希摘要值为加密的交换数据的第一摘要值。
可选的,第一摘要生成及写模块330,用于基于CPU调用的存储空间写命令,将所述第一摘要值写入所述可信硬件对应的存储空间,包括:
基于CPU调用的非易失性内存空间写命令,将所述第一摘要值写入可信硬件对应的非易失性内存空间。
可选的,所述第一内存页中的交换数据基于第二密钥与第一内存页的物理地址进行加密;所述非加密状态的交换数据为:基于第二密钥以及第一内存页的物理地址,解密的交换数据。
本申请实施例还提供一种可信硬件,例如TPM硬件或者安全处理器等,在交换数据从物理内存交换到硬盘的阶段,该可信硬件可通过装载上述相应的页交换装置,以实现执行本申请实施例提供的可信硬件角度相应的页交换方法,即在交换数据从物理内存交换到硬盘的阶段,可信硬件可被配置为执行本申请实施例提供的可信硬件角度相应的页交换方法。
本申请实施例还提供一种计算机设备,该计算机设备的结构可结合图3所示,包括上述所述的CPU,以及可信硬件。
虽然本申请实施例披露如上,但本申请并非限定于此。任何本领域技术人员,在不脱离本申请的精神和范围内,均可作各种更动与修改,因此本申请的保护范围应当以权利要求所限定的范围为准。

Claims (31)

1.一种页交换方法,其特征在于,应用于CPU,所述方法包括:
确定物理内存中待释放的第一内存页,所述第一内存页的数据为待交换到硬盘的交换数据;
在物理内存中申请临时内存空间;
调用可信硬件的密钥生成命令,以控制所述可信硬件生成对所述交换数据进行加解密的第一密钥;
调用可信硬件的加密命令,以控制所述可信硬件使用所述第一密钥对非加密状态的交换数据进行加密,其中,加密的交换数据缓存在所述临时内存空间中;
将所述临时内存空间中缓存的加密的交换数据加载至硬盘,并释放所述第一内存页和所述临时内存空间。
2.根据权利要求1所述的页交换方法,其特征在于,在将所述临时内存空间中缓存的加密的交换数据加载至硬盘之前,所述方法还包括:
调用可信硬件的摘要生成命令,以控制所述可信硬件生成加密的交换数据的第一摘要值;
调用可信硬件的存储空间写命令,以控制所述可信硬件将所述第一摘要值写入可信硬件对应的存储空间。
3.根据权利要求2所述的页交换方法,其特征在于,所述调用可信硬件的加密命令,以控制所述可信硬件使用所述第一密钥对非加密状态的交换数据进行加密包括:
将非加密状态的交换数据分段为多段数据;
多次调用可信硬件的加密命令,以控制可信硬件使用所述第一密钥分别对分段的各段数据进行加密,得到多段的加密数据,其中,多段的加密数据构成加密的交换数据。
4.根据权利要求3所述的页交换方法,其特征在于,所述调用可信硬件的摘要生成命令,以控制所述可信硬件生成加密的交换数据的第一摘要值包括:
调用可信硬件的哈希摘要值计算启动命令,以控制可信硬件启动哈希摘要值计算;
调用可信硬件的分段多次输入命令,以向可信硬件输入多段的加密数据;
调用可信硬件的哈希摘要值输出命令,以控制可信硬件生成多段的加密数据对应的第一哈希摘要值,所述第一哈希摘要值为加密的交换数据的第一摘要值。
5.根据权利要求2所述的页交换方法,其特征在于,所述调用可信硬件的存储空间写命令,以控制所述可信硬件将所述第一摘要值写入可信硬件对应的存储空间包括:
调用可信硬件的非易失性内存空间写命令,以控制可信硬件将所述第一摘要值写入可信硬件对应的非易失性内存空间。
6.根据权利要求1所述的页交换方法,其特征在于,所述在物理内存中申请临时内存空间包括:
对第一内存页的物理页帧进行临时映射,基于临时映射的地址,在物理内存中申请临时内存空间。
7.根据权利要求6所述的页交换方法,其特征在于,所述对第一内存页的物理页帧进行临时映射包括:
对第一内存页的物理页帧临时建立高端内存映射。
8.根据权利要求1所述的页交换方法,其特征在于,所述调用可信硬件的密钥生成命令,以控制所述可信硬件生成对所述交换数据进行加解密的第一密钥包括:
调用可信硬件的密钥创建命令,以控制所述可信硬件创建第一密钥;
调用可信硬件的密钥加载命令,以控制所述可信硬件加载所述第一密钥。
9.根据权利要求1所述的页交换方法,其特征在于,还包括:
保存所述第一密钥的密钥句柄。
10.根据权利要求1-9任一项所述的页交换方法,其特征在于,所述第一内存页中的交换数据基于第二密钥与第一内存页的物理地址进行加密;所述非加密状态的交换数据为:基于第二密钥以及第一内存页的物理地址,解密的交换数据。
11.根据权利要求1所述的页交换方法,其特征在于,在将所述临时内存空间中缓存的加密的交换数据加载至硬盘之前,还包括:
将第一内存页的页表项中的当前比特位进行清零。
12.一种页交换方法,其特征在于,应用于可信硬件,所述方法包括:
基于CPU调用的密钥生成命令生成第一密钥,所述第一密钥用于对交换数据进行加解密,所述交换数据为物理内存中待释放的第一内存页的数据;
基于CPU调用的加密命令,使用所述第一密钥对非加密状态的交换数据进行加密;
将加密的交换数据缓存至CPU在物理内存中申请的临时内存空间,以便CPU将所述临时内存空间中缓存的加密的交换数据加载至硬盘。
13.根据权利要求12所述的页交换方法,其特征在于,在将加密的交换数据缓存至CPU在物理内存中申请的临时内存空间之前,所述方法还包括:
基于CPU调用的摘要生成命令,生成加密的交换数据的第一摘要值;
基于CPU调用的存储空间写命令,将所述第一摘要值写入所述可信硬件对应的存储空间。
14.根据权利要求13所述的页交换方法,其特征在于,所述非加密状态的交换数据被分段为多段数据;所述基于CPU调用的加密命令,使用所述第一密钥对非加密状态的交换数据进行加密包括:
基于CPU多次调用的加密命令,使用所述第一密钥分别对分段的各段数据进行加密,得到多段的加密数据,其中,多段的加密数据构成加密的交换数据。
15.根据权利要求14所述的页交换方法,其特征在于,所述基于CPU调用的摘要生成命令,生成加密的交换数据的第一摘要值包括:
基于CPU调用的哈希摘要值计算启动命令,启动哈希摘要值计算;
基于CPU调用的分段多次输入命令,获得输入的多段的加密数据;
基于CPU调用的哈希摘要值输出命令,生成多段的加密数据对应的第一哈希摘要值,所述第一哈希摘要值为加密的交换数据的第一摘要值。
16.根据权利要求13所述的页交换方法,其特征在于,所述基于CPU调用的存储空间写命令,将所述第一摘要值写入所述可信硬件对应的存储空间包括:
基于CPU调用的非易失性内存空间写命令,将所述第一摘要值写入可信硬件对应的非易失性内存空间。
17.根据权利要求12-16任一项所述的页交换方法,其特征在于,所述第一内存页中的交换数据基于第二密钥与第一内存页的物理地址进行加密;所述非加密状态的交换数据为:基于第二密钥以及第一内存页的物理地址,解密的交换数据。
18.一种页交换方法,其特征在于,应用于CPU,所述方法包括:
在访问物理内存的第一内存页时,如果检测到第一内存页的交换数据被交换到硬盘,在物理内存中申请临时内存空间;其中,硬盘中的交换数据为经由可信硬件使用第一密钥加密的交换数据;
将加密的交换数据从硬盘加载至所述临时内存空间;
在物理内存中为交换数据重新分配第二内存页;
调用可信硬件的解密命令,以控制可信硬件使用第一密钥对临时内存空间中加密的交换数据进行解密,其中,解密的交换数据保存在所述第二内存页;
将第一内存页的页表项重新映射到第二内存页,并释放所述临时内存空间。
19.根据权利要求18所述的页交换方法,其特征在于,在物理内存中为交换数据重新分配第二内存页之前,所述方法还包括:
调用可信硬件的摘要生成命令,以控制所述可信硬件生成加密的交换数据的第二摘要值;
调用可信硬件的存储空间读命令,以控制可信硬件从对应的存储空间读取加密的交换数据的第一摘要值;
获取所述可信硬件传递的所述第一摘要值。
20.根据权利要求19所述的页交换方法,其特征在于,所述方法还包括:
比较第一摘要值与第二摘要值是否一致;
若第一摘要值与第二摘要值一致,进入执行所述在物理内存中为交换数据重新分配第二内存页的步骤;
若第一摘要值与第二摘要值不一致,确定所述加密的交换数据被篡改。
21.根据权利要求19所述的页交换方法,其特征在于,所述加密的交换数据包括多段的加密数据;所述调用可信硬件的摘要生成命令,以控制所述可信硬件生成加密的交换数据的第二摘要值包括:
调用可信硬件的哈希摘要值计算启动命令,以控制可信硬件启动哈希摘要值计算;
调用可信硬件的分段多次输入命令,以向可信硬件输入多段的加密数据;
调用可信硬件的哈希摘要值输出命令,以控制可信硬件生成多段的加密数据对应的第二哈希摘要值,所述第二哈希摘要值为加密的交换数据的第二摘要值。
22.根据权利要求18所述的页交换方法,其特征在于,所述方法还包括:
在调用可信硬件的解密命令时,向可信硬件传递第一密钥的密钥句柄。
23.根据权利要求21所述的页交换方法,其特征在于,所述调用可信硬件的解密命令,以控制可信硬件使用第一密钥对临时内存空间中加密的交换数据进行解密包括:
多次调用可信硬件的解密命令,以控制可信硬件使用第一密钥分别对各段的加密数据进行解密,得到解密的交换数据。
24.根据权利要求18所述的页交换方法,其特征在于,还包括:
在物理内存中为交换数据重新分配第二内存页时,建立第二内存页的临时映射;
在解密的交换数据保存在所述第二内存页后,解除第二内存页的临时映射,并调用可信硬件的密钥销毁命令,以控制可信硬件销毁所述第一密钥。
25.根据权利要求18-24任一项所述的页交换方法,其特征在于,在解密的交换数据保存在所述第二内存页后,解密的交换数据再基于第二密钥以及第二内存页的物理地址进行加密。
26.一种页交换装置,其特征在于,应用于CPU,所述页交换装置包括:
待释放内存页确定模块,用于确定物理内存中待释放的第一内存页,所述第一内存页的数据为待交换到硬盘的交换数据;
临时空间申请模块,用于在物理内存中申请临时内存空间;
密钥生成命令调用模块,用于调用可信硬件的密钥生成命令,以控制所述可信硬件生成对所述交换数据进行加解密的第一密钥;
加密命令调用模块,用于调用可信硬件的加密命令,以控制所述可信硬件使用所述第一密钥对非加密状态的交换数据进行加密,其中,加密的交换数据缓存在所述临时内存空间中;
交换及释放模块,用于将所述临时内存空间中缓存的加密的交换数据加载至硬盘,并释放所述第一内存页和所述临时内存空间。
27.一种页交换装置,其特征在于,应用于CPU,所述页交换装置包括:
临时空间申请模块,用于在访问物理内存的第一内存页时,如果检测到第一内存页的交换数据被交换到硬盘,在物理内存中申请临时内存空间;其中,硬盘中的交换数据为经由可信硬件使用第一密钥加密的交换数据;
临时加载模块,用于将加密的交换数据从硬盘加载至所述临时内存空间;
第二内存页分配模块,用于在物理内存中为交换数据重新分配第二内存页;
解密命令调用模块,用于调用可信硬件的解密命令,以控制可信硬件使用第一密钥对临时内存空间中加密的交换数据进行解密,其中,解密的交换数据保存在所述第二内存页;
映射及释放模块,用于将第一内存页的页表项重新映射到第二内存页,并释放所述临时内存空间。
28.一种CPU,其特征在于,所述CPU被配置为执行如权利要求1-11任一项所述的页交换方法,和/或,执行如权利要求18-25任一项所述的页交换方法。
29.一种页交换装置,其特征在于,应用于可信硬件,所述页交换装置包括:
第一密钥生成模块,用于基于CPU调用的密钥生成命令生成第一密钥,所述第一密钥用于对交换数据进行加解密,所述交换数据为物理内存中待释放的第一内存页的数据;
加密模块,用于基于CPU调用的加密命令,使用所述第一密钥对非加密状态的交换数据进行加密;
数据至临时空间缓存模块,用于将加密的交换数据缓存至CPU在物理内存中申请的临时内存空间,以便CPU将所述临时内存空间中缓存的加密的交换数据加载至硬盘。
30.一种可信硬件,其特征在于,所述可信硬件被配置为执行如权利要求12-17任一项所述的页交换方法。
31.一种计算机设备,其特征在于,包括如权利要求28所述的CPU,以及如权利要求30所述的可信硬件。
CN202011119397.8A 2020-10-19 2020-10-19 一种页交换方法、装置、cpu、可信硬件及计算机设备 Active CN112231239B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011119397.8A CN112231239B (zh) 2020-10-19 2020-10-19 一种页交换方法、装置、cpu、可信硬件及计算机设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011119397.8A CN112231239B (zh) 2020-10-19 2020-10-19 一种页交换方法、装置、cpu、可信硬件及计算机设备

Publications (2)

Publication Number Publication Date
CN112231239A true CN112231239A (zh) 2021-01-15
CN112231239B CN112231239B (zh) 2022-05-17

Family

ID=74118434

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011119397.8A Active CN112231239B (zh) 2020-10-19 2020-10-19 一种页交换方法、装置、cpu、可信硬件及计算机设备

Country Status (1)

Country Link
CN (1) CN112231239B (zh)

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6003117A (en) * 1997-10-08 1999-12-14 Vlsi Technology, Inc. Secure memory management unit which utilizes a system processor to perform page swapping
WO2004017210A1 (fr) * 2002-08-14 2004-02-26 Beijing Well-Star Computer Security Protection Technology Co., Ltd Procede et dispositif de securite informatique a isolement physique et a memoires multiples
CN107771335A (zh) * 2015-06-16 2018-03-06 微软技术许可有限责任公司 受保护区域
CN109408405A (zh) * 2018-10-15 2019-03-01 Oppo广东移动通信有限公司 内存页交换方法、装置、终端及存储介质
CN111090869A (zh) * 2019-12-16 2020-05-01 海光信息技术有限公司 一种数据加密方法、处理器及计算机设备

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6003117A (en) * 1997-10-08 1999-12-14 Vlsi Technology, Inc. Secure memory management unit which utilizes a system processor to perform page swapping
WO2004017210A1 (fr) * 2002-08-14 2004-02-26 Beijing Well-Star Computer Security Protection Technology Co., Ltd Procede et dispositif de securite informatique a isolement physique et a memoires multiples
CN107771335A (zh) * 2015-06-16 2018-03-06 微软技术许可有限责任公司 受保护区域
CN109408405A (zh) * 2018-10-15 2019-03-01 Oppo广东移动通信有限公司 内存页交换方法、装置、终端及存储介质
CN111090869A (zh) * 2019-12-16 2020-05-01 海光信息技术有限公司 一种数据加密方法、处理器及计算机设备

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
喻潇等: "智能电网PDA终端的密钥管理和认证研究", 《网络与信息安全学报》 *
李攀攀等: "一种面向云平台的虚拟机内存SLA审计机制", 《电信科学》 *
王丽娜等: "云存储中基于可信平台模块的密钥使用次数管理方法", 《计算机研究与发展》 *

Also Published As

Publication number Publication date
CN112231239B (zh) 2022-05-17

Similar Documents

Publication Publication Date Title
US20230128711A1 (en) Technologies for trusted i/o with a channel identifier filter and processor-based cryptographic engine
US11550962B2 (en) Secure processor and a program for a secure processor
US11088846B2 (en) Key rotating trees with split counters for efficient hardware replay protection
CN112005237B (zh) 安全区中的处理器与处理加速器之间的安全协作
KR101224322B1 (ko) 마이크로제어기 내의 데이터 보안 처리를 위한 방법, 장치 및 집적 회로
KR100692348B1 (ko) 휴면 보호
CN109800050B (zh) 一种虚拟机的内存管理方法、装置、相关设备及系统
KR101081118B1 (ko) 보안되는 프로그램을 복원하는 컴퓨터 구현 방법, 정보 처리 시스템 및 컴퓨터 판독 가능한 기록 매체
KR101054981B1 (ko) 프로그램의 콘텍스트를 보안적으로 저장하는 컴퓨터 구현 방법, 정보 처리 시스템 및 컴퓨터 판독 가능한 기록 매체
CN109739613B (zh) 嵌套页表的维护方法、访问控制方法及相关装置
JP2010510574A (ja) セキュアデバイス・システムにおけるフラッシュメモリ・ブロックの保護と方法
WO2017128720A1 (zh) 基于vtpm对虚拟机进行安全保护的方法及系统
CN109725983B (zh) 一种数据交换方法、装置、相关设备及系统
KR102365263B1 (ko) 하드웨어 기반의 gpu 메모리 보호를 위한 효율적인 암호화 방법 및 장치
JP2022512051A (ja) メモリ完全性チェックのための完全性ツリー
US7603566B2 (en) Authenticated process switching on a microprocessor
CN114238185A (zh) 直接存储访问及命令数据传输方法、装置及相关设备
US20240080193A1 (en) Counter integrity tree
CN110932853B (zh) 一种基于可信模块的密钥管理装置和密钥管理方法
CN112231239B (zh) 一种页交换方法、装置、cpu、可信硬件及计算机设备
JP5316592B2 (ja) セキュアプロセッサ用プログラム
Fu et al. RegKey: a register-based implementation of ECC signature algorithms against one-shot memory disclosure
CN115640099A (zh) 虚拟机控制块的安全保护方法、装置及相关器件
CN114817936B (zh) 基于异构内存的内存全加密管理方法、装置、设备及介质
US20160140055A1 (en) Least Privileged Operating 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
GR01 Patent grant
GR01 Patent grant