1.本发明属于信息安全
技术领域:
:,具体涉及一种面向零信任环境的终端硬件平台安全性度量方法及产品。
背景技术:
::2.零信任网络(zerotrustnetwork,ztn)是一组不断演进的网络安全范式,它将网络防御的重心从静态的、基于网络的边界转移到了用户、设备和资源上。零信任安全模型中心思想是企业不应自动信任内部或外部的任何人/事/物、不应该根据物理或网络位置对系统授予完全可信的权限,应在授权前对任何试图接入企业系统的人/事/物进行验证、对数据资源的访问只有当资源需要的时候才授予。典型的零信任侧重于数据保护,包括设备、基础设施组件、应用程序、虚拟化、云组件以及资源请求主体,这个主体包含人类用户在内的一切对数据进行请求的实体对象。3.在ztn中,随着硬件设计和供应链的全球化,硬件可信性变得越来越重要。建立设备安全是零信任的基石,直接影响到零信任网络架构的成败。设备信任可分为两个步骤,一是初始信任的建立,其信任程度取决于采购者对生产厂商和供应商的信任程度,这种继承自供应商的信任度是一种社会话信任,需要将这种显示社会的真实信任度注入到设备本身,形成初始信任;二是设备清单管理,其涉及对设备及其属性进行编目管理,形成清单,并基于此对设备进行认证和完整性检查保证设备的安全性。4.目前,现有技术中对终端硬件平台安全性的度量往往放在操作系统应用层中,无法抵御因操作系统漏洞而导致的安全风险;另外,现有度量方法往往只有一次初始度量,无法进行持续度量。因而,如何提高零信任网络中终端硬件平台的安全性,是业界亟需解决的重要课题。技术实现要素:5.本发明正是针对现有技术中零信任网络中终端硬件平台的安全性有待提高的问题,提供一种面向零信任环境的终端硬件平台安全性度量方法及产品,根据当前终端系统所处的不同状态,确定对冷热插拔硬件的度量方式;当终端系统处于操作系统启动之前,基于固件层对终端硬件设备进行度量;当终端系统处于操作系统启动之后,基于服务对终端硬件设备进行度量,在系统内核层对消息队列进行监控,在终端有热插拔硬件设备进行插入后对热插拔硬件设备进行度量。本发明提供的终端硬件设备安全度量方法,可以减少因操作系统漏洞带来的安全风险,从而提高零信任网络中的硬件设备安全。6.为了实现上述目的,本发明采取的技术方案是:面向零信任环境的终端硬件平台安全性度量方法,包括如下步骤:7.s1,状态判断:判断当前终端系统所处状态,根据状态的不同,确定对冷热插拔硬件的度量方式;所述当前终端系统若处于操作系统启动之前,转向步骤s2;否则,转向步骤s3;8.s2,操作系统启动之前:当终端系统处于操作系统启动之前,基于固件层对终端硬件设备进行度量,所述度量至少包括:9.s21:基于smbios机制,对终端硬件设备信息进行提取;10.s22:基于pcie标准,对终端硬件设备信息进行拓展;11.s23:基于固件层对安全服务器和终端进行双端身份认证;12.s24:基于固件层对安全服务器与终端之间的通讯进行安全加密;13.s3,操作系统启动之后:当终端系统处于操作系统启动之后,基于服务对终端硬件设备进行度量,在系统内核层对消息队列进行监控,在终端有热插拔硬件设备进行插入后对热插拔硬件设备进行度量。14.为了实现上述目的,本发明还采取的技术方案是:面向零信任环境的终端硬件平台安全性度量产品,包括计算机程序,所述计算机程序被处理器执行时实现任一种面向零信任环境的终端硬件平台安全性度量方法的步骤,可以减少因操作系统漏洞带来的安全风险,提高零信任网络中的硬件设备安全。15.与现有技术相比:本发明提出了面向零信任环境的终端硬件平台安全性度量方法,具有的技术优势是:在固件层对终端硬件平台进行安全性度量,能够避免因操作系统漏洞而带来的安全风险;操作系统启动后在内核层通过服务的形式对终端硬件平台进行安全性度量,能够在一定程度上避免操作系统用户态的攻击且对终端硬件平台进行持续监控;基于通讯全程的加密算法设计,保证了数据报文的机密性、完整性。附图说明16.图1是本发明提供的面向零信任环境的终端硬件平台安全性度量方法的步骤流程图;17.图2是本发明步骤s2中,操作系统启动前终端硬件设备度量架构图;18.图3是本发明步骤s2中,操作系统启动前终端硬件设备度量流程图;19.图4是本发明步骤s2中,操作系统启动前终端硬件设备度量通讯流程图;20.图5是本发明步骤s3中,操作系统启动后终端硬件设备度量模型图;21.图6是本发明使用的windows服务模型图;22.图7是本发明步骤s3中,操作系统启动后终端硬件度量系统技术结构图。具体实施方式23.下面结合附图和具体实施方式,进一步阐明本发明,应理解下述具体实施方式仅用于说明本发明而不用于限制本发明的范围。24.实施例125.面向零信任环境的终端硬件平台安全性度量方法,如图1所示,该方法包括如下步骤:26.步骤s1:判断当前处于系统启动的哪个阶段,在不同的系统启动阶段,对终端硬件设备的度量方式是不同的。根据状态的不同,确定对冷热插拔硬件的度量方式,所述度量方式是以减少因操作系统漏洞带来的安全风险,提高终端硬件安全性为目标。27.步骤s2:当终端系统处于操作系统启动之前,基于固件层对终端硬件设备进行度量。28.如图2所示,图2为在操作系统启动前对终端硬件设备度量的架构图,由两部分组成:客户端、服务器。客户端的功能以独立模块的形式存放于固件层中,减小了攻击面;而服务器的功能以独立模块的形式存放在操作系统的应用层上,使用起来更加便捷又不失安全性。服务器与客户端之间的信息交互使用通讯模块,使得信息的度量值无需存储在本地,而是通过通讯层直接传递给服务器,服务器端对客户端的请求做负载均衡与高并发处理。系统中各个部分的功能如下:29.客户端由硬件信息收集、通讯、信息处理、度量四个模块组成。硬件信息收集模块负责在系统硬件上电自检后,将硬件的信息收集存储起来;度量模块负责将收集的硬件信息进行摘要计算,生成摘要值;信息处理模块负责将验证错误产生的错误信息进行封装用于保证信息的完整性与机密性,同时负责对服务器发送的信息进行解密和认证;最后的通讯模块负责调用网卡驱动与服务器进行通讯。30.服务器由通讯,主机安全性管理,信息处理,数据库管理四大模块组成,同时还有一个安全数据库存放着所有终端主机的安全硬件信息。通讯模块负责调用网卡驱动与客户端进行通讯;信息处理模块负责将客户端发送的封装信息进行解密与认证,同时负责对验证结果进行封装用于保证信息的完整性与机密性;数据库管理模块负责响应管理员对安全数据的增删改查请求,同时响应主机安全性管理模块对相应主机硬件信息的查询请求;主机安全性管理模块负责对客户端的硬件信息进行核验,同时将验证结果进行展示。31.图3为本发明提供的在操作系统启动前对终端硬件设备度量的流程图,下面详细说明了该系统的工作流程32.(1)客户端系统上电启动,进入bios阶段33.(2)post之后,将物理硬件信息收集存储起来34.(3)使用摘要算法对硬件信息进行摘要计算35.(4)与服务器之间开始建立连接进行身份认证和密钥协商36.(5)将硬件信息进行封装放松给服务器验证37.(6)远程服务器拆封信息,然后对传来的硬件信息进行远程核验38.(7)将核验的结果进行展示,同时对结果进行封装,发送回客户端39.(8)客户端收到后,首先对服务器进行身份认证40.(9)认证通过后,解密信息,如果返回值为true则启动操作系统,如果返回值为false,则退出操作系统。41.也就是说,在操作系统启动前对终端硬件设备度量,至少包括:42.s21:基于smbios机制,对终端硬件设备信息进行提取;43.本实施例采用smbios(systemmanagementbios,系统管理bios)来获取计算机硬件的基本信息。smbios参考规范描述了主板和系统其他硬件供应商如何将其产品的管理信息以标准格式呈现。对于符合smbios规范的计算机,对smbios信息访问的是通过表结构的方法。基于表结构访问smbios的过程是先找到entrypointstructure(eps)表,然后通过eps表的数据找到smbios结构表。通过搜索efi配置表中的smbiosguid(smbios_table_guid),然后使用指向smbios的指针来定位eps表。通过eps表结构中16h以及18h处,得出数据表长度和数据表地址,即可通过地址访问smbios数据结构表。从eps表中的1ch处可得知数据表结构的总数。每个smbios数据结构都描述了一个物理硬件信息,数据结构可以分为格式区域和字符串区域,格式区域就是一些本结构的信息,且每个格式区域的前3个字节一定用来描述type号、长度、句柄。字符串区域是紧随在格式区域后的一个区域。44.s22:基于pcie标准,对终端硬件设备信息进行拓展;45.本实施例采用pcie(peripheralcomponentinterconnectexpress,外围组件互连标准)机制,对终端硬件设备信息进行拓展。一般的终端系统只有一个pciehostbus(pci主机总线),用于完成cpu和pcie设备之间的数据交换。pcierootbridge(pcie根桥)一般也只有一个,他管理一个局部总线,下挂一棵pcie总线树。我们所要访问的pcie设备,就挂在这棵总线树上,他们属于同一总线空间。系统通过busnumber(总线号)、devicenumber(设备号)、functionnumber(功能号)来对总线设备编码,这种编码一般称为bdf码。uefi(unifiedextensiblefirmwareinterface,统一可扩展固件接口)的efi_root_bridge_io_protocol提供了访问peic设备的途径,他为pcie根桥提供了抽象的io功能,由pcie主总线驱动器产生,uefi应用可以用于枚举设备信息。46.s23:基于固件层对安全服务器和终端进行双端身份认证;47.为了能对终端硬件信息进行度量,本发明将终端硬件设备清单存放在服务器中,在与服务器进行通讯之前,为保证机密性,要与服务器协商会话密钥,为防止中间人攻击,双方要进行身份认证。如果身份认证通过,通讯双方则采用会话密钥进行通讯。该部分的伪算法流程如下:48.(1)客户端对服务器进行注册,这里采用的是服务器公钥证书注册方法,在客户端中预置服务器的公钥server_pub;49.(2)客户端提示用户输入口令passwd50.(3)产生一个128位的随机数作为对称的密钥sms4key,并将该密钥作为会话密钥,使用对称算法sms4_encrypt对passwd进行加密51.id=sms4_encrypt(sms4key,passwd)52.(4)产生一个随机数c,同时产生一个消息类型m=”login”,将id,c,s,m进行连接,形成message53.message=id|c|s|m54.(5)使用sm3对connect_msg进行哈希运算,得到h。55.h=sm3(connect_msg)56.(6)将id,c,s,m,hash进行连接,形成connect_msg57.message=id|c|s|m|h58.(7)利用服务器的公钥server_pub对connect_msg进行加密,形成enc_connect_msg,然后发送给服务器。59.enc_connect_msg=sm2_encrypt(server_pub,connect_msg)60.(8)服务器接收到enc_connect_msg后使用私钥对其解密,得到connect_msg。61.connect_msg=sm2_decrypt(server_pri,enc_connect_msg)62.connest_msg=id|c|s|m63.(9)服务器对id进行验证,如果不通过,重新回到第1步进行,如果通过,则服务器使用s会话密钥对通讯内容进行加密。64.s24:基于固件层对安全服务器与终端之间的通讯进行安全加密;65.为了能在固件层实现客户端与服务器之间的通讯,本发明使用uefi提供的网络协议栈进行通讯。66.具体的,通过uefi提供的有关tcp4protocoi进行通讯,具体流程如图4所示,首先生成efi_tcp4_protocol对象,其次,对上一步生成的efi_tcp4_protocol对象进行配置,配置完后才能发送连接请求;第三,连接完成之后,向服务器端传输需要传送的数据;最后,传送完数据之后关闭efi_tcp4_protocol对象。在开始通讯前,首先要进行网络连接的配置,本机端使用dhcp服务进行ip地址获取并在一次通讯中绑定该地址,接着配置传输类型为tcp4,远端的ip地址和端口为服务器开放的地址。最后配置网络连接相关的事件与事件函数,并定义触发事件的优先级,每当发送和接收到服务器端的数据后便会触发事件,对数据进行处理。67.步骤s3:当终端系统处于操作系统启动之后,基于服务对终端硬件设备进行度量,在系统内核层对消息队列进行监控,在终端有热插拔硬件设备进行插入后对热插拔硬件设备进行度量。68.本实施例通过windows提供的服务机制在操作系统启动后对终端硬件设备进行度量。windows服务程序如图5所示提供了服务程序(serviceapplication)、服务控制程序(servicecontrolprogram)和服务控制管理器(serviceconfigurationmanager)三个组件以实现服务的执行、加载和控制功能。服务程序常驻系统内部为系统或者用户提供服务功能,并服务控制管理器反馈其执行状态;服务控制程序用来控制服务应用程序的启动、暂停、停止等功能;服务控制管理器对系统中的服务进行管理,为服务控制程序提供编程接口,实现对服务应用程序的控制功能。69.通过windows操作系统为设备事件预留的回调消息来实现操作系统启动后对终端硬件设备的度量。windows系统为服务程序提供的消息处理机制如图6所示。当有u盘之类的热插拔设备接入主机时,系统检测到有硬件插入,从而触发一个系统消息service_control_deviceevent给系统服务程序,系统服务程序在向系统注册服务时提供的服务程序控制函数收到service_control_deviceevent消息后,调用服务程序自己定义的消息处理函数完成度量操作。70.本实施例通过wmi(windowsmanagementinstrumentation,windows管理诊断)机制在操作系统启动后对终端硬件设备信息进行提取。wmi提供了一个描述操作系统及软硬件构成单元的对象数据库。该数据库内部为一个树状结构,包含着多个数据分支,每个分支被划分在一个命名空间中,为用户提供了一个访问系统软硬件资源的公共接口,使得用户可以通过脚本程序访问获取系统各种资源的描述。71.本发明方法通过springboot技术开发了后台终端硬件设备管理机制,对后台数据库进行管理,同时,根据数据库中的信息对终端硬件设备进行核验。具体技术架构如图7所示,访问层是用户访问系统时需要使用的技术,里面嵌入了jquery、ajax插件,可以为组件输出与动态加载提供支持。业务层是系统进行业务处理使用的相关技术,其中springboot技术集成了各种业务逻辑处理组件,能够在接收到用户发送过来的请求后,及时响应并作出相应的执行动作,并调用完成某项任务的处理方法来达成既定目标。springboot框架提供面向切面编程aop,可以利用自身具有的服务组件来进行管理,基于soa服务体系来提高数据资源的利用率。数据层是负责存储数据工作的地方,能够为外界请求提供原始内容。本发明采用免费的mysql进行数据管理。它可以编写jdbc程序代码来实现数据访问与存取功能。另外该数据库比较小型,可以灵活配置,可以提供不同服务api。为提高数据检索效率,可以采用相关的算法与数据源配置,来达到管理、检索相关数据的目的。72.本发明方法通过vue+el-admin-ui技术对零信任网络中终端硬件安全状态进行展示。73.实施例274.本实施例还提供一种面向零信任环境的终端硬件平台安全性度量产品,包括计算机程序,所述计算机程序可存储在非暂态计算机可读存储介质上,当计算机程序被处理器执行时,计算机能够执行上述实施例1提供的所述方法的步骤。75.通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如rom/ram、包括若干指令用以使得一台计算机设备执行各个实施例或者实施例的某些部分所述的方法。76.需要说明的是,以上内容仅仅说明了本发明的技术思想,不能以此限定本发明的保护范围,对于本
技术领域:
:的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰均落入本发明权利要求书的保护范围之内。当前第1页12当前第1页12