一种基于pks体系的内核架构
技术领域
1.本发明涉及计算机技术领域,特别涉及一种基于pks体系的内核架构。
背景技术:2.现有计算机体系是计算+安全在同一个空间,共享同一套计算资源、内存、i/o资源。这样使安全软件能够获得计算状态和实施保护,但是未知的计算风险会使攻击者获得合法权限或绕过安全软件保护。业内采用的安全外置的双架构往往是安全空间功能少性能弱,无法实时获取计算空间状态,无法及时深入保护。
3.因此,如何基于pks体系提供一种安全可靠的内核架构是本领域技术人员亟待解决的技术问题。
技术实现要素:4.有鉴于此,本发明的目的在于提供一种基于pks体系的内核架构,能够实时获取计算空间状态以进行保护,避免采用安全外置的双架构导致的安全空间功能少、性能弱。其具体方案如下:
5.双架构处理器中的用户区域,用于调用操作系统安全模块lsm以提供可供安全软件挂钩子的函数对软件挂接进行统一管控,以及为挂接的安全软件的运行资源进行分配;
6.双架构处理器中的安全区域,用于当获取到资源访问请求,调用tee模块对载入内核的代码进行安全性验签,如果验签通过,则运行载入内核的代码;其中,所述安全区域的权限高于所述用户区域;
7.位于所述用户区域的uefi模块,用于通过与所述tee模块的交互对uefi固件及操作系统进行可信度量,以实现可信启动。
8.可选的,所述用户区域与所述安全区域为通过基于pspa规范对相关寄存器配置的方式划分得到,且采用共享内存的方式对待传输数据包进行自定义协议握手并传输。
9.可选的,所述用户区域,还用于:
10.对经过ebpf装载器处理的待载入内核的代码动态进行私钥签名后发送至所述tee模块,以便所述tee模块对私钥签名的待载入内核的代码进行验签后运行。
11.可选的,所述通过与所述tee模块的交互对uefi固件及操作系统进行可信度量,以实现可信启动,包括:
12.通过调用所述tee模块对所述uefi固件进行可信度量并确定所述uefi固件可信后启动所述uefi固件;
13.利用所述uefi固件遍历主板设备得到相关的硬件信息;
14.通过调用所述tee模块对所述硬件信息进行可信度量,如果可信,则进行可信启动。
15.可选的,所述通过调用所述tee模块对所述硬件信息进行可信度量之前,还包括:
16.判断可信度量是否为首次度量;
17.如果是,则根据首次度量结果生成相应的白名单,使得在后续度量过程中将动态计算的哈希值与所述白名单进行匹配;
18.如果匹配成功,则判定度量结果可信;
19.如果匹配失败,则跳过继续启动或者进行报错并阻止启动。
20.可选的,所述利用所述uefi固件遍历主板设备得到相关的硬件信息之后,还包括:
21.将遍历到的所述硬件信息中的硬盘分区表数据进行拆分;
22.将拆分后的数据分批发送至所述tee模块,以利用所述tee模块对获取到的分批数据进行度量。
23.可选的,所述将遍历到的所述硬件信息中的硬盘分区表数据进行拆分,包括:
24.将遍历到的所述硬件信息中的硬盘分区表数据进行拆分,以得到多个以共享内存大小为单位的数据包。
25.可选的,所述tee模块为唯一具有flash物理读写功能的模块。
26.可选的,所述基于pks体系的内核架构,还包括:
27.异构计算单元,用于接收所述tee模块下发的挂载的安全软件,以对挂载的安全软件进行异构计算处理。
28.可选的,所述tee模块,还用于根据所述用户区域的配置指令对安全内存进行配置。
29.本技术中,基于pks体系的内核架构包括双架构处理器中的用户区域和安全区域、uefi模块。其中,用户区域用于调用操作系统安全模块lsm以提供可供安全软件挂钩子的函数对软件挂接进行统一管控,以及为挂接的安全软件的运行资源进行分配;安全区域用于当获取到资源访问请求,调用tee模块对载入内核的代码进行安全性验签,如果验签通过,则运行载入内核的代码;其中,所述安全区域的权限高于所述用户区域;uefi模块用于通过与所述tee模块的交互对uefi固件及操作系统进行可信度量,以实现可信启动。可见,本技术的内核架构通过划分用户区域和安全区域将非安全计算和安全计算分属于不同空间,同时基于tee模块与uefi模块之间的交互能够实时获取计算空间状态以进行保护,避免采用安全外置的双架构导致的安全空间功能少、性能弱。
附图说明
30.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
31.图1为本技术提供的一种基于pks体系的内核架构图;
32.图2为本技术提供的一种具体的架构内部交互示意图。
具体实施方式
33.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他
实施例,都属于本发明保护的范围。
34.现有计算机体系是计算+安全在同一个空间,共享同一套计算资源、内存、i/o资源。这样使安全软件能够获得计算状态和实施保护,但是未知的计算风险会使攻击者获得合法权限或绕过安全软件保护。业内采用的安全外置的双架构往往是安全空间功能少性能弱,无法实时获取计算空间状态,无法及时深入保护。针对上述技术缺陷,本技术提供一种基于pks体系的内核架构,通过划分用户区域和安全区域将非安全计算和安全计算分属于不同空间,同时基于tee模块与uefi模块之间的交互能够实时获取计算空间状态以进行保护,避免采用安全外置的双架构导致的安全空间功能少、性能弱。
35.图1为本技术实施例提供的一种基于pks体系的内核架构图。参见图1所示,该基于pks体系的内核架构包括双架构处理器中的用户区域和安全区域、uefi模块及tee模块,其中:
36.双架构处理器中的用户区域,用于调用操作系统安全模块lsm以提供可供安全软件挂钩子的函数对软件挂接进行统一管控,以及为挂接的安全软件的运行资源进行分配;
37.双架构处理器中的安全区域,用于当获取到资源访问请求,调用tee模块对载入内核的代码进行安全性验签,如果验签通过,则运行载入内核的代码;其中,所述安全区域的权限高于所述用户区域;
38.uefi模块,用于通过与所述tee模块的交互对uefi固件及操作系统进行可信度量,以实现可信启动。
39.pks体系是一种绿色、开放、共享的技术架构和生态体系。“p”代表(phytium)飞腾处理器,“k”代表(kylin)麒麟操作系统,“s”代表注入安全的能力。本实施例中的处理器、操作系统均是pks体系下的处理器和操作系统,建立计算和安全防护并存的处理器双体系结构,打造基于可信计算的免疫模式。在此基础上,双架构处理器中的用户区域用于调用操作系统安全模块lsm以提供可供安全软件挂钩子的函数对软件挂接进行统一管控,以及为挂接的安全软件的运行资源进行分配。双架构处理器中的安全区域,用于用于当获取到资源访问请求,调用tee模块对载入内核的代码进行安全性验签,如果验签通过,则运行载入内核的代码;其中,所述安全区域的权限高于所述用户区域。
40.在此基础上,所述用户区域还用于对经过ebpf装载器处理的待载入内核的代码动态进行私钥签名后发送至所述tee模块,以便所述tee模块对私钥签名的待载入内核的代码进行验签后运行。麒麟os在基于linux内核lsm安全机制(安全模块)和ebpf的基础上,提供可供安全软件挂钩子的接口函数限制并避免安全软件直接写lsm类数据结构造成冲突或不安全因素。另外ebpf的装载器在将代码动态载入内核时,所述tee模块将对其安全性验签,保证来源合法、正确。
41.本实施例中,处理器cpu被划分为用户区域和安全区域,得到双架构处理器。同一处理器cpu内部划分安全区域空间,物理上隔离用户区域空间、i/o空间和内存空间。划分方法采用软件定义,根据armv8 trustzone和飞腾pspa架构原理,所述安全区域的权限高于所述用户区域,也即所述安全区域能看到所述用户区域,所述用户区域无法看到所述安全区域,既可实现隔离,又可实现功能强大的高性能监控。且在同一芯片内部更安全,无需更改主板。
42.本实施例中,隔离可软件定义配置,也即所述用户区域与所述安全区域通过基于
pspa规范对相关寄存器配置的方式划分得到。另外,所述用户区域与所述安全区域之间采用共享内存的方式对待传输数据包进行自定义协议握手并传输。所述tee模块与用户区域对应的os内核的通讯机制采用共享内存方式,自定义协议握手并传输,有待传输数据的包头、包尾、握手信号,同时可采用smc(armv8)monitor软调用方式或irq中断方式。用户区域对应的os还可通过通信通道将需要在所述tee模块中运行的程序经过私钥签名后发送至所述tee模块,经所述tee模块验签通过后在所述tee模块的空间运行。
43.本实施例中,所述uefi模块位于所述用户区域,用于通过与所述tee模块的交互对uefi固件及操作系统进行可信度量,以实现可信启动。具体参照图2所示。所述uefi固件符合国际相关标准和架构,并增加了可信启动和固件安全防护功能。具体可信启动过程为:通过调用所述tee模块对所述uefi固件进行可信度量并确定所述uefi固件可信后启动所述uefi固件;利用所述uefi固件遍历主板设备得到相关的硬件信息;通过调用所述tee模块对所述硬件信息进行可信度量,如果可信,则进行可信启动。需要说明的是,本实施例一般通过pbf触发调用所述tee模块对所述uefi固件进行可信度量。在此之前,还需要判断可信度量是否为首次度量,如果是,则根据首次度量结果生成相应的白名单,使得在后续度量过程中将动态计算的哈希值与所述白名单进行匹配;如果匹配成功,则判定度量结果可信;如果匹配失败,则跳过继续启动或者进行报错并阻止启动。也即所述uefi固件遍历主板设备(总线、板卡、桥片等驱动)并将数据代码传送到所述tee模块计算hash,若是第一次度量则默认生成白名单。从第二次起,将动态计算的hash与白名单比对,正确则启动,若有一项不正确,可根据用户预先配置跳过继续启动或报错阻止启动。
44.进一步的,在遍历到的所述硬件信息之后,还可以将遍历到的所述硬件信息中的硬盘分区表数据进行拆分,然后将拆分后的数据分批发送至所述tee模块,以利用所述tee模块对获取到的分批数据进行度量。优选的,可以将硬盘分区表数据拆分成以共享内存大小为单位的数据包,分批传递给所述tee模块度量,实现硬盘分区表引导过程可信。也即将遍历到的所述硬件信息中的硬盘分区表数据进行拆分后得到多个以共享内存大小为单位的数据包。
45.本实施例中,所述tee模块为唯一具有flash物理读写功能的模块。与所述用户区域和所述安全区域协同完成所述uefi固件所在flash芯片的物理读写,flash物理读写的功能置于所述tee模块,系统其它所有模块均不具有flash读写功能,从而实现系统抗固件攻击。同时可防范bootkit及固件病毒,实现了部分可信计算3.0功能。除此之外,所述tee模块一方面在隔离空间完成运算,满足可信的环境;另一方面在隔离空间存储关键的数据、密钥、安全策略及安全管控,是内存攻击和固件攻击保护的重要手段。tee和os是不同的地址空间。所述tee模块是逻辑空间地址,所述uefi固件是物理空间地址。uefi起到逻辑地址向物理地址的映射作用,便于所述tee模块真正在底层物理层面安全配置。映射方式包括驱动程序、uefi的数据结构等。
46.可以理解,所述tee模块在所述安全区域的隔离空间运行,在与其它模块的联络的同时还可以直接实现对内存安全属性和异构计算单元安全配置。本实施例中,安全内存和所述异构计算单元同属于一个模块,也是基于pks体系的内核架构的一部分。所述tee模块还用于根据所述用户区域的配置指令对所述安全内存进行配置。所述异构计算单元也可称为xpu,包括gpu、fpga智能网卡等加速器,用于接收所述tee模块下发的挂载的安全软件,以
对挂载的安全软件进行异构计算处理。也即安全内存根据用户配置接收从os到所述tee模块的配置,由所述tee模块配置安全内存,xpu接收从os的代码可在xpu上完成安全软件的执行。具体参照图2所示。
47.可见,本技术实施例中基于pks体系的内核架构包括双架构处理器中的用户区域和安全区域、uefi模块。其中,用户区域用于调用操作系统安全模块lsm以提供可供安全软件挂钩子的函数对软件挂接进行统一管控,以及为挂接的安全软件的运行资源进行分配;安全区域用于当获取到资源访问请求,调用tee模块对载入内核的代码进行安全性验签,如果验签通过,则运行载入内核的代码;其中,所述安全区域的权限高于所述用户区域;uefi模块用于通过与所述tee模块的交互对uefi固件及操作系统进行可信度量,以实现可信启动。本技术实施例的内核架构通过划分用户区域和安全区域将非安全计算和安全计算分属于不同空间,同时基于tee模块与uefi模块之间的交互能够实时获取计算空间状态以进行保护,避免采用安全外置的双架构导致的安全空间功能少、性能弱。
48.本说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其它实施例的不同之处,各个实施例之间相同或相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
49.最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
…”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
50.以上对本发明所提供的基于pks体系的内核架构进行了详细介绍,本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想;同时,对于本领域的一般技术人员,依据本发明的思想,在具体实施方式及应用范围上均会有改变之处,综上所述,本说明书内容不应理解为对本发明的限制。
技术特征:1.一种基于pks体系的内核架构,其特征在于,包括:双架构处理器中的用户区域,用于调用操作系统安全模块lsm以提供可供安全软件挂钩子的函数对软件挂接进行统一管控,以及为挂接的安全软件的运行资源进行分配;双架构处理器中的安全区域,用于当获取到资源访问请求,调用tee模块对载入内核的代码进行安全性验签,如果验签通过,则运行载入内核的代码;其中,所述安全区域的权限高于所述用户区域;uefi模块,用于通过与所述tee模块的交互对uefi固件及操作系统进行可信度量,以实现可信启动。2.根据权利要求1所述的基于pks体系的内核架构,其特征在于,所述用户区域与所述安全区域为通过基于pspa规范对相关寄存器配置的方式划分得到,且采用共享内存的方式对待传输数据包进行自定义协议握手并传输。3.根据权利要求1所述的基于pks体系的内核架构,其特征在于,所述用户区域,还用于:对经过ebpf装载器处理的待载入内核的代码动态进行私钥签名后发送至所述tee模块,以便所述tee模块对私钥签名的待载入内核的代码进行验签后运行。4.根据权利要求1所述的基于pks体系的内核架构,其特征在于,所述通过与所述tee模块的交互对uefi固件及操作系统进行可信度量,以实现可信启动,包括:通过调用所述tee模块对所述uefi固件进行可信度量并确定所述uefi固件可信后启动所述uefi固件;利用所述uefi固件遍历主板设备得到相关的硬件信息;通过调用所述tee模块对所述硬件信息进行可信度量,如果可信,则进行可信启动。5.根据权利要求4所述的基于pks体系的内核架构,其特征在于,所述通过调用所述tee模块对所述硬件信息进行可信度量之前,还包括:判断可信度量是否为首次度量;如果是,则根据首次度量结果生成相应的白名单,使得在后续度量过程中将动态计算的哈希值与所述白名单进行匹配;如果匹配成功,则判定度量结果可信;如果匹配失败,则跳过继续启动或者进行报错并阻止启动。6.根据权利要求4所述的基于pks体系的内核架构,其特征在于,所述利用所述uefi固件遍历主板设备得到相关的硬件信息之后,还包括:将遍历到的所述硬件信息中的硬盘分区表数据进行拆分;将拆分后的数据分批发送至所述tee模块,以利用所述tee模块对获取到的分批数据进行度量。7.根据权利要求6所述的基于pks体系的内核架构,其特征在于,所述将遍历到的所述硬件信息中的硬盘分区表数据进行拆分,包括:将遍历到的所述硬件信息中的硬盘分区表数据进行拆分,以得到多个以共享内存大小为单位的数据包。8.根据权利要求1至7任一项所述的基于pks体系的内核架构,其特征在于,所述tee模块为唯一具有flash物理读写功能的模块。
9.根据权利要求1至7任一项所述的基于pks体系的内核架构,其特征在于,还包括:异构计算单元,用于接收所述tee模块下发的挂载的安全软件,以对挂载的安全软件进行异构计算处理。10.根据权利要求1至7任一项所述的基于pks体系的内核架构,其特征在于,所述tee模块,还用于根据所述用户区域的配置指令对安全内存进行配置。
技术总结本申请公开了一种基于PKS体系的内核架构,包括:双架构处理器中的用户区域用于调用操作系统安全模块LSM以提供可供安全软件挂钩子的函数对软件挂接进行统一管控,以及为挂接的安全软件的运行资源进行分配;双架构处理器中的安全区域用于当获取到资源访问请求,调用TEE模块对载入内核的代码进行安全性验签,如果验签通过,则运行载入内核的代码;其中,安全区域的权限高于用户区域;UEFI模块用于通过与TEE模块的交互对UEFI固件及操作系统进行可信度量,以实现可信启动。本申请的内核架构能够实时获取计算空间状态以进行保护,避免采用安全外置的双架构导致的安全空间功能少、性能弱。弱。弱。
技术研发人员:黄明 姬一文 成联国 李毅 李锁在 孔金珠 杨诏钧 刘全仲 邱慧淮 郑世普 王昊 程永灵
受保护的技术使用者:麒麟软件有限公司 中国长城科技集团股份有限公司 澜起科技股份有限公司
技术研发日:2022.03.16
技术公布日:2022/7/5