具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
分析
如图1所示为现有技术中计算设备的***层次示意图,从上至下,计算设备包括:用户界面层101,应用层102,操作***内核层103,硬件映射层104以及硬件层105。
其中,用户界面层101是用户与设备之间的接口,用户通过该层与设备(即设备的其他层次,例如应用层102)进行交互。应用层102指应用软件层。
操作***内核层103是一种基于软件的逻辑层,一般来讲是由软件数据和软件代码组成,相比于界面层101和应用层102,操作***内核层103的代码拥有更高的权限,可以对计算机***中的各种软硬件资源进行完整的操作。
硬件映射层104是一种基于软件的逻辑层,它一般工作在操作***内核层,拥有与内核层相同的权限。硬件映射层主要是为了解决将不同类型的硬件的操作模式映射为一种统一的上层接口,向上屏蔽硬件的特殊性。一般来说,硬件映射层主要***作***内核层103使用,来完成对各种硬件的操作。
硬件层105是指构成计算机***的所有硬件部件。
用户通过用户界面层101(即处于用户界面层101的用户界面)对该计算设备进行操作并得到图形化或非图形化反馈。以保存数据的操作为例,其过程包括:
(1)用户通过某应用程序提供的用户界面101,选择“保存”功能;
(2)应用层102调用对应代码,将上述用户操作转化为一个或多个操作***提供的接口函数,即“保存”操作转化成为对一系列操作***内核层103提供的接口函数的调用;
(3)操作***内核层103将每一个操作***接口函数转化为一个或多个硬件映射层104提供的接口函数;即“保存”操作转化成为对一系列硬件映射层104提供的接口函数的调用;
(4)硬件映射层104将每一个自己提供的接口函数转化为一个或多个硬件指令调用;最后,
(5)硬件层105(例如CPU)接收上述硬件指令调用并执行硬件指令。
针对该计算设备,当其被恶意代码侵入后,恶意代码可以从计算设备中取得所需数据,窃取数据后其行为模式包括:
(1)存储行为:将目标数据内容保存到某个存储位置;
(2)传输行为:将窃取的数据直接通过网络传输到指定的目标地址。
另外,使用上述计算设备或信息设备的人员进行内部泄密的行为模式包括:
(1)主动泄密:涉密人员通过主动拷贝、通过恶意工具穿透安全***、置入木马等手段直接取得涉密数据,并进行泄密;
(2)被动泄密:涉密人员使用的电脑或存储介质因保管不善丢失或使用不当(例如将涉密装备直接接入Internet)造成的泄密。
上述多种泄密方式使得该计算设备的数据安全无法保障。
发明人经研究发现,计算机运行过程中,CPU地址寄存器保存下一条将要运行的机器指令的地址,例如pc(program counter,程序计数器)指向的地址;获取该寄存器中的数据,并按照该数据指向的地址,读取下一条或者多条将要运行的机器指令,可以实现运行时捕获机器指令的目的。
并且,通过修改所述一条或多条机器指令所组成的待调度指令片段(例如在其中***额外的跳转指令,本文称为指令重组),使得在该段指令运行完毕之前重新获得CPU执行权,并再次捕获下一个待调度指令片段,可以实现运行时连续捕获机器指令的目的。
并且,在获取到待调度指令片段后,还可以对其中的机器指令进行分析以及处理,从而不仅可以实现运行时指令捕获、重组,还可以实现对预定的目标指令的管理。
指令重组或指令追踪
基于上述分析和发现,本发明的一个实施例中提供了一种运行时指令重组方法,该方法运行时称为指令重组平台。如图2所示,该方法S100包括:
S101,缓存指令运行环境;所述指令运行环境包括地址寄存器,地址寄存器保存下一条将要运行的机器指令的地址,该地址为第一地址;
S102,获取待调度的机器指令片段;其中,待调度的机器指令片段的最后一条指令为第一跳转指令;
S103,在所述第一跳转指令前,***第二跳转指令,生成具有第二地址的重组指令片段;所述第二跳转指令指向指令重组平台的入口地址,即执行该第二跳转指令后,执行步骤S101;
S104,将所述地址寄存器中的第一地址修改为第二地址;和
S105,恢复所述指令运行环境。
在本实施例中,上述运行时指令重组方法在X86架构的CPU上执行;在本发明的其他实施例中,上述运行时指令重组方法也可以在MIPS处理器或基于ARM架构的处理器上执行。本领域普通技术人员可以理解,上述方法可以在计算设备中的任何其他类型的指令处理单元上执行。
其中,在步骤S101中,所述缓存指令运行环境可以包括:
向缓存栈中压入CPU机器指令运行相关的寄存器数据。
在本发明的其他实施例中,缓存或保存指令运行环境也可以在指定的、默认的其他缓存数据结构和地址中进行。
在步骤S101中,所述地址寄存器可以为CPU地址寄存器。
在步骤S102中,待调度的机器指令片段中最后一条指令为第一跳转指令,待调度的机器指令片段中只有一条跳转指令,待调度的机器指令片段包括所述第一跳转指令以及其之前的所有待调度的机器指令。
在步骤S103中,在所述待调度的机器指令片段的最后一条指令(即第一跳转指令JP1)前,***第二跳转指令JP2,所述JP2指向指令重组平台的入口地址,生成具有第二地址A"的重组指令片段。
***第二跳转指令是为了在CPU运行所述待调度的机器指令片段时,在JP1运行前,重新开始运行所述指令重组平台,这样,指令重组平台就可以继续分析下一段待调度的机器指令片段,从而通过重复本方法来完成对所有运行时指令的重组。
在步骤S105中,恢复所述指令运行环境可以包括:
从缓存栈中弹出指令运行相关的寄存器数据;其中地址寄存器保存的跳转指令的目标地址已经修改为以第二地址A"为入口地址的新的机器指令片段。
步骤S105执行后,恢复了所述指令运行环境,指令重组平台完成一次运行,CPU执行所述重组指令片段,即CPU将执行以第二地址A"为入口地址的机器指令片段。重组指令片段执行到第二跳转指令JP2时,所述指令重组平台重新得到CPU控制权(即执行步骤S101),此时第一跳转指令的目标地址已经得到,该目标地址为新的第一地址,继而重新执行步骤S101~步骤S105。
下面结合图3,进一步说明指令重组过程和重组指令片段的生成过程。
图3中包括待调度的机器指令集合401(例如已经载入内存中的某程序的机器指令),其中指令4012为第一跳转指令,如果指令4012的目标地址为变量,则首先假设指令4012指向机器指令4013;从第一跳转指令4012以前的包括第一跳转指令4012的所有待调度的机器指令构成了机器指令片段4011。
当指令重组方法运行后(指令重组平台411),首先缓存指令运行环境;然后获取(例如拷贝)机器指令片段4011;指令重组平台在第一跳转指令4012前***了第二跳转指令4113,第二跳转指令4113指向指令重组平台411本身,从而生成了重组指令片段4111,重组指令片段的地址为A";将所述缓存的指令运行环境中的地址寄存器的值A修改为地址A";最后恢复所述指令运行环境。
指令重组平台411结束运行后,CPU执行以A"为地址的重组指令片段,当执行到第二跳转指令4113时,指令重组平台411会重新获得CPU控制权。此时,第一跳转指令4012的目标地址4013已经生成,该目标地址为新的第一地址,指令重组平台根据该目标地址重新开始执行步骤S101~步骤S105,继续分析后续的待调度的机器指令,从而完成了运行时指令重组的方法。
根据本发明另一个实施例,如图4所示,在步骤S102中,获取待调度的机器指令片段可以包括:
S1021,从地址寄存器(例如CPU地址寄存器)读取待调度的机器指令地址;
S1022,以跳转指令为检索目标,检索所述机器指令地址指向的机器指令及其后续指令,直到发现第一个跳转指令(称为第一跳转指令);所述跳转指令指能够改变机器指令顺序执行流程的机器指令,包括Jump指令、Call指令、Return指令等;
S1023,将所述第一跳转指令以及其之前的所有待调度的机器指令作为一个待调度的机器指令片段;将该机器指令片段保存在指令重组平台中,或其他指令重组平台能够读取的存储位置。
在本发明的其他实施例中,获取待调度的机器指令片段也可以以非跳转指令(例如写入指令、读取指令等)为检索目标,进一步切分机器指令片段。由于在这样的实施例中,也需要保证在待调度跳转指令执行后指令重组平台仍能够获取CPU控制权或执行权,所以跳转指令需要作为第二检索目标,从而得到粒度更小的机器指令片段。
根据本发明另一个实施例,在步骤S102和S103之间,所述运行时指令重组方法还可以包括:
利用指令集匹配所述待调度的机器指令片段,得到目标机器指令;所述指令集包括X86,MIPS和ARM指令集;和
按照预定的方式,修改所述目标机器指令。
不仅可以完成运行时指令监控,还可以进行其他处理过程,相关实施例将在后面详细介绍。
进一步的,为了提高指令重组方法的效率,可以将固定地址跳转指令所指向的待调度指令在步骤S102中一并获取。
根据本发明另一个实施例,提供一种运行时指令重组方法,该方法S300包括:
S301,缓存指令运行环境;所述指令运行环境包括地址寄存器,地址寄存器保存下一条将要运行的机器指令的地址,该地址为第一地址;
S302,获取待调度的机器指令片段;其中,待调度的机器指令片段的最后一条指令为第一跳转指令;
S303,在所述第一跳转指令前,***第二跳转指令,生成具有第二地址的重组指令片段;所述第二跳转指令指向指令重组平台的入口地址,即执行该第二跳转指令后,执行步骤S301;
S304,将所述地址寄存器中的第一地址修改为第二地址;
S305,恢复所述指令运行环境。
与之前的实施例中所提供的方法相比,区别在于:在步骤S302中,待调度的机器指令片段中可以包括多条跳转指令;跳转指令中只有一条参数地址跳转指令,称为第一跳转指令。
需要说明的是,跳转指令可以包括两类,参数地址跳转指令和常数地址跳转指令,其中,常数地址跳转指令的跳转地址为常数(即立即数),而参数地址跳转指令中的参数地址一般在跳转指令之前的一条机器指令中计算得到。
相似地,待调度的机器指令片段的最后一条指令为第一跳转指令;待调度的机器指令片段包括所述第一跳转指令以及其之前的所有待调度的机器指令。
进一步的,由于程序运行过程中所生成的机器指令具有很高的重复性,为了提高指令重组方法的效率,节省计算设备的计算资源(CPU资源),可以利用少量的存储空间来保存重组指令片段。
根据本发明另一个实施例,提供一种运行时指令重组方法。如图5所示,该方法S200包括:
S201,缓存指令运行环境;所述指令运行环境包括地址寄存器(例如CPU地址寄存器)(一般来说,指令运行环境是指CPU的所有寄存器,包括通用寄存器,状态寄存器,地址寄存器等),地址寄存器保存下一条将要运行的机器指令的地址,该地址为第一地址;
S202,利用所述第一地址查找地址对应表;所述地址对应表用于表示第一地址A指向的待调度指令片段是否具有已保存的重组指令片段,地址对应表的数据为地址对;
S203,如果找到相应的记录,将所述第一地址A(即地址寄存器的值A)修改为已保存的重组指令片段的地址A’;
S204,如果没有找到相应的记录,获取待调度的机器指令片段;其中,待调度的机器指令片段的最后一条指令为第一跳转指令;
S205,在所述第一跳转指令前,***第二跳转指令,生成具有第二地址的重组指令片段;所述第二跳转指令指向指令重组平台的入口地址,即执行该第二跳转指令后,执行步骤S201;
S206,将所述地址寄存器中的第一地址修改为第二地址;
S207,恢复所述指令运行环境。
进一步的,步骤S206还包括:利用第二地址A"与第一地址A在所述地址对应表中建立地址对(或一条记录)。具有地址A"的重组指令片段被保存在重组指令平台中,以供重用。
本方法利用地址对应表,节省计算资源,提高运行时指令重组的效率。
上述重组方法一般通过在待调度指令片段之中***所需跳转指令完成,在本发明其他实施例中,也可以通过其他方式完成重组指令片段的生成。下面将结合实施例详细介绍。
根据本发明另一个实施例,提供一种指令重组方法,单独开辟存储位置保存第一跳转指令的目标地址。如图6所示,该方法S110包括:
S111,缓存指令运行环境;
S112,从第一存储位置读取目标地址,根据目标地址获取待调度(即待执行)的机器指令片段;其中,待调度机器指令片段的最后一条指令为第一跳转指令;
S113,在第一存储位置保存第一跳转指令的目标地址;
S114,将第一跳转指令替换为第二跳转指令,生成具有第二地址的重组指令片段;所述第二跳转指令指向指令重组平台的入口地址,即执行该第二跳转指令后,执行步骤S111;
S115,恢复所述指令运行环境,并跳转到第二地址继续执行。
其中,在步骤S112中,获取待调度的机器指令片段可以包括:
S1121、以跳转指令为检索目标,检索所述机器指令地址指向的机器指令及其后续指令,直到发现第一个跳转指令(称为第一跳转指令);
所述跳转指令指能够改变机器指令顺序执行流程的机器指令,包括Jump指令、Call指令、Return指令等;
S1122、将所述第一跳转指令以及其之前的所有待调度的机器指令作为一个待调度的机器指令片段;将该机器指令片段保存在指令重组平台中,或其他指令重组平台能够读取的存储位置。
在步骤S113中,目标地址即跳转指令的目标地址参数,其可以是立即数或变量参数,对于立即数保存其值,对于变量参数保存其地址/引用。当处理器即将执行某跳转指令时,其跳转目标地址已经计算完毕。
根据本发明另一个实施例,提供一种指令重组方法,针对非固定长度指令集进行反汇编和汇编处理。如图7所示,该方法包括:
S121,缓存指令运行环境;
S122,从第一存储位置读取目标地址,根据目标地址获取待调度指令片段:
从目标地址开始,获取待调度的一段机器指令,将该段机器指令进行反汇编,并将反汇编结果通过一个词法分析器进行处理并匹配是否其中包含跳转指令,如果不包含则继续获取下一段待调度的机器指令重复上述操作,直到匹配到跳转指令为止,该跳转指令为第一跳转指令;第一跳转指令以及之前的所有指令组成待调度指令片段;
S123,在第一存储位置保存第一跳转指令的目标地址;
S124,将第一跳转指令替换为第二跳转指令,生成具有第二地址的重组指令片段;所述第二跳转指令指向指令重组平台的入口地址;本实施例中,该第一跳转指令和第二跳转指令皆为汇编指令;
S125,将生成的重组后的汇编代码通过汇编器生成对应的机器码;和
S126,恢复所述指令运行环境,并跳转到第二地址继续执行。
根据本发明另一个实施例,提供一种指令重组方法,以压栈指令替代或记录第一跳转指令。如图8所示,该方法S130包括:
S131,缓存指令运行环境;
S132,获取栈中保存的跳转指令的地址和参数,计算下一条即将运行的指令地址,该地址为第一地址;
S133,根据第一地址获取待调度/执行的机器指令片段;其中,待调度机器指令片段的最后一条指令为第一跳转指令;
S134,替换第一跳转指令为压栈指令,在压栈指令中记录第一跳转指令的地址和操作数;
S135,在压栈指令之后加入第二跳转指令,生成具有第二地址的重组指令片段;所述第二跳转指令指向指令重组平台的入口地址;和
S136,恢复所述指令运行环境,并跳转到第二地址继续执行。
本领域普通技术人员可以理解,上述各个实施例中提供的功能或特征可以根据实际的需要叠加在同一个实施例中,这里就不再一一组合给出,下面只举一个例子进行示例性说明。
根据本发明另一个实施例,提供一种指令重组方法,如图9a所示,包括:
(1)缓存指令运行环境,所述指令运行环境包括全部的CPU环境和内存环境;获取栈中保存的跳转指令的地址和参数,计算下一条即将运行的指令地址(第零地址),将第一地址设置为第零地址;
(2)利用第一地址来查找地址对应表(也称为地址查找表),如果找到记录,恢复所缓存的指令运行环境,并跳转到找到的对应地址(在地址对应表中的地址对内)继续执行;
(3)如果没有找到记录,从第一地址开始获取待执行的机器指令片段,指令片段的结尾为跳转指令(跳转指令所在地址为第三地址);
(4)从第一地址开始,将机器码进行反汇编,并将反汇编结果通过一个词法分析器进行处理,生成重组后的汇编代码,直到第三地址为止;
(5)判断第三地址处的代码是否可以进一步处理,即第三地址处的跳转指令的目标地址为已知量(例如,立即数),如果可以,将第一地址设置为第三地址(或第三地址的目标地址),重新开始执行(3);
(6)如果不可以,在生成的重组后的汇编代码最后,加入压栈指令记录当前第三地址的原始地址位置(即第三地址的值)和操作数,并在压栈指令之后加入跳转至重组平台开始的指令,即能够使步骤(1)再次开始执行;
(7)将生成的重组后的汇编代码通过汇编器生成对应的机器码,并存储于重组地址空间中分配出的地址(第二地址),并将第二地址和第零地址以对应地址对的形式存储于地址对应表中;
(8)恢复环境,并跳转到第二地址继续执行。
为了方便理解,现以X86体系处理器运行该实施例提供的方法进行说明,参考图9b-9d,指令重组的一个示例过程如下:
(1)重组平台开始工作后,首先缓存当前指令运行环境;获取栈中保存的跳转指令的地址和参数,计算下一条即将运行的指令地址,该地址为第一地址。
(2)利用第一地址来查找地址对应表,如果找到记录,恢复所缓存的指令运行环境,并跳转到找到的对应地址继续执行(图9b);如果没有找到记录,进行如下操作(图9c)。
(3)-(6)从第一地址开始,将机器码进行反汇编,并将反汇编结果通过一个词法分析器进行处理,生成重组代码;
对该段汇编代码进行检索,检查是否包含跳转指令;
对第一个跳转指令进行分析,判断其跳转目标地址是否为已知量,如果是已知量,则继续寻找,直到找到第一条参数地址跳转指令,称为第一跳转指令,该指令的地址为第三地址;
在生成的汇编代码(从第一地址到第三地址的机器指令,不包括第一跳转指令)最后加入压栈指令记录当前第三地址的第一跳转的原始地址位置和操作数;
在压栈指令之后加入跳转至重组平台开始的指令(第二跳转指令)。
(7)将生成的汇编代码通过汇编器生成对应的机器码,并存储于重组地址空间中分配出的地址(第二地址);
将第二地址和第零地址以对应地址对的形式存储于地址对应表中。
(8)恢复环境,并跳转到第二地址继续执行。
(图9d)处理器开始执行第二地址的指令,之前的待重组指令片段中的跳转指令已经替换为压栈指令和跳转去重组平台的指令,压栈指令主要的目的是向重组平台提供输入参数。(图9d)当执行到第二跳转指令时,重组平台重新得到执行,进行上述的步骤(1),通过查看压栈指令中保存的跳转指令的地址和参数,计算下一条即将运行的指令地址,该地址为第一地址。
之后的处理即上述过程的循环。
进一步的,为了从***启动后即执行运行时的指令监控,实现计算设备运行阶段的运行时指令全监控,本发明另一个实施例中,修改计算机启动时的load指令,在load指令执行前调用本发明提供的指令重组平台,执行上述运行时指令重组方法,由于load指令跳转地址为已知的固定地址,指令重组平台可以事先建立好地址对应表及该第一条记录,并建立好第一个重组指令片段。
进一步的,根据本发明另一个实施例,提供一种计算机可读介质,其中,所述可读介质中存储有计算机可执行的程序代码,所述程序代码用于执行上述实施例中提供的运行时指令重组方法的步骤。
进一步的,根据本发明另一个实施例,提供一种计算机程序,其中,所述计算机程序包含上述实施例中提供的运行时指令重组方法的步骤。
针对数据安全的指令重组
上述的运行时指令重组方法为进一步的应用提供了基础。下面的实施例中提供了各种针对不同机器指令进行处理的运行时指令重组方法,其中包括存储/读取指令,I/O指令,以及网络传输指令:
(1)存储/读取指令指计算机***中所有对外部存储设备(包括但不限于磁盘、移动存储、光存储)进行存储/读取的指令或指令组合。
(2)I/O指令指计算机***中所有操作外设的地址空间的指令,这些指令最终会影响外设输入输出状态、数据、信号等。这里的输入输出地址空间包括但不限于(I/O地址空间、内存映射I/O设备地址空间)。
(3)网络传输指令指计算机***中所有影响网络设备的指令,这些指令最终会影响计算机***网络设备的传输、状态、数据、信号等所有相关特性。
其中,存储/读取指令与I/O指令之间可以存在交集。
根据本发明一个实施例,提供一种针对存储/读取指令的运行时指令重组方法S400,包括:
S401,缓存指令运行环境;所述指令运行环境包括地址寄存器,地址寄存器保存下一条将要运行的机器指令的地址,该地址为第一地址;
S402,利用所述第一地址查找地址对应表;
S403,如果找到相应的记录,将所述第一地址A修改为已保存的重组指令片段的地址A’;
S404,如果没有找到相应的记录,重组指令片段的生成方法包括:
S4041,获取待调度机器指令片段;其中,待调度的机器指令片段的最后一条指令为第一跳转指令;与步骤S102相同;
S4042,反汇编所述待调度机器指令片段,得到汇编指令片段;
S4043,检索目标汇编指令,所述目标汇编指令为存储/读取指令;
S4044,如果检索得到所述汇编指令片段中的存储/读取指令,修改其中的存储和读取地址为安全存储设备上的地址;修改方式可以为本地地址空间和安全存储设备地址空间之间的直接映射;
S4045,在所述第一跳转指令JP1前,***第二跳转指令JP2,所述JP2指向指令重组平台的入口地址;
S4046,汇编修改过的汇编指令片段,生成具有地址A"的重组机器指令片段;
S4047,利用重组机器指令片段地址A"与第一地址A在所述地址对应表中建立一条记录(或地址对),具有地址A"的重组指令片段被保存在重组指令平台中;
S4048,将第一地址A修改为第二地址A";
S405,恢复所述指令运行环境。
本实施例是在反汇编步骤之后进行指令处理的;在其他实施例中,也可以省略反汇编和对应的汇编步骤,直接处理机器指令。
在步骤S4044中,针对存储和读取指令进行操作,修改其中的目标和源地址,以实现存储重定位/重定向,确保数据安全。更具体的安全存储/读取的方法将在本发明提供的下面的实施例中介绍。
根据本发明一个实施例,提供一种针对I/O指令的运行时指令重组方法S500,包括:
S501,缓存指令运行环境;所述指令运行环境包括地址寄存器,地址寄存器保存下一条将要运行的机器指令的地址,该地址为第一地址;
S502,利用所述第一地址查找地址对应表;
S503,如果找到相应的记录,将所述第一地址A修改为已保存的重组指令片段的地址A’;
S504,如果没有找到相应的记录,重组指令片段的生成方法包括:
S5041,获取待调度机器指令片段;其中,待调度的机器指令片段的最后一条指令为第一跳转指令;与步骤S102相同;
S5042,反汇编所述机器指令片段,得到汇编指令片段;
S5043,检索目标汇编指令,所述目标汇编指令为I/O指令;
S5044,如果检索得到所述汇编指令片段中的I/O指令,将所述I/O指令中的输入指令全部阻止;
S5045,在所述第一跳转指令JP1前,***第二跳转指令JP2,所述JP2指向指令重组平台的入口地址;
S5046,汇编修改过的汇编指令片段,生成具有地址A"的重组机器指令片段;
S5047,利用重组机器指令片段地址A"与第一地址A在所述地址对应表中建立一条记录(或地址对),具有地址A"的重组指令片段被保存在重组指令平台中;
S5048,将第一地址A修改为第二地址A";
S505,恢复所述指令运行环境。
本实施例是在反汇编步骤之后进行指令处理的;在其他实施例中,也可以省略反汇编和对应的汇编步骤,直接处理机器指令。
在步骤S5044中,针对I/O指令进行操作,将所述I/O指令中的输入指令全部阻止,以实现彻底阻断对本地硬件设备的写操作;结合上一个实施例中的存储指令处理过程,还可以实现对除存储指令之外的输入指令的阻止,可以提高计算设备中的数据安全性。
根据本发明一个实施例,提供一种针对网络传输指令的运行时指令重组方法S600,包括:
S601,缓存指令运行环境;所述指令运行环境包括地址寄存器,地址寄存器保存下一条将要运行的机器指令的地址,该地址为第一地址;
S602,利用所述第一地址查找地址对应表;
S603,如果找到相应的记录,将所述第一地址A修改为已保存的重组指令片段的地址A’;
S604,如果没有找到相应的记录,重组指令片段的生成方法包括:
S6041,获取待调度机器指令片段;其中,待调度的机器指令片段的最后一条指令为第一跳转指令;与步骤S102相同;
S6042,反汇编所述待调度机器指令片段,得到汇编指令片段;
S6043,检索目标汇编指令,所述目标汇编指令为网络传输指令;
S6044,如果检索得到所述汇编指令片段中的网络传输指令,检验所述网络传输指令中的目标地址对应的远端计算设备是否为安全地址,如果不是,阻止所述网络传输指令;
S6045,在所述第一跳转指令JP1前,***第二跳转指令JP2,所述JP2指向指令重组平台的入口地址;
S6046,汇编修改过的汇编指令片段,生成具有地址A"的重组机器指令片段;
S6047,利用重组机器指令片段地址A"与第一地址A在所述地址对应表中建立一条记录(或地址对),具有地址A"的重组指令片段被保存在重组指令平台中;
S6048,将第一地址A修改为第二地址A";
S605,恢复所述指令运行环境。
在步骤S6044中,阻止/拒绝网络传输指令可以通过在重组后的代码中***一到多条指令来将本身的传输指令替换为“取消当前操作的指令”或直接替换为无效指令,要视硬件的不同而定。
本实施例是在反汇编步骤之后进行指令处理的;在其他实施例中,也可以省略反汇编和对应的汇编步骤,直接处理机器指令。
在步骤S6044中,针对网络传输指令进行操作,检验所述网络传输指令中的目标地址对应的远端计算设备是否为安全地址;如果不是,阻止所述网络传输指令,以实现数据安全传输。
上述多个实施例中的地址对应表是由指令重组平台建立并维护的,可以是固定长度的数组结构,也可以是可变长度的链表结构,还可以是其他存储二元数据的适当的数据结构。优选的,其长度可调节,并且其占用空间可释放。释放地址对应表的操作可以随机进行,也可以周期进行。在一些实施例中,所述的地址对应表还可以包括记录建立时间字段,用于在释放空间删除记录时,按照建立时间的长短删除记录。在一些实施例中,所述的地址对应表还可以包括记录使用次数字段,在查找地址对应表步骤中,如果找到,将改变该字段的值;所述记录使用次数字段也用于在释放空间删除记录时,按照使用次数的多少删除记录。
另外,本领域的技术人员可以理解,上述指令重组方法(即运行时指令重组方法)可使用软件或硬件的方法实现:
(1)如果以软件实现,则上述方法对应的步骤以软件代码的形式存储在计算机可读介质上,成为软件产品;
(2)如果以硬件实现,则上述方法对应的步骤以硬件代码(例如Verilog)描述,并固化(经过物理设计/布局布线/晶圆厂流片等过程)成为芯片产品(例如处理器产品)。下面将详细介绍。
指令重组装置
与上述运行时指令重组方法S100相对应,根据本发明一个实施例,提供一种运行时指令重组装置。如图10所示,指令重组装置500包括:
指令运行环境缓存和恢复单元501,适于缓存和恢复指令运行环境;所述指令运行环境包括地址寄存器,该地址寄存器保存下一条将要运行的机器指令的地址,该地址为第一地址;
指令获取单元502,适于在单元501缓存指令运行环境后,获取待调度的机器指令片段;其中,待调度的机器指令片段的最后一条指令为第一跳转指令;
指令重组单元503,适于解析、修改所述待调度的机器指令片段,包括:在第一跳转指令前,***第二跳转指令,生成具有第二地址A"的重组指令片段;所述第二跳转指令指向装置500,即执行该第二跳转指令后,装置500的指令运行环境缓存和恢复单元501进行下一次处理;和
地址替换单元504,适于将所述缓存的指令运行环境中的地址寄存器的值修改为重组指令片段的地址。
所述指令运行环境缓存和恢复单元501分别与指令获取单元502以及地址替换单元504耦接,所述指令获取单元502,指令重组单元503和地址替换单元504依次耦接。
装置500执行过程如下:
首先,指令运行环境缓存和恢复单元501缓存指令运行环境,例如向缓存栈中压入指令运行相关的寄存器数据;
然后,所述指令获取单元502从CPU地址寄存器511读取待调度的机器指令地址,并从所述机器指令地址读取机器指令片段,所述机器指令片段最后一条指令为跳转指令;
例如,指令获取单元502从CPU地址寄存器511读取待调度的机器指令地址;以跳转指令为检索目标,检索所述机器指令地址对应的机器指令,直到发现第一个跳转指令;所述跳转指令包括例如Jump指令和Call指令等;将所述第一个跳转指令及其之前的所有机器指令作为一个待调度的机器指令片段;将该机器指令片段保存在装置500中,或其他的装置500能够读取的存储位置;
然后,指令重组单元503在所述获取的机器指令片段的最后一条指令前,***第二跳转指令,所述第二跳转指令指向装置500的入口地址,生成具有地址A"的重组指令片段;
然后,地址替换单元504将所述缓存的指令运行环境中的地址寄存器的值A修改为地址A";
最后,指令运行环境缓存和恢复单元501恢复所述指令运行环境,例如从缓存栈中弹出指令运行相关的寄存器数据。
与上述运行时指令重组方法S300相对应,所述指令获取单元502可以将第一个非常数地址跳转指令作为第一跳转指令。以提高重组装置的执行效率。
与上述运行时指令重组方法S200相对应,根据本发明另一个实施例,提供一种运行时指令重组装置,能够充分利用运行时指令重复性,提高效率,节省计算资源。
如图11所示,指令重组装置600包括:
指令运行环境缓存和恢复单元601,适于缓存和恢复指令运行环境;所述指令运行环境包括地址寄存器,地址寄存器保存下一条将要运行的机器指令的地址,该地址为第一地址;
指令获取单元602,适于获取待调度的机器指令片段;其中,待调度的机器指令片段的最后一条指令为第一跳转指令;
指令重组单元603,适于解析、修改所述待调度机器指令片段,包括:在第一跳转指令前***第二跳转指令,以生成具有第二地址的重组指令片段;所述第二跳转指令指向装置600,即执行该第二跳转指令后,装置600的指令运行环境缓存和恢复单元601进行下一次处理;
地址替换单元604,适于将所述缓存的指令运行环境中的地址寄存器的值修改为重组指令片段的地址;和
指令检索单元605,适于利用所述第一地址查找地址对应表;所述地址对应表用于表示第一地址A指向的待调度指令片段是否具有已保存的重组指令片段,地址对应表的数据为地址对;
如果找到相应的记录,指令检索单元605适于调用地址替换单元604,将所述第一地址A(即地址寄存器的值A)修改为已保存的重组指令片段的地址A’;如果没有找到相应的记录,指令检索单元适于利用第二地址A"与地址A在所述地址对应表中建立一条记录。
所述指令运行环境缓存和恢复单元601分别与指令检索单元605以及地址替换单元604耦接,所述指令检索单元605分别与指令获取单元602,指令重组单元603和地址替换单元604耦接,所述指令获取单元602、指令重组单元603和地址替换单元604依次耦接。
装置600的执行过程如下:
首先,指令运行环境缓存和恢复单元601缓存指令运行环境,例如向缓存栈中压入指令运行相关的寄存器数据;
然后,指令检索单元605利用所述缓存的指令运行环境中的地址寄存器的值A查找地址对应表;
如果找到相应的记录,指令检索单元605调用地址替换单元604,地址替换单元604将所述地址寄存器的值A修改为记录中的值A’;地址替换单元604调用指令运行环境缓存和恢复单元602,以恢复所述指令运行环境,即从缓存栈中弹出指令运行相关的寄存器数据,本次重组操作结束;
如果没有找到相应的记录,所述指令获取单元602从CPU地址寄存器读取待调度的机器指令地址,并从所述机器指令地址读取机器指令片段,所述机器指令片段最后一条指令为跳转指令。具体的,指令获取单元602从CPU地址寄存器读取待调度的机器指令地址;以跳转指令为检索目标,检索所述机器指令地址对应的机器指令,直到发现第一个跳转指令;所述跳转指令包括Jump指令和Call指令等;将所述第一个跳转指令及其之前的所有机器指令作为一个待调度的机器指令片段;将该机器指令片段保存在装置600中,或其他的装置600能够读取的存储位置;
然后,指令重组单元603在所述获取的机器指令片段的最后一条指令前,***第二跳转指令,所述第二跳转指令指向装置600的入口地址,生成具有地址A"的重组指令片段;
然后,指令重组单元603将地址A"发送给指令检索单元605,指令检索单元605利用地址A"与地址A在其中的地址对应表中建立一条记录;以备后续指令重用;
然后,地址替换单元604将所述缓存的指令运行环境中的地址寄存器的值A修改为地址A";
最后,指令运行环境缓存和恢复单元601恢复所述指令运行环境,即从缓存栈中弹出指令运行相关的寄存器数据。
继续参考图11,其中,指令重组单元603还可以包括:
指令解析单元6031,适于利用指令集匹配所述机器指令片段,得到待处理的目标机器指令(即利用目标指令检索待调度的机器指令片段);所述指令集包括X86,MIPS和ARM指令集;
指令修改单元6032,适于按照预定的方式,修改所述目标机器指令。
例如,如果所述目标指令为存储/读取指令,所述指令解析单元6031将负责获取待调度的机器指令片段中的存储/读取指令,所述指令修改单元6032修改其中的存储和读取地址为安全存储设备上的地址。其作用和效果与上述对应的方法实施例S400相同,这里不再赘述。
又例如,如果所述目标指令为I/O指令,所述指令解析单元6031将负责获取待调度的机器指令片段中的I/O指令,所述指令修改单元6032将所述I/O指令中的输入指令全部阻止。其作用和效果与上述对应的方法实施例S500相同,这里不再赘述。
又例如,如果所述目标指令为网络传输指令,所述指令解析单元6031将负责获取待调度的机器指令片段中的网络传输指令,所述指令修改单元6032检验所述网络传输指令中的目标地址对应的远端计算设备是否为安全地址;如果不是,所述指令修改单元适于阻止所述网络传输指令。其作用和效果与上述对应的方法实施例S600相同,这里不再赘述。
根据本发明另一个实施例,上述指令重组单元还可以包括反汇编单元和汇编单元。如图12所示,指令重组单元703包括:依次耦接的反汇编单元7031,指令解析单元7032,指令修改单元7033和汇编单元7034。
其中,反汇编单元7031适于在解析、修改所述待调度的机器指令片段之前,反汇编所述待调度的机器指令片段,生成待调度的汇编指令片段;发送给指令解析单元7032。
汇编单元7034适于在解析、修改所述待调度的机器指令片段之后,汇编重组后的汇编指令片段,得到机器码表示的重组指令片段;发送给指令替换单元。
在该实施例中,所述指令解析单元7032和指令修改单元7033将操作待调度的汇编指令片段。
与上述运行时指令重组方法S110相对应,根据本发明另一个实施例,提供一种运行时指令重组装置。如图13所示,指令重组装置800包括:
指令运行环境缓存和恢复单元801,适于缓存指令运行环境;
指令获取单元802和第一存储位置803,其中,指令获取单元802适于从第一存储位置803读取目标地址,并根据目标地址获取待调度/执行的机器指令片段;其中,待调度机器指令片段的最后一条指令为第一跳转指令;以及
指令重组单元804,适于在第一存储位置803保存第一跳转指令的目标地址,将第一跳转指令替换为第二跳转指令,生成具有第二地址的重组指令片段;所述第二跳转指令指向装置800的入口地址。
其中,指令运行环境缓存和恢复单元801还适于在指令重组单元804替换指令之后,恢复所述指令运行环境,并跳转到第二地址继续执行。
装置800的执行过程如下:
首先,指令运行环境缓存和恢复单元801缓存指令运行环境;
然后,指令获取单元802从第一存储位置803读取目标地址(待调度指令地址),根据目标地址获取待调度机器指令片段;其中,待调度机器指令片段的最后一条指令为第一跳转指令;
然后,指令重组单元804在第一存储位置803保存第一跳转指令的目标地址;对于立即数保存其值,对于变量参数保存其地址/引用;
然后,指令重组单元804将第一跳转指令替换为第二跳转指令,生成具有第二地址的重组指令片段;
最后,指令运行环境缓存和恢复单元801恢复所述指令运行环境,并跳转到第二地址继续执行。
根据本发明另一个实施例,提供一种运行时指令重组装置,与上述方法S130相对应,并且包含上述某些实施例中提供的装置的特征。如图14所示,该装置900包括:
指令运行环境缓存和恢复单元901,适于缓存和恢复指令运行环境;
指令获取单元902,适于通过输入参数计算的方式获取下一条即将运行的指令地址,该地址为第一地址;还适于根据第一地址获取待调度/执行的机器指令片段;其中,待调度机器指令片段的最后一条指令为第一跳转指令;
指令重组单元903,适于替换第一跳转指令为压栈指令,在压栈指令中记录第一跳转指令的地址和操作数;还适于在压栈指令之后加入第二跳转指令,生成具有第二地址的重组指令片段;所述第二跳转指令指向装置900的入口地址;还适于将重组指令片段的第二地址与第一地址在地址对应表中建立一条记录;
指令检索单元904,适于利用所述第一地址查找地址对应表;所述地址对应表用于表示第一地址指向的待调度指令片段是否具有已保存的重组指令片段,地址对应表的数据为地址对;
如果找到相应的记录,指令检索单元904适于调用指令运行环境缓存和恢复单元901恢复所缓存的指令运行环境,并跳转到找到的对应地址继续执行(重组操作完成);
如果没有找到相应的记录,调用指令重组单元903进行重组操作。
其中,指令重组单元903还可以包括反汇编单元9031,指令解析单元9032,指令修改单元9033,和汇编单元9034。
其中,当指令重组单元902完成重组后,适于调用指令运行环境缓存和恢复单元901恢复所缓存的指令运行环境,并跳转到重组指令片段的地址继续执行(本次重组操作完成)。
根据本发明另一个实施例,上述反汇编单元9031可以位于指令获取单元902之中,在获取待调度的指令片段时由其进行反汇编操作。
本领域技术人员可以理解,上述装置实施例的附图中的数据流的箭头只是为了便于解释上述实施例中的具体操作流程,并不限定图中各个单元之间的数据流向或者连接方向,装置中各个单元之间为耦接关系。
上面通过一些实施例详细的介绍了运行时指令重组方法和装置,其与现有技术相比,具有以下优点:
通过指令重组方法,可以在指令运行状态下监控计算设备的指令;
利用地址对应表,提高了指令重组效率,节省了计算资源;
针对存储和读取指令进行操作,修改其中的目标和源地址,以实现存储重定位/重定向,确保数据安全;
针对I/O指令进行操作,将所述I/O指令中的输入指令全部阻止,以实现彻底阻断对本地硬件设备的写操作;还可以实现对除存储指令之外的输入指令的阻止,可以提高计算设备中的数据安全性;
针对网络传输指令进行操作,检验所述网络传输指令中的目标地址对应的远端计算设备是否为安全地址;如果不是,阻止所述网络传输指令,以实现数据安全传输。
数据安全存取过程
图15是本发明一个实施例中计算设备的***层次示意图。
其中,计算设备(例如计算机终端***)200包括:用户界面层201,应用层202,操作***内核层203,硬件映射层204,安全层205,和硬件层206。
其中,硬件层206进一步包括CPU 2061,硬盘2062(即本地存储设备)以及网卡2063。
另外,计算设备200与存储设备10(又称为安全存储设备)耦接。
本实施例中,存储设备10为远程磁盘阵列,通过网络连接硬件层206的网卡2063,与计算设备200交换数据。在本发明的其他实施例中,存储设备10也可以是其他已知或未知类型的存储设备。
其中,硬盘2062也可以替换为其他类型的本地存储设备,例如u盘和光盘等,这里只是举例说明,并无限制目的。
结合上述层次结构,本实施例提供的数据安全存取过程包括:
S1000,初始化;
S2000,数据写入;和
S3000,数据读取。
参考图16,上述的初始化过程S1000包括:
S1010,建立计算机终端***200与安全存储设备10的通讯;
S1020,从安全存储设备10上同步映射位图(Bitmap)至当前计算机终端***200,例如保存在计算机终端***200内存中;所述映射位图用于表示本地存储设备的数据是否已经存储到安全存储设备;
S1030,如果步骤S1020的同步操作失败,在安全存储设备10上建立Bitmap并初始化,然后同步到计算机终端***200。
其中,为了区分计算机终端200上的Bitmap与存储设备10上的Bitmap,下文中,除非另有说明,将计算机终端***200上的Bitmap称为映射位图或第一映射位图,将安全存储设备10上的Bitmap称为第二映射位图。
在步骤S1020中,如果从存储设备10上同步第二映射位图至当前计算机终端***200的操作失败,说明存储设备10与计算机终端***200之间是第一次连接。
其中,步骤S1030可以包括:
将计算机终端***200中的本地存储空间映射到存储设备10上,映射关系为以1扇区(或其他存储的基本单位)为单位的一一映射,并且建立映射位图(Bitmap)。
在本发明的其他实施例中,也可以使用其他基本容量为单位建立本地存储空间到存储设备100上的Bitmap。
图17为本发明一个实施例中的Bitmap示意图。图中包括本地存储设备(例如图15中的硬盘2062)上的存储介质3000,与本地存储设备网络连接的存储设备10上的存储介质4000。
建立Bitmap的过程描述如下。对存储介质3000,在存储介质4000上建立与其大小相同的存储空间4010,作为一一映射空间。在存储空间4010中保存Bitmap 4020,Bitmap 4020为一张位图,其中1位代表1扇区,每一位的数据(0或1)标识/指示存储介质3000上对应的扇区是否转储或对应存储在存储介质4000上的存储空间4010中,所以映射位图也可以称为转储表。存储设备10上的Bitmap 4020建立完成之后同步到计算机终端***200中。
更新Bitmap的过程描述如下。在Bitmap 4020中,转储的扇区标记为1,非转储的扇区没有标记(转储扇区和非转储扇区所使用的标记可以自由选择)。当应用程序或操作***保存一个数据(例如文件时),操作***内部的文件***将在本地存储设备的存储介质3000上开辟一定量的存储空间,例如扇区3040和扇区3050,并分配给该文件使用,并改写本地的文件分配表。该文件转储时(即写入扇区3040和扇区3050的数据被存储到存储设备10上时),在存储介质4000上相同的位置分配扇区4040和4050,并在其中保存转储数据,最后将Bitmap 4020中扇区3040和扇区3050对应的位数据改为1。
结合图15,上述的数据写入过程S2000进一步包括:
S2010,应用层202通过操作***内核层203的文件***发出写文件操作请求,或操作***内核层203直接发出写文件操作请求;或
应用层202直接向硬件映射层204发出写数据操作请求,或操作***内核层203直接向硬件映射层204发出写数据操作请求;
S2020,操作***内核层203将写文件请求解析成硬件端口指令(即硬件指令),下发至硬件映射层204,其中端口指令包含需要写存储设备的位置(例如扇区);
需要注意的是,如果步骤S2010是直接向硬件映射层204发出写数据操作请求,则该请求已经为硬件端口指令;
S2030,安全层205接收来自硬件映射层204的硬件端口指令,并且将端口指令中的写入位置(即扇区)改写为位于存储设备10上的对应存储地址,然后更新第一映射位图,例如将所述扇区对应的位数据修改为1,表示该扇区已经转储;安全层205将修改后的端口指令发送给硬件层206。
写入过程执行完成之后,计算机终端***200并没有存储写入的数据,相应的数据已经重定位存储在安全存储设备10上。
在本发明的另一个实施例中,如果写本地硬盘指令本身与写网络硬盘指令不同,那么不仅需要改地址,还需要改存储指令。
根据本发明另一个实施例,写入过程S2000还可以包括:
S2040,将第一映射位图同步到存储设备10上,保存为第二映射位图,从而确保计算机终端***200上的第一映射位图与存储设备上的第二映射位图一致。
在本发明的其他实施例中,为了节省***资源,S2040也可以在本地的计算机终端***200关机前统一进行一次。
结合图15,上述的数据读取过程S3000进一步包括:
S3010,将存储设备10上的第二映射位图同步到计算机终端***200上,保存为第一映射位图;
S3020,应用层202通过操作***内核层203的文件***发出读文件操作请求,或操作***内核层203直接发出读文件操作请求;或
应用层202直接向硬件映射层204发出读数据操作请求,或操作***内核层203直接向硬件映射层204发出读数据操作请求;
S3030,安全层205接收来自硬件映射层204的数据读取指令,获取其中的读取地址(源地址),查找第一映射位图,如果第一映射位图中的位数据表示所述读取地址为转储地址,安全层205修改端口指令的读取地址为存储设备10上的地址;安全层205将修改后的端口指令发送给硬件层206。
该读取过程没有影响用户既有的操作模式,实现了对于安全存储设备(即存储设备10)上已经转储的数据的读取。
在步骤S3010中,从存储设备10同步第二映射位图到本地的过程是为了在计算机终端***200重新启动了以后,保持本地数据与安全存储设备上的数据的一致性。
本领域技术人员可以理解,对于上述的数据写入、读取过程以及初始化过程,根据实际需要执行所需的过程或步骤即可。
数据安全存取方法
基于上述数据写入过程和读取过程,下面详细描述本发明提供的数据安全存储和读取方法。
本领域技术人员可以理解,上面结合图15来说明数据的读取和存储过程是为了方便理解,并不是限定,在本发明其他实施例中,可以在计算设备的适合层次上执行以上描述的各个步骤。
根据本发明一个实施例,提供一种数据安全存储方法;如图18所示,该方法包括如下步骤:
S4010,接收硬件指令;
S4020,分析并判断该硬件指令是否为存储指令;
S4030,如果该硬件指令是存储指令,修改存储指令中的目标地址为对应的存储设备(即安全存储设备)上的存储地址;
S4040,将修改后的存储指令发送到硬件层。
在步骤S4010中,所述硬件指令可以是来自硬件映射层的硬件指令。接收来自硬件映射层的硬件指令可以100%的筛查所有发送到CPU等处理器的硬件指令(接口指令)。
其中,在计算机终端***上,可以运行Windows操作***,Windows***中的硬件抽象层HAL为硬件映射层。在其他实施例中,计算机终端也可以运行其他操作***,例如Linux,Unix或嵌入式操作***等,硬件映射层为Linux或Unix或嵌入式操作***对应的硬件映射层。
在步骤S4010中,结合上述运行时指令重组方法,接收硬件指令的过程可以包括:采用运行时指令重组方法(例如S101-S105)获取硬件指令。换一种说法,就是可以在运行时指令重组方法获取到机器指令时,处理存储和读取指令(例如S404,S504,或S604)。通过运行时指令重组方法,可以不仅将计算最终结果重定位存储到安全存储设备,还能够将计算的中间过程(包括操作***产生的中间过程)全部重定位存储到安全存储设备。
在步骤S4010和S4020中,硬件指令可以为X86指令、ARM指令、MIPS指令等类型,可以在计算终端中内置分析机制,以处理不同类型的CPU指令。
根据本发明另一个实施例,在步骤S4030之后,还可以包括:
S4050、更新第一映射位图,将目标地址(扇区)在第一映射位图中对应的“位”设置为转储标记,例如“1”;并且,将已经更新的映射位图同步到所述安全存储设备,保存为第二映射位图。
本实施例中,转储操作对于上层应用以及用户完全透明,不影响现有计算机操作、应用***的工作流程。
本实施例提供的上述方法不仅可以在计算机终端***中使用,还可以应用在任何包含应用层、操作***内核层、硬件层的计算设备和智能终端上,在硬件层执行指令前,实现指令级存储重定位/重定向(即基于硬件存储指令的存储重定位/重定向)。
根据本发明一个实施例,提供一种数据安全读取方法;参考图19,该方法包括:
S5010,接收硬件指令;
S5020,分析并判断该硬件指令是否为读取指令;
S5030,如果是读取指令,获取读取指令中的源地址,查找第一映射位图,并根据映射位图的数据修改读取指令中的读取地址;和
S5040,将修改后的硬件指令发送到硬件层。
步骤S5010之前,该方法还可以包括S5000:将存储设备上的第二映射位图同步到计算机终端***200上,保存为第一映射位图。
步骤S5010中,所述的硬件指令可以来自硬件映射层。
在步骤S5010中,结合上述运行时指令重组方法,接收硬件指令的过程可以包括:采用运行时指令重组方法(例如S101-S105)获取硬件指令。换一种说法,就是可以在运行时指令重组方法获取到机器指令时,处理存储和读取指令(例如S400)。
步骤S5020中,如果该硬件指令不是读取指令,则可以直接将硬件指令发送给硬件层去执行。
步骤S5030还可以进一步分解为两步骤:
S5031,如果是读取指令,获取读取指令中的源地址,判断所述源地址是否为存储设备上的地址;
S5032,如果所述源地址不是存储设备上的地址,查找第一映射位图,并根据映射位图的数据修改读取指令中的读取地址。
步骤S5031中,如果该读取指令的源地址已经为存储设备上的地址,则计算设备(例如图15中的安全层205)不用再次查找第一映射位图中的数据,可以直接将硬件指令发送给硬件层去执行。
进一步的,为了节约网络资源,在本发明的一些实施例中,安全存储设备10可以作为多个终端***的共享资源。
上面曾经提到可以将数据安全存储和读取方法与指令重组方法结合,为了方便理解,下面通过实施例详细介绍。
根据本发明一个实施例,提供一种数据安全存取方法。如图20所示,该方法S6000包括:
S6010,缓存指令运行环境;
S6011,从第一存储位置读取目标地址,根据目标地址获取待调度/执行的机器指令片段;其中,待调度机器指令片段的最后一条指令为第一跳转指令;
S6012,在第一存储位置保存第一跳转指令的目标地址;
S6013,分析并判断待调度机器指令中的每一条指令是否为存取指令;
S6014,如果是存取指令:
对于存储指令,修改存储指令中的目标地址为对应的存储设备(即安全存储设备)上的存储地址;并修改第一映射位图;
对于读取指令,获取读取指令中的源地址,查找第一映射位图,并根据映射位图的数据修改读取指令中的读取地址;
如果写本地硬盘指令本身与写网络硬盘指令不同或者读取本地硬盘指令本身与读取网络硬盘指令不同,那么不仅需要修改地址,还需要相应的修改存储指令或读取指令;
S6015,将第一跳转指令替换为第二跳转指令,生成具有第二地址的重组指令片段;所述第二跳转指令指向指令重组平台的入口地址;
S6016,恢复所述指令运行环境,并跳转到第二地址继续执行。
本领域技术人员可以理解,该实施例只是为了说明而举例,并不限制安全读取方法、安全存储方法和指令重组方法的组合方式,上述介绍的各种安全读取方法、安全存储方法和指令重组方法可以以各种所需的方式组合使用。
存储和读取一般是针对本地的存储设备进行的数据交换;传输一般是指通过网络设备进行的数据交换。
进一步的,本发明一个实施例中提供一种数据安全传输方法。
如图21所示,该方法包括:
S7010,接收(例如来自硬件映射层的)硬件指令;
S7020,分析并判断该硬件指令是否为网络传输指令;
S7030,如果该硬件指令是传输指令,读取目标地址;
S7040,判断目标地址是否为安全地址;
S7050,如果是安全地址,将硬件指令发送到硬件层;如果不是安全地址,拒绝该指令;
S7060,硬件层发送传输指令和数据到目标地址的终端***;
S7070,目标地址的终端***接收并利用数据安全存储方法保存数据。
在步骤S7040中,判断目标地址是否为安全地址的方法如下。参考图22,安全服务器820通过网络与终端***800、810连接,终端***800、810在部署本发明上述实施例中提供的数据安全传输方法时,都已经向安全服务器820进行了注册操作。安全服务器820内部维护一个安全地址表,记录了已经注册的所有终端***。
当安全地址表有更改的时候,安全服务器820自动将更新的安全地址表发送给各个终端,终端***800的架构包括应用层801,操作***内核层802,安全层803以及硬件层804,安全层803负责维护该安全地址表。
安全层803将根据目标地址是否在安全地址表中,判断目标地址是否为安全地址。即在步骤S7040中,如果目标地址列入了安全地址表,则目标地址为安全地址。
上述安全传输方法的实施,使木马或恶意工具即使取得了涉密信息也无法传输所取得的信息。安全传输方法将在下面的安全互联部分结合实施例展开介绍。
虽然本发明一些实施例中以计算机终端***作为应用本发明提供的方法的主体,但是,任何手持设备、智能终端等能够提供文件或数据编辑、保存或传输的电子设备,都可以成为应用本发明提供的数据安全存取及传输方法的载体。
另外,本领域的技术人员可以理解,上述的数据安全存储方法、读取方法及传输方法可使用软件或硬件的形式来实现:
(1)如果以软件实现,则上述方法对应的步骤以软件代码的形式存储在计算机可读介质上,成为软件产品;
(2)如果以硬件实现,则上述方法对应的步骤以硬件代码(例如Verilog)的形式描述,并固化(经过物理设计/布局布线/晶圆厂流片等过程)成为芯片产品(例如处理器产品)。
数据安全存取装置
与上述的数据安全存储方法相对应,根据本发明一个实施例,提供一种数据安全存储装置。
需要注意的是,数据安全存储装置在本发明中指:以硬件形式来实现数据安全存储方法的装置;安全存储设备在本发明中指:用于转储信息或数据的存储实体,例如磁盘等。
参考图23,数据安全存储装置7100包括:接收单元7110,指令分析单元7120,指令修改单元7130和发送单元7140。所述接收单元7110与指令分析单元7120耦接,指令分析单元7120分别与指令修改单元7130以及发送单元7140耦接,发送单元7140还与指令修改单元7130耦接。
其中,接收单元7110适于接收硬件指令,所述硬件指令可以来自硬件映射层;
指令分析单元7120适于分析所述硬件指令并判断所述硬件指令是否为存储指令;如果是存储指令,指令分析单元7120还适于将其发送给指令修改单元7130,如果不是存储指令,指令分析单元7120还适于将其发送给发送单元7140;
指令修改单元7130适于修改所述存储指令中的目标地址为对应的在安全存储设备上的存储地址,然后将修改后的存储指令发送给发送单元7140;
发送单元7140适于将接收到的指令转发给硬件层7200。
进一步的,该数据安全存储装置还可以包括:更新单元7150和同步单元7160。其中,更新单元7150与指令修改单元7130耦接;同步单元7160与更新单元7150耦接。
所述更新单元7150适于在指令修改单元7130修改所述存储指令之后,更新映射位图中所述目标地址对应的位。本实施例中,将存储指令目标地址包含的扇区在第一映射位图中对应的“位”数据置“1”,表示已经转储。
所述同步单元7160适于建立计算终端***与所述安全存储设备的通讯,并将映射位图在所述计算终端***和所述安全存储设备之间进行同步。
具体的,在计算终端***启动时,同步单元7160建立计算终端***与所述安全存储设备的通讯,并将所述安全存储设备上的第二映射位图同步到所述计算终端***,保存为第一映射位图。
如果将所述安全存储设备上的第二映射位图同步到所述计算终端***失败,表示计算终端***与安全存储设备是第一次通讯,同步单元7160将计算机终端***中的本地存储空间映射到所述安全存储设备上,并建立映射位图和第二映射位图。例如在本实施例中,先在安全存储设备上建立第二映射位图,然后同步到本地,成为第一映射位图。
当更新单元7150更新了第一映射位图(即映射位图)中所述目标地址对应的位,同步单元7160将把更新后的第一映射位图发送给安全存储设备,并在安全存储设备上保存为第二映射位图。
所述安全存储设备可以为远程存储设备或本地存储设备,所述远程存储设备可以为一个计算设备服务,也可以被多个计算设备共享。
所述硬件指令可以为硬件端口I/O指令。
与上述的数据安全读取方法相对应,根据本发明另一个实施例,提供了一种数据安全读取装置。
参考图24,数据安全读取装置8100包括:
接收单元8110,指令分析单元8120,指令修改单元8130以及发送单元8140。其中,接收单元8110与指令分析单元8120耦接,指令分析单元8120分别与指令修改单元8130以及发送单元8140耦接,指令修改单元8130还与发送单元8140耦接。发送单元8140与硬件层8200耦接。
所述接收单元8110适于接收硬件指令,本实施例中,所述硬件指令来自硬件映射层。
所述指令分析单元8120适于分析所述硬件指令并判断所述硬件指令是否为读取指令,如果所述硬件指令是读取指令,获取读取指令的源地址并判断所述源地址是否为安全存储设备上的地址。
如果所述硬件指令不是读取指令,或者所述源地址是安全存储设备上的地址,指令分析单元8120将所述硬件指令发送到发送单元8140。
如果所述源地址不是安全存储设备上的地址,指令修改单元8130查找映射位图,并根据映射位图的数据修改所述读取指令中的读取地址。
与上述实施例中的映射位图相同,本实施例中所述映射位图也用于表示本地存储地址的数据是否转储到所述安全存储设备。例如,指令修改单元8130查找源地址包含的扇区在第一映射位图中对应的位。如果“位”数据显示为1,表示已经发生转储,如果“位”数据显示为0或NULL(空),表示没有发生转储。如果已经发生转储,指令修改单元8130将所述源地址(读取地址)改为对应的转储地址,并将修改后的硬件指令发送给发送单元8140。
进一步的,所述数据安全读取装置还可以包括同步单元8150。所述同步单元8150与指令修改单元8130耦接。所述同步单元8150适于建立计算终端***与所述安全存储设备的通讯,并将映射位图在所述计算终端***和所述安全存储设备之间进行同步。具体的,同步单元8150在计算终端***启动时,建立计算终端***与所述安全存储设备的通讯,并将所述安全存储设备上的第二映射位图同步到所述计算终端***,保存为第一映射位图,提供指令修改单元8130使用。
所述安全存储设备可以为远程存储设备,所述远程存储设备可以被多个计算终端***共享。
在本发明的其他实施例中,所述的安全存储设备也可以为本地存储设备。
根据本发明另一个实施例,上述数据安全读取装置和数据安全存储装置可以合并为一个装置,其中指令分析单元和指令修改单元既能处理存储指令又能处理读取指令,下面举例介绍。
根据本发明另一个实施例,提供一种数据安全存储和读取装置。如图25,数据安全存储和读取装置9100包括:
指令运行环境缓存和恢复单元9101,适于缓存和恢复指令运行环境;
指令获取单元9102,适于获取下一条即将运行的指令地址,该地址为第一地址;还适于根据第一地址获取待调度/执行的机器指令片段;其中,待调度机器指令片段的最后一条指令为第一跳转指令;获取待调度机器指令片段的具体方式在前面的实施例中已经详细描述,这里不再赘述;
指令检索单元9104,适于利用所述第一地址查找地址对应表;所述地址对应表用于表示第一地址指向的待调度指令片段是否具有已保存的重组指令片段,地址对应表的数据为地址对;
如果找到相应的记录,指令检索单元9104适于调用指令运行环境缓存和恢复单元9101恢复所缓存的指令运行环境,并跳转到找到的对应地址继续执行(本次重组完成);
如果没有找到相应的记录,调用指令重组单元9103进行重组操作。
其中,指令重组单元9103包括:
指令解析单元9111,是上述指令分析单元7120和指令分析单元8120的组合,适于分析所述硬件指令并判断所述待调度/执行的机器指令片段中的每一条硬件指令是否为存储或读取指令;
指令修改单元9112,如果指令解析单元9111发现存储或读取指令:
对于存储指令,修改所述存储指令中的目标地址为对应的在安全存储设备上的存储地址;
对于读取指令,查找映射位图,并根据映射位图的数据修改所述读取指令中的读取地址;
更新单元9113,适于在指令修改单元9112修改所述存储指令之后,更新映射位图中所述目标地址对应的位,以体现已经转储;
同步单元9114,适于建立计算终端***与所述安全存储设备的通讯,并将映射位图在所述计算终端***和所述安全存储设备之间进行同步。
在指令解析单元9111、指令修改单元9112、更新单元9113和同步单元9114操作完成后,指令重组单元9103适于替换第一跳转指令为压栈指令,在压栈指令中记录第一跳转指令的地址和操作数;还适于在压栈指令之后加入第二跳转指令,生成具有第二地址的重组指令片段;所述第二跳转指令指向装置9100的入口地址;还适于将重组指令片段的第二地址与第一地址在地址对应表中建立一条记录。
基于上一段的描述,指令重组单元9103在其他实施例中,也可以与指令解析单元9111、指令修改单元9112、更新单元9113和同步单元9114作为同一层次的并列单元(如图26所示)。
指令重组单元9103获得重组指令片段后,还适于调用指令运行环境缓存和恢复单元9101恢复所缓存的指令运行环境,并跳转到重组指令片段的地址继续执行(重组操作完成)。
本领域技术人员可以理解,该实施例只是为了说明而举例,并不限制数据安全读取装置、数据安全存储装置和指令重组装置合并方式,上述介绍的各种数据安全读取装置、数据安全存储装置和指令重组装置可以以各种所需的方式合并。
另外,上述安全存储方法和装置还可以与云技术结合,确保云内数据的安全,从而加快云计算(cloud computing)的应用和普及。具体实施例在下面将给予介绍。
本领域技术人员可以理解,在安全层实现的上述方法也可以在操作***内核层至硬件层中的各个层内完成。具体功能的实现位置并不脱离本发明的精神和范围。
上述实施例中详细的介绍了本发明提供的安全存储方法和装置,与现有技术相比,具有如下优点:
1、数据安全存储方法实现了指令级数据转储即数据全转储,以此为基础,实现了计算终端***全运行周期的数据安全存储方法,一方面,使木马或恶意工具即使取得了涉密信息也无法保存所取得的信息,使数据始终存在于可控的安全范围内;另一方面,本地不再保存在涉密状态下的任何数据,因此防止了涉密人员的主动泄密和被动泄密;
2、接收来自硬件映射层的硬件指令可以100%的筛查所有指令,进一步提高数据安全性。
上述实施例中还详细的介绍了本发明提供的安全读取方法和装置,与现有技术相比,具有如下优点:
1、数据安全读取方法配合数据安全存储方法使数据始终存在于可控的安全范围内,并且保证在安全存储数据(转储)之后,可以将转储数据读出;由于本地将不再保存在涉密状态下的任何数据,因此防止了涉密人员的主动泄密和被动泄密;
2、安全存储设备为远程存储设备时,可以为多个终端共享,提高安全存储设备的空间使用效率。
应该注意到并理解,在不脱离后附的权利要求所要求的本发明的精神和范围的情况下,能够对上述详细描述的本发明做出各种修改和改进。因此,要求保护的技术方案的范围不受所给出的任何特定示范教导的限制。