一种进程数据保护方法转让专利

申请号 : CN201910861694.0

文献号 : CN110598403B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 吴迪

申请人 : 北京环球国广媒体科技有限公司

摘要 :

本发明涉及一种进程数据保护方法,该方法使用包括安全处理器核心的多核处理器,将需要数据保护的安全进程在安全处理器核心上执行,并支持进程在安全状态和非安全状态之间切换;所述安全处理器核心将安全进程对内存的读写进行相应的加密和解密,从而对其数据进行保护。

权利要求 :

1.一种进程数据保护方法,其特征在于,进程的代码头部设置相应的标志,用于标记该进程是否为安全进程,执行进程的处理器为多核处理器,包括至少一个安全处理器核心和至少一个普通处理器核心,所述安全处理器核心包括加解密引擎,用于对进程数据进行加密和解密,该方法包括以下步骤:步骤100:当一个进程启动后,确定该进程是安全进程或非安全进程;所述安全进程是指进程数据需要进行保护的进程,非安全进程是指进程数据无需进行保护的进程;

步骤110:如果该进程是安全进程,则将该进程调度到安全处理器核心上运行,否则将该进程调度到普通处理器核心上运行;

步骤120:一个非安全进程A在其运行过程中,所述非安全进程A通过设置相应的安全标志寄存器声明其进入安全状态;所述安全标志寄存器被设置后,会立即触发该普通处理器核心的安全中断,该安全中断用于通知处理器执行进程的安全状态切换;

步骤130:处理器保存该非安全进程A的运行现场,基于该运行现场,将该非安全进程A转移到安全处理器核心运行,从而使其临时成为一个安全进程A;

步骤140:当所述安全进程A想要退出安全状态时,所述安全进程A通过设置相应的状态寄存器声明其退出安全状态;当状态寄存器被设置为退出安全状态后,触发该安全处理器核心的安全中断,以通知该安全处理器核心执行进程的状态切换;

步骤150:处理器保存该安全进程A的运行现场,基于该运行现场,将该安全进程A转移到普通处理器核心运行,从而使恢复为非安全进程A;

该方法还包括以下步骤:

步骤200:安全进程生成一个进程特征值K1,将该进程特征值K1发送给安全处理器核心的加解密引擎;

步骤210:所述加解密引擎生成一个随机数K2,并计算密钥Key=K1⊕K2,将该密钥Key存储于所述加解密引擎的密钥存储器内;每个安全进程都具有各自的密钥,所述密钥存储器内存储多个密钥,每个密钥与相应的安全进程的进程ID对应存储,加解密引擎可以通过查询密钥存储器获取与安全进程对应的密钥;

步骤220:当所述安全进程需要向内存写入数据时,其将写入的数据发送给所述加解密引擎,所述加解密引擎使用该安全进程的密钥对该数据进行加密,将加密结果发送给内存;

步骤230:当所述安全进程从内存读取数据时,所述安全处理器核心将读取到的数据首先送入所述加解密引擎,所述加解密引擎使用该安全进程的密钥对读取的数据进行解密,将解密结果返回给所述安全进程;

当进程从非安全进程切换到安全进程时,安全处理器核心读取该进程在内存中所有存储的数据,将这些数据加密后重新写回内存;当进程从安全进程切换到非安全进程时,安全处理器核心需要读取该进程在内存中所有存储的数据,将这些数据解密后再写回内存。

2.根据权利要求1所述的方法,其特征在于,在处理器上执行的进程默认为非安全进程。

3.根据权利要求1-2任意一项所述的方法,其特征在于,进程在启动后,通过执行其头部的程序代码告知处理器其为安全进程。

4.根据权利要求1所述的方法,其特征在于,所述进程特征值是安全进程基于自身进程的特征所生成的一个数值。

5.根据权利要求4所述的方法,其特征在于,进程特征包括以下特征中的一个或多个:操作系统赋予的进程ID、进程代码的哈希值、进程代码内置的常量、进程的名字。

说明书 :

一种进程数据保护方法

技术领域

[0001] 本发明属于计算机领域,尤其涉及一种进程数据保护方法。

背景技术

[0002] 进程在处理器上运行,可以将生成的临时数据写入内存,并在需要时读入该数据。在这个读写过程中,数据是明文出现的,因此,从处理器到内存之间的信道上,数据可能被监听;存储在内存中的数据也可能被其他进程所读取,对于安全性要求很高的计算机中某些敏感进程的敏感数据而言,这些情况是不能接受的。
[0003] 现有技术中的解决方案一种是在软件层面(例如操作系统)控制,阻止内存中的数据被非法读取,但是软件可能被修改,软件层面也无法阻止硬件层面上的监听和窃取。另一种方案是使用存储器加密,处理器和内存之间传输的数据、内存中存储的数据都是加过密的,只有处理器内部可以解密这些数据,但是这种方案需要处理器进行大量的加密和解密操作,给处理器带来了很大的资源开销。

发明内容

[0004] 为了解决现有技术中的上述问题,本发明提供了一种进程数据保护方法。
[0005] 本发明采用的技术方案具体如下:
[0006] 一种进程数据保护方法,执行进程的处理器为多核处理器,包括至少一个安全处理器核心和至少一个普通处理器核心,所述安全处理器核心包括加解密引擎,用于对进程数据进行加密和解密,该方法包括以下步骤:
[0007] 步骤100:当一个进程启动后,确定该进程是安全进程或非安全进程;所述安全进程是指进程数据需要进行保护的进程,非安全进程是指进程数据无需进行保护的进程;
[0008] 步骤110:如果该进程是安全进程,则将该进程调度到安全处理器核心上运行,否则将该进程调度到普通处理器核心上运行;
[0009] 步骤120:一个非安全进程A在其运行过程中,通过设置相应的安全标志寄存器声明其进入安全状态;
[0010] 步骤130:处理器保存该非安全进程A的运行现场,基于该运行现场,将该非安全进程A转移到安全处理器核心运行,从而使其临时成为一个安全进程A。
[0011] 步骤140:当所述安全进程A想要退出安全状态时,其通过设置相应的状态寄存器声明其退出安全状态;
[0012] 步骤150:处理器保存该安全进程A的运行现场,基于该运行现场,将该安全进程A转移到普通处理器核心运行,从而使恢复为非安全进程A。
[0013] 进一步地,还包括以下步骤:
[0014] 步骤200:安全进程生成一个进程特征值K1,将该进程特征值K1发送给安全处理器核心的加解密引擎;
[0015] 步骤210:所述加解密引擎生成一个随机数K2,并计算密钥Key=K1⊕K2,将该密钥Key存储于所述加解密引擎的密钥存储器内;
[0016] 步骤220:当所述安全进程需要向内存写入数据时,其将写入的数据发送给所述加解密引擎,所述加解密引擎使用该安全进程的密钥对该数据进行加密,将加密结果发送给内存;
[0017] 步骤230:当所述安全进程从内存读取数据时,所述安全处理器核心将读取到的数据首先送入所述加解密引擎,所述加解密引擎使用该安全进程的密钥对读取的数据进行解密,将解密结果返回给所述安全进程。
[0018] 进一步地,当进程从非安全进程切换到安全进程时,安全处理器核心读取该进程在内存中所有存储的数据,将这些数据加密后重新写回内存;当进程从安全进程切换到非安全进程时,安全处理器核心需要读取该进程在内存中所有存储的数据,将这些数据解密后再写回内存。
[0019] 进一步地,在处理器上执行的进程默认为非安全进程。
[0020] 进一步地,在进程的代码头部设置相应的标志,用于标记该进程是否安全进程。
[0021] 进一步地,进程在启动后,通过执行其头部的程序代码告知处理器其为安全进程。
[0022] 进一步地,所述安全标志寄存器被设置后,会立即触发该普通处理器核心的安全中断,该安全中断用于通知处理器执行进程的安全状态切换。
[0023] 进一步地,当状态寄存器被设置为退出安全状态后,触发该安全处理器核心的安全中断,以通知该安全处理器核心执行进程的状态切换。
[0024] 进一步地,所述进程特征值是安全进程基于自身进程的特征所生成的一个数值。
[0025] 进一步地,进程特征包括以下特征中的一个或多个:操作系统赋予的进程ID、进程代码的哈希值、进程代码内置的常量、进程的名字。
[0026] 本发明的有益效果是:对安全进程的数据进行有效的保护,并且只对需要数据保护的进程进行安全保护,提高了处理器的执行效率。

附图说明

[0027] 此处所说明的附图是用来提供对本发明的进一步理解,构成本申请的一部分,但并不构成对本发明的不当限定,在附图中:
[0028] 图1是本发明涉及的系统架构的逻辑示意图。

具体实施方式

[0029] 下面将结合附图以及具体实施例来详细说明本发明,其中的示意性实施例以及说明仅用来解释本发明,但并不作为对本发明的限定。
[0030] 参见附图1,其示出了本发明涉及的系统架构的逻辑示意图,其主要包括处理器和内存,为了方便说明,图中略去了与本发明无关的其他计算机部件。处理器和内存之间具有通信信道,用于处理器与内存之间的数据传输,所述通信信道例如可以是一条总线。进程在处理器上运行,基于进程的需求,处理器会将进程数据写入内存,或将进程数据从内存中读入处理器。
[0031] 为了解决进程数据保护问题,本发明采用了多核心的处理器,并且,所述多个核心中包括至少一个安全处理器核心和至少一个普通处理器核心。两种处理器核心的区别在于,安全处理器核心可以将运行于该核心上的进程数据进行加密和解密。因而,本发明可以将需要进行数据保护的进程放在安全处理器核心上运行,而将无需进行数据保护的进程放在普通处理核心上运行。因此对整个处理器而言,只需要对特殊的敏感进程进行数据保护,降低了处理器的负担。
[0032] 基于上述多核处理器,下面详细说明本发明的方法。
[0033] 步骤100:当一个进程启动后,确定该进程是安全进程或非安全进程。
[0034] 所述安全进程是指进程数据需要进行保护的进程,非安全进程是指进程数据无需进行保护的进程。在默认情况下,进程可以默认为非安全进程,除非通过以下方法确定该进程是安全进程。
[0035] 具体的,通常而言,计算机进程是由其操作系统启动,当操作系统启动一个进程时,其会将该进程的程序代码载入内存,然后通知处理器所述程序代码在内存中的地址,从而处理器可基于该地址读入程序代码并执行。
[0036] 在上述这个过程中,可以有多种方法确定该进程是否是安全进程。一种方法是可以在进程的代码头部设置相应的标志,用于标记该进程是否安全进程,当操作系统发现该标志时,就可以确定该进程是安全进程。另外一种方法是进程在启动后,通过执行其头部的程序代码告知处理器其为安全进程,例如通过设置相应的寄存器。具体的确定方法本发明不做限制,也可以同时结合使用多种方法。
[0037] 步骤110:如果该进程是安全进程,则将该进程调度到安全处理器核心上运行,否则将该进程调度到普通处理器核心上运行。
[0038] 具体的,如果由操作系统确定该进程是安全进程,则操作系统可以直接通知处理器,由安全处理器核心执行该进程的程序代码。如果由处理器确定该进程是安全进程,则可以首先由普通处理器核心执行该进程程序代码的头部代码,在确定该进程是安全进程时,再转交到安全处理器核心执行。
[0039] 通过上述两个步骤,可以将进程的整个生命周期都设置为安全进程,对进程数据进行保护。但是,整个生命周期都处于安全进程,实际上对很多进程都不是必要的。因此,本发明还允许非安全进程临时进入安全状态,即基于进程的需要,将非安全进程临时转变为安全进程,在不需要数据保护时,再重新转变为非安全进程。具体的,包括以下步骤:
[0040] 步骤120:一个非安全进程A在其运行过程中,通过设置相应的安全标志寄存器声明其进入安全状态。
[0041] 具体的,所述非安全进程A当前是在一个普通处理器核心上运行,所述普通处理器核心提供了一个安全标志寄存器。该非安全进程A在需要进入安全状态时,设置所述安全标志寄存器,所述安全标志寄存器被设置后,会立即触发该普通处理器核心的安全中断,该安全中断用于通知处理器执行进程的安全状态切换。
[0042] 步骤130:处理器保存该非安全进程A的运行现场,基于该运行现场,将该非安全进程A转移到安全处理器核心运行,从而使其临时成为一个安全进程A。
[0043] 具体的,当运行该非安全进程的普通处理器核心接收到安全中断时,其暂停该进程的运行,并执行运行现场的保存和转移。处理器的现场保存与恢复已经是现有技术,在此不再赘述。本发明只是将其恢复到一个安全处理器核心。
[0044] 步骤140:当所述安全进程A想要退出安全状态时,其通过设置相应的状态寄存器声明其退出安全状态。
[0045] 与进入安全状态类似,所述安全进程A所在的安全处理器核心为进程提供了状态寄存器,当状态寄存器被设置为退出安全状态后,也会触发该安全处理器核心的安全中断,以通知该安全处理器核心执行进程的状态切换。
[0046] 步骤150:处理器保存该安全进程A的运行现场,基于该运行现场,将该安全进程A转移到普通处理器核心运行,从而使恢复为非安全进程A。
[0047] 步骤150实际上是步骤130的逆过程。通过上述步骤,进程A可以在安全进程和非安全进程之间任意切换,只在需要时进行数据保护,平衡了执行安全和效率。
[0048] 上述步骤说明了本发明安全进程的调度过程,在调度到安全处理器核心后,安全处理器核心需要对其数据进行保护,下面详细说明安全处理器核心的保护过程。
[0049] 安全处理器核心对运行与其上的安全进程进行数据加密和解密,具体而言,安全处理器核心对安全进程写入内存的数据进行加密,相应的,对从内存读入的数据进行解密。为此,所述安全处理器核心具有一个专门的加解密引擎,该加解密引擎基于存储的密钥,对输入的数据块进行加密或解密。基于这一结构,所述加解密的具体步骤包括:
[0050] 步骤200:安全进程生成一个进程特征值K1,将该进程特征值K1发送给安全处理器核心的加解密引擎。
[0051] 所述进程特征值是安全进程基于自身进程的特征所生成的一个数值。例如,所述进程特征可以包括操作系统赋予的进程ID,或者进程代码的哈希值,或者进程代码内置的常量,或者进程的名字等等。也可以是上述各种特征的综合计算结果,例如各个特征的连接,或者综合各个特征计算得到的哈希值。本领域技术人员可以根据实际情况确定进程特征值的计算方式,本发明对此不作限制,都在本发明的保护范围之内。
[0052] 步骤210:所述加解密引擎生成一个随机数K2,并计算密钥Key=K1⊕K2,将该密钥Key存储于所述加解密引擎的密钥存储器内。
[0053] 具体的,所述加解密引擎具有一个随机数发生器,通过该随机数发生器生成随机数K2。所述密钥是K1和K2异或的结果,其包括了进程特征值信息,并且包括了随机数信息,因此密钥的生成是安全的,并且具有唯一性。
[0054] 所述密钥存储器是加解密引擎内用于存储密钥的引擎,在本发明中,每个安全进程都具有各自的密钥,因此密钥存储器内可以存储多个密钥,每个密钥与相应的安全进程的进程ID对应存储。对于在该安全处理器核心上运行的每个安全进程,加解密引擎可以通过查询密钥存储器获取其相应的密钥。
[0055] 步骤220:当所述安全进程需要向内存写入数据时,其将写入的数据发送给所述加解密引擎,所述加解密引擎使用该安全进程的密钥对该数据进行加密,将加密结果发送给内存。
[0056] 所述加解密引擎所使用的加密算法可以是本领域中任意一种对称加密算法,本发明对此不作限制。但是,由于存储器的读写都是以字节为单位的,因此为了方便随机读写,加密应当是以字节为单位的,即一个字节一个字节进行加密。因此,一种优选的方式是使用异或计算,即对写入数据中的任意一个字节B,其加密结果E=B⊕Key。
[0057] 对于内存而言,其无需知道存储的数据是否是加过密的,其只是将接收到的数据进行存储,与接收正常进程写内存的过程是相同的。因此内存的操作方式可以与现有技术相同,在此不再赘述。
[0058] 步骤230:当所述安全进程从内存读取数据时,所述安全处理器核心将读取到的数据首先送入所述加解密引擎,所述加解密引擎使用该安全进程的密钥对读取的数据进行解密,将解密结果返回给所述安全进程。
[0059] 所述解密过程是上述加密过程的逆过程,由于读取过程可能是随机读取,其读取也是以字节为单位,可以对字节进行相应的解密。仍然以上述异或计算为例,对读取数据中的任意一个字节E,其解密结果B=E⊕key。
[0060] 上述步骤说明了安全处理器核心对于安全进程读写数据的保护过程。但是,如前所述,本发明允许一个进程随时进行安全状态的切换,在这种情况下,进程在内存中所存储的数据有可能出现加密和未加密两种状态,这将会导致数据状态的混乱。为了解决这一问题,当进程进行安全状态切换时,其在内存中存储的数据也应当进行状态切换。即:当进程从非安全进程切换到安全进程时,安全处理器核心需要读取该进程在内存中所有存储的数据,将这些数据加密后重新写回内存;类似的,当进程从安全进程切换到非安全进程时,安全处理器核心需要读取该进程在内存中所有存储的数据,将这些数据解密后再写回内存。这样,进程在内存中所存储的数据状态与该进程的安全状态保持一致,有效的保护数据安全。
[0061] 以上所述仅是本发明的较佳实施方式,故凡依本发明专利申请范围所述的构造、特征及原理所做的等效变化或修饰,均包括于本发明专利申请范围内。