CN114499892B - 固件启动方法、装置、计算机设备及可读存储介质 - Google Patents
固件启动方法、装置、计算机设备及可读存储介质 Download PDFInfo
- Publication number
- CN114499892B CN114499892B CN202210327765.0A CN202210327765A CN114499892B CN 114499892 B CN114499892 B CN 114499892B CN 202210327765 A CN202210327765 A CN 202210327765A CN 114499892 B CN114499892 B CN 114499892B
- Authority
- CN
- China
- Prior art keywords
- mirror image
- uefi
- original
- digest
- blacklist
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3247—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving digital signatures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
- G06F21/572—Secure firmware programming, e.g. of basic input output system [BIOS]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/64—Protecting data integrity, e.g. using checksums, certificates or signatures
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3236—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials using cryptographic hash functions
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/32—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials
- H04L9/3263—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols including means for verifying the identity or authority of a user of the system or for message authentication, e.g. authorization, entity authentication, data integrity or data verification, non-repudiation, key authentication or verification of credentials involving certificates, e.g. public key certificate [PKC] or attribute certificate [AC]; Public key infrastructure [PKI] arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Signal Processing (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computer Hardware Design (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Storage Device Security (AREA)
Abstract
本申请属于计算机技术领域,公开了固件启动方法、装置、计算机设备及可读存储介质,该方法包括,在UEFI安全启动过程中,若判断出待签名验证的UEFI镜像文件中包含镜像签名信息,则通过国密算法对UEFI镜像文件进行第一签名验证;若判断出UEFI镜像文件中不包含镜像签名信息,则通过国密算法对UEFI镜像文件进行第二签名验证;在签名验证成功的情况下,加载UEFI镜像文件,以执行下一阶段的启动。这样,提高了UEFI安全启动过程中的签名验证速度以及UEFI安全启动的速度。
Description
技术领域
本申请涉及计算机技术领域,具体而言,涉及固件启动方法、装置、计算机设备及可读存储介质。
背景技术
随着信息技术的发展,信息安全的形势日益严峻。为避免系统启动时被恶意程序篡改,在统一可扩展固件接口(Unified Extensible Firmware Interface,UEFI)安全启动过程中,通常采用公钥加密算法(Rivest Shamir Adleman,RSA)等算法,对UEFI镜像文件进行签名验证,以加载验证通过的UEFI镜像文件,实现UEFI的安全启动。
但是,采用这种方式,签名验证的速度较慢,进而降低了UEFI的安全启动速度。
发明内容
本申请实施例的目的在于提供一种固件启动方法、装置、计算机设备及可读存储介质,用以在UEFI安全启动过程中对UEFI镜像文件进行签名验证时,提高签名验证速率,进而提高UEFI的安全启动速度。
一方面,提供一种固件启动方法,包括:
在UEFI安全启动过程中,若判断出待签名验证的UEFI镜像文件中包含镜像签名信息,则通过国密算法对UEFI镜像文件进行第一签名验证;若判断出UEFI镜像文件中不包含镜像签名信息,则通过国密算法对UEFI镜像文件进行第二签名验证;
在签名验证成功的情况下,加载UEFI镜像文件,以执行下一阶段的启动。
在上述实现过程中,采用国密算法对UEFI镜像文件进行签名验证,由于国密算法相较于RSA算法来说,具有安全性高,占用空间小的特点,因此,基于国密算法的签名验证以及固件启动,提高了UEFI安全启动的安全性,减少了系统资源的消耗,提高了签名验证速度以及UEFI安全启动的速度。
一种实施方式中,通过国密算法对UEFI镜像文件进行第一签名验证,包括:
若通过国密算法,判断出UEFI镜像文件中的镜像签名信息或原始镜像内容的摘要符合以下任一验证失败条件,则验证失败:
镜像签名信息中的算法标识信息与国密算法的算法标识信息不匹配;
镜像签名信息中的摘要与原始镜像内容的摘要不一致;
黑名单包含原始镜像内容的摘要;
基于黑名单中的黑名单密钥对镜像签名信息中包含的加密后的摘要解密成功且白名单未包含原始镜像内容的摘要;以及,
基于白名单中的白名单密钥对镜像签名信息中包含的加密后的摘要解密失败且白名单未包含原始镜像内容的摘要;
其中,原始镜像内容的摘要是基于国密算法中的SM3算法对原始镜像内容进行哈希运算获得的,加密后的摘要是基于国密算法中的SM2算法解密的,黑名单中包括禁止通过的摘要和黑名单密钥,白名单包括允许通过的摘要和白名单密钥。
在上述实现过程中,基于国密算法中的SM3算法或SM2算法,依次或并行采用多个验证失败条件,对UEFI镜像文件进行签名验证,符合任一验证失败条件即确定验证失败,提高了验证速度和安全性。
一种实施方式中,通过国密算法对UEFI镜像文件进行第一签名验证,包括:
若判断出镜像签名信息中的算法标识信息与国密算法的算法标识信息匹配,镜像签名信息中的摘要与镜像签名信息中的原始镜像内容的摘要一致,且通过国密算法判断出UEFI镜像文件中的镜像签名信息和原始镜像内容的摘要符合以下任意一个验证成功条件,则验证成功:
基于黑名单中的黑名单密钥对镜像签名信息中包含的加密后的摘要解密失败,基于白名单中的白名单密钥对镜像签名信息中包含的加密后的摘要解密成功,且黑名单中未包含原始镜像内容的摘要;
基于黑名单中的黑名单密钥对镜像签名信息中包含的加密后的摘要解密成功,白名单包含原始镜像内容的摘要,且黑名单中未包含原始镜像内容的摘要;以及,
基于白名单中的白名单密钥对镜像签名信息中包含的加密后的摘要解密失败,白名单包含原始镜像内容的摘要,且黑名单中未包含原始镜像内容的摘要。
在上述实现过程中,基于国密算法中的SM3算法或SM2算法,依次或并行采用多个验证成功条件,对UEFI镜像文件进行签名验证,符合任一验证成功条件即确定验证成功,提高了验证速度和安全性。
一种实施方式中,通过国密算法对UEFI镜像文件进行第二签名验证,包括:
若判断出黑名单中未包含UEFI镜像文件中的原始镜像内容的摘要,且白名单包含原始镜像内容的摘要,则验证成功;
若判断出黑名单中包含原始镜像内容的摘要或白名单中未包含原始镜像内容的摘要,则验证失败;
其中,原始镜像内容的摘要是基于国密算法中的SM3算法对原始镜像内容进行哈希运算获得的,黑名单中包括禁止通过的摘要,白名单包括允许通过的摘要。
在上述实现过程中,采用国密算法中的SM3算法,对进行签名的UEFI镜像文件进行哈希验证,提高了验证速度以及安全性。
一方面,提供一种固件启动的装置,包括:
判断单元,用于在UEFI安全启动过程中,若判断出待签名验证的UEFI镜像文件中包含镜像签名信息,则通过国密算法对UEFI镜像文件进行第一签名验证;若判断出UEFI镜像文件中不包含镜像签名信息,则通过国密算法对UEFI镜像文件进行第二签名验证;
加载单元,用于在签名验证成功的情况下,加载UEFI镜像文件,以执行下一阶段的启动。
一种实施方式中,判断单元用于:
若通过国密算法,判断出UEFI镜像文件中的镜像签名信息或原始镜像内容的摘要符合以下任一验证失败条件,则验证失败:
镜像签名信息中的算法标识信息与国密算法的算法标识信息不匹配;
镜像签名信息中的摘要与原始镜像内容的摘要不一致;
黑名单包含原始镜像内容的摘要;
基于黑名单中的黑名单密钥对镜像签名信息中包含的加密后的摘要解密成功且白名单未包含原始镜像内容的摘要;以及,
基于白名单中的白名单密钥对镜像签名信息中包含的加密后的摘要解密失败且白名单未包含原始镜像内容的摘要;
其中,原始镜像内容的摘要是基于国密算法中的SM3算法对原始镜像内容进行哈希运算获得的,加密后的摘要是基于国密算法中的SM2算法解密的,黑名单中包括禁止通过的摘要和黑名单密钥,白名单包括允许通过的摘要和白名单密钥。
一种实施方式中,判断单元用于:
若判断出镜像签名信息中的算法标识信息与国密算法的算法标识信息匹配,镜像签名信息中的摘要与镜像签名信息中的原始镜像内容的摘要一致,且通过国密算法判断出UEFI镜像文件中的镜像签名信息和原始镜像内容的摘要符合以下任意一个验证成功条件,则验证成功:
基于黑名单中的黑名单密钥对镜像签名信息中包含的加密后的摘要解密失败,基于白名单中的白名单密钥对镜像签名信息中包含的加密后的摘要解密成功,且黑名单中未包含原始镜像内容的摘要;
基于黑名单中的黑名单密钥对镜像签名信息中包含的加密后的摘要解密成功,白名单包含原始镜像内容的摘要,且黑名单中未包含原始镜像内容的摘要;以及,
基于白名单中的白名单密钥对镜像签名信息中包含的加密后的摘要解密失败,白名单包含原始镜像内容的摘要,且黑名单中未包含原始镜像内容的摘要。
一种实施方式中,判断单元用于:
若判断出黑名单中未包含UEFI镜像文件中的原始镜像内容的摘要,且白名单包含原始镜像内容的摘要,则验证成功;
若判断出黑名单中包含原始镜像内容的摘要或白名单中未包含原始镜像内容的摘要,则验证失败;
其中,原始镜像内容的摘要是基于国密算法中的SM3算法对原始镜像内容进行哈希运算获得的,黑名单中包括禁止通过的摘要,白名单包括允许通过的摘要。
一方面,提供了一种计算机设备,包括处理器以及存储器,存储器存储有计算机可读取指令,当计算机可读取指令由处理器执行时,运行如上述任一种固件启动的各种可选实现方式中提供的方法的步骤。
一方面,提供了一种可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时运行如上述任一种固件启动的各种可选实现方式中提供的方法的步骤。
一方面,提供了一种计算机程序产品,计算机程序产品在计算机上运行时,使得计算机执行如上述任一种固件启动的各种可选实现方式中提供的方法的步骤。
本申请的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请而了解。本申请的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本申请实施例的技术方案,下面将对本申请实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本申请的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本申请实施例提供的一种固件启动方法的实施流程图;
图2为本申请实施例提供的一种UEFI镜像文件的镜像结构图;
图3为本申请实施例提供的一种镜像签名信息的数据结构图;
图4为本申请实施例提供的一种验证UEFI镜像文件的方法的实施流程图;
图5为本申请实施例提供的一种密钥权限管理架构的示意图;
图6为本申请实施例提供的一种密钥以及证书生成方法的实施流程图;
图7为本申请实施例提供的一种密钥更新方法的实施流程图;
图8为本申请实施例提供的一种安全启动系统的架构示意图;
图9为本申请实施例提供的一种固件启动的装置的结构框图;
图10为本申请实施方式中一种计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
首先对本申请实施例中涉及的部分用语进行说明,以便于本领域技术人员理解。
终端设备:可以是移动终端、固定终端或便携式终端,例如移动手机、站点、单元、设备、多媒体计算机、多媒体平板、互联网节点、通信器、台式计算机、膝上型计算机、笔记本计算机、上网本计算机、平板计算机、个人通信系统设备、个人导航设备、个人数字助理、音频/视频播放器、数码相机/摄像机、定位设备、电视接收器、无线电广播接收器、电子书设备、游戏设备或者其任意组合,包括这些设备的配件和外设或者其任意组合。还可预见到的是,终端设备能够支持任意类型的针对用户的接口(例如可穿戴设备)等。
服务器:可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务以及大数据和人工智能平台等基础云计算服务的云服务器。
镜像文件:与压缩包类似,它将特定的一系列文件按照一定的格式制作成单一的文件,可以被特定的软件识别并可直接刻录到光盘上,以方便用户下载和使用,如,操作系统以及游戏等。在镜像文件中可以包含更多的信息,如,说系统文件、引导文件以及分区表信息等,镜像文件可以包含一个分区甚至是一块硬盘的所有信息。
国密算法:是国家密码局制定标准的一系列算法,包括了对称加密算法,椭圆曲线非对称加密算法(如,国密SM2算法)以及杂凑算法(即哈希算法,如,国密SM3算法)等。
国密SM2:是由国家密码管理局颁布的一种椭圆曲线公钥密码算法,主要用于数字签名、数据加密、密钥交换以及身份认证等。
平台密钥(Platform Key,PK):是UEFI安全启动中的顶级密钥,用于递级验证来保证安全启动的可靠性。UEFI安全启动支持单个PK。PK通常由主板制造商提供,并被设置在主板的可快速擦除、可现场编程的非易失性快擦写存储器(flash)中。
密钥交换密钥(Key Exchange Key,KEK):用于建立操作系统和平台固件之间的信任关系。每个操作系统(即每个需要与平台固件通信的第三方应用程序)登记一个公共key(即KEK)到平台固件中。
白名单(Authorized Signature Database,DB),即授权的签名库,包含已授权的证书和数字签名。
黑名单(Forbidden Signature Database,DBX):即禁止的签名库,包含已知禁止运行的UEFI镜像文件的证书和数字签名。
为了在UEFI安全启动过程中对UEFI镜像文件进行签名验证时,提高签名验证速率,以达到提高UEFI的安全启动速度的目的,本申请实施例提供了一种固件启动方法、装置、计算机设备及可读存储介质。
本申请实施例中,执行主体为计算机设备,可选的,计算机设备可以为服务器,也可以为终端设备,本申请不作具体限定。
参阅图1所示,为本申请实施例提供的一种固件启动方法的实施流程图,该方法的具体实施流程如下:
步骤101:在UEFI安全启动过程中,若判断出待签名验证的UEFI镜像文件中包含镜像签名信息,则通过国密算法对UEFI镜像文件进行第一签名验证;若判断出UEFI镜像文件中不包含镜像签名信息,则通过国密算法对UEFI镜像文件进行第二签名验证。
具体的,UEFI镜像(image)文件是指UEFI二进制文件,如,Grub.EFI以及Rom.efi等。UEFI镜像文件中至少包含原始镜像内容。签名过的UEFI镜像文件中,还包含镜像签名信息(AuthData)。镜像签名信息是使用所有者的密钥和证书对原始镜像内容进行一系列密码运算操作生成的一段数字签名数据,用于在加载UEFI镜像文件前,对UEFI镜像文件进行签名验证,以判断UEFI镜像文件是否合法。镜像签名信息至少包括算法标识信息、摘要以及加密后的摘要。算法标识信息包括哈希算法标识和加密算法标识。
其中,执行步骤101时,可以采用以下步骤:
S1011:在UEFI安全启动过程中,若判断出待加载的UEFI镜像文件的镜像文件类型为非指定类型,且待加载的UEFI镜像文件中包含的格式字段为指定格式,则确定该UEFI镜像文件为待签名验证的UEFI镜像文件。
具体的,在UEFI安全启动过程中,若判断出待加载的UEFI镜像文件符合镜像加载条件,则确定该UEFI镜像文件不需要签名验证,直接加载该UEFI镜像文件;若判断出待加载的UEFI镜像文件符合签名验证条件,则确定该UEFI镜像文件为待签名验证的UEFI镜像文件;若判断出待加载的UEFI镜像文件不符合签名验证条件,则确定该UEFI镜像文件验证失败,且该UEFI镜像文件不需要签名验证,并结束对UEFI镜像文件的签名验证流程。
其中,镜像加载条件为:UEFI镜像文件的镜像文件类型为指定类型。签名验证条件为UEFI镜像文件的镜像文件类型不为指定类型,且UEFI镜像文件中包含的格式字段为指定格式。指定类型可以为UEFI固件卷(Firmware Volume,FV)文件。指定格式可以为PE32格式。
一种实施方式中,若UEFI镜像文件的镜像文件类型(ImageType)为IMAGE_FROM_FV,则确定该UEFI镜像文件的镜像文件类型为指定类型。
由于FV镜像文件是默认允许加载的,因此,不需要对FV镜像文件类型的UEFI镜像文件进行签名验证,可以直接加载该UEFI镜像文件。
一种实施方式中,指定格式为PE32格式,判断待加载的UEFI镜像文件的镜像文件类型是否为指定类型时,可以采用以下步骤:
按照UEFI镜像文件的EFI_IMAGE_NT_HEADER32结构,获取待加载的UEFI镜像文件中的数据头中的Signature段,并根据该Signature段中的字段信息,确定该UEFI镜像文件是否为PE32格式。
实际应用中,镜像加载条件、签名验证条件、指定类型以及指定格式均可以根据实际应用场景进行设置,在此不作限制。
一种实施方式中,判断待加载的UEFI镜像文件是否为待签名验证的UEFI镜像文件时,可以执行以下步骤:
若判断出待加载的UEFI镜像文件的镜像文件类型为指定类型,则确定该UEFI镜像文件不需要签名验证,并加载该UEFI镜像文件。
若判断出待加载的UEFI镜像文件的镜像文件类型不为指定类型,且待加载的UEFI镜像文件中包含的格式字段不为指定格式,则确定该UEFI镜像文件验证失败,不需要签名验证,并结束对UEFI镜像文件的签名验证流程。
若判断出待加载的UEFI镜像文件的镜像文件类型不为指定类型,且待加载的UEFI镜像文件中包含的格式字段为指定格式,则确定该UEFI镜像文件需要签名验证。
这样,就可以根据待加载的UEFI镜像文件的镜像文件类型以及格式字段,判断待加载的UEFI镜像文件是否为待签名验证的UEFI镜像文件,从而可以在后续步骤中,对待签名验证的UEFI镜像文件进行签名验证。
S1012:判断待签名验证的UEFI镜像文件中是否包含镜像签名信息,若是,则执行S1013,否则,执行S1014。
具体的,若UEFI镜像文件中包含镜像签名信息,则说明UEFI镜像文件为被签名的文件,则执行S1013,以基于UEFI镜像文件中包含的镜像签名信息和原始镜像内容,对UEFI镜像文件进行验证。若UEFI镜像文件中未包含镜像签名信息,说明UEFI镜像文件为未被签名的文件,则执行S1014,以基于UEFI镜像文件中包含的原始镜像内容,对UEFI镜像文件进行哈希(hash)验证。
S1013:判断出待签名验证的UEFI镜像文件中包含镜像签名信息,则通过国密算法对UEFI镜像文件进行第一签名验证。
具体的,若通过国密算法,判断出UEFI镜像文件符合验证失败条件,则验证失败。若通过国密算法,判断出UEFI镜像文件符合验证成功条件,则验证失败。
本申请实施例中,预先注册国密算法,以支持采用国密算法进行签名验证以及密钥证书管理等。
参阅图2所示,为本申请实施例提供的一种UEFI镜像文件的镜像结构图。UEFI镜像文件中包含原始镜像内容以及镜像签名信息。
参阅图3所示,为本申请实施例提供的一种镜像签名信息的数据结构图。图3中,镜像签名信息中包括证书版本号、哈希算法标识信息、原始镜像内容、证书集合以及签名者信息集合。签名者信息集合中包括证书版本号、证书序列号、哈希算法标识信息、认证属性、加密算法标识信息以及加密后的摘要。认证属性包括原始镜像内容、签名时间以及摘要。
一种实施方式中,若通过国密算法,判断出UEFI镜像文件中的镜像签名信息或原始镜像内容的摘要符合以下任一验证失败条件,则验证失败:
条件1:镜像签名信息中的算法标识信息与国密算法的算法标识信息不匹配。
一种实施方式中,判断镜像签名信息中的算法标识信息与国密算法的算法标识信息是否匹配时,可以采用以下步骤:
从镜像签名信息中的digestAlgorithms段,提取镜像签名信息的算法标识信息(oid),若镜像签名信息中的算法标识信息与国密算法中相应算法的算法标识信息相同,则确定两者匹配,否则,确定两者不匹配。
例如,镜像签名信息中的加密算法的oid为0x2a 0x81 0x1c 0xcf 0x55 0x010x83 0x11,国密算法中的SM2算法的算法标识信息为0x2a 0x81 0x1c 0xcf 0x55 0x010x83 0x11,则确定镜像签名信息中的算法标识信息与国密算法的算法标识信息匹配。
这是由于若两者不匹配,则说明镜像签名信息不是采用国密算法进行签名的,即镜像签名信息的签名方式不符合签名算法要求,则签名验证失败。
条件2:镜像签名信息中的摘要与原始镜像内容的摘要不一致。
具体的,国密算法包括SM3算法。原始镜像内容的摘要是基于国密算法中的SM3算法对原始镜像内容进行哈希运算获得的具有唯一计算结果的一段32字节的字符串。
其中,原始镜像内容的摘要可以表示为mdigest。镜像签名信息中的摘要可以表示为digest。原始镜像内容是从UEFI镜像文件中的原始数据区中获取。镜像签名信息是从UEFI镜像文件中的签名数据(AuthData)区域获取的。
一种实施方式中,判断镜像签名信息中的摘要与原始镜像内容的摘要是否一致时,可以采用以下步骤:
获取镜像签名信息中包含的摘要,并采用SM3算法对原始镜像内容进行哈希运算,获得原始镜像内容的摘要,以及将镜像签名信息中包含的摘要与原始镜像内容的摘要进行比对,以确定两者是否一致。
这是由于若镜像签名信息中的摘要与原始镜像内容的摘要不一致,则说明原始镜像内容被篡改了,则签名验证失败。
条件3:黑名单包含原始镜像内容的摘要。
具体的,黑名单(如,DBX库)中包括禁止通过的摘要。若黑名单包含原始镜像内容的摘要,则说明UEFI镜像文件为禁止加载的文件,即签名验证失败。
条件4:基于黑名单中的黑名单密钥对镜像签名信息中包含的加密后的摘要解密成功且白名单(如,DB库)未包含原始镜像内容的摘要。
具体的,国密算法中还包括SM2算法以对加密后的摘要进行解密,黑名单中还包括禁止通过的黑名单密钥,白名单包括允许通过的摘要和白名单密钥。
一种实施方式中,判断是否基于黑名单中的黑名单密钥对镜像签名信息中包含的加密后的摘要解密成功时,可以采用以下步骤:
获取黑名单中包含的黑名单密钥,以及镜像签名信息中包含的加密后的摘要,并采用SM2算法,基于黑名单密钥对加密后的摘要进行解密,以及根据解密结果,判断是否解密成功。
这是由于若基于黑名单中的黑名单密钥解密成功,则说明UEFI镜像文件的签名证书是被列入了黑名单,则需要进一步判断白名单中是否包含原始镜像内容的摘要,若白名单未包含原始镜像内容的摘要,则说明原始镜像内容没有被允许加载。若UEFI镜像文件的签名证书被列入了黑名单,白名单中也没有授权原始镜像内容的摘要,则确定UEFI镜像文件是不合法的,即签名验证失败。
条件5:基于白名单中的白名单密钥对镜像签名信息中包含的加密后的摘要解密失败且白名单未包含原始镜像内容的摘要。
一种实施方式中,判断是否基于白名单中的白名单密钥对镜像签名信息中包含的加密后的摘要解密失败时,可以采用以下步骤:
获取白名单中的白名单密钥,以及镜像签名信息中包含的加密后的摘要,并采用SM2算法,基于白名单密钥对加密后的摘要进行解密,以及根据解密结果,确定是否解密成功。
这是由于若基于白名单中的白名单密钥解密失败,则说明白名单没有授权UEFI镜像文件的签名证书,若白名单中既没有授权UEFI镜像文件的签名证书,也没有授权原始镜像内容的摘要,则确定UEFI镜像文件是不合法的,即签名验证失败。
一种实施方式中,若判断出镜像签名信息中的算法标识信息与国密算法的算法标识信息匹配,镜像签名信息中的摘要与镜像签名信息中的原始镜像内容的摘要一致,且通过国密算法判断出UEFI镜像文件中的镜像签名信息和原始镜像内容的摘要符合以下任意一个验证成功条件,则验证成功:
条件1:基于黑名单中的黑名单密钥对镜像签名信息中包含的加密后的摘要解密失败,基于白名单中的白名单密钥对镜像签名信息中包含的加密后的摘要解密成功,且黑名单中未包含原始镜像内容的摘要。
也就是说,在镜像签名信息是采用国密算法进行签名的,原始镜像内容没有被篡改的前提下,若UEFI镜像文件的签名证书被列入了白名单,且UEFI镜像文件的签名证书和原始镜像内容的摘要均没有被列入黑名单,则UEFI镜像文件是合法的,即签名验证成功。
条件2:基于黑名单中的黑名单密钥对镜像签名信息中包含的加密后的摘要解密成功,白名单包含原始镜像内容的摘要,且黑名单中未包含原始镜像内容的摘要。
也就是说,在镜像签名信息是采用国密算法进行签名的,原始镜像内容没有被篡改的前提下,尽管UEFI镜像文件的签名证书被列入了黑名单,但是,若原始镜像内容的摘要被列入了白名单,且原始镜像内容的摘要均没有被列入黑名单,则UEFI镜像文件也还是合法的,即签名验证成功。
条件3:基于白名单中的白名单密钥对镜像签名信息中包含的加密后的摘要解密失败,白名单包含原始镜像内容的摘要,且黑名单中未包含原始镜像内容的摘要。
也就是说,在镜像签名信息是采用国密算法进行签名的,原始镜像内容没有被篡改的前提下,尽管UEFI镜像文件的签名证书没有被列入白名单,但是,若原始镜像内容的摘要被列入了白名单,且原始镜像内容的摘要均没有被列入黑名单,则UEFI镜像文件也还是合法的,即签名验证成功。
S1014:判断出UEFI镜像文件中不包含镜像签名信息,则通过国密算法对UEFI镜像文件进行第二签名验证。
具体的,若判断出UEFI镜像文件中不包含镜像签名信息,则采用SM3算法,对UEFI镜像文件中的原始镜像内容进行哈希运算,并通过哈希运算结果,对UEFI镜像文件进行哈希验证。
一种实施方式中,对原始镜像内容的摘要进行哈希验证时,可以采用以下方式:
若判断出黑名单中未包含UEFI镜像文件中的原始镜像内容的摘要,且白名单包含原始镜像内容的摘要,则验证成功。
若判断出黑名单中包含原始镜像内容的摘要或白名单中未包含原始镜像内容的摘要,则验证失败。
也就是说,若原始镜像内容的摘要被列入了白名单,且没有被列入黑名单,则哈希验证成功,否则,哈希验证失败。
其中,对待签名的原始镜像内容进行签名时,可以采用以下步骤:
从密钥库中的DB库中,获取用户密钥以及密钥证书,并采用国密算法,基于用户密钥以及密钥证书,对待签名的原始镜像内容进行签名,获得镜像签名信息,并基于原始镜像内容和镜像签名信息,组成UEFI镜像文件。
实际应用中,对原始镜像内容进行签名的设备可能为计算机设备,也可能为其它设备,在此不作限制。
一种实施方式中,镜像签名信息位于图2所示的UEFI镜像文件的尾部区域,在进行签名验证时,依次对镜像签名信息中的各个字段进行验证。
一种实施方式中,从开源社区获得Linux sbsign的源码,并对Linux sbsign的源码进行修改,以适配Openssl3.0及以上版本库以及增加过国密算法SM2和SM3的支持。在对原始镜像内容进行签名时,基于Linux sbsign中的Openssl3.0及以上版本的Openssl库,执行用于签名的Openssl命令,对原始镜像内容进行签名。
例如,镜像签名命令为:sbsign--key db.key--cert db.crt--output BOOTX64_signed.EFI BOOTX64.EFI。
其中,db.key为用户密钥,db.crt为注册到DB库的PEM编码格式的密钥证书。BOOTX64.EFI为待签名的原始镜像内容。
需要说明的是,签名后的UEFI镜像文件符合PKCS7体系定义的Signed-data内容类型。PKCS7定义了一种通用的消息语法,包括数字签名和加密等用于增强的加密机制。PKCS7与安全功能(PEM)兼容,所以不需其他密码操作,这样,就可以将加密的消息转换成PEM消息。PKCS7 Signed-data内容类型 ----->数字签名,由任意类型的内容和该内容的签名数据组成。
实际应用中,也可以采用其它签名工具,基于国密算法对待签名的原始镜像内容进行签名,在此不作限制。
步骤102:在签名验证成功的情况下,加载UEFI镜像文件,以执行下一阶段的启动。
这样,就可以通过SM2算法和SM3算法,对UEFI镜像文件进行签名验证,以判断UEFI镜像文件的合法性。
参阅图4所示,为本申请实施例提供的一种验证UEFI镜像文件的方法的实施流程图。一种实施方式中,当一个UEFI镜像文件被加载时,系统会进入CoreLoadImage()函数,该函数调用DxeImageVerificationHandler()函数,按照图4所示的流程图,对UEFI镜像文件进行签名验证,只有验签成功才能加载该镜像,否则,阻止镜像的加载。该方法的具体实施流程如下:
步骤401:判断待加载的UEFI镜像文件的镜像文件类型是否为指定类型,若是,则执行步骤409,否则,执行402。
步骤402:判断待加载的UEFI镜像文件中包含的格式字段是否为指定格式,若是,则执行步骤403,否则,执行步骤410。
步骤403:判断待签名验证的UEFI镜像文件中是否包含镜像签名信息,若是,则执行步骤404,否则,执行步骤411。
步骤404:判断镜像签名信息中的算法标识信息与国密算法的算法标识信息是否匹配,若是,则执行步骤405,否则,执行步骤410。
步骤405:判断镜像签名信息中的摘要与原始镜像内容的摘要是否一致,若是,则执行步骤406,否则,执行步骤410。
步骤406:判断是否基于黑名单中的黑名单密钥对镜像签名信息中包含的加密后的摘要解密失败,若是,则执行步骤407,否则,执行步骤411。
步骤407:判断是否基于白名单中的白名单密钥对镜像签名信息中包含的加密后的摘要解密成功,若是,则执行步骤408,否则,执行步骤411。
步骤408:判断黑名单中是否包含原始镜像内容的摘要,若是,则执行步骤409,否则,执行步骤410。
步骤409:验证成功。
步骤410:验证失败。
步骤411:判断黑名单中是否未包含原始镜像内容的摘要,若是,则执行步骤412,否则,执行步骤410。
步骤412:判断白名单中是否包含原始镜像内容的摘要,若是,则执行步骤409,否则,执行步骤410。
具体的,执行步骤401-步骤412时,具体步骤参见上述步骤101-步骤102,在此不做赘述。
本申请实施例中,仅以步骤401-步骤412的执行顺序进行签名验证为例进行说明,实际应用中,签名验证时的各判断步骤,可以根据实际应用场景进行调整,在此不做限制。
一种实施方式中,通过密钥库存储各密钥。密钥库包括PK库、KEK库、DB库以及DBX库。PK库中包含PK。KEK库中包含KEK。DB库中包含授权的密钥以及证书。DBX库包括禁止的密钥以及证书。所有密钥均以数据的形式存放在flash内。参阅图5所示,为本申请实施例提供的一种密钥权限管理架构的示意图。PK是拥有最高权限的密钥。KEK的更新或删除需要经过PK的验证。db和dbx的更新则需要通过KEK的验证。
参阅图6所示,为本申请实施例提供的一种密钥以及证书生成方法的实施流程图,该方法的具体实施流程如下:
步骤601:采用SM2算法生成用于签名的密钥对。
具体的,密钥对可以包括以下至少一种:PK.key、KEK.key、db.key。
一种实施方式中,采用Openssl命令生成密钥对。生成PK.key的命令为:openssl3ecparam -genkey -name SM2 -out PK.key。生成KEK.key的命令为:openssl3 ecparam -genkey -name SM2 -out KEK.key。生成db.key的命令为:openssl3 ecparam -genkey -name SM2 -out db.key。
步骤602:采用SM2算法和SM3算法,基于密钥对生成密钥证书。
具体的,密钥证书包括以下至少一种:PK证书、KEK证书以及db证书。
一种实施方式中,PK证书生成的命令为:openssl req -new x509 -key PK.key -sm3 -days 3650 -subj "/CN=my Platform Key/" -out PK.crt -sigopt "distid:31323334353637383132333435363738"。
其中,PK.crt为基于SM2算法和SM3算法,对PK.key进行签名生成的x509格式证书。
一种实施方式中,KEK证书生成的命令为:openssl req -new x509 -key KEK.key-sm3 -days 3650 -subj "/CN=my KEK Key/" -out KEK.crt -sigopt "distid:31323334353637383132333435363738"。
其中,KEK.crt为基于SM2算法和SM3算法,对KEK.key进行签名生成的x509格式证书。
一种实施方式中,db证书生成的命令为:openssl req -new x509 -key db.key -sm3 -days 3650 -subj "/CN=my db Key/" -out db.crt -sigopt "distid:31323334353637383132333435363738"。
其中,db.crt为基于SM2算法和SM3算法,对db.key进行签名生成的x509格式证书。
进一步的,还可以将密钥证书进行格式转换,并对转换后的密钥证书进行签名。
其中,将密钥证书进行格式转换时,可以采用以下步骤:
随机生成用户标识,并基于用户标识将密钥证书进行格式转换,获得转换后的密钥证书。
一种实施方式中,生成用户标识时,可以采用以下命令:uuidgen --random >GUID.txt。
对PK证书进行格式转换时,可以采用以下命令:./cert-to-efi-sig-list -g "$(< GUID.txt)" PK.crt PK.esl。
对KEK证书进行格式转换时,可以采用以下命令:./cert-to-efi-sig-list -g "$(< GUID.txt)" KEK.crt KEK.esl。
对db证书进行格式转换时,可以采用以下命令:./cert-to-efi-sig-list -g "$(< GUID.txt)" db.crt db.esl。
其中,对转换后的密钥证书进行签名时,可以采用以下方式:
基于PK.key和PK.crt对格式转换后的PK证书即PK.esl进行签名,获得PK.auth。
基于PK.key和PK.crt对格式转换后的KEK证书即KEK.esl进行签名,获得KEK.auth。
基于KEK.key和KEK.crt,对格式转换后的db证书即db.esl进行签名,获得db.auth。
一种实施方式中,对PK.esl、KEK.esl以及db.esl进行签名的命令依次可以为:
./sign-efi-sig-list -g "$(<GUID.txt)" -k PK.key -c PK.crt PK PK.eslPK.auth。
./sign-efi-sig-list -g "$(<GUID.txt)" -k PK.key -c PK.crt KEK KEK.eslKEK.auth;
./sign-efi-sig-list -g "$(<GUID.txt)" -k KEK.key -c KEK.crt db db.esldb.auth。
可选的,在对证书进行格式转换以及签名时,可以采用efitool工具包下cert-to-efi-sig-list应用。
进一步的,在生成初始的各类(即PK.key、KEK以及db)密钥对、密钥证书以及证书签名之后,还可以对任一类密钥对、密钥证书以及证书签名进行更新,进而对密钥库中的密钥进行更新。
参阅图7所示,为本申请实施例提供的一种密钥更新方法的实施流程图,该方法的具体实施流程如下:
步骤701:判断目标密钥数据的证书时间是否早于目标数据库的更新时间,若是,则执行步骤705,否则,执行步骤702。
其中,目标密钥数据可以包括目标密钥对应的密钥对、密钥证书以及证书签名。目标数据库可以为PK库、KEK库或DB库。
步骤702:判断目标密钥数据的签名算法是否为国密算法,若是,则执行步骤703,否则,执行步骤705。
具体的,若目标密钥数据的签名算法的算法标识信息与国密算法的算法标识信息一致,则确定目标密钥数据的签名算法为国密算法。
其中,每一算法均有唯一的算法标识信息。
步骤703:基于密钥库中的密钥信息,对待导入的目标密钥数据进行签名验证。
具体的,从密钥库中获取用于签名目标密钥数据中的中的密钥信息,并基于该密钥信息,对目标密钥数据进行签名验证。
一种实施方式中,按照与上述步骤602中签名的逆运算,选取用于签名验证的密钥信息,并基于选取的密钥信息,对目标密钥数据进行签名验证。
例如,KEK.auth是基于PK.key和PK.crt生成的,则采用PK.key和PK.crt,对KEK.auth进行签名验证。
步骤704:若验证成功,则基于目标密钥数据更新密钥库。
具体的,密钥库更新操作包括:数据导入、数据更新以及数据删除等。
其中,可以基于目标密钥数据中的密钥对、密钥证书以及证书签名中的至少一种,对密钥库进行更新。
一种实施方式中,将目标密钥数据中的密钥对和密钥证书,导入密钥库。
步骤705:输出密钥更新错误提示。
一种实施方式中,采用开源社区提供的KeyTool.efi工具来进行密钥管理,由于KeyTool.efi工具不支持国密算法,因此,预先对KeyTool.efi工具的源码进行修改,即注册国密算法,以支持基于国密算法的密钥以及证书的管理操作。
参阅图8所示,为一种安全启动系统的架构示意图,包括ARM安全固件(ARMTrusted Firmware,ATF)、UEFI以及Linux内核(Linux Kernel)。ATF包括:BL1、BL2以及BL31。在BL1、BL2以及BL31依次启动后,UEFI采用上述实施例对UEFI镜像签名文件进行签名验证以实现UEFI安全启动,以执行下一步的Linux Kernel启动。
SM2算法是我国自主设计的非对称公钥密码算法,SM2证书普遍采用256位密钥长度,其加密强度等同于3072位RSA证书,安全性远高于业界普遍采用的加密算法,再者,SM2算法的密码一般使用192-256位,远比传统技术中采用的加密算法的密码更少,使得SM2算法的证书字节数更少,在高并发的情况下消耗资源更少,速度更快。本申请实施例中,预先注册国密算法,以在签名验证以及密钥证书管理等环节中可以支持国密算法,并在UEFI安全启动过程中,通过国密算法进行签名验证,以加载验证通过的UEFI镜像文件,并阻止验证失败的UEFI镜像文件,提高了签名验证的速度以及安全性,进而提高了UEFI安全启动的速度以及安全性。
基于同一发明构思,本申请实施例中还提供了一种固件启动的装置,由于上述装置及设备解决问题的原理与一种固件启动方法相似,因此,上述装置的实施可以参见方法的实施,重复之处不再赘述。
如图9所示,其为本申请实施例提供的一种固件启动的装置的结构示意图,包括:
判断单元901,用于在UEFI安全启动过程中,若判断出待签名验证的UEFI镜像文件中包含镜像签名信息,则通过国密算法对UEFI镜像文件进行第一签名验证;若判断出UEFI镜像文件中不包含镜像签名信息,则通过国密算法对UEFI镜像文件进行第二签名验证;
加载单元902,用于在签名验证成功的情况下,加载UEFI镜像文件,以执行下一阶段的启动。
一种实施方式中,判断单元901用于:
若通过国密算法,判断出UEFI镜像文件中的镜像签名信息或原始镜像内容的摘要符合以下任一验证失败条件,则验证失败:
镜像签名信息中的算法标识信息与国密算法的算法标识信息不匹配;
镜像签名信息中的摘要与原始镜像内容的摘要不一致;
黑名单包含原始镜像内容的摘要;
基于黑名单中的黑名单密钥对镜像签名信息中包含的加密后的摘要解密成功且白名单未包含原始镜像内容的摘要;以及,
基于白名单中的白名单密钥对镜像签名信息中包含的加密后的摘要解密失败且白名单未包含原始镜像内容的摘要;
其中,原始镜像内容的摘要是基于国密算法中的SM3对原始镜像内容进行哈希运算获得的,加密后的摘要是基于国密算法中的SM2算法解密的,黑名单中包括禁止通过的摘要和黑名单密钥,白名单包括允许通过的摘要和白名单密钥。
一种实施方式中,判断单元901用于:
若判断出镜像签名信息中的算法标识信息与国密算法的算法标识信息匹配,镜像签名信息中的摘要与镜像签名信息中的原始镜像内容的摘要一致,且通过国密算法判断出UEFI镜像文件中的镜像签名信息和原始镜像内容的摘要符合以下任意一个验证成功条件,则验证成功:
基于黑名单中的黑名单密钥对镜像签名信息中包含的加密后的摘要解密失败,基于白名单中的白名单密钥对镜像签名信息中包含的加密后的摘要解密成功,且黑名单中未包含原始镜像内容的摘要;
基于黑名单中的黑名单密钥对镜像签名信息中包含的加密后的摘要解密成功,白名单包含原始镜像内容的摘要,且黑名单中未包含原始镜像内容的摘要;以及,
基于白名单中的白名单密钥对镜像签名信息中包含的加密后的摘要解密失败,白名单包含原始镜像内容的摘要,且黑名单中未包含原始镜像内容的摘要。
一种实施方式中,判断单元901用于:
若判断出黑名单中未包含UEFI镜像文件中的原始镜像内容的摘要,且白名单包含原始镜像内容的摘要,则验证成功;
若判断出黑名单中包含原始镜像内容的摘要或白名单中未包含原始镜像内容的摘要,则验证失败;
其中,原始镜像内容的摘要是基于国密算法中的SM3对原始镜像内容进行哈希运算获得的,黑名单中包括禁止通过的摘要,白名单包括允许通过的摘要。
图10示出了一种计算机设备1000的结构示意图。参阅图10所示,计算机设备1000包括硬件部分和软件部分。硬件部分包括处理器1010以及存储器1020。软件部分包括:操作系统1030、UEFI1040以及应用软件1050。
处理器1010是计算机设备1000的控制中心,利用各种接口和线路连接各个部件,通过运行或执行存储在存储器1020内的软件程序和/或数据,执行计算机设备1000的各种功能,从而对计算机设备1000进行整体监控。
本申请实施例中,UEFI1040调用存储器1020中存储的计算机程序时执行如图1所示的实施例提供的固件启动方法。
可选的,处理器1010可包括一个或多个处理单元;优选的,处理器1010可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器1010中。在一些实施例中,处理器、存储器、可以在单一芯片上实现,在一些实施例中,它们也可以在独立的芯片上分别实现。
存储器1020可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、各种应用等;存储数据区可存储根据计算机设备1000的使用所创建的数据等。此外,存储器1020可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件等。
操作系统1030是管理计算机硬件和软件资源的系统软件,也是计算机设备的内核和基石。操作系统需要处理如管理与配置内存、决定系统资源供需的优先次序、控制输入与输出设备、操作网络与管理文件系统等基本事务。为了方便用户操作,大多数操作系统会提供一个让用户与系统交互的操作界面。
UEFI1040的作用是在通电引导阶段运行硬件初始化,以及为操作系统和程序提供运行时服务。除了使硬件初始化之外,UEFI1040通常还具有显示处理器温度以及调整温度保护策略等功能。
应用软件1050,又称应用程序,是计算机软件的主要分类之一,是指为针对用户的某种特殊应用目的所撰写的软件。例如,应用软件可以是用于实现功率控制、温度管理等目的程序。
本领域技术人员可以理解,图10仅仅是计算机设备的举例,并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件。
本申请实施例中,一种可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时,使得通信设备可以执行上述实施例中的各个步骤。
本申请实施例中,提供了一种计算机程序产品,计算机程序产品在计算机上运行时,使得计算机执行上述实施例中的各个步骤。
为了描述的方便,以上各部分按照功能划分为各模块(或单元)分别描述。当然,在实施本申请时可以把各模块(或单元)的功能在同一个或多个软件或硬件中实现。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
尽管已描述了本申请的优选实施例,但本领域内的技术人员一旦得知了基本创造性概念,则可对这些实施例做出另外的变更和修改。所以,所附权利要求意欲解释为包括优选实施例以及落入本申请范围的所有变更和修改。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的精神和范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (6)
1.一种固件启动方法的方法,其特征在于,包括:
在统一可扩展固件接口UEFI安全启动过程中,若判断出待签名验证的UEFI镜像文件中包含镜像签名信息,则通过预先注册的国密算法对所述UEFI镜像文件进行第一签名验证;若判断出所述UEFI镜像文件中不包含镜像签名信息,则通过所述国密算法对所述UEFI镜像文件进行第二签名验证;
在签名验证成功的情况下,加载所述UEFI镜像文件,以执行下一阶段的启动;
其中,所述通过预先注册的国密算法对所述UEFI镜像文件进行第一签名验证,包括:若通过所述国密算法,判断出所述UEFI镜像文件中的镜像签名信息或原始镜像内容的摘要符合以下任一验证失败条件,则验证失败: 所述镜像签名信息中的算法标识信息与所述国密算法的算法标识信息不匹配;所述镜像签名信息中的摘要与所述原始镜像内容的摘要不一致;黑名单包含所述原始镜像内容的摘要;基于所述黑名单中的黑名单密钥对所述镜像签名信息中包含的加密后的摘要解密成功且白名单未包含所述原始镜像内容的摘要;以及,基于所述白名单中的白名单密钥对所述镜像签名信息中包含的加密后的摘要解密失败且所述白名单未包含所述原始镜像内容的摘要;
所述通过所述国密算法对所述UEFI镜像文件进行第二签名验证,包括:若判断出黑名单中未包含所述UEFI镜像文件中的原始镜像内容的摘要,且白名单包含所述原始镜像内容的摘要,则验证成功;若判断出所述黑名单中包含所述原始镜像内容的摘要或所述白名单中未包含所述原始镜像内容的摘要,则验证失败;
其中,所述原始镜像内容的摘要是基于所述国密算法中的国密哈希算法SM3对所述原始镜像内容进行哈希运算获得的,所述加密后的摘要是基于所述国密算法中的国密加密算法SM2算法解密的,所述黑名单中包括禁止通过的摘要和黑名单密钥,所述白名单包括允许通过的摘要和白名单密钥。
2.如权利要求1所述的方法,其特征在于,所述通过预先注册的国密算法对所述UEFI镜像文件进行第一签名验证,包括:
若判断出所述镜像签名信息中的算法标识信息与所述国密算法的算法标识信息匹配,所述镜像签名信息中的摘要与所述镜像签名信息中的原始镜像内容的摘要一致,且通过所述国密算法判断出所述UEFI镜像文件中的镜像签名信息和原始镜像内容的摘要符合以下任意一个验证成功条件,则验证成功:
基于黑名单中的黑名单密钥对所述镜像签名信息中包含的加密后的摘要解密失败,基于白名单中的白名单密钥对所述镜像签名信息中包含的加密后的摘要解密成功,且所述黑名单中未包含所述原始镜像内容的摘要;
基于所述黑名单中的黑名单密钥对所述镜像签名信息中包含的加密后的摘要解密成功,所述白名单包含所述原始镜像内容的摘要,且所述黑名单中未包含所述原始镜像内容的摘要;以及,
基于所述白名单中的白名单密钥对所述镜像签名信息中包含的加密后的摘要解密失败,所述白名单包含所述原始镜像内容的摘要,且所述黑名单中未包含所述原始镜像内容的摘要。
3.一种固件启动的装置,其特征在于,包括:
判断单元,用于在统一可扩展固件接口UEFI安全启动过程中,若判断出待签名验证的UEFI镜像文件中包含镜像签名信息,则通过预先注册的国密算法对所述UEFI镜像文件进行第一签名验证;若判断出所述UEFI镜像文件中不包含镜像签名信息,则通过所述国密算法对所述UEFI镜像文件进行第二签名验证;
加载单元,用于在签名验证成功的情况下,加载所述UEFI镜像文件,以执行下一阶段的启动;
所述判断单元用于执行所述第一签名验证的过程包括:若通过所述国密算法,判断出所述UEFI镜像文件中的镜像签名信息或原始镜像内容的摘要符合以下任一验证失败条件,则验证失败: 所述镜像签名信息中的算法标识信息与所述国密算法的算法标识信息不匹配;所述镜像签名信息中的摘要与所述原始镜像内容的摘要不一致;黑名单包含所述原始镜像内容的摘要;基于所述黑名单中的黑名单密钥对所述镜像签名信息中包含的加密后的摘要解密成功且白名单未包含所述原始镜像内容的摘要;
所述判断单元还用于执行所述第二签名验证的过程包括:基于所述白名单中的白名单密钥对所述镜像签名信息中包含的加密后的摘要解密失败且所述白名单未包含所述原始镜像内容的摘要;以及,若判断出黑名单中未包含所述UEFI镜像文件中的原始镜像内容的摘要,且白名单包含所述原始镜像内容的摘要,则验证成功;若判断出所述黑名单中包含所述原始镜像内容的摘要或所述白名单中未包含所述原始镜像内容的摘要,则验证失败;
其中,所述原始镜像内容的摘要是基于所述国密算法中的国密哈希算法SM3对所述原始镜像内容进行哈希运算获得的,所述加密后的摘要是基于所述国密算法中的国密加密算法SM2算法解密的,所述黑名单中包括禁止通过的摘要和黑名单密钥,所述白名单包括允许通过的摘要和白名单密钥。
4.如权利要求3所述的装置,其特征在于,所述判断单元用于:若判断出所述镜像签名信息中的算法标识信息与所述国密算法的算法标识信息匹配,所述镜像签名信息中的摘要与所述镜像签名信息中的原始镜像内容的摘要一致,且通过所述国密算法判断出所述UEFI镜像文件中的镜像签名信息和原始镜像内容的摘要符合以下任意一个验证成功条件,则验证成功:
基于黑名单中的黑名单密钥对所述镜像签名信息中包含的加密后的摘要解密失败,基于白名单中的白名单密钥对所述镜像签名信息中包含的加密后的摘要解密成功,且所述黑名单中未包含所述原始镜像内容的摘要;
基于所述黑名单中的黑名单密钥对所述镜像签名信息中包含的加密后的摘要解密成功,所述白名单包含所述原始镜像内容的摘要,且所述黑名单中未包含所述原始镜像内容的摘要;以及,
基于所述白名单中的白名单密钥对所述镜像签名信息中包含的加密后的摘要解密失败,所述白名单包含所述原始镜像内容的摘要,且所述黑名单中未包含所述原始镜像内容的摘要。
5.一种计算机设备,其特征在于,包括处理器以及存储器,所述存储器存储有计算机可读取指令,当所述计算机可读取指令由所述处理器执行时,运行如权利要求1或2所述方法。
6.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时运行如权利要求1或2所述方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210327765.0A CN114499892B (zh) | 2022-03-31 | 2022-03-31 | 固件启动方法、装置、计算机设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210327765.0A CN114499892B (zh) | 2022-03-31 | 2022-03-31 | 固件启动方法、装置、计算机设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN114499892A CN114499892A (zh) | 2022-05-13 |
CN114499892B true CN114499892B (zh) | 2022-07-19 |
Family
ID=81489060
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210327765.0A Active CN114499892B (zh) | 2022-03-31 | 2022-03-31 | 固件启动方法、装置、计算机设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN114499892B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114896621B (zh) * | 2022-07-15 | 2022-10-14 | 深圳竹云科技股份有限公司 | 应用服务的获取方法、加密方法、装置、计算机设备 |
CN116186709B (zh) * | 2022-12-27 | 2024-02-02 | 中科驭数(北京)科技有限公司 | 基于虚拟化VirtIO技术卸载UEFI安全启动的方法、装置及介质 |
Family Cites Families (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106407814A (zh) * | 2016-08-31 | 2017-02-15 | 福建联迪商用设备有限公司 | 烧片镜像签名认证方法与终端以及烧录方法与系统 |
CN107256168A (zh) * | 2017-06-12 | 2017-10-17 | 郑州云海信息技术有限公司 | 一种uefi bios安全升级机制的设计方法 |
CN110018841A (zh) * | 2019-04-15 | 2019-07-16 | 苏州浪潮智能科技有限公司 | 一种uefi bios升级方法、系统及相关装置 |
CN111538984B (zh) * | 2020-04-17 | 2023-04-25 | 南京东科优信网络安全技术研究院有限公司 | 一种可信白名单快速匹配装置与方法 |
CN111597558B (zh) * | 2020-04-22 | 2022-09-23 | 国电南瑞科技股份有限公司 | 一种基于文件多镜像的嵌入式操作系统可信引导方法及系统 |
CN113239363A (zh) * | 2021-06-01 | 2021-08-10 | 长江存储科技有限责任公司 | 固件更新方法、装置、设备、可读存储介质及存储器系统 |
CN113438087B (zh) * | 2021-06-24 | 2022-11-01 | 深圳市风云实业有限公司 | 一种uboot下基于国密算法的系统镜像签名校验方法 |
-
2022
- 2022-03-31 CN CN202210327765.0A patent/CN114499892B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN114499892A (zh) | 2022-05-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11899783B2 (en) | System level function based access control for smart contract execution on a blockchain | |
CN109313690B (zh) | 自包含的加密引导策略验证 | |
WO2020042778A1 (zh) | 固件升级方法及装置 | |
TWI598814B (zh) | 用於管理及診斷配備有統一可延伸韌體介面(uefi)相容韌體的計算裝置之系統與方法 | |
US8489873B2 (en) | Migration apparatus, method and system for transferring data protected within a first terminal device to a second terminal device | |
US7382883B2 (en) | Deriving a symmetric key from an asymmetric key for file encryption or decryption | |
US7434263B2 (en) | System and method for secure storage data using a key | |
US7415620B2 (en) | System and method for authenticating an operating system to a central processing unit, providing the CPU/OS with secure storage, and authenticating the CPU/OS to a third party | |
JP4501349B2 (ja) | システムモジュール実行装置 | |
CN114499892B (zh) | 固件启动方法、装置、计算机设备及可读存储介质 | |
US20120166781A1 (en) | Single security model in booting a computing device | |
JP2016158270A (ja) | データセンタへのプラットフォームの内包検証 | |
CN112671720B (zh) | 一种云平台资源访问控制的令牌构造方法、装置及设备 | |
CN103858130A (zh) | 管理权限方法、装置及终端 | |
US20220224546A1 (en) | Software integrity protection method and apparatus, and software integrity verification method and apparatus | |
US20130019110A1 (en) | Apparatus and method for preventing copying of terminal unique information in portable terminal | |
CN111241492A (zh) | 一种产品多租户安全授信方法、系统及电子设备 | |
US9524394B2 (en) | Method and apparatus for providing provably secure user input/output | |
KR20150045790A (ko) | 신뢰 보안 플랫폼 모듈을 이용한 보안 애플리케이션 인증 및 관리 방법 및 장치 | |
US8972732B2 (en) | Offline data access using trusted hardware | |
CN114372245A (zh) | 基于区块链的物联网终端认证方法、系统、设备及介质 | |
CN117240625B (zh) | 一种涉及防篡改的数据处理方法、装置及电子设备 | |
CN112506531A (zh) | 软件安装方法、装置、电子设备和存储介质 | |
CN110602132A (zh) | 一种数据加解密处理方法 | |
CN113014387B (zh) | 基于硬件加密机的多维加密接口的改进方法及加密装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |