CN117390631A - 安全启动方法、安全架构系统及计算设备 - Google Patents
安全启动方法、安全架构系统及计算设备 Download PDFInfo
- Publication number
- CN117390631A CN117390631A CN202311282133.8A CN202311282133A CN117390631A CN 117390631 A CN117390631 A CN 117390631A CN 202311282133 A CN202311282133 A CN 202311282133A CN 117390631 A CN117390631 A CN 117390631A
- Authority
- CN
- China
- Prior art keywords
- firmware
- module
- tcm
- security
- secure
- 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.)
- Pending
Links
- 238000000034 method Methods 0.000 title claims abstract description 159
- 238000005259 measurement Methods 0.000 claims abstract description 150
- 230000008569 process Effects 0.000 claims abstract description 74
- 230000006870 function Effects 0.000 claims description 113
- 238000004422 calculation algorithm Methods 0.000 claims description 103
- 238000012360 testing method Methods 0.000 claims description 6
- 238000012795 verification Methods 0.000 description 13
- 238000010586 diagram Methods 0.000 description 12
- 238000012545 processing Methods 0.000 description 12
- 230000009286 beneficial effect Effects 0.000 description 7
- 238000005516 engineering process Methods 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 239000008186 active pharmaceutical agent Substances 0.000 description 4
- 238000004590 computer program Methods 0.000 description 4
- 230000000977 initiatory effect Effects 0.000 description 4
- 238000002955 isolation Methods 0.000 description 4
- 230000009471 action Effects 0.000 description 3
- 230000008878 coupling Effects 0.000 description 3
- 238000010168 coupling process Methods 0.000 description 3
- 238000005859 coupling reaction Methods 0.000 description 3
- 238000013461 design Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 3
- 230000003068 static effect Effects 0.000 description 3
- 238000010276 construction Methods 0.000 description 2
- 238000011161 development Methods 0.000 description 2
- 238000013073 enabling process Methods 0.000 description 2
- 230000010354 integration Effects 0.000 description 2
- 230000009191 jumping Effects 0.000 description 2
- 238000007726 management method Methods 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 238000010998 test method Methods 0.000 description 2
- 102000016917 Complement C1 Human genes 0.000 description 1
- 108010028774 Complement C1 Proteins 0.000 description 1
- 101000864780 Homo sapiens Pulmonary surfactant-associated protein A1 Proteins 0.000 description 1
- 101000651017 Homo sapiens Pulmonary surfactant-associated protein A2 Proteins 0.000 description 1
- 101000873502 Homo sapiens S-adenosylmethionine decarboxylase proenzyme Proteins 0.000 description 1
- 102100027773 Pulmonary surfactant-associated protein A2 Human genes 0.000 description 1
- 102100035914 S-adenosylmethionine decarboxylase proenzyme Human genes 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000001419 dependent effect Effects 0.000 description 1
- 238000011156 evaluation Methods 0.000 description 1
- 230000005484 gravity Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000003993 interaction Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000011022 operating instruction Methods 0.000 description 1
- 230000000750 progressive effect Effects 0.000 description 1
- JBWKIWSBJXDJDT-UHFFFAOYSA-N triphenylmethyl chloride Chemical compound C=1C=CC=CC=1C(C=1C=CC=CC=1)(Cl)C1=CC=CC=C1 JBWKIWSBJXDJDT-UHFFFAOYSA-N 0.000 description 1
Classifications
-
- 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/575—Secure boot
-
- 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/30—Authentication, i.e. establishing the identity or authorisation of security principals
- G06F21/45—Structures or tools for the administration of authentication
- G06F21/46—Structures or tools for the administration of authentication by designing passwords or checking the strength of passwords
Landscapes
- Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Theoretical Computer Science (AREA)
- Computer Hardware Design (AREA)
- General Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请提出一种安全启动方法、安全架构系统及计算设备,该方法应用于安全架构系统,所述安全架构系统搭载有富执行环境子系统、可信执行环境子系统和安全元件子系统,所述安全架构系统中构建TCM服务模块和TCM密码模块,其中,TCM服务模块和TCM密码模块构建在除富执行环境子系统之外的不同子系统中;该方法包括:在所述安全架构系统的启动过程中,按照预设的固件运行顺序运行各个固件,以及对固件进行安全度量;其中,所述预设的固件运行顺序包括:在运行BL1固件后运行BL33固件,以使用户在所述BL33固件运行时进行功能模块配置得到功能配置信息。该方法能够避免设备启动过程中的不必要的安全度量和功能模块使能,从而可以降低设备启动功耗和启动时长。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种安全启动方法、安全架构系统及计算设备。
背景技术
随着计算机技术的发展,人们对于计算机系统的安全性提出了越来越高的要求,由此出现了计算机系统安全启动技术,比如基于可信密码服务的安全可信启动等。
在现有系统启动过程中,会加载运行各个固件,对处理器的各个功能模块都进行统一的安全度量和使能。但是在实际应用中,不同用户对于处理器功耗、开机时间、功能模块的需求等,并不是完全一致的。在这种情况下,如果完全按照统一的固件启动流程对各个功能模块进行统一的安全度量和使能,会导致不必要的安全度量和功能模块使能,从而增加启动功耗和启动时长。
发明内容
针对上述技术问题,本申请提出一种安全启动方法、安全架构系统及计算设备,能够避免设备启动过程中的不必要的安全度量和功能模块使能,从而可以降低设备启动功耗和启动时长。
本申请第一方面提出一种安全启动方法,应用于安全架构系统,所述安全架构系统搭载有富执行环境子系统、可信执行环境子系统和安全元件子系统,所述安全架构系统中构建有可信密码服务模块,所述可信密码服务模块包括TCM服务模块和TCM密码模块,其中,所述TCM服务模块和所述TCM密码模块构建在除所述富执行环境子系统之外的不同子系统中;所述方法包括:在所述安全架构系统的启动过程中,按照预设的固件运行顺序运行各个固件,以及利用所述TCM密码模块对固件进行安全度量,并记录安全度量结果;其中,所述预设的固件运行顺序包括:在运行BL1固件后运行BL33固件,以使用户在所述BL33固件运行时进行功能模块配置得到功能配置信息,所述功能配置信息用于在所述安全架构系统的启动过程中进行功能初始化。
该方案可以使得当安全架构系统上电启动时,能够尽快使用户进行功能模块配置,然后安全架构系统按照功能模块配置信息执行后续启动流程,这样可以使得启动流程符合用户设置的功能模块配置,避免不必要的功能模块使能和安全度量,从而有利于降低启动功耗和启动时长。
在一些实现方式中,利用所述TCM密码模块对固件进行安全度量,包括:在运行固件时,利用所述TCM密码模块对待运行的下一级固件进行安全度量,并记录安全度量结果。基于该实现方式,每运行一个固件时对待运行的下一个固件进行安全度量,能够在及时运行固件的同时实现对后续固件的安全度量,有利于在保证固件安全的同时提高固件运行效率。
在一些实现方式中,所述方法还包括:在确认所述待运行的下一级固件安全的情况下,所述安全架构系统运行所述待运行的下一级固件;在确认所述待运行的下一级固件不安全的情况下,退出所述安全架构系统的启动流程。基于该实现方式,能够在发现固件不安全时,及时结束运行,从而避免运行不安全固件,保障设备安全。
在一些实现方式中,在运行的固件为BL2固件的情况下,利用所述TCM密码模块对待运行的下一级固件进行安全度量,并记录安全度量结果,包括:利用所述TCM密码模块对BL31固件和BL32固件进行安全度量,并记录安全度量结果。基于该实现方式,同步对两个固件进行安全度量,能够提高单次安全度量的效率。
在一些实现方式中,在运行的固件为BL2固件的情况下,利用所述TCM密码模块对待运行的下一级固件进行安全度量,并记录安全度量结果,包括:利用所述TCM密码模块对BL31固件进行安全度量,并记录安全度量结果;在确认所述BL31固件安全的情况下,运行所述BL31固件,并利用所述TCM密码模块对BL32固件进行安全度量,并记录安全度量结果。基于该实现方式,按照固件运行顺序依次对固件进行安全度量,能够在固件运行的过程中进行安全度量,实现了固件运行效率和安全度量效率的均衡。
在一些实现方式中,所述TCM服务模块构建在所述可信执行环境子系统中,所述TCM密码模块构建在所述安全元件子系统中。基于该实现方式,TCM密码模块可以共用SE中的硬件资源,从而提高系统的硬件资源利用率以及提高系统集成度。
在一些实现方式中,所述TCM密码模块包括密码算法模块和密码算法的硬件资源,所述密码算法模块和所述密码算法的硬件资源构建在所述安全元件子系统中;或者,所述密码算法模块构建在所述可信执行环境子系统中,所述密码算法的硬件资源构建在所述安全元件子系统中。基于该实现方式,进一步提高了系统构建的灵活性。
在一些实现方式中,在所述密码算法模块构建在所述可信执行环境子系统中,所述密码算法的硬件资源构建在所述安全元件子系统中的情况下,利用所述TCM密码模块对固件进行安全度量,并记录安全度量结果,包括:调用所述密码算法的硬件资源对固件进行安全度量,并记录安全度量结果。基于该实现方式,直接调用密码算法的硬件资源对固件进行安全度量,能够更进一步提高安全度量的可靠性。
在一些实现方式中,所述安全架构系统内置有可信根,所述方法还包括:执行所述可信根,以及对所述安全架构系统进行硬件自检;在硬件自检通过的情况下,所述安全架构系统按照预设的固件运行顺序运行各个固件;在硬件自检不通过的情况下,退出所述安全架构系统的启动流程。基于该实现方式,可以通过可信根和硬件自检,进一步保障固件运行安全。
在一些实现方式中,所述安全架构系统被设置在计算设备中,所述方法还包括:利用所述TCM服务模块和/或所述TCM密码模块对所述计算设备的操作系统内核进行安全度量,并存储安全度量结果。基于该实现方式,对计算设备的操作系统内核进行安全度量,有利于进一步保障计算设备的操作系统安全。
在一些实现方式中,所述方法还包括:在确认所述计算设备的操作系统内核安全的情况下,加载所述操作系统内核,以完成所述计算设备的安全启动。基于该实现方式,可以使计算设备完成从固件到操作系统的全程安全启动。
本申请第二方面提出一种安全架构系统,所述安全架构系统搭载有富执行环境子系统、可信执行环境子系统和安全元件子系统,所述安全架构系统中构建有可信密码服务模块,所述可信密码服务模块包括TCM服务模块和TCM密码模块,其中,所述TCM服务模块和所述TCM密码模块构建在除所述富执行环境子系统之外的不同子系统中;所述安全架构系统被配置为:在所述安全架构系统的启动过程中,按照预设的固件运行顺序运行各个固件,以及利用所述TCM密码模块对固件进行安全度量,并记录安全度量结果;其中,所述预设的固件运行顺序包括:在运行BL1固件后运行BL33固件,以使用户在所述BL33固件运行时进行功能模块配置得到功能配置信息,所述功能配置信息用于在所述安全架构系统的启动过程中进行功能初始化。
该安全架构系统上电启动时,能够尽快使用户进行功能模块配置,然后安全架构系统按照功能模块配置信息执行后续启动流程,这样可以使得启动流程符合用户设置的功能模块配置,避免不必要的功能模块使能和安全度量,从而有利于降低启动功耗和启动时长。
在一些实现方式中,所述TCM服务模块构建在所述可信执行环境子系统中,所述TCM密码模块构建在所述安全元件子系统中。基于该实现方式,TCM密码模块可以共用SE中的硬件资源,从而提高系统的硬件资源利用率以及提高系统集成度。
在一些实现方式中,所述TCM密码模块包括密码算法的服务接口模块和密码算法的硬件资源,所述密码算法的服务接口模块和所述密码算法的硬件资源构建在所述安全元件子系统中;或者,所述密码算法的服务接口模块构建在所述可信执行环境子系统中,所述密码算法的硬件资源构建在所述安全元件子系统中。基于该实现方式,进一步提升了系统构建的灵活性。
本申请第三方面提出一种计算设备,所述计算设备被配置为实现上述的安全启动方法,或者,所述计算设备包括上述的安全架构系统。
通过执行上述安全启动方法或者基于上述的安全架构系统,该计算设备上电启动时,能够尽快使用户进行功能模块配置,然后安全架构系统按照功能模块配置信息执行后续启动流程,这样可以使得启动流程符合用户设置的功能模块配置,避免不必要的功能模块使能和安全度量,从而有利于降低启动功耗和启动时长。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本申请实施例提供的一种安全架构系统的结构示意图。
图2为本申请实施例提供的一种基于基础固件的处理器系统软件栈的示意图。
图3为本申请实施例提供的一种计算设备系统架构的示意图。
图4(a)和图4(b)为本申请实施例提供的一种安全架构系统,以及基于该安全架构系统构建得到的计算设备系统架构。
图5(a)和图5(b)为本申请实施例提供的另一种安全架构系统,以及基于该安全架构系统构建得到的另一种计算设备系统架构。
图6为本申请实施例提供的一种安全启动方法的流程示意图。
图7为本申请实施例提供的一种固件存储区域的示意图。
图8为本申请实施例提供的计算设备安全启动流程示意图。
图9为本申请实施例提供的计算设备安全启动的另一种流程示意图。
图10(a)和图10(b)为本申请实施例提供的另一种安全架构系统,以及基于该安全架构系统构建得到的另一种计算设备系统架构。
图11(a)和图11(b)为本申请实施例提供的另一种安全架构系统,以及基于该安全架构系统构建得到的另一种计算设备系统架构。
图12为本申请实施例提供的计算设备安全启动的另一种流程示意图。
图13为本申请实施例提供的计算设备安全启动的另一种流程示意图。
图14为本申请实施例提供的另一种安全架构系统的结构示意图。
图15为本申请实施例提供的一种计算设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
随着计算机技术的发展,人们对于计算设备的系统安全性提出了越来越高的要求,基于该需求,业内提出了计算设备的安全架构系统。
图1示出了一种安全架构系统的结构示意图,该安全架构系统包括三个子系统,分别为富执行环境(rich execution environment,REE)子系统、可信执行环境(trustedexecution environment,TEE)子系统以及安全元件(secure element,SE)子系统。安全元件子系统通过安全芯片技术,与典型安全计算处理器架构相融合,一同构建安全增强的处理器三级安全计算架构,保证重要资源的安全性。其中,REE子系统、TEE子系统和SE子系统的安全保护等级依次升高。也就是说,SE子系统的安全等级最高,TEE子系统的安全等级次之,REE子系统的安全等级最低。
一般来说,REE子系统中运行的应用可以称为普通应用(client application,CA),其安全性较低,容易受到攻击。TEE子系统中运行的应用一般称为可信应用(trustedapplication,TA),其安全性高于CA,可用于实现数据敏感的业务场景,比如支付业务中持卡人信息及身份校验。SE子系统中运行的应用可以称为安全可信应用,其安全性高于CA和TA。由于SE子系统的安全等级最高,因此,SE子系统一般用于执行重要资源的计算及存储,如可信根等信息。SE子系统可通过权限校验、密码技术等手段来保证SE子系统中重要资源的安全性。在安全架构系统中,上述三类子系统相互配合,能灵活地为计算数据提供不同的安全保护需求。
REE子系统可以包括运行在通用的嵌入式处理器上的一般操作系统(operatingsystem,OS)或虚拟机(virtual machine,VM),其中安装有应用程序。例如,应用程序可以是涉及支付场景的程序,其中实现诸如浏览商品、选择商品、提交订单等基本业务。REE子系统可以包括统一可扩展固件接口(unified extensible firmware interface,UEFI),通用启动引导程序(universal bootloader,U-Boot)。尽管在REE子系统中可以采取很多基于软件实现的诸如设备访问控制、设备数据加密机制、应用运行时的隔离机制、基于权限校验的访问控制等安全措施,但仍无法保证应用中重要数据的安全性。
TEE子系统可以包括通用安全核、可信用户接口(trusted user interface,TUI)以及TEE OS,是运行于一般操作系统之外的独立运行环境。TUI可以在可信执行环境内为可信应用与用户提供具有输入或输出安全交互能力的接口,例如,在支付场景下,TUI可用于交易信息的显示和个人身份识别码(personal identification number,PIN)输入等。TEE可以向诸如REE子系统提供安全服务并且与REE子系统相隔离,即REE子系统及其上的应用程序无法直接访问TEE子系统的硬件和软件资源。例如,TEE子系统中可以执行可信应用,通过可信应用来对REE子系统提供可信赖的运行环境,再通过对机密性、完整性的保护和数据访问权限的控制,确保端到端的安全性。此外,TEE子系统可以与REE子系统并行运行。TEE子系统例如可以通过安全的应用程序编程接口(application programming interface,API)与REE子系统进行交互。
TEE子系统提供了比REE子系统更高安全级别的运行环境,但无法提供硬件隔离级别的安全的密钥存储和密码相关运行环境。一般地,TEE子系统可以为REE子系统提供很多的API,供REE子系统调用TEE子系统的资源,TEE子系统提供的用于进行服务的API越多,TEE子系统面临的风险将越大,很难保证API本身不存在安全隐患,诸如安全漏洞,进而导致TEE子系统内的密钥等资源存在安全风险。进一步地,TEE子系统内将会运行多种TA,TA之间完全依赖于TEE操作系统提供的隔离机制,没有硬件级别的隔离,这使得如果TA本身存在安全漏洞或者TA自己主动访问其他TA对应的密钥或根密钥,也会导致密钥等敏感资源存在很大安全风险。
由于TEE子系统存在以上问题,提出基于SE来构建安全可信的存储资源和运算环境。一般地,SE子系统中的软件系统相对简单,包括较少的硬件元器件,因此容易建立物理防护和实施安全保障,从而提高SE子系统的安全强度,以服务于安全性要求更高的安全系统。其中,可以在SE子系统中执行安全应用。
进一步的,上述的安全架构系统可以为同构三级安全架构系统,也可以为异构三级安全架构系统。
在同构三级安全架构系统中,可信执行环境子系统TEE和安全元件子系统SE均运行于相同安全等级处理器核(如处理器安全核)。例如,可信执行环境子系统TEE和安全元件子系统SE运行于第一处理器核,则第一处理器核既能够处理可信执行环境子系统TEE中的程序或服务,也能够处理安全元件子系统SE中的程序或服务。
在异构三级架构中,可信执行环境子系统TEE和安全元件子系统SE运行于不同的处理器核,换句话说,安全元件子系统SE具有独立的处理器核。比如,可信执行环境子系统TEE运行于第二处理器核,安全元件子系统SE运行于第三处理器核,则第二处理器核负责处理可信执行环境子系统TEE中的程序或服务,第三处理器核负责处理安全元件子系统SE中的程序或服务。在异构三级安全架构系统中,由于安全元件子系统SE具有专用核,因此,安全元件子系统SE具备图灵完备性,且具有自定义硬件安全执行单元。安全元件子系统SE中的任务执行完全独立,不受其他子系统执行环境的影响,从而可以提供更高的安全性,以及更高的执行效率。
图2示出了计算设备的一种基于基础固件的处理器系统软件栈。参见图2所示,该处理器系统软件栈包括三层固件:可信根、基础固件以及系统固件。
其中,可信根可以是芯片内置的可信启动根,负责对基础固件进行验签。作为其他示例,系统软件栈也可以不包括该可信根。
基础固件主要用于芯片的基本初始化,并提供相关服务。例如,基础固件可以用于实现初始化服务、电源管理、恢复(诸如镜像恢复Recover)、RAS、安全平台架构PSPA支持、安全监控器、安全启动、安全分区管理器(Secure Partition Manager,SPM)调度等,其中,RAS表示可靠性(Reliability)、可用性(Availability))和可服务性(Serviceability)分析。此外,基础固件还可以负责加载运行在安全态下的安全操作系统,例如,TEE OS。
根据应用场景不同,系统固件可以具有两种实现方式,如图2所示的,系统固件可以实现为面向桌面、服务器等领域的可扩展固件接口(Unified Extensible FirmwareInterface,UEFI),或者可以实现为面向嵌入式领域的引导加载程序(U-Boot)。此外,基础固件、系统固件以及操作系统OS可以与带外控制系统(例如嵌入式控制器EC、基板管理控制器BMC等)进行通信。
当计算设备启动运行时,计算设备的处理器需要实现上述的系统软件栈所示的固件的启动运行。
在一些情形中,计算设备的启动过程所需运行的固件可以分为BL1固件、BL2固件、BL31固件、BL32固件和BL33固件。
其中,BL1固件一般存储于处理器ROM中,可以用于初始化计算设备的核心硬件(例如Trusted SRAM(可信静态随机存取存储器)、串口等),并找到BL2固件,一些情况下,BL1固件会对BL2固件进行验签。在一些实施例中,BL1固件为ATF(ARM Trusted Firmware,ARM可信固件)冷启动过程的第一个阶段所执行的程序,即AP Trusted ROM,一般为BootRom。
BL2固件可以称为Trusted Boot Firmware(可信启动固件),BL2固件和BL1固件的显著不同是BL2固件可以存储在外置的可信存储设备上,它的可信可以是建立在BL1固件对它的验证上。BL2固件会初始化一些关键安全硬件和软件框架,BL2固件在初始化完成之后,会找到BL31。
BL31固件可以称为EL3 Runtime Firmware(EL3运行固件),BL31固件不像BL1固件和BL2固件是一次性运行的,它通过SMC(Secure Monitor Call,安全监视调用)为普通世界(Non-Secure)持续提供涉及安全的服务。
BL32固件可以包括任何可以运行在可信执行环境Tee的程序或系统。在一些情形下,BL32固件运行完毕后,返回BL31固件,BL31固件找到BL33固件,BL31固件还可以验签BL33固件。
BL33固件可以包括运行在普通世界的固件(Non-Trusted Firmware),BL33固件可以包括面向桌面、服务器等领域的UEFI(Unified Extensible Firmware Interface,可扩展固件接口)固件或者U-boot(面向嵌入式领域的引导加载程序),也可以包括LinuxKernel(Linux内核),还可以包括基本输入输出系统(basic input output system,BIOS)固件。
当计算设备采用图1所示的安全架构系统时,上述的基于基础固件的处理器系统软件栈应用于采用上述安全架构系统的计算设备,即形成如图3所示的基于安全架构系统的计算设备系统架构。
参见图3所示,在该计算设备系统架构中,操作系统OS/VM以及系统固件UEFI和U-Boot运行在REE子系统,安全操作系统TEE OS运行在TEE子系统。
该安全架构系统的应用,可以提高处理器运行系统软件栈中的固件的安全性。
为了进一步提高计算设备启动过程的安全性,业内又提出将可信计算应用于计算设备启动过程。
其中,可信计算(Trusted Computing,TC)是在计算设备中广泛使用的,基于安全服务模块支持的可信计算平台,以提高计算设备整体的安全性。
安全服务模块,是为计算设备提供完整性和真实性保障的安全芯片,一般通过物理方式被强绑定到计算设备的硬件平台中。安全服务器模块的核心功能是基于支持的密码算法构建可信计算3个维度的功能,包括:平台完整性度量与验证、平台可信身份标识与鉴别、平台数据保护。可选地,安全服务模块可以包括可信密码模块(Trusted CryptoModule,TCM)、可信平台模块(Trusted Platform Module,TPM)和可信平台控制模块(Trusted Platform Control Module,TPCM)中的至少一项。
TCM使用的算法可以包括非对称密码算法、对称密码算法和杂凑算法。其中,非对称密码算法采用椭圆曲线密码算法,包括3个子算法:椭圆曲线数字签名算法(SM2-1)、椭圆曲线密钥交换协议(SM2-2)和椭圆曲线公钥加密算法(SM2-3)。对称密码算法采用SM-4算法(SM-4算法可以是基于ISO/IEC 18033-3:2010/AMD1:2021《信息技术安全技术加密算法第3部分:分组密码补篇1:SM4》标准的算法),该算法是一个分组算法,分组长度为128位,密钥长度为128位,加密算法与密钥扩展算法都采用32轮非线性迭代结构。杂凑算法采用SM-3算法(SM-3算法可以是基于GM/T0004-2012《SM3密码杂凑算法》标准的算法),该算法将不定长度的文本压缩为32字节的摘要值。各密码算法采用的密钥可以不同。
可信密码模块TCM可以划分为TCM密码模块和TCM服务模块。TCM密码模块可以为具有受保护存储空间的独立模块,是可信计算密码支撑平台必备的关键基础部件。TCM密码模块可以包括可信计算硬件资源,也就是说,TCM密码模块能够为可信密码服务模块提供可信的基础计算资源。例如,TCM密码模块可以为可信密码服务模块提供密码运算、真随机数发生器(True Random Number Generator,TRNG)、安全存储等计算资源。
TCM服务模块可以包括服务接口,换句话说,TCM服务模块可以为用户(或应用程序)调用TCM密码模块中的资源提供服务接口。在一些实施例中,TCM服务模块可以通过服务接口调用TCM密码模块,从而为应用程序提供可信度量、可信报告、可信存储等安全服务。在另一些实施例中,TCM服务模块也可以对TCM密码模块的资源进行管理,或者,TCM服务模块也可以隐藏TCM密码模块中的复杂功能命令,降低用户使用TCM密码模块的复杂度。
将上述的可信密码模块TCM应用于图1所示的安全架构系统,可以得到基于可信计算的安全架构系统,其中,TCM服务模块和TCM密码模块在安全架构系统中的不同子系统中进行设置,可以得到不同结构的安全架构系统,如图4(a)所示即为一种安全架构系统结构,在后文实施例中将具体介绍这些不同结构的安全架构系统。
基于上述的应用了可信密码模块TCM的安全架构系统,在计算设备启动过程中,通过调用TCM能够实现安全的固件启动,从而提高计算设备启动的安全性。
其实现流程可以包括:上电,执行硬件可信根,一般情况下,BL1固件可以被设置在硬件可信根中,具有不可篡改的特性,是上电启动的第一段代码,是一切信任链的源头。在这种情况下,为实现安全启动技术,需先执行硬件可信根。之后,对BL2固件、BL31固件、BL32固件和BL33固件中的一种或多种进行逐级验证,示例性地,该逐级具体体现在:通过硬件可信根对BL2固件进行验证,之后,通过BL2固件对BL31固件、BL32和/或BL33固件进行逐个验证;或者说,通过BL2固件对BL31固件进行验证,之后,通过BL31固件对BL33固件进行验证;或者说,通过BL2固件对BL31固件进行验证,之后,通过BL31固件对BL32固件和BL33固件进行逐个验证;与此同时,TCM硬件自检,在自检成功的情况下,加载运行TCM,在加载成功的情况下,利用所述TCM对BL2固件、BL31固件、BL32固件、BL33固件中的至少一项进行度量,例如,利用所述TCM对BL2固件、BL31固件、BL32固件和BL33固件进行逐个度量;或者说,利用所述TCM对BL2固件、BL31固件和BL33固件进行逐个度量;若度量成功(固件安全),安全/可信启动完成,若度量失败(固件不安全),安全/可信启动失败。
可见,在上述的基于TCM的固件可信启动过程中,通过调用TCM,依次对启动的各个固件进行安全度量,从而实现了对固件安全性的评估,避免运行非安全固件带来计算设备安全问题。
上述的安全度量过程,与各个固件的启动顺序相一致,即按照固件的启动顺序对各个固件进行安全度量。在现有的启动过程中,会加载运行各个固件,对固件中包含的处理器的各个功能模块都进行统一的安全度量和使能。但是在实际应用中,不同用户对于处理器功耗、开机时间、功能模块的需求等,并不是完全一致的。在这种情况下,如果完全按照统一的固件启动流程对各个功能模块进行统一的安全度量和使能,会导致不必要的安全度量和功能模块使能,从而增加启动功耗和启动时长。
针对上述技术问题,本申请实施例提出一种新的安全启动方法,在上述的应用TCM的安全架构系统中,通过对固件启动顺序进行调整,使得在固件启动初始阶段采集用户功能配置信息,然后基于用户功能配置信息启动及度量其他固件,从而避免不必要的固件启动和度量。
下面,结合各种不同的安全架构系统,对本申请实施例提出的安全启动方法进行介绍。
一、TCM服务模块和TCM密码模块构建在同一子系统时的安全启动
在这种实施方式中,计算设备采用图1所示的安全架构系统,并且应用可信密码服务模块,可信密码服务模块包括TCM服务模块和TCM密码模块,其中,TCM服务模块和TCM密码模块构建在除所述富执行环境子系统之外的同一个子系统中,参见图4(a)所示,TCM服务模块和TCM密码模块同时构建在SE中,或者,参见图5(a)所示,TCM服务模块和TCM密码模块同时构建在TEE中。
将上述的安全架构系统应用于图3所示的处理器系统软件栈,可以分别得到如图4(b)所示的计算设备系统架构,以及如图5(b)所示的计算设备系统架构。
基于图4(b)和图5(b)所示的计算设备系统架构,本申请实施例提出一种新的安全启动方法,该安全启动方法可以由上述的计算设备系统架构中的安全架构系统执行。参见图6所示,该方法包括:
S101、在所述安全架构系统的启动过程中,按照预设的固件运行顺序运行各个固件,以及利用所述TCM服务模块和/或所述TCM密码模块对固件进行安全度量,并记录安全度量结果。
其中,在计算设备的上述安全架构系统的启动过程中,会运行各个固件,比如运行BL1固件、BL2固件、BL31固件、BL32固件、BL33固件中的一个或多个,在常规方案中,会依次运行BL1固件、BL2固件、BL31固件、BL32固件、BL33固件。
在本申请实施例中,对上述固件的运行顺序进行了优化,形成预设的固件运行顺序。该预设的固件运行顺序,具体是在运行BL1固件实现处理器的基础初始化之后,先运行BL33固件,以使用户在所述BL33固件运行时进行功能配置得到功能配置信息,然后再结合获取的功能配置信息运行其他固件。
在一些实现方式中,可以对安全架构系统加载固件的寻址路径进行设计,使得安全架构系统在寻址加载BL1固件并运行后,开始寻址并加载运行BL33固件,从而将传统的运行BL1固件后运行BL2固件的固件运行顺序,更改为运行BL1固件后运行BL33固件的固件运行顺序。比如,可以对安全架构系统启动运行时的固件加载程序进行设计,使得安全架构系统在加载BL1固件后,开始加载BL33固件。
在另一些实现方式中,可以将BL33存储到特定的存储位置,并且对安全架构系统的固件加载顺序进行设置,使得安全架构系统在加载运行BL1固件后,跳转至该特定的存储位置,加载BL33固件并运行。
在另一些实现方式中,在固件存储区域的起始位置处存储BL1固件,以及在BL1固件之后存储BL33固件的引导文件,并且,设置安全架构系统从上述的固件存储区域的起始地址开始依次加载固件并运行。
上述的固件存储区域,是指用于存储各个固件的存储区域,例如ROM中用于存储固件的特定存储区域。从该固件存储区域的起始位置开始,依次存储各个固件。
具体而言,在固件存储区域的起始位置存储BL1固件,在所述BL1固件之后紧邻BL1固件的位置,存储有BL33固件的引导文件,所述BL33固件的引导文件用于引导安全架构系统跳转至BL33固件的存储地址处加载运行BL33固件,以使用户在所述BL33固件运行时进行功能配置。而BL33固件本身则可以存储在上述的固件存储区域的任意位置。
与此同时,本申请实施例还设定安全架构系统从固件存储区间的起始位置开始,按照从起始位置到末尾位置的顺序,依次寻址加载固件并运行。
按照该固件加载顺序和固件存储区域的固件存储方式,安全架构系统在加载运行BL1固件后,会加载运行BL33固件的引导文件,从而跳转至BL33固件的存储地址处加载运行BL33固件,也就是实现了安全架构系统在运行BL1固件后加载运行BL33固件。
此外,在安全架构系统运行固件时,还需要一些必要的参数信息,在本申请实施例中,将这些参数信息也存储至上述的固件存储区域中,使得在安全架构系统加载该固件存储区域中的固件运行时,可以同时从该固件存储区域中加载运行固件所需的一项或多项参数信息。
上述的参数信息,包括第一参数信息、第二参数信息和可信启动信息。
其中,第一参数信息包括安全架构系统初始化所需的参数信息,比如安全架构系统运行BL1固件进行基础初始化时所需的参数信息。
上述的第二参数信息包括功能初始化所需的参数信息,比如安全架构系统运行BL33固件时,支撑用户进行处理器功能配置的参数信息,或者基于用户配置的功能配置信息进行功能初始化所需的参数信息。
上述的可信启动信息包括实现固件可信启动所需的信息,比如固件可信启动所需的密钥等。
上述的第一参数信息、第二参数信息和可信启动信息,可以分开存储,也可以集中存储,并且,对第一参数信息、第二参数信息和可信启动信息的加载可以同步执行,也可以在需要时分别执行,本申请实施例均不做限定。
在一些实现方式中,参见图7所示,第一参数信息存储在BL1固件和BL33固件的引导文件之间。在BL33固件的引导文件之后依次存储可信启动信息、BL2固件、BL31固件、第二参数信息、BL32固件和BL33固件。
基于上述存储方式,安全架构系统在运行BL1固件之后,通过运行BL33固件的引导文件,跳转至BL33固件的存储位置处加载运行BL33固件,然后再跳回BL1固件,继续加载运行其他固件。由于运行固件所需的参数与固件关联存储,因此在运行固件的过程中,可以就近读取到所需的参数,从而提高固件运行效率。
示例性的,在BL33固件运行时,为用户提供功能配置窗口,使得用户可以自定义地配置所需的处理器功能,包括不同功能模块种类、数量等。
当用户在运行BL33的过程中进行功能配置之后,计算设备的安全架构系统能够相应的获取到用户配置的功能配置信息。其中,该功能配置信息,包括但不限于使能的功能类型、使能的功能模块数量、使能时间段、功耗或性能的配置信息等。
该功能配置信息,用于在安全架构系统的启动过程中进行功能初始化,具体是在安全架构系统的启动过程中,可以按照该功能配置信息,进行处理器功能初始化。比如,安全架构系统在获取上述的功能配置信息后,根据该功能配置信息,在运行其他固件时进行与该功能配置信息相匹配的功能配置。
在一些实现方式中,安全架构系统根据上述的功能配置信息运行其他固件,具体是安全架构系统运行其他固件,并且在运行其他固件时,按照上述的功能配置信息初始化处理器功能。具体是按照该功能配置信息对处理器功能进行使能或关闭,或者对处理器性能参数进行配置。
比如,假设用户在安全架构系统运行BL33固件的过程中,进行了功能配置,具体是使能处理器的A功能、B功能,并且关闭处理器的C功能。
则安全架构系统运行其他固件的过程中,当运行至对应A功能的使能程序时,将A功能开启,当运行至对应B功能的使能程序时,将B功能关闭,当运行至对应C功能的使能程序时,将C功能关闭。
经过上述功能使能处理后,在后续的固件运行过程中,关于A功能和B功能的相关程序会启动运行,而关于C功能的相关程序则不再启动运行。
在上述的固件运行过程中,安全架构系统通过调用TCM服务模块和/或TCM密码模块对固件进行安全度量,并记录安全度量结果。
在一些实现方式中,可以利用TCM服务模块和/或TCM密码模块对以下固件中的一种或多种进行度量:BL2固件、BL31固件、BL32固件、BL33固件,从而提高系统的安全性。在一些实现方式中,可以使用TCM密码模块对BL2固件、BL31固件、BL32固件和BL33固件中的一部分固件进行度量,而使用TCM服务模块和TCM密码模块对BL2固件、BL31固件、BL32固件和BL33固件中的另一部分固件进行度量。
例如,可以利用TCM服务模块和/或TCM密码模块对BL33固件、BL2固件、BL31固件和BL32固件进行逐个度量,若度量成功,则逐个加载运行BL33固件、BL2固件、BL31固件和BL32固件。又例如,在不包含BL32固件的情况下,可以利用TCM服务模块和/或TCM密码模块对BL33固件、BL2固件、BL31固件进行逐个度量,若度量成功,则逐个加载运行BL33固件、BL2固件、BL31固件。
在本申请实施例中,安全架构系统的启动过程分为以下几个阶段,BL1阶段、BL33阶段、BL2阶段、BL31阶段、BL32阶段。由于BL1固件为系统启动过程中的第一个固件,且BL1固件是一段不可篡改的固件代码,从BL1固件开始进行度量,可以从根源上保证系统的安全性。
基于上述的固件运行顺序,安全架构系统在运行当前固件时,调用TCM服务模块和/或TCM密码模块对待运行的下一级固件进行安全度量,并记录安全度量结果。
在度量确认待运行的下一级固件安全时,安全架构系统可以在运行完当前固件后运行待运行的下一级固件。在度量确认待运行的下一级固件不安全时,安全架构系统退出启动流程。
比如,在运行BL1固件时,调用TCM服务模块和/或TCM密码模块对BL33固件进行安全度量并记录安全度量结果,在确认BL3固件安全时,再运行BL33固件。然后,在运行BL33固件时,调用TCM服务模块和/或TCM密码模块对待运行的下一级固件进行安全度量并记录安全度量结果,在确认待运行的下一级固件安全时,运行下一级固件;若待运行的下一级固件不安全,则退出安全架构系统的启动流程。
通过上述介绍可见,本申请实施例提出的安全启动方法使得安全架构系统在运行BL1固件后,先加载运行BL33固件,使得用户可以通过BL33固件进行功能模块配置,然后,安全架构系统再根据用户配置的功能模块配置信息,运行其他固件,以及对运行的固件进行安全度量。该方案可以使得当安全架构系统上电启动时,能够尽快使用户进行功能模块配置,然后安全架构系统按照功能模块配置信息执行后续启动流程,这样可以使得启动流程符合用户设置的功能模块配置,避免不必要的功能模块使能和安全度量,从而有利于降低启动功耗和启动时长。
在一些实现方式中,以TCM服务模块和TCM密码模块均构建在安全元件在系统SE中为例,当计算设备采用图6所示的安全启动方法时,其完整的启动过程如图8所示。
参见图8,计算设备按照如下步骤实现安全启动:
S201、上电启动后执行可信根。该可信根可以是在安全元件子系统的SE引擎上执行,也可以是在可信执行环境子系统的可信核上执行。当该可信根在安全元件子系统的SE引擎上执行,并且安全元件子系统与可信执行环境子系统构建在不同处理器核上时,该可信根的执行可以由安全元件子系统所在的异构架构的CPU核执行。
S202、对芯片状态进行安全自检。该自检过程可以包括对TRNG、密码算法硬件引擎等核心硬件的自检。若自检成功则继续执行后续启动流程,即安全架构系统按照预设的固件运行顺序运行各个固件;如果自检失败,则不执行后续的安全/可信启动操作,退出案件架构系统的启动流程。
S203、运行BL1固件。在运行BL1固件的过程中进行芯片基础初始化并加载运行TCM模块组件,此步骤中同时还为系统固件运行时提供用于初始化的调用服务。
在一些实现方式中,TCM服务模块和TCM密码模块构建在安全元件子系统SE中,可信执行环境子系统TEE和安全元件子系统SE运行于同一处理器核,或者,可信执行环境子系统TEE和安全元件子系统SE运行于相同架构的处理器核。此时为同构安全架构系统,在运行BL1固件时,可以直接加载运行在SE中的TCM服务模块和/或TCM密码模块。
在另一些实现方式中,TCM服务模块和TCM密码模块构建在安全元件子系统SE中,可信执行环境子系统TEE运行于第一处理器核,安全元件子系统SE运行于第二处理器核,或者,可信执行环境子系统TEE和安全元件子系统SE运行于不同架构的处理器核。此时为异构安全架构系统,在运行BL1固件时,加载运行安全元件子系统SE的固件,初始化安全元件子系统的核心模块,比如密码算法引擎、OTP(One Time Programmable,一次性可编程)寄存器等部件,并在所述安全元件子系统中加载运行TCM服务模块和TCM密码模块。
S204、调用TCM模块对BL33固件进行安全度量,并记录安全度量结果。
在本申请实施例中,调用TCM模块,具体包括调用TCM服务模块和/或TCM密码模块。
度量方法包括但不限于使用公钥算法进行签名验签。若度量成功,将执行步骤S205、加载运行BL33固件;若度量失败,退出安全/可信启动流程。需要说明的是,公钥算法可以包括但不限于SM2、ECC。
S205、加载运行BL33固件。根据系统需求进行Boot所需硬件资源的初始化。这里的BL33固件,一般为定制化开发的可信Uboot或可信UEFI。同时,它将加载运行TCM驱动组件。
在运行BL33固件结束后,引导返回至BL1固件程序。通过BL1的接口服务,系统可以从BL33固件返回至BL1继续运行BL1程序。
S206、调用TCM模块对BL2固件进行安全度量,并记录安全度量结果。
度量方法包括但不限于使用公钥算法进行签名验签。若度量成功,将执行步骤S207、加载运行BL2固件;若度量失败,退出安全/可信启动流程。
S207、加载运行BL2固件。在运行BL2固件的过程中,也会加载TCM驱动。
S208、调用TCM模块对待运行的下一级固件进行安全度量并记录安全度量结果。
其中,运行BL2固件后的待运行的下一级固件,至少包括BL31固件,还可以包括BL32固件。
BL32固件作为安全操作系统是可选项,即BL32固件是可以配置运行或不运行的。因此对BL32进行安全度量和运行的处理步骤可能存在也可能不存在,如图8和图9中的虚线所示,该虚线所示的处理步骤可以根据实际情况是否需要运行BL32固件而选择执行或不执行。
在一些实现方式中,若在运行BL2固件后需要继续运行的固件有BL31固件和BL32固件,则参见图8所示,在执行步骤S208时可以分别执行步骤S208A和S208B:S208A、调用TCM模块对BL31固件进行安全度量并记录安全度量结果;S208B、调用TCM模块对BL32固件进行安全度量并记录安全度量结果。
若BL31固件和BL32固件安全,则可以执行步骤S209A、运行BL31固件,以及,执行步骤S209B、运行BL32固件;若BL31固件和/或BL32固件不安全,则退出安全/可信启动流程。
在另一些实现方式中,若在运行BL2固件后需要继续运行的固件有BL31固件和BL32固件,则参见图9所示,在执行步骤S208时,具体是先执行步骤S208A、调用TCM模块对BL31固件进行安全度量并记录安全度量结果。在确定BL31固件安全的情况下,执行步骤S209A、运行BL31固件;若BL31固件不安全,则退出安全/可信启动流程。
然后再执行步骤S208B、调用TCM模块对BL32固件进行安全度量并记录安全度量结果。在确认BL32固件安全的情况下,执行步骤S209B、加载运行BL32固件;若BL32固件不安全,则退出安全/可信启动流程。
若系统启动过程不需要运行BL32固件,则上述图8和图9所示的启动流程中的虚线所示的关于BL32固件的安全度量和运行的步骤(S208B和S209B)可以跳过不执行,继续执行后续步骤S210:
S210、加载运行BL33固件。
此处加载运行BL33固件,可以是加载运行在步骤S205中加载运行BL33固件时所没有运行的固件部分。
S211、利用所述TCM模块对计算设备的操作系统内核进行安全度量,并存储安全度量结果。
度量方法包括但不限于使用公钥算法进行签名验签。若度量成功,则继续执行后续步骤,若度量失败,退出安全/可信启动流程。
S212、加载所述操作系统内核,以完成所述计算设备的安全启动。
具体的,在确认计算设备的操作系统内核安全的情况下,加载操作系统内核,初始化硬件资源,并引导操作系统。
S213、安全/可信启动完成。
通过上述处理,可以实现计算设备的安全/可信启动,并且,由于调整了固件启动顺序,使得计算设备启动之初就使用户配置功能,然后按照用户配置的功能配置信息运行固件,从而可以避免不必要的固件程序运行和安全度量,有利于降低启动耗时,实现更快的计算设备安全启动。
与上述的安全启动方法相对应的,本申请实施例同时提出了一种安全架构系统。在该安全架构系统中,搭载有富执行环境子系统REE、可信执行环境子系统TEE和安全元件子系统SE,所述安全架构系统中构建有可信密码服务模块,所述可信密码服务模块包括TCM服务模块和TCM密码模块,其中,所述TCM服务模块和所述TCM密码模块构建在除所述富执行环境子系统REE之外的同一个子系统中,比如,TCM服务模块和TCM密码模块可以构建在SE中,从而得到图4(a)所示的安全架构系统,或者,TCM服务模块和TCM密码模块可以构建在TEE中,从而得到图5(a)所示的安全架构系统。
上述的安全架构系统可以用于执行计算设备的处理器系统软件栈,并且,该安全架构系统被配置为执行上述任意实施例介绍的安全启动方法,即,在所述安全架构系统的启动过程中,按照预设的固件运行顺序运行各个固件,以及利用所述TCM服务模块和/或所述TCM密码模块对固件进行安全度量,并记录安全度量结果;
其中,所述预设的固件运行顺序包括:在运行BL1固件后运行BL33固件,以使用户在所述BL33固件运行时进行功能模块配置得到功能配置信息,所述功能配置信息用于在所述安全架构系统的启动过程中进行功能初始化。
通过执行上述的安全启动方法,本申请实施例提出的安全架构系统应用于计算设备,可以在保证计算设备启动过程的安全性的同时,进一步降低启动功耗,缩短启动时长。
本实施例提供的安全架构系统,与本申请上述实施例所提供的安全启动方法属于同一申请构思,可执行本申请上述任意实施例所提供的安全启动方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本申请上述实施例提供的安全启动方法的具体处理内容,此处不再加以赘述。
在本申请另一实施例中,还提出一种计算设备,该计算设备被配置为执行上述任意实施例所介绍的安全启动方法,或者,该计算设备包括上述的安全架构系统,从而使得该计算设备的安全架构系统在启动时执行上述任意实施例所介绍的安全启动方法。基于上述设计,该计算设备能够实现更加快速的安全启动。
该计算设备,可以是任意的包含处理器并且在启动过程中存在固件启动操作的电子设备,比如可以是个人计算机、工业计算机、服务器、工作站、手持终端设备、智能终端设备、可穿戴设备等。
二、TCM服务模块和TCM密码模块构建在不同子系统时的安全启动
在这种实施方式中,计算设备采用图1所示的安全架构系统,并且应用可信密码服务模块,可信密码服务模块包括TCM服务模块和TCM密码模块,其中,TCM服务模块和TCM密码模块构建在除所述富执行环境子系统REE之外的不同子系统中。参见图10(a)所示,TCM服务模块构建在可信执行环境子系统TEE中,TCM密码模块构建在安全元件子系统SE中,或者,参见图11(a)所示,TCM服务模块构建在安全元件子系统SE中,TCM密码模块构建在可信执行环境子系统TEE中。
将上述的安全架构系统应用于图3所示的处理器系统软件栈,可以分别得到如图10(b)所示的计算设备系统架构,以及如图11(b)所示的计算设备系统架构。
本申请实施例提出一种新的应用于上述图10(b)和图11(b)所示的计算设备系统架构的安全启动方法。下面对该安全启动方法进行具体介绍。
以图10(b)所示的计算设备系统架构为例,本申请实施例提出的安全启动方法可以由该计算设备系统架构的安全架构系统执行,该方法包括:
在所述安全架构系统的启动过程中,按照预设的固件运行顺序运行各个固件,以及利用所述TCM密码模块对固件进行安全度量,并记录安全度量结果。
其中,在计算设备的上述安全架构系统的启动过程中,会运行各个固件,比如运行BL1固件、BL2固件、BL31固件、BL32固件、BL33固件中的一个或多个,在常规方案中,会依次运行BL1固件、BL2固件、BL31固件、BL32固件、BL33固件。
在本申请实施例中,对上述固件的运行顺序进行了优化,形成预设的固件运行顺序。该预设的固件运行顺序,具体是在运行BL1固件实现处理器的基础初始化之后,先运行BL33固件,以使用户在所述BL33固件运行时进行功能配置得到功能配置信息,然后再结合获取的功能配置信息运行其他固件。
在一些实现方式中,可以对安全架构系统加载固件的寻址路径进行设计,使得安全架构系统在寻址加载BL1固件并运行后,开始寻址并加载运行BL33固件,从而将传统的运行BL1固件后运行BL2固件的固件运行顺序,更改为运行BL1固件后运行BL33固件的固件运行顺序。比如,可以对安全架构系统启动运行时的固件加载程序进行设计,使得安全架构系统在加载BL1固件后,开始加载BL33固件。
在另一些实现方式中,可以将BL33存储到特定的存储位置,并且对安全架构系统的固件加载顺序进行设置,使得安全架构系统在加载运行BL1固件后,跳转至该特定的存储位置,加载BL33固件并运行。
在另一些实现方式中,在固件存储区域的起始位置处存储BL1固件,以及在BL1固件之后存储BL33固件的引导文件,并且,设置安全架构系统从上述的固件存储区域的起始地址开始依次加载固件并运行。
上述的固件存储区域,是指用于存储各个固件的存储区域,例如ROM中用于存储固件的特定存储区域。从该固件存储区域的起始位置开始,依次存储各个固件。
具体而言,在固件存储区域的起始位置存储BL1固件,在所述BL1固件之后紧邻BL1固件的位置,存储有BL33固件的引导文件,所述BL33固件的引导文件用于引导安全架构系统跳转至BL33固件的存储地址处加载运行BL33固件,以使用户在所述BL33固件运行时进行功能配置。而BL33固件本身则可以存储在上述的固件存储区域的任意位置。
与此同时,本申请实施例还设定安全架构系统从固件存储区间的起始位置开始,按照从起始位置到末尾位置的顺序,依次寻址加载固件并运行。
按照该固件加载顺序和固件存储区域的固件存储方式,安全架构系统在加载运行BL1固件后,会加载运行BL33固件的引导文件,从而跳转至BL33固件的存储地址处加载运行BL33固件,也就是实现了安全架构系统在运行BL1固件后加载运行BL33固件。
此外,在安全架构系统运行固件时,还需要一些必要的参数信息,在本申请实施例中,将这些参数信息也存储至上述的固件存储区域中,使得在安全架构系统加载该固件存储区域中的固件运行时,可以同时从该固件存储区域中加载运行固件所需的一项或多项参数信息。
上述的参数信息,包括第一参数信息、第二参数信息和可信启动信息。
其中,第一参数信息包括安全架构系统初始化所需的参数信息,比如安全架构系统运行BL1固件进行基础初始化时所需的参数信息。
上述的第二参数信息包括功能初始化所需的参数信息,比如安全架构系统运行BL33固件时,支撑用户进行处理器功能配置的参数信息,或者基于用户配置的功能配置信息进行功能初始化所需的参数信息。
上述的可信启动信息包括实现固件可信启动所需的信息,比如固件可信启动所需的密钥等。
上述的第一参数信息、第二参数信息和可信启动信息,可以分开存储,也可以集中存储,并且,对第一参数信息、第二参数信息和可信启动信息的加载可以同步执行,也可以在需要时分别执行,本申请实施例均不做限定。
在一些实现方式中,参见图7所示,第一参数信息存储在BL1固件和BL33固件的引导文件之间。在BL33固件的引导文件之后依次存储可信启动信息、BL2固件、BL31固件、第二参数信息、BL32固件和BL33固件。
基于上述存储方式,安全架构系统在运行BL1固件之后,通过运行BL33固件的引导文件,跳转至BL33固件的存储位置处加载运行BL33固件,然后再跳回BL1固件,继续加载运行其他固件。由于运行固件所需的参数与固件关联存储,因此在运行固件的过程中,可以就近读取到所需的参数,从而提高固件运行效率。
示例性的,在BL33固件运行时,为用户提供功能配置窗口,使得用户可以自定义地配置所需的处理器功能,包括不同功能模块种类、数量等。
当用户在运行BL33的过程中进行功能配置之后,计算设备的安全架构系统能够相应的获取到用户配置的功能配置信息。其中,该功能配置信息,包括但不限于使能的功能类型、使能的功能模块数量、使能时间段、功耗或性能的配置信息等。
该功能配置信息,用于在安全架构系统的启动过程中进行功能初始化,具体是在安全架构系统的启动过程中,可以按照该功能配置信息,进行处理器功能初始化。比如,安全架构系统在获取上述的功能配置信息后,根据该功能配置信息,在运行其他固件时进行与该功能配置信息相匹配的功能配置。
在一些实现方式中,安全架构系统根据上述的功能配置信息运行其他固件,具体是安全架构系统运行其他固件,并且在运行其他固件时,按照上述的功能配置信息初始化处理器功能。具体是按照该功能配置信息对处理器功能进行使能或关闭,或者对处理器性能参数进行配置。
比如,假设用户在安全架构系统运行BL33固件的过程中,进行了功能配置,具体是使能处理器的A功能、B功能,并且关闭处理器的C功能。
则安全架构系统运行其他固件的过程中,当运行至对应A功能的使能程序时,将A功能开启,当运行至对应B功能的使能程序时,将B功能关闭,当运行至对应C功能的使能程序时,将C功能关闭。
经过上述功能使能处理后,在后续的固件运行过程中,关于A功能和B功能的相关程序会启动运行,而关于C功能的相关程序则不再启动运行。
在上述的固件运行过程中,安全架构系统通过调用TCM密码模块对固件进行安全度量,并记录安全度量结果。
在一些实现方式中,可以利用TCM密码模块对以下固件中的一种或多种进行度量:BL2固件、BL31固件、BL32固件、BL33固件,从而提高系统的安全性。
例如,可以利用TCM密码模块对BL33固件、BL2固件、BL31固件和BL32固件进行逐个度量,若度量成功,则逐个加载运行BL33固件、BL2固件、BL31固件和BL32固件。又例如,在不包含BL32固件的情况下,可以利用TCM密码模块对BL33固件、BL2固件、BL31固件进行逐个度量,若度量成功,则逐个加载运行BL33固件、BL2固件、BL31固件。
在本申请实施例中,安全架构系统的启动过程分为以下几个阶段,BL1阶段、BL33阶段、BL2阶段、BL31阶段、BL32阶段。由于BL1固件为系统启动过程中的第一个固件,且BL1固件是一段不可篡改的固件代码,从BL1固件开始进行度量,可以从根源上保证系统的安全性。
基于上述的固件运行顺序,安全架构系统在运行当前固件时,调用TCM密码模块对待运行的下一级固件进行安全度量,并记录安全度量结果。
在度量确认待运行的下一级固件安全时,安全架构系统可以在运行完当前固件后运行待运行的下一级固件。在度量确认待运行的下一级固件不安全时,安全架构系统退出启动流程。
比如,在运行BL1固件时,调用TCM密码模块对BL33固件进行安全度量并记录安全度量结果,在确认BL3固件安全时,再运行BL33固件。然后,在运行BL33固件时,调用TCM密码模块对待运行的下一级固件进行安全度量并记录安全度量结果,在确认待运行的下一级固件安全时,运行下一级固件;若待运行的下一级固件不安全,则退出安全架构系统的启动流程。
通过上述介绍可见,本申请实施例提出的安全启动方法使得安全架构系统在运行BL1固件后,先加载运行BL33固件,使得用户可以通过BL33固件进行功能模块配置,安全架构系统再根据用户配置的功能模块配置信息,运行其他固件,以及对运行的固件进行安全度量。该方案可以使得当安全架构系统上电启动时,能够尽快使用户进行功能模块配置,然后安全架构系统按照功能模块配置信息执行后续启动流程,这样可以使得启动流程符合用户设置的功能模块配置,避免不必要的功能模块使能和安全度量,从而有利于降低启动功耗和启动时长。
在一些实现方式中,以TCM服务模块构建在可信执行环境子系统TEE中、TCM密码模块构建在安全元件子系统SE中为例,当计算设备采用上述的安全启动方法时,其完整的启动过程如图12所示。
参见图12所示,计算设备按照如下步骤实现安全启动:
S301、上电启动后执行可信根。该可信根可以是在安全元件子系统的SE引擎上执行,也可以是在可信执行环境子系统的可信核上执行。当该可信根在安全元件子系统的SE引擎上执行,并且安全元件子系统与可信执行环境子系统构建在不同处理器核上时,该可信根的执行可以由安全元件子系统所在的异构架构的CPU核执行。
S302、对芯片状态进行安全自检。该自检过程可以包括对TRNG、密码算法硬件引擎等核心硬件的自检。若自检成功则继续执行后续启动流程,即安全架构系统按照预设的固件运行顺序运行各个固件;如果自检失败,则不执行后续的安全/可信启动操作,退出案件架构系统的启动流程。
S303、运行BL1固件。在运行BL1固件的过程中进行芯片基础初始化并加载运行TCM模块组件,此步骤中同时还为系统固件运行时提供用于初始化的调用服务。
在一些实现方式中,可信执行环境子系统TEE和安全元件子系统SE运行于同一处理器核,或者,可信执行环境子系统TEE和安全元件子系统SE运行于相同架构的处理器核。此时为同构安全架构系统,在运行BL1固件时,可以直接加载运行在SE中的TCM密码模块。
在另一些实现方式中,可信执行环境子系统TEE运行于第一处理器核,安全元件子系统SE运行于第二处理器核,或者,可信执行环境子系统TEE和安全元件子系统SE运行于不同架构的处理器核。此时为异构安全架构系统,在运行BL1固件时,加载运行安全元件子系统SE的固件,初始化安全元件子系统的核心模块,比如密码算法引擎、OTP(One TimeProgrammable,一次性可编程)寄存器等部件,并在所述安全元件子系统中加载运行TCM密码模块。
S304、调用TCM密码模块对BL33固件进行安全度量,并记录安全度量结果。
度量方法包括但不限于使用公钥算法进行签名验签。若度量成功,将执行步骤S305、加载运行BL33固件;若度量失败,退出安全/可信启动流程。需要说明的是,公钥算法可以包括但不限于SM2、ECC。
S305、加载运行BL33固件。根据系统需求进行Boot所需硬件资源的初始化。这里的BL33固件,一般为定制化开发的可信Uboot或可信UEFI。同时,它将加载运行TCM驱动组件。
在运行BL33固件结束后,引导返回至BL1固件程序。通过BL1的接口服务,系统可以从BL33固件返回至BL1继续运行BL1程序。
S306、调用TCM密码模块对BL2固件进行安全度量,并记录安全度量结果。
度量方法包括但不限于使用公钥算法进行签名验签。若度量成功,将执行步骤S307、加载运行BL2固件;若度量失败,退出安全/可信启动流程。
S307、加载运行BL2固件。
S308、调用TCM密码模块对待运行的下一级固件进行安全度量并记录安全度量结果。
其中,运行BL2固件后的待运行的下一级固件,至少包括BL31固件,还可以包括BL32固件。
BL32固件作为安全操作系统是可选项,即BL32固件是可以配置运行或不运行的。因此对BL32进行安全度量和运行的处理步骤可能存在也可能不存在,如图12和图13中的虚线所示,该虚线所示的处理步骤可以根据实际情况是否需要运行BL32固件而选择执行或不执行。
在一些实现方式中,若在运行BL2固件后需要继续运行的固件有BL31固件和BL32固件,则参见图12所示,在执行步骤S308时可以分别执行步骤S308A和S308B:S308A、调用TCM密码模块对BL31固件进行安全度量并记录安全度量结果;S308B、调用TCM密码模块对BL32固件进行安全度量并记录安全度量结果。
若BL31固件和BL32固件安全,则可以执行步骤S309A、运行BL31固件,以及,执行步骤S309B、运行BL32固件;若BL31固件和/或BL32固件不安全,则退出安全/可信启动流程。
在另一些实现方式中,若在运行BL2固件后需要继续运行的固件有BL31固件和BL32固件,则参见图13所示,在执行步骤S308时,具体是先执行步骤S308A、调用TCM密码模块对BL31固件进行安全度量并记录安全度量结果。在确定BL31固件安全的情况下,执行步骤S309A、运行BL31固件;若BL31固件不安全,则退出安全/可信启动流程。
在运行BL31固件后再执行步骤S308B、调用TCM密码模块对BL32固件进行安全度量并记录安全度量结果。在确认BL32固件安全的情况下,执行步骤S309B、运行BL32固件;若BL32固件不安全,则退出安全/可信启动流程。
若系统启动过程不需要运行BL32固件,则上述图12和图13所示的启动流程中的虚线所示的关于BL32固件的安全度量和运行的步骤可以跳过不执行,继续执行后续步骤S310:
S310、加载运行BL33固件。
此处加载运行BL33固件,可以是加载运行在步骤S305中加载运行BL33固件时所没有运行的固件部分。
S311、利用所述TCM服务模块和/或所述TCM密码模块对计算设备的操作系统内核进行安全度量,并存储安全度量结果。
度量方法包括但不限于使用公钥算法进行签名验签。若度量成功,则继续执行后续步骤,若度量失败,退出安全/可信启动流程。
S312、加载所述操作系统内核,以完成所述计算设备的安全启动。
具体的,在确认计算设备的操作系统内核安全的情况下,加载操作系统内核,初始化硬件资源,并引导操作系统。
S313、安全/可信启动完成。
通过上述处理,可以实现计算设备的安全/可信启动,并且,由于调整了固件启动顺序,使得计算设备启动之初就使用户配置功能,然后按照用户配置的功能配置信息运行固件,从而可以避免不必要的固件程序运行和安全度量,有利于降低启动耗时,实现更快的计算设备安全启动。
在一些实现方式中,TCM密码模块又可以分为密码算法模块和密码算法的硬件资源,其中,密码算法模块可提供TRNG、可信根、密码算法、签名验签等标准的接口,而其所需的硬件资源来自密码算法的硬件资源。密码算法的硬件资源可以与密码算法模块构建在同一子系统中,从而便于密码算法对硬件资源的调用。比如,密码算法模块和密码算法的硬件资源均构建在SE中合封。
或者,密码算法的硬件资源可以与密码算法模块构建在不同子系统中,比如图14所示,密码算法模块构建在TEE中,密码算法的硬件资源构建在SE中,此时,密码算法模块的软件接口,需要转接到SE服务接口,从而使得密码算法模块实现对密码算法的硬件资源的调用。
基于图14所示的安全架构系统,在计算设备执行图12所示的安全启动过程时,利用TCM密码模块对固件进行安全度量,并记录安全度量结果,具体可以是调用SE中的密码算法的硬件资源对固件进行安全度量,并记录安全度量结果。
与上述的安全启动方法相对应的,本申请实施例同时提出了一种安全架构系统。在该安全架构系统中,搭载有富执行环境子系统REE、可信执行环境子系统TEE和安全元件子系统SE,所述安全架构系统中构建有可信密码服务模块,所述可信密码服务模块包括TCM服务模块和TCM密码模块,其中,TCM服务模块和TCM密码模块构建在除所述富执行环境子系统REE之外的不同子系统中。比如,TCM服务模块构建在可信执行环境子系统TEE中,TCM密码模块构建在安全元件子系统SE中,从而得到图10(a)所示的安全架构系统,或者,TCM服务模块构建在安全元件子系统SE中,TCM密码模块构建在可信执行环境子系统TEE中,从而得到图11(a)所示的安全架构系统。
上述的安全架构系统可以用于执行计算设备的处理器系统软件栈,并且,该安全架构系统被配置为执行上述任意实施例介绍的安全启动方法,即,在所述安全架构系统的启动过程中,按照预设的固件运行顺序运行各个固件,以及利用所述TCM密码模块对固件进行安全度量,并记录安全度量结果;
其中,所述预设的固件运行顺序包括:在运行BL1固件后运行BL33固件,以使用户在所述BL33固件运行时进行功能模块配置得到功能配置信息,所述功能配置信息用于在所述安全架构系统的启动过程中进行功能初始化。
在一些实现方式中,上述的安全架构系统中的TCM密码模块还可以进一步划分为密码算法模块和密码算法的硬件资源,其中,密码算法模块可提供TRNG、可信根、密码算法、签名验签等标准的接口,而其所需的硬件资源来自密码算法的硬件资源。密码算法的硬件资源可以与密码算法模块构建在同一子系统中,从而便于密码算法对硬件资源的调用。比如图10(b)中的安全架构系统所示,密码算法模块和密码算法的硬件资源均构建在SE中合封。
或者,密码算法的硬件资源可以与密码算法模块构建在不同子系统中,比如图14所示,密码算法模块构建在TEE中,密码算法的硬件资源构建在SE中,此时,密码算法模块的软件接口,需要转接到SE服务接口,从而使得密码算法模块实现对密码算法的硬件资源的调用。
将图14所示的安全架构系统应用于计算设备,在计算设备执行上述的安全启动方法时,利用TCM密码模块对固件进行安全度量,并记录安全度量结果,具体可以是调用SE中的密码算法的硬件资源对固件进行安全度量,并记录安全度量结果。
通过执行上述的安全启动方法,本申请实施例提出的安全架构系统应用于计算设备,可以在保证计算设备启动过程的安全性的同时,进一步降低启动功耗,缩短启动时长。
本实施例提供的安全架构系统,与本申请上述实施例所提供的安全启动方法属于同一申请构思,可执行本申请上述任意实施例所提供的安全启动方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本申请上述实施例提供的安全启动方法的具体处理内容,此处不再加以赘述。
在本申请另一实施例中,还提出一种计算设备,该计算设备被配置为执行上述任意实施例所介绍的安全启动方法,或者,该计算设备包括上述的安全架构系统,从而使得该计算设备的安全架构系统在启动时执行上述任意实施例所介绍的安全启动方法。基于上述设计,该计算设备能够实现更加快速的安全启动。
该计算设备,可以是任意的包含处理器并且在启动过程中存在固件启动操作的电子设备,比如可以是个人计算机、工业计算机、服务器、工作站、手持终端设备、智能终端设备、可穿戴设备等。
在本申请的上述任意实施例中,处理器是一种具有信号的处理能力的电路,在一种实现中,处理器可以是具有指令读取与运行能力的电路,例如CPU、微处理器、GPU、或DSP等;在另一种实现中,处理器可以通过硬件电路的逻辑关系实现一定功能,该硬件电路的逻辑关系是固定的或可以重构的,例如处理器为ASIC或PLD实现的硬件电路,例如FPGA等。在可重构的硬件电路中,处理器加载配置文档,实现硬件电路配置的过程,可以理解为处理器加载指令,以实现以上部分或全部单元的功能的过程。此外,还可以是针对人工智能设计的硬件电路,其可以理解为一种ASIC,例如NPU、TPU、DPU等。
本申请另一实施例还提出另一种计算设备,参见图15所示,该计算设备包括:
存储器200和处理器210;
其中,所述存储器200与所述处理器210连接,用于存储程序;
所述处理器210,用于通过运行所述存储器200中存储的程序,实现上述任一实施例公开的安全启动方法。
具体的,上述计算设备还可以包括:总线、通信接口220、输入设备230和输出设备240。
处理器210、存储器200、通信接口220、输入设备230和输出设备240通过总线相互连接。其中:
总线可包括一通路,在计算机系统各个部件之间传送信息。
处理器210可以是通用处理器,例如通用中央处理器(CPU)、微处理器等,也可以是特定应用集成电路(application-specific integrated circuit,ASIC),或一个或多个用于控制本发明方案程序执行的集成电路。还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
处理器210可包括主处理器,还可包括基带芯片、调制解调器等。
存储器200中保存有执行本发明技术方案的程序,还可以保存有操作系统和其他关键业务。具体地,程序可以包括程序代码,程序代码包括计算机操作指令。更具体的,存储器200可以包括只读存储器(read-only memory,ROM)、可存储静态信息和指令的其他类型的静态存储设备、随机存取存储器(random access memory,RAM)、可存储信息和指令的其他类型的动态存储设备、磁盘存储器、flash等等。
输入设备230可包括接收用户输入的数据和信息的装置,例如键盘、鼠标、摄像头、扫描仪、光笔、语音输入装置、触摸屏、计步器或重力感应器等。
输出设备240可包括允许输出信息给用户的装置,例如显示屏、打印机、扬声器等。
通信接口220可包括使用任何收发器一类的装置,以便与其他设备或通信网络通信,如以太网,无线接入网(RAN),无线局域网(WLAN)等。
处理器210执行存储器200中所存放的程序,以及调用其他设备,可用于实现本申请上述实施例所提供的任意一种安全启动方法的各个步骤。
本申请实施例还提出一种芯片,该芯片包括处理器和数据接口,所述处理器通过所述数据接口读取并运行存储器上存储的程序,以执行上述任意实施例所介绍的安全启动方法,具体处理过程及其有益效果可参见上述的安全启动方法的实施例介绍。
除了上述方法和设备以外,本申请的实施例还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器或处理器架构系统运行时使得所述处理器或所述处理器架构系统执行本说明书上述任意实施例中描述的安全启动方法中的步骤。
所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本申请实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
此外,本申请的实施例还可以是存储介质,其上存储有计算机程序,计算机程序被处理器或处理器的系统架构运行时,执行本说明书上述任意实施例中描述的安全启动方法中的步骤。
对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本申请并不受所描述的动作顺序的限制,因为依据本申请,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本申请所必须的。
需要说明的是,本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。对于装置类实施例而言,由于其与方法实施例基本相似,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
本申请各实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减,各实施例中记载的技术特征可以进行替换或者组合。
本申请各实施例种装置及终端中的模块和子模块可以根据实际需要进行合并、划分和删减。
本申请所提供的几个实施例中,应该理解到,所揭露的终端,装置和方法,可以通过其它的方式实现。例如,以上所描述的终端实施例仅仅是示意性的,例如,模块或子模块的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个子模块或模块可以结合或者可以集成到另一个模块,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或模块的间接耦合或通信连接,可以是电性,机械或其它的形式。
作为分离部件说明的模块或子模块可以是或者也可以不是物理上分开的,作为模块或子模块的部件可以是或者也可以不是物理模块或子模块,即可以位于一个地方,或者也可以分布到多个网络模块或子模块上。可以根据实际的需要选择其中的部分或者全部模块或子模块来实现本实施例方案的目的。
另外,在本申请各个实施例中的各功能模块或子模块可以集成在一个处理模块中,也可以是各个模块或子模块单独物理存在,也可以两个或两个以上模块或子模块集成在一个模块中。上述集成的模块或子模块既可以采用硬件的形式实现,也可以采用软件功能模块或子模块的形式实现。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
结合本文中所公开的实施例描述的方法或算法的步骤可以直接用硬件、处理器执行的软件单元,或者二者的结合来实施。软件单元可以置于随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质中。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (15)
1.一种安全启动方法,其特征在于,应用于安全架构系统,所述安全架构系统搭载有富执行环境子系统、可信执行环境子系统和安全元件子系统,所述安全架构系统中构建有可信密码服务模块,所述可信密码服务模块包括TCM服务模块和TCM密码模块,其中,所述TCM服务模块和所述TCM密码模块构建在除所述富执行环境子系统之外的不同子系统中;
所述方法包括:
在所述安全架构系统的启动过程中,按照预设的固件运行顺序运行各个固件,以及利用所述TCM密码模块对固件进行安全度量,并记录安全度量结果;
其中,所述预设的固件运行顺序包括:在运行BL1固件后运行BL33固件,以使用户在所述BL33固件运行时进行功能模块配置得到功能配置信息,所述功能配置信息用于在所述安全架构系统的启动过程中进行功能初始化。
2.根据权利要求1所述的方法,其特征在于,利用所述TCM密码模块对固件进行安全度量,包括:
在运行固件时,利用所述TCM密码模块对待运行的下一级固件进行安全度量,并记录安全度量结果。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在确认所述待运行的下一级固件安全的情况下,所述安全架构系统运行所述待运行的下一级固件;
在确认所述待运行的下一级固件不安全的情况下,退出所述安全架构系统的启动流程。
4.根据权利要求2所述的方法,其特征在于,在运行的固件为BL2固件的情况下,利用所述TCM密码模块对待运行的下一级固件进行安全度量,并记录安全度量结果,包括:
利用所述TCM密码模块对BL31固件和BL32固件进行安全度量,并记录安全度量结果。
5.根据权利要求2所述的方法,其特征在于,在运行的固件为BL2固件的情况下,利用所述TCM密码模块对待运行的下一级固件进行安全度量,并记录安全度量结果,包括:
利用所述TCM密码模块对BL31固件进行安全度量,并记录安全度量结果;
在确认所述BL31固件安全的情况下,运行所述BL31固件,并利用所述TCM密码模块对BL32固件进行安全度量,并记录安全度量结果。
6.根据权利要求1至5中任意一项所述的方法,其特征在于,所述TCM服务模块构建在所述可信执行环境子系统中,所述TCM密码模块构建在所述安全元件子系统中。
7.根据权利要求6所述的方法,其特征在于,所述TCM密码模块包括密码算法模块和密码算法的硬件资源,所述密码算法模块和所述密码算法的硬件资源构建在所述安全元件子系统中;
或者,所述密码算法模块构建在所述可信执行环境子系统中,所述密码算法的硬件资源构建在所述安全元件子系统中。
8.根据权利要求7所述的方法,其特征在于,在所述密码算法模块构建在所述可信执行环境子系统中,所述密码算法的硬件资源构建在所述安全元件子系统中的情况下,利用所述TCM密码模块对固件进行安全度量,并记录安全度量结果,包括:
调用所述密码算法的硬件资源对固件进行安全度量,并记录安全度量结果。
9.根据权利要求1所述的方法,其特征在于,所述安全架构系统内置有可信根,所述方法还包括:
执行所述可信根,以及对所述安全架构系统进行硬件自检;
在硬件自检通过的情况下,所述安全架构系统按照预设的固件运行顺序运行各个固件;
在硬件自检不通过的情况下,退出所述安全架构系统的启动流程。
10.根据权利要求1所述的方法,其特征在于,所述安全架构系统被设置在计算设备中,所述方法还包括:
利用所述TCM服务模块和/或所述TCM密码模块对所述计算设备的操作系统内核进行安全度量,并存储安全度量结果。
11.根据权利要求10所述的方法,其特征在于,所述方法还包括:
在确认所述计算设备的操作系统内核安全的情况下,加载所述操作系统内核,以完成所述计算设备的安全启动。
12.一种安全架构系统,其特征在于,所述安全架构系统搭载有富执行环境子系统、可信执行环境子系统和安全元件子系统,所述安全架构系统中构建有可信密码服务模块,所述可信密码服务模块包括TCM服务模块和TCM密码模块,其中,所述TCM服务模块和所述TCM密码模块构建在除所述富执行环境子系统之外的不同子系统中;
所述安全架构系统被配置为:在所述安全架构系统的启动过程中,按照预设的固件运行顺序运行各个固件,以及利用所述TCM密码模块对固件进行安全度量,并记录安全度量结果;
其中,所述预设的固件运行顺序包括:在运行BL1固件后运行BL33固件,以使用户在所述BL33固件运行时进行功能模块配置得到功能配置信息,所述功能配置信息用于在所述安全架构系统的启动过程中进行功能初始化。
13.根据权利要求12所述的安全架构系统,其特征在于,所述TCM服务模块构建在所述可信执行环境子系统中,所述TCM密码模块构建在所述安全元件子系统中。
14.根据权利要求13所述的安全架构系统,其特征在于,所述TCM密码模块包括密码算法的服务接口模块和密码算法的硬件资源,所述密码算法的服务接口模块和所述密码算法的硬件资源构建在所述安全元件子系统中;
或者,所述密码算法的服务接口模块构建在所述可信执行环境子系统中,所述密码算法的硬件资源构建在所述安全元件子系统中。
15.一种计算设备,其特征在于,所述计算设备被配置为实现如权利要求1至11中任意一项所述的安全启动方法,或者,所述计算设备包括权利要求12至14中任意一项所述的安全架构系统。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311282133.8A CN117390631A (zh) | 2023-09-28 | 2023-09-28 | 安全启动方法、安全架构系统及计算设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311282133.8A CN117390631A (zh) | 2023-09-28 | 2023-09-28 | 安全启动方法、安全架构系统及计算设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117390631A true CN117390631A (zh) | 2024-01-12 |
Family
ID=89440072
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311282133.8A Pending CN117390631A (zh) | 2023-09-28 | 2023-09-28 | 安全启动方法、安全架构系统及计算设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117390631A (zh) |
-
2023
- 2023-09-28 CN CN202311282133.8A patent/CN117390631A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP6053786B2 (ja) | Arm(登録商標)トラストゾーン実施のためのファームウェア基盤トラステッドプラットフォームモジュール(tpm) | |
US8201239B2 (en) | Extensible pre-boot authentication | |
US9189631B2 (en) | Firmware authentication | |
US8909940B2 (en) | Extensible pre-boot authentication | |
US8522018B2 (en) | Method and system for implementing a mobile trusted platform module | |
Zhao et al. | Providing root of trust for ARM TrustZone using on-chip SRAM | |
US8335931B2 (en) | Interconnectable personal computer architectures that provide secure, portable, and persistent computing environments | |
KR101066727B1 (ko) | 컴퓨팅 장치의 보안 부팅 | |
CN102103673B (zh) | 在隐藏执行环境中提供完整性验证和证明 | |
JP4848458B2 (ja) | 永続的セキュリティシステム及び永続的セキュリティ方法 | |
US20070180509A1 (en) | Practical platform for high risk applications | |
CN110334512B (zh) | 基于双体系架构的可信计算平台的静态度量方法和装置 | |
CN100447736C (zh) | 包括固件接口运行时环境保护字段的设备和方法 | |
JP2006501581A (ja) | サーバ管理コプロセッササブシステム内部のtcpaによる信頼性の高いプラットフォームモジュール機能のカプセル化 | |
US10853086B2 (en) | Information handling systems and related methods for establishing trust between boot firmware and applications based on user physical presence verification | |
US11106798B2 (en) | Automatically replacing versions of a key database for secure boots | |
WO2020076408A2 (en) | Trusted booting by hardware root of trust (hrot) device | |
CN115618364B (zh) | 实现安全可信启动的方法、安全架构系统及相关设备 | |
Gallery et al. | Trusted computing: Security and applications | |
US11748520B2 (en) | Protection of a secured application in a cluster | |
CN115618365B (zh) | 实现安全可信启动的方法、安全架构系统及相关设备 | |
Safford et al. | Take control of TCPA | |
US20160048663A1 (en) | Systems and methods for automatic generation and retrieval of an information handling system password | |
US11657158B2 (en) | Systems and methods for extending boot security trust chaining to state changes between boot sessions | |
CN117390631A (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 |