发明内容
本申请实施例提供一种数据处理方法及数据处理装置,有助于保护数据面OS的关键资产的完整性和私密性。
第一方面,本申请实施例提供了一种数据处理方法,可以应用于网络设备的数据面操作系统OS,所述数据面OS包括非可信组件、中间组件和可信组件,所述非可信组件包括应用和数据面OS内核,所述可信组件包括可信计算基和关键资产组件,所述关键资产组件包括所述应用和所述数据面OS内核的用于提供安全服务的关键数据和/或关键代码,所述中间组件用于所述可信组件与所述非可信组件的安全隔离,所述中间组件中包括第一系统指令,所述第一系统指令用于从所述网络设备的第一系统寄存器中获取第一虚拟地址,所述第一虚拟地址用于指向所述可信组件,所述方法包括:所述中间组件接收所述非可信组件发送的第一请求,所述第一请求用于访问所述可信组件;所述中间组件执行所述第一系统指令获取所述第一虚拟地址,并根据所述第一虚拟地址,将所述第一请求发送给所述可信组件;所述可信组件根据所述第一请求进行处理。
基于该方案,通过将指向可信组件的入口地址保存在第一系统寄存器中,并通过配置使得非可信的应用和数据面OS内核的代码中不包括访问该第一系统寄存器的第一系统指令,而仅在中间组件中包括该第一系统指令,当应用和/或数据面OS内核运行过程中需要通过调用关键资产组件或可信计算基来提供相关服务时,只能通过调用中间组件来获得第一虚拟地址后根据该第一虚拟地址进入到可信组件中安全执行,有助于实现可信组件的地址隐藏。由于应用和数据面OS内核无法通过执行第一系统指令获知可信组件的入口地址,即使非可信组件被攻击者攻陷,攻击者也无法进入可信组件中窃取或者篡改私密的关键数据或关键代码,有助于可信组件与非可信组件的安全隔离,从而保障数据面OS的关键资产的完整性和私密性。
在一种可能的设计中,所述第一系统指令用于从所述网络设备的第一系统寄存器中获取第一虚拟地址,包括:所述第一系统指令用于将从所述第一系统寄存器中读取的所述第一虚拟地址存储到所述网络设备的通用寄存器中;所述可信组件根据所述第一请求进行处理之后,所述方法还包括:所述中间组件接收所述可信组件发送的第二请求,所述第二请求用于向所述非可信组件反馈所述可信组件的处理结果;所述中间组件删除所述通用寄存器中存储的所述第一虚拟地址,并向所述非可信组件发送所述处理结果。
基于该方案,在返回非可信组件之前,先清空通用寄存器中残留的第一虚拟地址,以避免控制流返回非可信组件中时非可信组件或攻击者通过访问通用寄存器来获取第一虚拟地址,避免第一虚拟地址被泄露。
在一种可能的设计中,所述第一请求用于访问所述可信组件包括:所述第一请求用于访问所述关键资产组件;所述可信组件根据所述第一请求进行处理,包括:根据所述关键资产组件中的所述关键数据和/或关键代码对所述第一请求进行处理。
基于该方案,在应用或数据面OS内核请求调用关键资产组件以提供例如安全服务时,在调用中间组件获取到第一虚拟地址后,使控制流立即进入可信组件中安全执行,以将关键资产组件中的关键数据和/或关键代码与非可信组件安全隔离,避免关键数据和/或关键代码被攻陷。例如,非可信组件运行过程中依赖私密的用户身份数据进行身份验证,同时为保护数据安全又不期望向非可信组件泄露用户身份数据的明文,通过该方案可将用户身份数据这一关键数据以及关于身份认证的关键代码设置在可信组件中,当非可信组件请求进行身份认证时,则可通过调用中间组件向可信组件提供用户身份数据的密文,通过可信组件中的关键数据或者运行相应的关键代码,来对密文进行解密并完成身份认证,之后将认证结果返回给非可信组件。
在一种可能的设计中,所述第一请求包括对所述数据面OS的内存管理单元MMU页表的访问和/或修改请求,所述可信组件根据所述第一请求进行处理之前,所述方法还包括:所述可信计算基确定对所述MMU页表的访问和/或修改请求符合预设的验证条件;其中,所述验证条件包括:对所述MMU页表的访问请求不会访问第一页表,所述第一页表用于映射所述可信组件;对所述MMU页表的修改请求不会改变所述MMU页表的访问权限属性,其中,所述MMU页表的访问权限属性满足:所述MMU页表映射到的代码区的访问权限为不可写、所述MMU页表映射到的数据区的访问权限为不可执行。
基于该方案,通过配置MMU页表的访问权限属性以及配置MMU管理机制,实现内存保护,对所有针对MMU页表的请求进行验证实现页表控制保护,满足验证条件则认为相关请求是合法的则可以对相关请求进行处理,不满足验证条件则认为相关请求是不合法的则不可以处理该相关请求,以确保攻击者无法通过访问可信组件的MMU页表来获取可信组件的入口地址,也无法通过改写代码区或者执行数据区的方式重新引入恶意攻击。
在一种可能的设计中,所述网络设备的第二系统寄存器指向由所述可信计算基配置的中断向量表,所述中断向量表用于指示中断对应的处理程序,所述方法还包括:若所述数据面OS发生中断,所述非可信组件根据所述中断向量表确定被中断运行的组件;若被中断运行的组件为所述非可信组件,所述非可信组件根据所述中断向量表的指示,执行所述中断对应的中断服务程序;若被中断运行的组件为所述可信组件和/或所述中间组件,所述非可信组件执行所述中断对应的中断服务程序之前,所述非可信组件根据所述中断向量表的指示发送中断处理请求,其中,所述第一请求包括所述中断处理请求,所述可信组件根据所述第一请求进行处理,包括:所述可信计算基根据所述中断处理请求保存中断上下文。
基于该方案,通过可信计算基配置的中断向量表(也可称为影子中向量表),能够及时截获中断,并使控制流进入可信计算基中安全保存中断上下文,以防止在可信组件和/或中间组件运行过程中发生数据面OS中断时造成第一虚拟地址泄露或是可信组件中数据和/或代码被篡改。
在一种可能的设计中,所述可信组件的处理结果包括所述可信计算基对所述中断上下文的处理结果;和/或所述第一请求还包括中断返回请求。
基于该方案,确保在返回数据面OS内核执行中断服务程序之前,也会先删除通用寄存器中的第一虚拟地址,以避免控制流返回非可信组件中时非可信组件或攻击者通过访问通用寄存器来获取第一虚拟地址,避免第一虚拟地址被泄露。即使要从数据面OS内核返回到可信计算基恢复中断上下文时,也需重新通过调用中间组件进入可信组件,从而尽可能全面地实现可信组件与非可信组件的安全隔离,保护可信组件中数据和/或代码的私密性与完整性。
在一种可能的设计中,所述数据面OS还包括加载器,所述加载器还用于在设备初始化时将所述数据面OS的可执行文件加载到所述网络设备的内存中,所述方法还包括:在设备启动时,所述加载器以在所述数据面OS的虚拟地址空间中随机选择的一个虚拟地址作为所述第一虚拟地址,将所述可信组件的内容加载到所述第一虚拟地址,并将所述第一虚拟地址保存到所述第一系统寄存器中;所述可信计算基初始化所述MMU页表,将所述虚拟地址空间的虚拟地址映射到所述内存,并配置所述MMU页表的访问权限属性,其中,所述MMU页表的访问权限属性满足:所述MMU页表映射到的代码区的访问权限为不可写、所述MMU页表映射到的数据区的访问权限为不可执行。
基于该方案,通过在每次的设备启动时,将可信组件的内容加载到在虚拟地址空间中随机选择的一个虚拟地址上,实现可信组件的入口地址在虚拟地址空间中的随机化“隐藏”。同时,通过配置MMU页表的访问权限属性来保护内存,确保攻击者无法通过改写代码区或者执行数据区的方式重新引入恶意攻击。
第二方面,本申请实施例提供了一种数据处理装置,包括非可信组件、中间组件和可信组件,所述非可信组件包括应用和数据面操作系统OS内核,所述可信组件包括可信计算基和关键资产组件,所述关键资产组件包括所述应用和所述数据面OS内核的用于提供安全服务的关键数据和/或关键代码,所述中间组件用于所述可信组件与所述非可信组件的安全隔离,所述中间组件中包括第一系统指令,所述第一系统指令用于从网络设备的第一系统寄存器中获取第一虚拟地址,所述第一虚拟地址用于指向所述可信组件;其中,所述非可信组件,用于发送第一请求,所述第一请求用于访问所述可信组件;所述中间组件,用于接收所述第一请求,执行所述第一系统指令获取第一虚拟地址,并根据所述第一虚拟地址,将所述第一请求发送给所述可信组件;所述可信组件,用于根据所述第一请求进行处理。
在一种可能的设计中,所述第一系统指令用于从所述网络设备的第一系统寄存器中获取第一虚拟地址,包括:所述第一系统指令用于将从所述第一系统寄存器中读取的所述第一虚拟地址存储到所述网络设备的通用寄存器中;所述可信组件根据所述第一请求进行处理之后,所述中间组件用于:接收所述可信组件发送的第二请求,所述第二请求用于向所述非可信组件反馈所述可信组件的处理结果;删除所述通用寄存器中存储的所述第一虚拟地址,并向所述非可信组件发送所述处理结果。
在一种可能的设计中,所述第一请求用于访问所述可信组件包括:所述第一请求用于访问所述关键资产组件;所述可信组件根据所述第一请求进行处理,包括:根据所述关键资产组件中的所述关键数据和/或关键代码对所述第一请求进行处理。
在一种可能的设计中,所述第一请求包括对所述数据面OS的内存管理单元MMU页表的访问和/或修改请求,所述可信组件根据所述第一请求进行处理之前,所述可信计算基用于:确定对所述MMU页表的访问和/或修改请求符合预设的验证条件;其中,所述验证条件包括:对所述MMU页表的访问请求不会访问第一页表,所述第一页表用于映射所述可信组件;对所述MMU页表的修改请求不会改变所述MMU页表的访问权限属性,其中,所述MMU页表的访问权限属性满足:所述MMU页表映射到的代码区的访问权限为不可写、所述MMU页表映射到的数据区的访问权限为不可执行。
在一种可能的设计中,所述网络设备的第二系统寄存器指向所述可信计算基配置的中断向量表,所述中断向量表用于指示中断对应的处理程序,所述非可信组件用于:若所述数据面OS发生中断,根据所述中断向量表确定被中断运行的组件;若被中断运行的组件为所述非可信组件,根据所述中断向量表的指示,执行所述中断对应的中断服务程序;若被中断运行的组件为所述可信组件和/或所述中间组件,在执行所述中断对应的中断服务程序之前,根据所述中断向量表的指示发送中断处理请求,所述第一请求包括所述中断处理请求,所述可信组件根据所述第一请求进行处理,包括:所述可信计算基根据所述中断处理请求保存中断上下文。
在一种可能的设计中,所述可信组件的处理结果包括所述可信计算基对所述中断上下文的处理结果;和/或所述第一请求还包括中断返回请求。
在一种可能的设计中,所述装置还包括加载器,所述加载器用于:在设备初始化时将所述数据处理装置的可执行文件加载到所述网络设备的内存中;在设备启动时,所述加载器以在所述数据处理装置的虚拟地址空间中随机选择的一个虚拟地址作为所述第一虚拟地址,将所述可信组件的内容加载到所述第一虚拟地址,并将所述第一虚拟地址保存到所述第一系统寄存器中;所述可信计算基还用于:初始化所述MMU页表,将所述虚拟地址空间的虚拟地址映射到所述内存,并配置所述MMU页表的访问权限属性,其中,所述MMU页表的访问权限属性满足:所述MMU页表映射到的代码区的访问权限为不可写、所述MMU页表映射到的数据区的访问权限为不可执行。
第三方面,本申请实施例提供了一种通信装置,包括处理器和存储器,所述存储器中存储有一个或多个计算机程序,所述一个或多个计算机程序包括指令,当所述处理器调用所述指令时,使得所述通信装置执行上述第一方面的数据处理方法。
第四方面,本申请实施例提供了一种芯片,所述芯片与存储器耦合,所述芯片读取存储器中存储的计算机程序,执行本申请上述第一方面的方法。
第五方面,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,当所述计算机程序在计算机上运行时,使得计算机执行本申请上述第一方面的方法。
第六方面,本申请实施例提供了一种计算机程序产品,当所述计算机程序产品在计算机上运行时,使得所述计算机执行本申请上述第一方面的方法。
本申请在上述各方面提供的实现的基础上,还可以进行进一步组合以提供更多实现。
具体实施方式
以下,对本申请实施例涉及的部分用语进行解释,以便于本领域技术人员理解。
1)、特权层:ARM架构服务器包括四个异常层级(Exception level),简称为EL0到EL3,其中,EL0层为无特权层级(unprivileged),EL1层为操作系统内核模式(OS kernelmode),EL2为虚拟机监控器层级(hypervisor mode),EL3层为监控器层级(monitor mode),ELn的特权层级随着n的增大而增大。本申请实施例中,特权层为EL1层。
2)、MMU页表:内存管理单元MMU完成虚拟地址空间到物理地址空间的转换所要使用的一种特殊的数据结构,放在系统空间的页表区,存放逻辑页与物理页帧的对应关系。用户只生成逻辑地址,且认为进程的地址空间为0到max。物理地址范围从R+0到R+max,R为基地址,地址映射:将程序地址空间中使用的逻辑地址变换成内存中的物理地址的过程。
3)、可信组件:数据面OS的可信任的组件。
本申请实施例中,可信组件可以包括数据面的需要私密保护的关键资产和可信计算基(trusted computing base,TCB,以下简称为可信基)。关键资产可以包括应用侧关键资产和数据面OS内核侧关键资产或是数据面OS的其它关键资产,关键资产可以包括但不限于关键数据和/或操作这些关键数据的关键代码。可信基为实现数据面OS安全保护的所有安全保护机制的集合。本申请实施例中,可信基被配置为实现数据面OS的页表管理控制功能和中断处理控制功能或是其它与安全保护机制相关的功能。
4)、非可信组件:数据面OS的不可信任的组件,包括数据面OS的除可信组件和中间组件以外的组件,例如应用、管理应用的数据面OS内核等。
5)、中间组件(gateway):用于数据面OS的可信组件与非可信组件的安全隔离的中间件。该中间组件中包括多个指令序列,这多个指令序列使得中间组件能够被调用,并实现可信组件与非可信组件之间的安全的交互。本申请实施例中,该中间组件中唯一包含访问网络设备的特殊的第一系统寄存器的第一系统指令,该第一系统寄存器中存储第一虚拟地址,该第一虚拟地址指向可信组件。
6)、可信执行环境:本申请实施例中,可信执行环境为可信组件的运行环境,为安全环境。本申请实施例实现的可信执行环境,不同于Trustzone隔离技术和虚拟化隔离技术中基于硬件隔离机制实现的安全环境TEE,不需要硬件隔离。
应理解,本申请中,除非另有说明,“/”表示或的意思。例如,A/B可以表示A或B。“和/或”仅仅是一种描述关联对象的关联关系,表示可以存在三种关系。例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B三种情况。另外,本申请中,“多个”是指两个或多于两个。例如,a、b或c中的至少一个,可以表示:a,b,c,a和b,a和c,b和c,或a、b和c七种情况。
在本申请中,“示例的”、“在一些实施例中”、“在另一些实施例中”等用于表示作例子、例证或说明。本申请中被描述为“示例”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用示例的一词旨在以具体方式呈现概念。
需要指出的是,本申请中涉及的“第一”、“第二”等词汇,仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。
以下,在介绍本申请实施例之前,先介绍相关现有技术。
目前,针对设备安全性问题,业内的解决方案包括,采用例如Trustzone隔离技术、虚拟化隔离技术等方式,将关键资产与数据面其它部分相隔离开,单独运行在安全环境中。然而这些隔离方式并不适用于图1所示的高性能的数据面OS场景中。
具体来说,Trustzone隔离技术是ARM支持的一种硬件隔离机制。参阅图3,Trustzone隔离技术将片上系统(system of chip,SoC)上的硬件和软件资源划分为可信执行环境(trusted execution environment,TEE)和富执行环境(rich executionenvironment,REE)两个区域,将关键资产从数据面中剥离开来,单独运行在TEE中的TEE OS之上,使得在TEE执行安全敏感的操作,在REE执行其它操作。系统运行过程中,TEE和REE之间通过监控器(monitor)进行转换,REE无法干扰安全环境TEE的执行,无法破坏TEE中硬件和软件资源的完整性和私密性,能够提供较高的安全隔离性。但是,由于应用运行在最低权限的EL0层,管理应用的数据面OS内核运行在稍高权限的EL1层,监控器(monitor)运行在更高权限的EL3层,运行在REE的应用和/或数据面OS内核要访问运行在TEE的关键资产时,存在应用到数据面OS内核、数据面OS内核到监控器、监控器到TEE OS、TEE OS到关键资产等的多次特权层切换,效率低且会造成极大的性能开销,并不适用于图1的高性能的数据面OS场景。并且,该方法需要将关键资产从数据面剥离后单独运行在安全环境中,需对现有应用进行较大的修改,会严重影响现有业务。
虚拟化隔离技术也是ARM支持的一种隔离机制。虚拟化隔离技术基于硬件辅助虚拟化和运行在虚拟化层的虚拟机监控器(hypervisor),将中央处理器(centralprocessing unit,CPU)、内存、设备等硬件资源进行隔离和抽象,为上层虚拟机提供虚拟化资源视图和相互独立的运行环境。参阅图4,使用该方法时,基于CPU虚拟化和内存虚拟化技术,需要将关键资产和数据面其它部分运行在不同的虚拟机中,如应用和数据面OS内核运行在虚拟机1,关键资产运行在虚拟机2。运行在虚拟机1的应用或数据面OS内核要访问运行在虚拟机2的关键资产时,必须首先进入虚拟机监控器(hypervisor)再切换到虚拟机2。不同虚拟机之间无法相互干扰或者破坏对方的完整性和私密性,也能够提供较好的隔离性。但是,也正是由于关键资产和数据面其它部分运行在不同的虚拟机中,数据面其它部分要访问关键资产时,存在应用到数据面OS内核、数据面OS内核到虚拟机监控器、虚拟机监控器到虚拟机2的操作系统OS、虚拟机2的OS到关键资产等的多次特权层切换,效率低且会造成极大的性能开销,也不适用于高性能的数据面场景。并且,该方法也需要将关键资产从数据面剥离而运行在另外的虚拟机上,需对现有应用进行较大的修改,会严重影响现有业务。
有鉴于此,本申请提出了一种可应用于网络设备的数据面操作系统OS的数据处理方案,通过该数据处理方案,能够构建轻量级可信执行环境(即可信组件的运行环境),并将可信执行环境的入口地址隐藏,确保可信组件与非可信组件的安全隔离,可信组件无法被非可信组件窃取和篡改。并通过配置,通过多种保护机制,使得即使非可信组件被攻陷,也无法破坏可信组件中数据和/或代码的完整性和私密性。并且,相比于图1和图2所示的高性能的数据面OS架构,该方案也没有增加额外的层级切换或MMU页表切换,几乎不影响数据面OS的高性能。同时,也无需将关键资产从数据面剥离出来,也能够兼容现有应用,而不会影响现有业务。该方案能够在保障数据面OS高性能的同时,保护数据面OS的关键资产的完整性和私密性。
以下,将结合附图及具体实施例详细说明本申请的技术方案。
图5为根据本申请一个实施例的数据面操作系统OS的逻辑架构图。其中,该数据面OS可以适用于网络设备或是其它设备,包括但不限于计算机(个人电脑和/或服务器)、基站、交换机、网桥、路由器、车载设备等,本申请对此不做限制。应理解,该逻辑架构仅是对设备的组件或功能模块的逻辑划分,该逻辑架构也可适用于其它运行在同一虚拟地址空间的任何合适的设备或模块,本申请对此也不做限制。
如图5所示,将数据面OS的各个组件基于功能划分为非可信组件501、中间组件(gateway)502和可信组件503。
非可信组件是非可信任的,可以包括该数据面OS的除可信组件和中间组件以外的数据面其它组件,例如可以包括一个或多个应用以及数据面OS内核。
可信组件503可以包括关键资产组件和可信计算基(以下简称为可信基)。关键资产组件例如包括数据面OS的多个应用(例如图5中的应用1、应用2)的关键资产、数据面OS内核的关键资产等。本申请实施例中,关键资产具体例如可以包括用于安全服务的关键数据和/或关键代码等。关键数据可以是数据面的需要私密保护的数据,也可称为敏感数据,例如包括5G基站场景中的用户短信、用户上网数据、密钥等。关键代码可以是数据面OS的不期望被攻击而需要私密保护的代码,当该关键代码被运行时,能够实现数据面OS的一些敏感操作,例如在5G基站场景中,关键代码包括关于实现分组数据汇聚协议(Packet DataConvergence Protocol,PDCP)解密操作、明文处理操作、互联网安全协议(InternetProtocol Security,IPSEC)加密操作和密钥管理等基站操作的代码。
应理解的是,本申请实施例中,“可信”与“非可信”仅是从设备安全性角度,来对操作系统的功能模块的划分,若可信组件中某个模块出现安全隐患,将会对整个操作系统的安全性造成危害,而非可信组件仅涉及系统安全策略赋予的较低的相关权限,非可信组件出现问题对整个操作系统的安全妨害较低。在具体实施时,可信组件和/或非可信组件可以包括但不限于图5所示的各个组件及其子模块,本申请实施例仅以图5为例对本申请的技术方案进行详细说明,该技术方案同样可适用于其它场景中,本申请对此不做限制。
中间组件是为实现可信组件与非可信组件的安全隔离而设置的。中间组件中可以包括预设的一个或多个系统指令,在中间组件被调用时,这一个或多个系统指令能够被执行,以实现可信组件与非可信组件之间的安全的信息交互,确保非可信组件无法进入到可信组件中窃取或篡改数据或代码。本申请实施例中,中间组件可以与可信组件处于相同的保护级别,也就是说,还需要保护中间组件不被攻陷,在下文中详述。
与图2所示的数据面OS架构相同的是,图5所示的数据面OS的各个组件整体运行在同一层级(例如EL1层),数据面OS的各个组件使用同一MMU页表,即运行在同一虚拟地址空间。各个组件之间的调用采用原生函数调用的方式实现。在数据面OS运行并进行数据的高速处理和转发的过程中,存在诸如系统调用、应用切换、中断处理等时,将不存在低效的层级切换(例如EL0层、EL1层、EL2层/EL3层之间)开销和低效的地址空间切换的开销,能够实现轻量级的运行环境,保障数据面的高性能。同时,相比于图2所示的数据面OS架构,图5所示的数据面OS架构中,能够通过修改/编译链接脚本文件,将数据面OS的关键资产的内容(包括数据和代码等)放在单独的安全段(secure section),并配置数据面OS的加载逻辑,使得在设备启动时,通过加载器从安全段中得到关键资产的内容并加载到虚拟地址空间中的一个随机选择的虚拟地址上,并通过配置中间组件和可信基的功能实现多种保护机制,从而实现可信组件与非可信组件的安全隔离,保护可信组件中的关键资产和/或可信计算基的私密性和完整性。
为在保障数据面OS的高性能的同时,保护数据面OS的关键资产的完整性和私密性,本申请实施例提出了诸如地址空间隐藏保护机制、中间组件保护机制、特权层自保护机制、中断处理保护机制等多个保护机制,通过层层保护,实现可信组件的安全隔离,尽可能地避免数据面OS的可信组件被攻陷,保障可信组件中的数据和/或代码的完整性和私密性。
如下将结合附图分别对各保护机制的原理进行说明。
一、地址空间隐藏保护机制
地址空间隐藏保护机制,是通过指定可信组件的入口地址,并将该入口地址在数据面OS的虚拟地址空间中随机化“隐藏”,以实现对可信组件的安全隔离的机制。
本申请实施例中,可以通过预先在静态编译阶段,通过编译器的修改编译得到数据面OS的可执行文件,以实现数据面OS的各个组件的配置逻辑、加载逻辑以及运行逻辑。在设备启动时,可以通过加载器在数据面OS的虚拟地址空间中随机选择的一个虚拟地址,作为第一虚拟地址,通过加载器将可信组件的内容加载到该第一虚拟地址指向的地址。第一虚拟地址可以指向一张地址表,该地址表中包括关键资产和可信基的地址。该第一虚拟地址被保存在网络设备的特殊的第一系统寄存器(例如ARM-Av8平台中CNTV_CVAL_EL0(counter-timer virtual timer compare value register for EL0))中,用于访问该第一系统寄存器的第一系统指令被唯一保存在中间组件中。
在非可信组件的运行过程中,若非可信组件要访问可信组件,只能通过调用中间组件来从第一系统寄存器中获取第一虚拟地址,从而进入到可信组件中安全执行,有助于实现可信组件的地址隐藏。由于应用和数据面OS内核无法通过执行第一系统指令获知可信组件的入口地址,即使非可信组件被攻击者攻陷,攻击者也无法进入可信组件中窃取或者篡改私密的关键数据或关键代码,有助于可信组件与非可信组件的安全隔离,从而保障数据面OS的关键资产的完整性和私密性。
由此,基于该地址空间隐藏保护机制实现可信组件的地址隐藏,使得即使非可信组件被攻陷,攻击者也无法通过执行第一系统指令获取到可信组件的入口地址,从而无法窃取或者篡改可信组件中的数据和代码,保障可信组件中的数据和代码的完整性和私密性。
参见图6所示,非可信组件运行过程中,需要依赖于可信组件来提供相关服务,例如明文处理、加密、解密、密钥管理等安全服务、以及页表管理、中断处理等服务。非可信组件运行过程中若要访问可信组件中的关键资产和/或可信基时,则通过①函数调用进入到中间组件,中间组件通过②执行第一系统指令,以从网络设备的第一系统寄存器中读取第一虚拟地址,并将该第一虚拟地址保存在网络设备的一个通用寄存器(例如X0)中。然后,中间组件通过③函数调用将相关请求跳转到该通用寄存器中的第一虚拟地址指向的地址,从而进入到可信组件中执行,以调用关键资产和/或可信基中完成相应的程序执行,例如运行关键代码提供安全服务、或执行页表管理控制、或执行中断处理控制等。在可信组件中完成相应的程序执行后,可信组件通过④函数调用返回中间组件中,中间组件删除通用寄存器中可能残留的第一虚拟地址后,再通过⑤函数调用,向非可信组件返回可信组件的处理结果,包括但不限于非可信组件请求调用关键资产提供安全服务的处理结果、非可信组件请求调用可信基执行的页表管理的结果、非可信组件请求调用可信基执行中断处理的结果等。非可信组件根据可信组件的处理结果继续运行,以进行高速的数据转发和处理。
作为示例,非可信组件运行过程中依赖关键数据和/或关键代码对用户身份进行验证,同时为保护数据安全又不期望向非可信组件泄露用户身份数据的明文。通过上述地址空间隐藏保护机制,可以在可信组件中保存关键数据和/或关键代码,包括关键数据密钥、解密和认证等关键操作的代码等。若非可信组件运行过程中要对用户身份进行验证,则非可信组件调用中间组件向关键资产组件提供用户身份数据的密文,关键资产组件通过执行相应的代码,来对密文进行解密并完成身份认证,并将认证的结果返回给非可信组件。相应地,非可信组件根据是否用户身份验证成功,执行进一步的数据处理和/或转发流程。
由此,通过地址空间隐藏保护机制,将可信组件的入口地址在虚拟地址空间中隐藏,由于非可信组件无法直接访问可信组件,也无法通过执行第一系统指令获知可信组件的入口地址,即使非可信组件存在安全隐患或者非可信组件被攻陷,攻击者也无法利用非可信组件进入到可信组件中窃取或者篡改关键数据和关键代码,从而保障可信组件中的数据和代码的私密性和完整性。
二、中间组件保护机制
由于中间组件中包含访问第一系统寄存器的第一系统指令,中间组件仍存在安全隐患,攻击者可能会恶意利用中间组件来窃取可信组件的入口地址,而避开上述地址空间隐藏保护机制。因此,为避免中间组件被恶意利用,本申请实施例提出了中间组件保护机制。
如图7所示,中间组件可以包括多个指令序列,例如,指令1、指令2、指令3、指令4。
指令1可以为通用寄存器到第一系统寄存器的传送指令,例如,MSR X0,CNTV_CVAL_EL0,表示指令1执行MSR系统指令访问网络设备的第一系统寄存器(例如CNTV_CVAL_EL0)读取第一虚拟地址,将第一虚拟地址写入网络设备的通用寄存器(例如X0)。
指令2可以为到由Xm目标寄存器指定的地址处的跳转指令,例如,BLR X0,表示指令2执行BLR指令跳转到网络设备的通用寄存器(例如X0)中的地址(即第一虚拟地址),进入可信组件中执行。
指令3可以为数据传送指令,例如,MOV X0,#0,表示指令3执行MOV指令将通用寄存器(例如X0)清空。
指令4可以为到由Xm目标寄存器指定的地址处的跳转指令,为子程序返回,例如RET,表示指令4执行RET指令返回非可信组件继续执行。
中间组件中指令序列可以保证,当访问网络设备的第一系统寄存器的第一系统指令被执行后,控制流将立即进入到可信组件中安全执行。并且,在返回非可信组件之前,执行指令3清空通用寄存器中残留的第一虚拟地址,以防止控制流返回非可信组件后,攻击者利用非可信组件访问通用寄存器来获取残留的第一虚拟地址,避免可信组件的入口地址被泄露。这样,即使攻击者攻陷了非可信组件,由于通用寄存器中的第一虚拟地址已被清空,非可信组件也无法利用中间组件获取到可信组件的入口地址,避免中间组件被恶意利用。
应当理解的是,上述指令序列及其功能实现仅是示例性说明而非任何限定,在其它实施例中,通用寄存器可以是X0-X29中的任一寄存器,各个指令序列的具体指令也可以根据应用场景或业务需求不同而有所不同,本申请实施例对此不做限制。
三、层级自保护机制
本申请实施例中,由于数据面OS整体运行在同一层级(例如EL1层)且使用同一MMU页表进行内存管理,攻击者如果攻陷了数据面OS,仍可能会恶意构造系统指令或者访问/修改MMU页表,从而避开本申请的地址隐藏保护机制和中间组件保护机制。为此,本申请实施例还提出了层级自保护机制,包括系统指令消除、页表控制和内存保护三个方面构成的自保护闭环,从而确保即使数据面OS运行在同一层级(例如同一特权层)也无法通过执行被消除的系统指令或者恶意构造系统指令、或者通过访问/修改MMU页表来恶意地进入可信组件中篡改或窃取关键数据和/或关键代码,实现对可信组件的安全隔离保护。
下面将结合图8,对本申请的自保护闭环进行说明,应当理解的是,下文中将这三个方面分开描述只了为了便于理解,图中示出的箭头也只是对这三个方面的保护机制的逻辑示意,而非对三者的功能实现进行任何限定。
参见图8所示,首先介绍基于系统指令消除的保护机制。
本申请实施例中,系统指令消除可以包括,对非可信组件中用于访问可信组件的系统指令进行消除,包括在静态编译阶段对非可信组件中的用于访问可信组件的系统指令的消除,以及在系统运行阶段对非可信组件中的用于访问可信组件的系统指令的消除。具体地,在静态编译阶段,通过编译器,对非可信组件的代码进行扫描验证,确保非可信组件的代码中不包含用于访问网络设备的第一系统寄存器的第一系统指令。同时,在系统运行阶段,非可信组件触发的第一系统指令不可被执行,非可信组件代码中的例如修改页表基地址寄存器(translation table base register,TTBR)的系统指令也替换为对中间组件的函数调用,以尽可能全面地确保非可信组件代码中不包含该第一系统指令。
基于系统指令消除的保护机制,尽量确保只有中间组件的代码中包含访问第一系统寄存器的第一系统指令且只有中间组件中的第一系统指令能够被执行。当非可信组件需要访问关键资产和/或可信基时,只能通过对中间组件的函数调用,将相关请求跳转到中间组件,通过中间组件执行第一系统指令,从第一系统寄存器中获取第一虚拟地址,进而将非可信组件的相关请求迁移到可信组件中安全执行。这样,即使非可信组件被攻陷且攻击者恶意构造第一系统指令,该第一系统指令也不会被执行,攻击者无法通过恶意构造第一系统指令访问可信组件来窃取或篡改可信组件中的数据和代码,从而实现对可信组件的安全隔离保护。
其次,介绍基于页表控制的保护机制。
由于内存管理单元(memory management unit,MMU)页表中包括所有虚拟地址到物理地址的映射,若攻击者能够读取到MMU页表,就能够得到可信组件的入口地址,即第一虚拟地址,因而无法真正地实现对可信组件的安全隔离保护,因此,也需要对MMU页表进行保护。
本申请实施例中的页表控制保护机制,通过将数据面OS的MMU页表也随机保存在数据面OS的虚拟地址空间中的一个随机选择的虚拟地址中,并将MMU页表的随机化的地址信息保存在第一虚拟地址指向的地址表中,由此,MMU页表的随机化的地址信息也保存在网络设备的第一系统寄存器中,使得非可信组件无法直接访问和/或修改MMU页表,无法从MMU页表中获得第一虚拟地址,实现MMU页表在数据面OS的虚拟地址空间中的随机隐藏。同时,还通过配置由可信基全面实现数据面OS的页表管理功能以及针对MMU页表的访问和/或请求的验证功能。若非可信组件运行过程中需要访问和/或修改MMU页表,则也需要通过图6所示的方式,通过调用中间组件来获取到第一虚拟地址后将针对MMU页表的访问和/或修改请求发送给可信组件,从而进入到可信组件中,由可信基安全执行针对MMU页表的访问和/或修改请求的相关处理。
可信基能够先对针对数据面OS的MMU页表的访问和/或修改请求进行验证,以确定非可信组件对数据面OS的MMU页表的访问和/或修改请求是否符合预设的验证条件。可信基在对MMU页表的访问和/或修改请求验证成功后,即可执行对MMU页表的访问和/或修改,并在对MMU页表的访问和/或修改的程序运行完毕后,调用中间组件向非可信组件返回页表访问结果和/或页表修改结果。其中,验证条件可以包括:对所述MMU页表的访问请求不会访问第一页表,所述第一页表用于映射所述可信组件;以及对所述MMU页表的修改请求不会改变所述MMU页表的访问权限属性,其中,所述MMU页表的访问权限属性满足:所述MMU页表映射到的代码区的访问权限为不可写、所述MMU页表映射到的数据区的访问权限为不可执行。由此,通过可信基验证针对MMU页表的访问和/或修改请求的合法性,满足验证条件即认为合法,不满足验证条件即认为不合法,以使得针对MMU页表的访问请求不会访问映射到可信组件的第一页表,确保攻击者无法通过访问MMU页表来获得可信组件的入口地址。同时,还可以确保用于改写代码区或执行数据区的系统指令不会被执行,这样攻击者无法通过改写代码区或执行数据区的方式重新引入恶意构造的第一系统指令而引入攻击。
由此,通过页表控制保护机制,非可信组件运行过程中,若请求访问和/或修改数据面OS的MMU页表,则只能通过调用中间组件获取第一虚拟地址,并根据第一虚拟地址调用可信基进行安全处理,避免攻击者简单地通过读取MMU页表就能够得到可信组件的随机化的入口地址,实现MMU页表的安全隔离保护。同时,由于非可信组件的代码已被消除而不包含修改页表基地址寄存器TTBR的系统指令,攻击者也无法通过修改页表基地址寄存器切换当前页表,使得无法将数据面OS使用的页表恶意更换为未被随机化保护的其它页表。同时,通过可信基验证针对MMU页表的管理请求的合法性,确保攻击者无法通过访问MMU页表获取可信组件的入口地址,也无法篡改内存来恶意构造系统指令。
然后,介绍基于内存保护的保护机制。
内存保护是指,通过MMU页表中的权限控制位配置访问权限属性,使得MMU页表的访问权限属性满足:MMU页表映射到的代码区的访问权限为不可写、MMU页表映射到的数据区的访问权限为不可执行,由此确保数据面OS的整个虚拟地址空间的内存映射属性满足数据区被映射为不可执行、代码区被映射为不可写。这样,在基于系统指令消除保护机制的基础上,确保攻击者无法通过改写代码区或者执行数据区的方式恶意构造系统指令而重新引入恶意攻击,实现对内存的安全保护。
正是由于设置了系统指令消除保护机制,使得非可信组件针对可信组件的相关系统指令不会被执行,非可信组件无法获取到可信组件的入口地址,也无法直接访问可信组件,实现可信组件的安全隔离。正是由于设置了页表控制保护机制,不满足验证条件的MMU页表访问请求和/或MMU页表修改请求即被认为是不合法的而不能被处理,确保数据面OS使用的页表无法被恶意更换为未被随机化保护的其它页表来窃取可信组件的入口地址,也无法通过改写代码区或执行数据区的方式重新引入攻击。正是由于设置了内存保护,使得内存中相应的代码区无法被写、数据区无法被执行,保证非可信组件在运行过程中无法通过修改自身的代码区或者执行自身的数据区恶意引入被消除的系统指令,防止基于系统指令消除的保护机制被绕开。
由此,通过三个方面的保护机制环环相扣构成的自保护闭环,能够实现数据面OS的层级自保护,使得即使数据面OS的各个组件同时运行在特权层,也无法通过执行系统指令或者访问和/或修改MMU页表来篡改或窃取可信组件中的内容,尽可能全面地保障可信组件的安全隔离,从而保障可信组件中数据和/或代码的完整性和私密性。
四、中断处理保护机制
中断处理保护机制是指,由可信基配置网络设备的第二系统寄存器(例如中断向量基地址寄存器,包括但不限于ARM-Av8平台中的中断向量基地址寄存器(vector baseaddress register,VBAR)等)指向的中断向量表,以使得在数据面OS发生中断时,可信基能够截获中断,并安全地保存被中断运行的中间组件和/或可信组件的上下文,防止在可信组件和/或中间组件运行过程中发生数据面OS中断时造成第一虚拟地址泄露或是可信组件中数据和/或代码被篡改。其中,请求访问第二系统寄存器的系统指令也会在静态编译阶段被执行系统指令消除,以确保攻击者无法恶意修改第二系统寄存器。
在一个实施例中,非可信组件可以配置第二中断向量表,该第二中断向量表可以用于指示不同类型的中断对应的中断服务程序,例如由数据面OS内核执行转发数据包服务等。可信基可以配置第一中断向量表,第一中断向量表又可称为第二中断向量表的影子中断向量表,第一中断向量表可以用于指示中断对应的处理程序,包括但不限于确定被中断运行的组件的程序、对中断上下文的安全保存程序、确定中断服务程序等。
第二系统寄存器可以指向第一中断向量表。非可信组件可以通过读取第二系统寄存器确定数据面OS发生中断,然后,可以根据第一中断向量表确定被中断运行的组件,然后由相应的组件根据第一中断向量表的指示执行相应的中断处理流程。
例如,若被中断运行的组件为所述非可信组件,非可信组件根据所述第一中断向量表的指示执行所述中断对应的中断服务程序,例如转发数据包等。
例如,若被中断运行的组件为所述可信组件和/或所述中间组件,根据所述第一中断向量表的指示,所述中间组件和所述可信组件执行安全保存程序后,返回非可信组件执行所述中断对应的中断服务程序。其中,第一请求可以包括中断处理请求。如图6所示,所述安全保存程序包括:中断处理请求,所述中间组件接收非可信组件发送的中断处理请求,执行所述第一系统指令获取所述第一虚拟地址,并根据所述第一虚拟地址,将中断处理请求发送给可信基,可信基根据中断处理请求保存中断上下文。在可信基对中断上下文进行安全保存后,调用中间组件向非可信组件反馈相应的处理结果。中间组件删除通用寄存器中存储的第一虚拟地址,并向非可信组件返回处理结果,进入到非可信组件中执行中断对应的中断服务程序。当非可信组件执行中断服务程序之后请求中断返回时,重新调用中间组件,中间组件执行第一系统指令获取第一虚拟地址,并将中断返回请求发送给第一虚拟地址指向的可信组件,从而进入到可信组件中,由可信基恢复中断上下文。
由此,通过可信基配置的中断向量表以及中断处理保护机制,使得可信基能够及时截获中断,并在被中断运行的组件为可信组件和/或中间组件时,在可信基中安全保存中断上下文,避免可信组件和/或中间组件运行过程中的上下文被篡改或者泄露,从而助于保护数据面OS的可信组件中数据和/或代码的完整性和私密性。
至此,已经结合附图5-8对本申请的数据面OS的逻辑架构及其功能实现进行了说明。通过该逻辑架构及其功能实现,有助于同时实现数据面OS的高性能及安全性。即使将上述数据处理方案应用到图1-2所示的数据面OS架构,也只需简单地通过修改链接脚本文件或者可执行文件实现,而无需对当前业务进行较大改动,不会影响图1所示的数据面操作系统的高性能也不会影响现有业务。
以下结合5G基站场景,对本申请的数据面OS及其实现的数据处理方法的流程进行说明。
示例的,如图9所示,为本申请实施例的一种数据处理方法流程示意图,具体包括以下步骤。
S910,通过编译器将5G基站的数据面OS的程序代码编译为可执行文件。
该可执行文件可以为在5G基站出厂之前编译得到的,可执行文件预先存储在5G基站中。或者,该可执行文件也可以是对已有5G基站的相关文件进行修改编译后重新得到并存储在5G基站中。该可执行文件由多个段(section)组成,包括代码section、数据section等,用于存放5G基站的数据面OS的各个组件的内容(包括数据和/或代码)。其中,在出厂之前编译或者在进行修改编译时,可以通过编译或修改编译链接脚本文件,使得编译器在编译过程中将5G基站的数据面OS的关键资产的内容(包括数据和/或代码)置于可执行文件中的独立的安全段(secure section)。这样,在5G基站初始化时,加载器能够将可执行文件的各个section加载到5G基站的内存中时,还能够通过查找secure section来获取到关键资产的数据和代码,便于加载器将关键资产的数据和代码加载到在数据面OS的虚拟地址空间中随机选择的第一虚拟地址上,有助于实现将关键资产在虚拟地址空间的随机化“隐藏”。
并且,还可以通过编译器,对数据面OS的相关代码中的系统指令进行消除,确保非可信组件的代码中不包含访问5G基站的特殊的第一系统寄存器的第一系统指令,用于直接或间接地访问可信组件的系统指令替换为对中间组件的函数调用,以使在后续数据面OS运行过程中,非可信组件的用于访问所述关键资产组件和/或可信基的第一系统指令,或者非可信组件的用于获取第一虚拟地址的第一系统指令,均是不可执行的,确保非可信组件无法直接访问可信组件,有助于实现将关键资产在虚拟地址空间的随机化“隐藏”,以保护可信组件中的数据和代码的完整性和私密性。
S920,5G基站启动,初始化基站数据面OS和MMU页表。
具体地,当5G基站初始化时,加载器将5G基站的整个数据面OS的可执行文件加载到5G基站的内存中。然后,加载器进入可信组件中由可信基完成MMU页表的初始化或是其它相关初始化过程。其中,加载器以在数据面OS的虚拟地址空间中随机选择的一个虚拟地址作为第一虚拟地址,将可信组件的内容加载到第一虚拟地址指向的地址,并将第一虚拟地址保存在5G基站的第一系统寄存器中,以助于实现可信组件的入口地址在虚拟地址空间中的随机化“隐藏”。可信基初始化MMU页表,实现数据面OS在虚拟地址空间中虚拟地址和在内存中的物理地址的映射,并配置MMU页表的访问权限属性,该MMU页表的访问权限属性满足:MMU页表映射到的代码区的访问权限为不可写、MMU页表映射到的数据区的访问权限为不可执行,以将数据面OS的整个虚拟地址空间映射为数据区不可执行、代码区不可写,避免攻击者通过改写代码区或执行数据区来引入攻击。MMU页表的地址信息也保存在第一虚拟地址指向的地址中,实现对MMU页表在虚拟地址空间中的随机化“隐藏”,以确保攻击者无法通过读取MMU页表来获取第一虚拟地址。并且,可信基还初始化5G基站的第二系统寄存器(例如中断向量基地址寄存器VBAR)指向的中断向量表,以便在后续系统运行中使可信基能够及时地截获中断并安全保存被中断的中间组件和/或可信组件的上下文,以防止可信组件和/或中间组件中的相关信息被泄露或篡改。在加载器加载完成后,从内存中清除加载器对应的相关代码,以防止攻击者恶意利用加载器中的系统指令。
5G基站初始化完成后,5G基站的数据面OS的逻辑架构如图5所示,包括可信组件、中间组件和非可信组件。可信组件包括可信计算基、关键资产组件(包括多个基站应用的关键资产以及5G基站的数据面OS内核的关键资产),关键资产包括用于提供安全服务的关键数据和/或关键代码。非可信组件包括多个基站应用以及数据面OS内核,中间组件包括用于可信组件和非可信组件的安全隔离的多个系统指令。
S930,5G基站运行以提供服务。
在5G基站运行过程中,数据面OS的各个组件协同,完成对数据的高速处理和转发。其中,在5G基站的运行过程中,其数据面OS根据上文实施例所述的数据处理方法,实现对可信组件的安全隔离保护,有助于保障可信组件中的数据和/或代码的完整性和私密性。
例如,S931,5G基站运行过程中,非可信组件发出第一请求以请求调用关键资产组件。例如,调用关键资产组件中的关键数据和/或关键代码提供安全服务。
S932,中间组件接收第一请求,并执行第一系统指令从5G基站的第一系统寄存器中获取第一虚拟地址,并将该第一虚拟地址保存在5G基站的通用寄存器(例如X0)中。
S933,中间组件根据第一虚拟地址调用关键资产,将第一请求跳转到第一虚拟地址指向的地址,以进入到可信组件访问关键资产,例如利用关键资产中的关键数据和/或关键代码,完成对第一请求的处理,例如用户身份认证、加密、解密、明文处理等。对第一请求处理完毕后,中间组件删除通用寄存器中存储的第一虚拟地址后,向非可信组件返回处理结果。非可信组件根据该处理结果,继续完成数据的高速处理和转发等,以保障5G基站侧业务和/或服务的安全、高效的运行。
例如,S934,5G基站运行过程中,非可信组件发送第一请求以请求访问和/或修改MMU页表。
S935,中间组件接收对MMU页表的访问和/或修改请求,并执行第一系统指令从5G基站的第一系统寄存器中获取第一虚拟地址,并将该第一虚拟地址保存在5G基站的通用寄存器(例如X0)中。
S936,中间组件根据第一虚拟地址调用可信基,将对MMU页表的访问和/或修改请求跳转到第一虚拟地址指向的地址,以进入到可信组件访问可信基。可信基首先对MMU页表访问请求和/或MMU页表修改请求进行验证。若符合预设的验证条件则认为请求合法从而完成对MMU页表的访问请求和/或修改请求的处理。若不符合则认为请求不合法而不处理该请求,同时启动相应的安全处理程序,例如异常处理,以避免MMU页表或基站内存被恶意访问或篡改。
例如,S937,5G基站的非可信组件例如读取第二系统寄存器并确定数据面OS发生中断。
S938,根据第二系统寄存器指向的中断向量表指示的处理程序,执行中断处理。
若被中断运行的组件为非可信组件,即中断发生在非可信组件的运行过程中,S939,非可信组件根据中断向量表的指示,执行中断对应的中断服务程序,例如,由数据面OS内核执行中断服务程序。S9310,非可信组件执行中断返回,以恢复中断上下文(即被恢复中断运行的非可信组件的上下文)。
若被中断运行的组件为可信组件和/或中间组件,即中断发生在可信组件和/或所述中间组件的运行过程中,S9311,根据第一中断向量表的指示,非可信组件发送中断处理请求以请求调用可信基保存中断上下文。中间组件接收中断处理请求,执行第一系统指令从5G基站的第一系统寄存器中获取第一虚拟地址,并将该第一虚拟地址保存在5G基站的通用寄存器(例如X0)中。中间组件根据第一虚拟地址调用可信基,将中断处理请求跳转到第一虚拟地址指向的地址,以进入到可信组件访问可信基。S9312,可信计算基根据中断处理请求保存中断上下文。然后,S9313,中间组件执行第三系统指令删除通用寄存器中存储的第一虚拟地址,将处理结果发送给非可信组件,非可信组件执行中断对应的中断服务程序。S9314,非可信组件请求中断返回时调用中间组件,中间组件执行第一系统指令获取第一虚拟地址并保存在通用寄存器中,然后执行第二系统指令将中断返回请求跳转到第一虚拟地址指向的地址,以进入到可信组件中由可信基恢复中断上下文,以恢复被中断的中间组件和/或可信组件的运行。
通过上述方法流程,通过配置5G基站的数据面OS的配置逻辑、加载逻辑以及各个组件的运行逻辑,通过诸如地址空间隐藏保护机制、中间组件保护机制、层级自保护机制、中断处理保护机制等多个保护机制,通过层层保护,有助于保障数据面OS中需要私密保护的数据和/或代码的完整性和私密性。并且,通过上述方案,无需对图2所示的已有数据面OS架构进行较大改动,不会对现有业务产生较大影响,同时仍能够保障数据面OS的高性能。
基于相同的技术构思,本申请实施例还提供了一种数据处理装置,如图10所示,该数据处理装置1000可以包括:非可信组件1001、中间组件1002和可信组件1003,非可信组件1001可以包括应用和数据面操作系统OS内核,可信组件1003可以包括可信计算基和关键资产组件,关键资产组件包括应用和数据面OS内核的用于提供安全服务的关键数据和/或关键代码,中间组件用于可信组件与非可信组件的安全隔离,中间组件中包括第一系统指令,第一系统指令用于从网络设备的第一系统寄存器中获取第一虚拟地址,第一虚拟地址用于指向可信组件;其中,非可信组件,用于发送第一请求,第一请求用于访问可信组件;中间组件,用于接收第一请求,执行第一系统指令获取第一虚拟地址,并根据第一虚拟地址,将第一请求发送给可信组件;可信组件,用于根据第一请求进行处理。
在一种实施方式中,第一系统指令用于从网络设备的第一系统寄存器中获取第一虚拟地址,包括:第一系统指令用于将从第一系统寄存器中读取的第一虚拟地址存储到网络设备的通用寄存器中;可信组件根据第一请求进行处理之后,中间组件用于:接收可信组件发送的第二请求,第二请求用于向非可信组件反馈可信组件的处理结果;删除通用寄存器中存储的第一虚拟地址,并向非可信组件发送处理结果。
在一种实施方式中,第一请求用于访问可信组件包括:第一请求用于访问关键资产组件;可信组件根据第一请求进行处理,包括:根据关键资产组件中的关键数据和/或关键代码对第一请求进行处理。
在一种实施方式中,第一请求包括对数据面OS的内存管理单元MMU页表的访问和/或修改请求,可信组件根据第一请求进行处理之前,可信计算基用于:确定对MMU页表的访问和/或修改请求符合预设的验证条件;其中,验证条件包括:对MMU页表的访问请求不会访问第一页表,第一页表用于映射可信组件;对MMU页表的修改请求不会改变MMU页表的访问权限属性,其中,MMU页表的访问权限属性满足:MMU页表映射到的代码区的访问权限为不可写、MMU页表映射到的数据区的访问权限为不可执行。
在一种实施方式中,网络设备的第二系统寄存器指向可信计算基配置的中断向量表,中断向量表用于指示中断对应的处理程序,非可信组件用于:若数据面OS发生中断,根据中断向量表确定被中断运行的组件;若被中断运行的组件为非可信组件,根据中断向量表的指示,执行中断对应的中断服务程序;若被中断运行的组件为可信组件和/或中间组件,在执行中断对应的中断服务程序之前,根据中断向量表的指示发送中断处理请求,第一请求包括中断处理请求,可信组件根据第一请求进行处理,包括:可信计算基根据中断处理请求保存中断上下文。
在一种实施方式中,可信组件的处理结果包括可信计算基对中断上下文的处理结果;和/或第一请求还包括中断返回请求。
在一种实施方式中,装置还包括加载器,加载器用于:在设备初始化时将数据处理装置的可执行文件加载到网络设备的内存中;在设备启动时,加载器以在数据处理装置的虚拟地址空间中随机选择的一个虚拟地址作为第一虚拟地址,将可信组件的内容加载到第一虚拟地址,并将第一虚拟地址保存到第一系统寄存器中;可信计算基还用于:初始化MMU页表,将虚拟地址空间的虚拟地址映射到内存,并配置MMU页表的访问权限属性,其中,MMU页表的访问权限属性满足:MMU页表映射到的代码区的访问权限为不可写、MMU页表映射到的数据区的访问权限为不可执行。
如图11所示,为根据本申请一个实施例的通信装置的示意图。该通信装置的结构如图11所示,包括处理器1101、存储器1102。所述存储器中存储有一个或多个计算机程序,所述一个或多个计算机程序包括指令;当所述处理器调用所述指令时,使得所述通信装置执行以上实施例以及实施例提供的数据处理方法,下面对该通信装置的各个单元器件的功能进行介绍。
所述处理器1101、所述存储器1102之间通过总线1103相互连接。所述总线1103可以是外设部件互连标准(peripheral component interconnect,PCI)总线或扩展工业标准结构(extended industry standard architecture,EISA)总线等。所述总线可以分为地址总线、数据总线、控制总线等。为便于表示,图11中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
存储器1102中存储有一个或多个计算机程序,所述一个或多个计算机程序包括指令。存储器1102可能包含随机存取存储器(random access memory,RAM),也可能还包括非易失性存储器(non-volatile memory),例如至少一个磁盘存储器。处理器1101执行存储器1102中的程序指令,并使用所述存储器1002中存储的数据,实现上述功能,从而实现上述实施例提供的数据处理方法。
可以理解,本申请图11中的存储器1102可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data RateSDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(Synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(DirectRambus RAM,DR RAM)。应注意,本文描述的系统和方法的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
需要说明的是,本申请以上实施例中对模块的划分是示意性的,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,另外,在本申请各个实施例中的各功能单元可以集成在一个处理单元中,也可以是单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。
基于以上实施例,本申请实施例还提供了一种计算机程序,当所述计算机程序在计算机上运行时,使得所述计算机执行以上实施例提供的数据处理方法。
基于以上实施例,本申请实施例还提供了一种计算机可读存储介质,该计算机可读存储介质中存储有计算机程序,所述计算机程序被计算机执行时,使得计算机执行以上实施例提供的数据处理方法。
其中,存储介质可以是计算机能够存取的任何可用介质。以此为例但不限于:计算机可读介质可以包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储、磁盘存储介质或者其他磁存储设备、或者能够用于携带或存储具有指令或数据结构形式的期望的程序代码并能够由计算机存取的任何其他介质。
基于以上实施例,本申请实施例还提供了一种芯片,所述芯片与存储器耦合,所述芯片用于读取存储器中存储的计算机程序,实现以上实施例提供的数据处理方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘(Solid State Disk,SSD))等。
本申请实施例中所描述的各种说明性的逻辑单元和电路可以通过通用处理器,数字信号处理器,专用集成电路(ASIC),现场可编程门阵列(FPGA)或其它可编程逻辑装置,离散门或晶体管逻辑,离散硬件部件,或上述任何组合的设计来实现或操作所描述的功能。通用处理器可以为微处理器,可选地,该通用处理器也可以为任何传统的处理器、控制器、微控制器或状态机。处理器也可以通过计算装置的组合来实现,例如数字信号处理器和微处理器,多个微处理器,一个或多个微处理器联合一个数字信号处理器核,或任何其它类似的配置来实现。
本申请实施例中所描述的方法或算法的步骤可以直接嵌入硬件、处理器执行的软件单元、或者这两者的结合。软件单元可以存储于RAM存储器、闪存、ROM存储器、EPROM存储器、EEPROM存储器、寄存器、硬盘、可移动磁盘、CD-ROM或本领域中其它任意形式的存储媒介中。示例性地,存储媒介可以与处理器连接,以使得处理器可以从存储媒介中读取信息,并可以向存储媒介存写信息。可选地,存储媒介还可以集成到处理器中。处理器和存储媒介可以设置于ASIC中,ASIC可以设置于终端设备中。可选地,处理器和存储媒介也可以设置于终端设备中的不同的部件中。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管结合具体特征及其实施例对本发明进行了描述,显而易见的,在不脱离本发明的精神和范围的情况下,可对其进行各种修改和组合。相应地,本说明书和附图仅仅是所附权利要求所界定的本发明的示例性说明,且视为已覆盖本发明范围内的任意和所有修改、变化、组合或等同物。显然,本领域的技术人员可以对本发明进行各种改动和变型而不脱离本发明的精神和范围。这样,倘若本发明的这些修改和变型属于本发明权利要求及其等同技术的范围之内,则本发明也意图包含这些改动和变型在内。