CN118211225A - 一种安全架构系统、实现安全可信启动的方法和计算设备 - Google Patents
一种安全架构系统、实现安全可信启动的方法和计算设备 Download PDFInfo
- Publication number
- CN118211225A CN118211225A CN202211624051.2A CN202211624051A CN118211225A CN 118211225 A CN118211225 A CN 118211225A CN 202211624051 A CN202211624051 A CN 202211624051A CN 118211225 A CN118211225 A CN 118211225A
- Authority
- CN
- China
- Prior art keywords
- firmware
- tcm
- tpcm
- control module
- subsystem
- 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 298
- 230000008569 process Effects 0.000 claims abstract description 209
- 238000005259 measurement Methods 0.000 claims abstract description 112
- 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 claims 31
- 238000005516 engineering process Methods 0.000 abstract description 35
- 238000010276 construction Methods 0.000 abstract description 13
- 238000013461 design Methods 0.000 abstract description 8
- 238000004422 calculation algorithm Methods 0.000 description 49
- 238000012795 verification Methods 0.000 description 42
- 238000012360 testing method Methods 0.000 description 21
- 230000006870 function Effects 0.000 description 18
- 238000004590 computer program Methods 0.000 description 17
- 238000010586 diagram Methods 0.000 description 15
- 230000004044 response Effects 0.000 description 15
- 238000009795 derivation Methods 0.000 description 12
- 238000001514 detection method Methods 0.000 description 12
- 230000009286 beneficial effect Effects 0.000 description 10
- 230000000750 progressive effect Effects 0.000 description 9
- 230000002349 favourable effect Effects 0.000 description 8
- 238000001994 activation Methods 0.000 description 6
- 230000008901 benefit Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 6
- 230000003068 static effect Effects 0.000 description 6
- 230000004913 activation Effects 0.000 description 5
- 230000000977 initiatory effect Effects 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 4
- 238000012545 processing Methods 0.000 description 4
- 239000008186 active pharmaceutical agent Substances 0.000 description 3
- 238000004364 calculation method Methods 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 230000003993 interaction Effects 0.000 description 3
- 238000002955 isolation Methods 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 238000005457 optimization Methods 0.000 description 3
- 238000004883 computer application Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 101000873502 Homo sapiens S-adenosylmethionine decarboxylase proenzyme Proteins 0.000 description 1
- 102100035914 S-adenosylmethionine decarboxylase proenzyme Human genes 0.000 description 1
- 239000004433 Thermoplastic polyurethane Substances 0.000 description 1
- 241000700605 Viruses Species 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 239000003814 drug Substances 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 230000002708 enhancing effect Effects 0.000 description 1
- ZXQYGBMAQZUVMI-GCMPRSNUSA-N gamma-cyhalothrin Chemical compound CC1(C)[C@@H](\C=C(/Cl)C(F)(F)F)[C@H]1C(=O)O[C@H](C#N)C1=CC=CC(OC=2C=CC=CC=2)=C1 ZXQYGBMAQZUVMI-GCMPRSNUSA-N 0.000 description 1
- 230000005484 gravity Effects 0.000 description 1
- 230000007124 immune defense Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 239000000463 material Substances 0.000 description 1
- 238000000691 measurement method Methods 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000011022 operating instruction Methods 0.000 description 1
- 230000008520 organization Effects 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 229920002803 thermoplastic polyurethane Polymers 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Landscapes
- Stored Programmes (AREA)
Abstract
本申请提供了一种安全架构系统、实现安全可信启动的方法和计算设备,其中,在所述安全架构系统的第三子系统中集成了包括TCM和TPCM控制模块的安全服务平台,不仅利用了硬件可信根技术对固件进行逐级验证,实现安全启动技术的信任链构建;同时,利用了所述TCM服务模块和/或所述TCM密码模块对启动过程中加载运行的固件进行可信度量、可信存储及可信报告,实现可信计算技术的信任链构建。同时,所述第二子系统和所述第三子系统可以运行在同一个处理器核(即第一处理器核)上,而不是分开运行在不同的处理器核上,以这种方式,可以节省处理器资源;另外,以同构的方式设置,可以降低设计复杂度。
Description
技术领域
本说明书涉及计算机应用技术领域,具体来说,涉及计算机应用技术领域下的可信计算技术,更具体地说,涉及一种安全架构系统、实现安全可信启动的方法和计算设备。
背景技术
可信计算(Trusted Computing,TC)是一项由TCG(Trusted Computing Group,可信计算组织)推动和开发的技术。可信的核心目标之一是保证系统和应用的完整性,从而确定系统或软件运行在设计目标期望的可信状态。
为了掌握在可信计算领域的技术主导权和产业主导权,保障国际信息安全的核心技术掌握在自己手中,我国在可信计算领域推出了TCM(Trusted Cryptography Module,可信密码模块)标准。TCM可以对计算机系统中运行的对象进行度量,实现对度量对象是否可信的评估。在TCM标准的基础上,我国又推出了集成定制化控制机制的TPCM(TrustedPlatform Control Module,可信平台控制模块)标准。
随着可信计算技术的成熟,可信计算技术也逐步应用到各种计算设备中,如何使得可信计算技术兼容各类计算设备,是本领域技术人员努力的方向之一。
发明内容
为解决上述技术问题,本申请提供了一种安全架构系统、安全服务方法和计算设备,以实现兼容TCM和TPCM对计算设备在启动过程中运行的固件进行度量的目的,以满足各类计算设备的可信启动的要求。
为实现上述技术目的,本申请实施例提供了如下技术方案:
第一方面,提供了一种安全架构系统,包括:第一子系统、第二子系统和第三子系统,所述第一子系统、所述第二子系统和所述第三子系统各自对应的安全等级依次递增,所述第二子系统和所述第三子系统运行在第一处理器核中,所述安全架构系统构建有安全服务平台,所述安全服务平台内置有可信密码模块TCM,所述安全服务平台还搭载有TPCM控制模块,所述TPCM控制模块用于通过软件方式调用所述TCM,所述TCM和所述TPCM控制模块运行于所述第三子系统,所述安全服务平台配置成:
响应于上电请求,执行启动过程,在所述启动过程中,利用所述TCM或所述TPCM控制模块对启动过程中运行的固件进行度量,并记录度量结果。
在本实施方式中,通过在安全架构系统中集成包括TCM和TPCM控制模块的安全服务平台,并配置安全服务模块在启动过程中,利用所述TCM或所述TPCM控制模块对启动过程中运行的固件进行度量,并记录度量结果,实现了兼容TCM和TPCM两种控制路线实现可信启动的目的,提高了安全架构系统的适用性。
同时,所述第二子系统和所述第三子系统可以运行在同一个处理器核(即第一处理器核)上,而不是分开运行在不同的处理器核上,以这种方式,可以节省处理器资源;另外,以同构的方式设置,可以降低设计复杂度。
另外,需要说明的是,相关现有技术中,外置TPM以及TCM的实现方式,会额外增加计算机设备中硬件资源的消耗。而本申请提出的发明构思,在不涉及可信计算的场景下,可以直接升级传统技术中关于处理器的设置;在涉及可信计算的场景下,可以直接更新处理器中关于可信技术的设置。这里,关于可信技术的实现方案可以包括:(外置TPM以及TCM中的一个或多个;或者,处理器内部集成一个TPM;或者,处理器内部集成一个TCM)。
在一种实施方式中,所述安全服务平台利用所述TCM或所述TPCM控制模块对启动过程中运行的固件进行度量具体用于:
利用所述TCM或所述TPCM控制模块对以下固件中的一种或多种进行度量:BL2固件、BL31固件、BL32固件、BL33固件。
在本实施例中,所述安全服务平台可以根据计算设备的实际情况或对安全/可信启动的实际需要,在启动过程中对BL2固件、BL31固件、BL32固件和BL33固件进行有选择性的度量,在保障安全架构系统的安全性的基础上,提升安全架构系统对各应用场景的适用性。
在一种实施方式中,所述安全服务平台执行启动过程,在所述启动过程中,利用所述TCM或所述TPCM控制模块对以下固件中的一种或多种进行度量:BL2固件、BL31固件、BL32固件、BL33固件具体用于:
运行所述BL2固件,初始化所述安全架构系统的处理器内核;
对所述TCM的硬件资源进行自检。在该步骤中,对TCM的硬件资源的自检可以包括对TCM的随机数产生器(例如可以是TRNG)、密码算法硬件引擎等硬件资源的自检;
在所述TCM的硬件资源自检通过的情况下,加载运行所述TCM和所述TPCM控制模块;
利用TCM或所述TPCM控制模块对所述BL2固件进行度量。
在本实施例中,选择对BL2固件和BL31、BL32和BL33固件的部分或全部进行度量,在保障安全系统架构的安全性的基础上,有利于实现安全架构系统的可信启动,提高安全/可信启动的效率。
另外,在度量的过程中,通过对TCM密码模块的硬件资源进行自检,有利于保证度量所需硬件的可靠性和度量过程的安全性。
在一种实施方式中,所述安全服务平台运行所述BL2固件之后还用于:
利用所述BL2固件对所述BL31固件进行签名认证。
在本实施例中,利用BL2固件、TCM/TPCM控制模块对BL31固件进行双重认证,实现了安全/可信启动的有机结合,提高了安全架构系统的安全性。
在一种实施方式中,所述安全服务平台还包括可信根,所述可信根包括BL1固件;
所述安全服务平台在运行所述BL2固件之前,还用于:
执行所述可信根,对所述第一处理器核和所述TCM的可信计算硬件资源进行自检,若自检失败则终止所述启动过程,若自检成功,则利用所述可信根对所述BL2固件进行签名认证;
所述安全服务平台运行所述BL2固件具体用于:
在所述BL2固件认证通过的情况下,运行所述BL2固件。
在本实施例中,将BL1固件作为可信根,从可信根开始执行,保障了整个启动链条的安全/可信,提高了安全架构系统的安全性。
在一种实施方式中,所述安全服务平台还包括可信根;
所述安全服务平台在运行所述BL2固件之前,还用于:
执行所述可信根,对所述第一处理器核和所述TCM的可信计算硬件资源进行自检,若自检失败则终止所述启动过程,若自检成功,在所述可信根中运行所述TCM和所述TPCM控制模块;
利用所述TCM或所述TPCM控制模块对所述BL2固件进行签名认证;
所述安全服务平台运行所述BL2固件具体用于:
在所述BL2固件认证通过的情况下,运行所述BL2固件。
在本实施例中,通过在可信根中加载TCM和TPCM控制模块,使得TCM和TPCM控制模块可以较早开始运行,可以实现对启动过程中的固件的完整度量,实现了整个启动链条的安全/可信,提高了安全架构系统的安全性。
在一种实施方式中,所述安全服务平台加载运行所述TCM具体用于:
加载所述TCM;
运行所述TCM的自检程序,并获得所述TCM的自检程序返回的自检结果,若所述自检结果为自检失败,则终止所述启动过程。
TCM的自检可以包括对其核心硬件资源的自检,在一些实施例中,可以由BL1固件实现。TCM的自检程序可以是TCM内置的Self-Task程序,通过运行该自检程序,保障TCM除硬件资源外的其他资源的安全可信。
在一种实施方式中,所述安全服务平台运行所述TPCM控制模块的过程包括:
运行所述TPCM控制模块,根据所述TPCM控制模块的可用状态,设置所述TPCM控制模块的标志位,所述TPCM控制模块的标志位用于表征所述TPCM控制模块是否可用;
所述安全服务平台利用所述TCM或所述TPCM控制模块对以下固件中的一种或多种进行度量:BL2固件、BL31固件、BL32固件、BL33固件具体用于:
检测所述TPCM控制模块的标志位,若所述TPCM控制模块的标志位表征所述TPCM控制模块可用,利用所述TPCM控制模块对所述BL2固件、BL31固件、BL32固件和BL33固件中的一种或多种进行度量;
若所述TPCM控制模块的标志位表征所述TPCM控制模块不可用,利用所述TCM模块对所述BL2固件、BL31固件、BL32固件和BL33固件中的一种或多种进行度量。
在本实施例中,在TPCM控制模块加载时,设置表征TPCM控制模块是否可用的标志位,并在TPCM控制模块可用时,优先采用TPCM控制模块进行对启动过程中运行的固件进行度量,有利于发挥可信计算3.0路线的技术优势,保障安全/可信启动流程的自主可控和安全可信。
在一种实施方式中,所述安全架构系统被设置在计算设备中,所述安全服务平台还用于:
利用所述TCM或所述TPCM控制模块对所述计算设备的操作系统内核进行度量;
在所述计算设备的操作系统内核度量结果为通过时,加载所述操作系统内核,以初始化所述计算设备的硬件资源以及引导所述操作系统,从而完成所述计算设备的启动。
本实施例中,实现了利用所述TCM或所述TPCM控制模块对所述计算设备的操作系统内核进行度量的操作,保障了启动过程的全链条安全与可信。
第二方面,提供了一种实现安全可信启动的方法,应用于安全架构系统,所述安全架构系统包括:第一子系统、第二子系统和第三子系统,所述第一子系统、所述第二子系统和所述第三子系统各自对应的安全等级依次递增,所述第二子系统和所述第三子系统运行在第一处理器核中,所述安全架构系统构建有安全服务平台,所述安全服务平台内置有可信密码模块TCM,所述安全服务平台还搭载有TPCM控制模块,所述TPCM控制模块用于通过软件方式调用所述TCM,所述TCM和所述TPCM控制模块运行于所述第三子系统,所述实现安全可信启动的方法包括:
响应于上电请求,执行启动过程,在所述启动过程中,利用所述TCM或所述TPCM控制模块对启动过程中运行的固件进行度量,并记录度量结果。
在一种实施方式中,所述在所述启动过程中,利用所述TCM或所述TPCM控制模块对启动过程中运行的固件进行度量包括:
利用所述TCM或所述TPCM控制模块对以下固件中的一种或多种进行度量:BL2固件、BL31固件、BL32固件、BL33固件。
第三方面,提供了一种计算设备,包括如上述任一项所述的安全架构系统。
第四方面,提供了一种启动装置,应用于安全架构系统,所述安全架构系统包括:第一子系统、第二子系统和第三子系统,所述第一子系统、所述第二子系统和所述第三子系统各自对应的安全等级依次递增,所述第二子系统和所述第三子系统运行在第一处理器核中,所述安全架构系统构建有安全服务平台,所述安全服务平台内置有可信密码模块TCM,所述安全服务平台还搭载有TPCM控制模块,所述TPCM控制模块用于通过软件方式调用所述TCM,所述TCM和所述TPCM控制模块运行于所述第三子系统,所述启动装置包括:
度量模块,用于响应于上电请求,执行启动过程,在所述启动过程中,利用所述TCM或所述TPCM控制模块对启动过程中运行的固件进行度量,并记录度量结果。
第五方面,提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时,实现如上述的实现安全可信启动的方法。
第六方面,本说明书实施例提供了一种计算机程序产品或计算机程序,所述计算机程序产品包括计算机程序,所述计算机程序存储在计算机可读存储介质中;所述计算机设备的处理器从所述计算机可读存储介质读取所述计算机程序,所述处理器执行所述计算机程序时实现上述的实现安全可信启动的方法的步骤。
从上述技术方案可以看出,本申请实施例提供了一种安全架构系统、实现安全可信启动的方法和计算设备,其中,在所述安全架构系统的第三子系统中集成了包括TCM和TPCM控制模块的安全服务平台,使得所述安全服务平台可以在启动过程中,利用TCM或TPCM控制模块对启动过程中运行的固件进行度量,并存储度量结果,存储的度量结果可以在计算设备联网后供远程验证,满足可信启动的要求。基于所述安全架构系统实现了兼容TCM和TPCM标准进行可信启动的目的。
同时,所述第二子系统和所述第三子系统可以运行在同一个处理器核(即第一处理器核)上,而不是分开运行在不同的处理器核上,以这种方式,可以节省处理器资源;另外,以同构的方式设置,可以降低设计复杂度。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本说明书的一个实施例提供的一种安全架构系统的结构示意图;
图2为本说明书的一个实施例提供的一种实现安全可信启动的方法的流程示意图;
图3为本说明书的一个实施例提供的另一种实现安全可信启动的方法的流程示意图;
图4为本说明书的一个实施例提供的又一种实现安全可信启动的方法的流程示意图;
图5为本说明书的一个实施例提供的另一种安全架构系统的结构示意图;
图6为本说明书的一个实施例提供的再一种实现安全可信启动的方法的流程示意图;
图7为本说明书的一个实施例提供的一种可选地实现安全可信启动的方法的流程示意图;
图8为本说明书的一个实施例提供的又一种安全架构系统的结构示意图;
图9为本说明书的一个实施例提供的另一种可选地实现安全可信启动的方法的流程示意图;
图10为本说明书的一个实施例提供的再一种安全架构系统的结构示意图;
图11为本说明书的一个实施例提供的又一种可选地实现安全可信启动的方法的流程示意图;
图12为本说明书的一个实施例提供的再一种可选地实现安全可信启动的方法的流程示意图;
图13为本说明书的另一个实施例提供的一种实现安全可信启动的方法的流程示意图;
图14为本说明书的一个实施例提供的一种可选地安全架构系统的结构示意图;
图15为本说明书的一个实施例提供的另一种可选地安全架构系统的结构示意图;
图16为本说明书的一个实施例提供的又一种可选地安全架构系统的结构示意图;
图17为本说明书的另一个实施例提供的另一种实现安全可信启动的方法的流程示意图;
图18为本说明书的一个实施例提供的再一种可选地安全架构系统的结构示意图;
图19为本说明书的另一个实施例提供的又一种实现安全可信启动的方法的流程示意图;
图20为本说明书的另一个实施例提供的一种安全架构系统的结构示意图;
图21为本说明书的另一个实施例提供的再一种实现安全可信启动的方法的流程示意图;
图22为本说明书的另一个实施例提供的另一种安全架构系统的结构示意图;
图23为本说明书的另一个实施例提供的一种可选地实现安全可信启动的方法的流程示意图;
图24为本说明书的另一个实施例提供的另一种可选地实现安全可信启动的方法的流程示意图;
图25为本说明书的另一个实施例提供的又一种安全架构系统的结构示意图;
图26为本说明书的另一个实施例提供的再一种安全架构系统的结构示意图;
图27为本说明书的一个实施例提供的一种实现安全可信启动的方法的流程框图;
图28为本说明书的一个实施例提供的一种计算设备的结构示意图。
具体实施方式
除非另外定义,本说明书实施例使用的技术术语或者科学术语应当为本说明书所属领域内具有一般技能的人士所理解的通常意义。本说明书实施例使用的“第一”、“第二”以及类似的词语并不表示任何顺序、数量或者重要性,而只是用来避免构成要素的混同而设置的。
除非上下文另有要求,否则,在整个说明书中,“多个”表示“至少两个”,“包括”被解释为开放、包含的意思,即为“包含,但不限于”。在说明书的描述中,术语“一个实施例”、“一些实施例”、“示例性实施例”、“示例”、“特定示例”或“一些示例”等旨在表明与该实施例或示例相关的特定特征、结构、材料或特性包括在本说明书的至少一个实施例或示例中。上述术语的示意性表示不一定是指同一实施例或示例。
下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本说明书保护的范围。
为便于理解,下面先对本说明书实施例中可能出现的部分名词或术语进行解释:
安全硬件架构,是为计算设备设计的一种系统架构,其目的是为计算设备构建一个安全框架来抵御各种可能的攻击。安全硬件架构的实现方式可以是将处理器的硬件和软件资源划分为安全(Secure World)和普通(Normal World)世界。所有需要保密的操作在安全世界执行(如指纹识别、密码处理、数据加解密和安全认证等),其余操作在普通世界执行(如用户操作系统、各种普通应用程序等),安全世界和普通世界通过一个名为监控模式(Monitor Mode)的模式进行转换。在处理器架构上,可以将物理的处理器核虚拟为两个核,一个非安全核(Non-secure Core,NS Core),运行普通世界的代码,另一个安全核(SecureCore),运行安全世界的代码。安全硬件架构的具体结构类型可参考Trust Zone(简称TZ)和SGX(Software Guard Extensions)技术。
可信固件(Trusted Firmware,TF)是一种安全解决方案,将计算设备启动和运行过程中的特权级进行了划分。这些特权级与安全硬件架构相结合,共同保障计算设备的启动过程的安全性。具体地,可信固件技术划分了EL0(Exception Level 0)到EL3共四个特权级。从EL0到EL3,特权级依次递增。从高LE转低EL通过ERET指令,从低EL转高EL通过exception,从而可以严格区分不同的特权级。其中EL0、EL1和EL2可以分成NS-ELx(NoneSecure ELx,x=0,1,2,即普通世界ELx)和S-ELx(Secure ELx,x=0,1,2,即安全世界ELx),而EL3只有安全世界EL3一种。在一些情形中,计算设备的启动过程所需运行的固件可以包括BL1固件、BL2固件、BL31固件、BL32固件和BL33固件。
其中,BL1固件可以称为Trusted Boot ROM(可信启动ROM),是启动过程中运行最早的固件,也是存储于处理器ROM(Read-Only Memory,只读存储器)中的固件,BL1固件与计算设备的BIOS并不在一起,在一些类型的可信固件技术中,BL1固件是一切的信任根。BL1固件可以用于初始化计算设备的核心硬件(例如Trusted SRAM(可信静态随机存取存储器)、串口等),并找到BL2硬件,一些情况下,BL1固件会对BL2固件进行验签。BL1固件运行在EL3特权级上。
BL2固件可以称为Trusted Boot Firmware(可信启动固件),BL2固件同样运行在EL3特权级上,BL2固件和BL1固件的显著不同是BL2固件可以存储在外置的可信存储设备上,它的可信可以是建立在BL1固件对它的验证上。BL2固件会初始化一些关键安全硬件和软件框架,BL2固件在初始化完成之后,会找到BL31。
BL31固件可以称为EL3 Runtime Firmware(EL3运行固件),BL31固件也运行在EL3特权级上,是EL3特权级最后的安全堡垒,BL31固件不像BL1固件和BL2固件是一次性运行的,它通过SMC(Secure Monitor Call,安全监视调用)为普通世界(Non-Secure)持续提供涉及安全的服务。
BL32固件可以包括OPTee OS(Open Portable Tee Operate System,开放可移植Tee操作系统)和可信应用,OPTee OS可以是指可信执行环境Tee的操作系统。BL32固件运行在S-EL1上,BL32固件上的可信应用运行在S-EL0。在一些情形下,OPTee OS运行完毕后,返回EL3的BL31固件,BL31固件找到BL33固件,BL31固件还可以验签BL33固件。
BL33固件可以包括运行在普通世界的固件(Non-Trusted Firmware),BL33固件可以包括面向桌面、服务器等领域的UEFI(Unified Extensible Firmware Interface,可扩展固件接口)固件或者U-boot(面向嵌入式领域的引导加载程序),也可以包括LinuxKernel(Linux内核),还可以包括基本输入输出系统(basic input output system,BIOS)固件。在普通世界下,EL0、EL1、EL2、EL3的执行权限依次增大。其中,UEFI固件被配置运行在普通世界的EL2级别,OP-TEE被配置运行在安全世界的EL1级别。在进入UEFI(BL33)启动的时候,OP-TEE已经完成启动,而UEFI与OP-TEE之间可以通过安全监控调用(secure monitorcall,SMC)接口进行通信。因此,在进行UEFI启动时,在对镜像文件进行完整性和安全性验证时,可以通过普通世界触发SMC方式调用安全世界的OP-TEE对应接口来实现某些功能,如此,可以将涉及到对镜像文件的验证过程传递到安全世界进行验证,并返回验证结果给普通世界。
可信计算(Trusted Computing,TC)是在计算设备中广泛使用的,基于安全服务模块支持的可信计算平台,以提高计算设备整体的安全性。
安全服务模块,是为计算设备提供完整性和真实性保障的安全芯片,一般通过物理方式被强绑定到计算设备的硬件平台中。安全服务器模块的核心功能是基于支持的密码算法构建可信计算3个维度的功能,包括:平台完整性度量与验证、平台可信身份标识与鉴别、平台数据保护。可选地,安全服务模块可以包括可信密码模块(Trusted CryptoModule,TCM)、可信平台模块(Trusted Platform Module,TPM)和可信平台控制模块(Trusted Platform Control Module,TPCM)中的至少一项。
TPM标准由TCG(Trusted Computing Group,是可信计算组织)推出,TPM技术规范遵循相应的国际规范,因此,它提供符合TPM国际规范的标准服务。通常的,TPM模块可包括TPM密码模块和TPM服务模块两部分。TPM密码模块和TPM服务模块配合工作能够支撑实现TPM可信计算技术的服务。
TCM,是我国借鉴国际可信计算技术框架与技术理念,结合国内可信计算技术的发展实际,提出的可信计算芯片。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/T 0004-2012《SM3密码杂凑算法》标准的算法),该算法将不定长度的文本压缩为32字节的摘要值。各密码算法采用的密钥可以不同。从上面的描述可以发现,TPM和TCM的主要区别在于支持的密码算法和密钥种类不同,且TCM的存储主密钥为对称密钥。TCM可以包括用于提供密钥算法和存储密钥的算法引擎(例如可以是SM2引擎、SM3引擎、SM4引擎)、HMAC引擎(基于SM3引擎的计算消息认证码单元)和随机数产生器(例如真随机数发生器,True Random Number Generator,TRNG)等部件构成,这些部件可以通过依托硬件和软件的结合实现。
TCM密码模块可以为具有受保护存储空间的独立模块,是可信计算密码支撑平台必备的关键基础部件。TCM密码模块可以包括可信计算硬件资源,也就是说,TCM密码模块能够为可信密码服务模块提供可信的基础计算资源。例如,TCM密码模块可以为可信密码服务模块提供密码运算、真随机数发生器(True Random Number Generator,TRNG)、安全存储等计算资源。TCM密码模块与系统交互的唯一接口是一组标准接口,该标准为中国国家密码管理局联合国内信息技术(Information Technology,IT)企业推出的中国标准。
TCM服务模块可以包括服务接口,换句话说,TCM服务模块可以为用户(或应用程序)调用TCM密码模块中的资源提供服务接口。在一些实施例中,TCM服务模块可以通过服务接口调用TCM密码模块,从而为应用程序提供可信度量、可信报告、可信存储等安全服务。在另一些实施例中,TCM服务模块也可以对TCM密码模块的资源进行管理,或者,TCM服务模块也可以隐藏TCM密码模块中的复杂功能命令,降低用户使用TCM密码模块的复杂度。中国国家密码管理局联合国内信息技术IT企业也推出了TCM服务模块的接口标准。而TCM服务模块具体的设计,不同厂商有各自不同的设计实现。
TPM密码模块,用于为TPM可信计算服务提供可信计算硬件资源,该可信计算硬件资源具体包括用于存储密钥、随机数等数据的存储空间,和用于多种密码算法的算法模块等硬件资源。例如,通常情况下,TPM密码模块能够支持摘要算法单元SHA-1,SHA-256,和加解密算法单元RSA、ECC、AES,并且也支持新算法。
TPM服务模块,可以是指用于调用TPM密码模块,提供服务接口的模块。相似的,TPM密码模块和TPM服务模块共同构成了完整的TPM。
可信平台控制模块TPCM,由TCM和平台控制机制组成,除提供密码服务功能之外,还提供平台控制功能,可以对系统中的总线进行控制,其中的平台控制机制可以称为TPCM控制模块(或TPCM模块),TPCM控制模块可以主动调用TCM提供诸如安全度量等安全服务。
安全服务,也可称为密码服务,是指安全服务模块基于自身支持的密码算法能够提供的服务类型。安全服务具体可以包括可信度量、可信存储和可信报告等等。可信存储可以是指通过密码机制实现数据的保密存储或完整性保护。可信报告可以是指向外界提供描述安全服务模块内部状态的报告。可信度量是指基于安全服务模块的密码算法,按照度量策略和度量基准值为计算设备中运行的其他对象的完整性和/或可信性的度量,根据该度量结果可对度量对象的运行状态进行控制。当对待度量对象的度量通过时,可以维持待度量对象原本的状态,或执行待度量对象在被可信度量之前预期需要执行的操作,当对待度量对象的度量不通过时,可以对待度量对象采取安全措施,例如,可以控制计算机复位,或者,可以控制待度量对象重新启动,以避免导致度量不通过的原因对计算机造成安全威胁。
可信根(Root of Trust,ROT)是安全架构系统可信的源头,是一个必然被信任的组件。对于一个安全系统架构中可信根的具体构成,不同的系统架构中有所不同,在一些情况下,可信根可以是指可信度量根(Root of Trust for Measurement,RTM)、可信存储根(Root of Trust for Storage,RTS)和可信报告根(Root of Trust for Reporting,RTR)。在一些情况下,可信根也可以是TPCM。在本说明书的一些实施方式中,可信根也可以是存储在只读存储器(Read-Only Memory,ROM)中,且在系统上电启动过程中运行的前一行(段)或前几行(段)代码(可以称为启动ROM或者处理器基础ROM(Processor Based ROM))。在一些实施方式中,由于BL1固件存储于ROM中,且属于启动过程中所需运行的固件,BL1固件也具有较难篡改、安全性较高的特点,因此可信根可以包括BL1固件。可信根可以认为是系统信任链建立的源头。
平台配置寄存器(Platform Configuration Register,PCR)是一组特殊的寄存器,这组寄存器将新写入值与寄存器中的原始值合并,进行一次Hash(哈希)计算,其运行结果作为PCR中的新值。一般我们将对特定对象的度量结果写入PCR寄存器中。
可信软件基(Trusted Software Base,TSB):可信软件基是可信计算体系的重要组成部分,基于运算和防护并存的双系统体系结构思想设计。软件层面的双系统即宿主基础软件和可信软件基。可信软件基在宿主基础软件运行时进行主动拦截和度量,不需要修改原应用,通过制定策略进行主动实时防护,从而破坏和阻止进入系统的病毒或木马等恶意软件,达到主动免疫防御的安全效果。
基板管理控制器(Baseboard Management Controller,BMC):广泛应用于服务器类计算机平台处理器带外管理子系统,其功能包括虚拟键盘、鼠标、显示器、电源管理控制和远程运维等,也包括对服务器平台的电源电压、温度、风扇状态、机箱状态等物流信息的监视。基板管理控制器是主板第一个上电启动的部件。
基本输入输出系统(Base Input/Output System,BIOS),基本输入输出系统通过I/O接口实现基本的输入输出操作。
本说明书实施例提供的安全架构系统是为了兼容TCM和TPCM对计算设备的启动过程中运行的固件进行度量的目标,满足各类计算设备的安全和可信启动的要求。
总的来说,本申请提出的实现安全可信启动的方法涵盖以下情形:
在一个实施例中,利用硬件可信根技术对固件进行逐级签名验证,实现安全启动技术的信任链构建,其中,固件可以包括BL1固件、BL2固件、BL31固件、BL32固件和BL33固件中的一种或多种;
一般情况下,BL1固件可以被设置在硬件可信根中,具有不可篡改的特性,是上电启动的第一段代码,是一切信任链的源头。在这种情况下,为实现安全启动技术,需先执行硬件可信根,之后,对BL2固件、BL31固件、BL32固件和BL33固件中的一种或多种进行逐级验证,示例性地,该逐级验证具体体现在:通过硬件可信根对BL2固件进行签名验证,之后,BL2固件对BL31固件进行签名验证,BL31固件对BL32和/或BL33固件分别进行签名验证。
在一个实施例中,在实现了上述安全启动技术的基础上,进一步利用TCM或TPCM控制模块对启动过程中加载运行的固件进行可信度量、可信存储及可信报告,实现可信计算技术的信任链构建。
其实现流程可以包括:上电,执行硬件可信根,之后,对BL2固件、BL31固件、BL32固件和BL33固件中的一种或多种进行逐级验证,示例性地,该逐级具体体现在:通过硬件可信根对BL2固件进行验证,之后,通过BL2固件对BL31固件、BL32和/或BL33固件进行逐个验证;或者说,通过BL2固件对BL31固件进行验证,之后,通过BL31固件对BL33固件进行验证;或者说,通过BL2固件对BL31固件进行验证,之后,通过BL31固件对BL32固件和BL33固件进行逐个验证;与此同时,TCM硬件自检,在自检成功的情况下,加载运行TCM或TPCM控制模块,在加载成功的情况下,利用所述TCM或所述TPCM控制模块对BL31固件、BL32固件、BL33固件中的至少一项进行度量,例如,利用所述TCM或所述TPCM控制模块对BL31固件、BL32固件和BL33固件进行逐个度量;或者说,利用所述TCM或所述TPCM控制模块对BL31固件和BL33固件进行逐个度量;若度量成功,安全/可信启动完成,若度量失败,安全/可信启动失败。在后续实施例中,将会具体阐述相关实现。
下面将结合附图对本说明书实施例提供的安全架构系统进行示例性说明。
示例性系统
本说明书实施例提供了一种安全架构系统,如图1所示,包括:第一子系统11、第二子系统12和第三子系统13,所述第一子系统11、所述第二子系统12和所述第三子系统13各自对应的安全等级依次递增,所述第二子系统12和所述第三子系统13运行在第一处理器核31中,所述安全架构系统100构建有安全服务平台20,所述安全服务平台20内置有可信密码模块TCM21,所述安全服务平台20还搭载有TPCM控制模块22,所述TPCM控制模块22用于通过软件方式调用所述TCM21,所述TCM21和所述TPCM控制模块22运行于所述第三子系统13,所述安全服务平台20配置成:
响应于上电请求,执行启动过程,在所述启动过程中,利用所述TCM21或所述TPCM控制模块22对启动过程中运行的固件进行度量,并记录度量结果。
在本实施例中,当安全架构系统100接收或检测到上电请求后,响应该上电请求优先于启动过程中所需运行的固件先行启动,利用TCM21或TPCM控制模块22实现对启动过程中所需运行的固件的主动度量,TCM21或TPCM控制模块22对固件的主动度量可以包括可信度量、可信存储和可信报告,实现可信计算技术的信任链构建。在一些实施方式中,为了便于实现对安全服务平台20的优先启动,所述安全服务平台20的TCM21和所述TPCM控制模块22可以与计算设备的处理器集成在同一块芯片中,如此可以减少安全服务平台20与集成处理器的芯片之间的外部通信接口,使得安全服务平台20可以便于接收或检测所述上电请求,也使得所述安全服务平台20方便利用所述TCM21或所述TPCM控制模块22对启动过程中运行的固件进行度量。
度量结果可以记录在安全架构系统100的PCR中,记录的度量结果可以在安全架构系统100启动完成后,提供远程验证服务,满足可信启动的要求。记录在PCR中的度量结果也可以用于生成可信报告,向外界提供描述安全架构系统100内部状态的报告。
TPCM控制模块22以软件方式调用所述TCM21可以是指TPCM控制模块22以向TCM21发送软件程序调用指令的方式调用所述TCM21。
上电请求可以是计算设备接通电源后的电源信号,也可以是计算设备接通电源后向安全架构系统100发送的请求启动系统的请求。
在一些实施例中,所述安全架构系统还可以包括可信根,基于可信根对固件进行逐级验证,实现安全启动技术的信任链构建,其中,固件可以包括BL1固件、BL2固件、BL31固件、BL32固件和BL33固件中的一种或多种。在一些实施方式中,可信根包括BL1固件,这种情况下,BL1固件具有不可篡改的特性,是上电启动的第一段代码,是一切信任链的源头。在这种情况下,所述安全架构系统还可以基于可信根实现系统的安全启动,具体地,安全启动过程可以包括:先执行可信根,之后对BL2固件、BL31固件、BL32固件和BL33固件中的一种或多种进行逐级签名验证。示例性地,该逐级签名验证过程可以包括:通过可信根对BL2固件进行签名验证,之后,通过BL2固件对BL31固件进行签名验证,通过BL31固件分别对BL32固件和BL33固件进行逐个签名验证,任意一级验证不通过均可以终止启动过程,以这种方式,可以实现安全架构系统的安全启动。可选地,在一些实施方式中,安全架构启动过程中运行的固件可以不包括BL32固件,此时BL31固件对BL33固件进行验证即可。
第一子系统11可以是普通执行环境(Rich Execution Environment,REE,也可称为富执行环境)子系统,该子系统可以用于运行计算设备的操作系统(Operating System,OS)和普通应用(也可称为客户端应用(Client Application,CA))等对象。
第二子系统12可以是可信执行环境(Trusted Execution Environment,TEE)子系统,该子系统可以用于运行可信应用(Trusted Application,TA),满足数字版权管理(Digital Rights Management,DRM)、移动支付和敏感数据保护等应用需求。
第三子系统13可以是安全元件子系统(Secure Element,SE),该子系统可以用于实施安全芯片技术,保证重要资源的安全性。
安全等级,也可称为安全保护等级,可以是指定义各子系统信息安全保护能力的等级。子系统的信息安全保护能力可以通过硬件隔离和/或软件隔离等方式保障。
图1中示出了在第一子系统11、第二子系统12和第三子系统13中可能运行/搭载的对象。例如,第一子系统11中可以运行系统固件、操作系统OS或虚拟机VM(VirtualMachine)。系统固件可以是实现为面向桌面、服务器等领域的可扩展固件接口(UnifiedExtensible Firmware Interface,UEFI),或者可以是实现为面向嵌入式领域的引导加载程序(U-Boot)。此外,基础固件、系统固件以及操作系统OS可以与带外控制系统(例如嵌入式控制器EC、基板管理控制器BMC等)进行通信。
第二子系统12可以运行第二子系统12依赖的安全操作系统(TEE OS)。在一些实施例中,第二子系统12中还可以运行可信应用TA。第二子系统12的安全等级高于第一子系统11,即第二子系统12的安全性高于第一子系统11,第二子系统12例如可以用于支持支付业务中校验支付环境等功能。第二子系统12可以向诸如第一子系统11及其上运行的普通应用提供可信服务并且与第一子系统11相隔离,即第一子系统11及其上运行的普通应用无法直接访问第二子系统12的硬件和软件资源。
第三子系统13运行的应用可以称为安全元件应用(Applet),其安全性高于第二子系统12。第三子系统13可以用于存储诸如根密钥等重要资源,通过权限校验、密码技术等手段来保证第三子系统13中存储的重要资源的安全性。在安全架构系统100中,通过这三个子系统之间的相互配合来保障计算环境的安全性。
除此之外,第一子系统11还用于运行普通应用程序(简称普通应用),其中的普通应用可以是涉及支付场景的应用,其中实现诸如浏览商品、选择商品、提交订单等基本业务。第二子系统12中可以运行可信应用,通过可信应用来对第一子系统11提供可信赖的运行环境,再通过对机密性、完整性的保护和数据访问权限的控制,确保端到端的安全性。此外,第二子系统12可以与第一子系统11并行运行,并且例如第二子系统12通过安全的应用程序编程接口(Application Programming Interface,API)与第一子系统11进行交互。作为示例,第一子系统11可以向第二子系统12传递可信服务发起请求,以请求第二子系统12提供相应的可信服务并基于请求做出响应。
第三子系统13相较于第二子系统12的安全等级更高,可以用于构建可信安全的资源存储和运算环境。一般情况下,第三子系统13中的软件系统相对简单,包括较少的硬件元器件,因此更容易建立物理防护和实施安全保障,从而提高第三子系统13的安全等级,以服务于对安全性要求更高的安全系统。作为示例,第二子系统12可以向第三子系统13传递安全服务请求,以请求第三子系统13提供相应的安全服务并基于请求做出响应,第二子系统12请求的安全服务例如可以是请求第三子系统13进行与密码运算相关的服务等。
例如,在一些实施例中,第一子系统11与第二子系统12不存在直接访问第三子系统13的物理通路,只能通过共享内存等交互的方式向第三子系统13提出请求,由第三子系统13向第一子系统11、第二子系统12提供服务。关于第三子系统13,作为一种实现方式,第三子系统13可以包括执行引擎、静态随机存取存储器(SRAM)、非易失性存储器,或者还可以包括密钥派生模块(Key Derivation Function,KDF)。其中,诸如根密钥等重要资源可以存入第三子系统13内的非易失性存储器,并且由第三子系统13的固件或硬件保证根密钥不具有传递出第三子系统13的软件或硬件路径。此外,第三子系统13内集成的密钥派生模块KDF例如可以实现为软件或硬件并用于实现基于根密钥产生派生密钥。例如,密钥派生模块KDF可以是哈希函数,通常用来将短密码变成长密码。具体的,上述共享内存可以是指在多处理器的计算机系统中,可以被不同处理器访问的大容量内存。在一些实施方式中,第三子系统13包括的执行引擎等资源可以作为TCM21和/或TPM的可信计算硬件资源。
在本实施例中,通过在安全架构系统100中集成包括TCM21和TPCM控制模块22的安全服务平台20,并配置安全服务模块在启动过程中,利用所述TCM21或所述TPCM控制模块22对启动过程中运行的固件进行度量,并记录度量结果,实现了兼容TCM和TPCM两种控制路线实现可信启动的目的,提高了安全架构系统的适用性。
为了灵活配置对启动过程中需要度量的固件,在本说明书的一些实施方式中,所述安全服务平台利用所述TCM或所述TPCM控制模块对启动过程中运行的固件进行度量具体用于:
利用所述TCM或所述TPCM控制模块对以下固件中的一种或多种进行度量:BL2固件、BL31固件、BL32固件、BL33固件。
关于BL2固件、BL31固件、BL32固件和BL33固件的限定可参考上文中的相关描述。
在本实施例中,所述安全服务平台可以根据计算设备的实际情况或对安全/可信启动的实际需要,在启动过程中对BL2固件、BL31固件、BL32固件和BL33固件进行有选择性的度量,在保障安全架构系统的安全性的基础上,提升安全架构系统对各应用场景的适用性。
下面的一些实施方式,介绍一些可能的具体启动流程,可选地,在本说明书的一个实施例中,参考图2,所述安全服务平台执行启动过程,在所述启动过程中,利用所述TCM或所述TPCM控制模块对以下固件中的一种或多种进行度量:BL2固件、BL31固件、BL32固件、BL33固件具体用于:
运行所述BL2固件,初始化所述安全架构系统的处理器内核。
对所述TCM的硬件资源进行自检。在该步骤中,对TCM的硬件资源的自检可以包括对TCM的随机数产生器(例如可以是TRNG)、密码算法硬件引擎等硬件资源的自检。
在所述TCM的硬件资源自检通过的情况下,加载运行所述TCM和所述TPCM控制模块。
利用TCM或所述TPCM控制模块对所述BL2固件进行度量。
利用所述TCM或所述TPCM控制模块对所述BL31固件、所述BL32固件、所述BL33固件中的一种或多种进行度量。
具体过程可参考图2,该过程可以包括:
S201:启动:响应于上电请求,执行启动流程。
S202:加载运行BL2:即运行所述BL2固件,初始化所述安全架构系统的处理器内核。
S203:对所述TCM的硬件资源进行自检,在所述TCM的硬件资源自检通过(或称自检成功)的情况下,进入步骤S204:加载运行所述TCM和所述TPCM控制模块。在所述TCM的硬件资源自检失败的情况下,进入步骤S206:安全/可信启动失败,终止启动过程。
S205:度量BL31、BL32、BL33:利用TCM或TPCM控制模块对所述BL31固件、所述BL32固件、所述BL33固件中的一种或多种进行度量,若度量成功则进入步骤S207:安全/可信启动完成,若度量失败则进入步骤S206:安全/可信启动失败,终止启动过程。
在本实施例中,在TCM硬件资源自检之后即加载运行TCM和TPCM控制模块,使得TCM和TPCM控制模块可以选择对BL31、BL32和BL33固件的部分或全部进行度量,有利于实现安全架构系统的可信启动,保障安全系统架构的安全性。
另外,在度量的过程中,通过对TCM密码模块的硬件资源进行自检,有利于保证度量所需硬件的可靠性和度量过程的安全性。
可选地,在另一个实施例中,参考图3,所述安全服务平台运行所述BL2固件之后还用于:
利用所述BL2固件对所述BL31固件进行签名认证。
具体过程可参考图3,该过程包括:
S301:启动:响应于上电请求,执行启动流程。
S302:加载运行BL2:即运行所述BL2固件,初始化所述安全架构系统的处理器内核。
S303:在BL2固件运行之后,对所述TCM的硬件资源进行自检,在所述TCM的硬件资源自检通过(或称自检成功)的情况下,进入步骤S304:加载运行所述TCM和所述TPCM控制模块。在所述TCM的硬件资源自检失败的情况下,进入步骤S306:安全/可信启动失败,终止启动过程。
S305:度量BL31、BL32、BL33:利用TCM或TPCM控制模块对所述BL31固件、所述BL32固件、所述BL33固件中的一种或多种进行度量,若度量失败则进入步骤S306:安全/可信启动失败,终止启动过程。
S308:通过BL2固件签名认证BL31固件,即在BL2固件运行之后,还利用BL2固件对BL31固件进行签名认证,在BL2固件对BL31固件的认证成功,且步骤S305的度量结果为成功时,进行步骤S307:安全/可信启动完成,否则,进入步骤S306:安全/可信启动失败,终止启动过程。
在本实施例中,利用BL2固件、TCM/TPCM控制模块对BL31固件进行双重认证,实现了安全/可信启动的有机结合,提高了安全架构系统的安全性。
在一些实施方式中,对如何利用TCM或TPCM控制模块对固件进行度量提出了优化设计,具体地,参考图4,所述安全服务平台运行所述TPCM控制模块的过程包括:
运行所述TPCM控制模块,根据所述TPCM控制模块的可用状态,设置所述TPCM控制模块的标志位,所述TPCM控制模块的标志位用于表征所述TPCM控制模块是否可用。
所述安全服务平台利用所述TCM或所述TPCM控制模块,对所述BL2固件、BL31固件、BL32固件和BL33固件中的一种或多种具体用于:
检测所述TPCM控制模块的标志位,若所述TPCM控制模块的标志位表征所述TPCM控制模块可用,利用所述TPCM控制模块对所述BL2固件、BL31固件、BL32固件和BL33固件中的一种或多种。
若所述TPCM控制模块的标志位表征所述TPCM控制模块不可用,利用所述TCM模块对所述BL2固件、BL31固件、BL32固件和BL33固件中的一种或多种。
具体过程可参考图4,该过程包括:
S401:启动:响应于上电请求,执行启动流程。
S402:加载运行BL2:即运行所述BL2固件,初始化所述安全架构系统的处理器内核。
S403:对所述TCM的硬件资源进行自检,在所述TCM的硬件资源自检通过(或称自检成功)的情况下,进入步骤S404:加载运行所述TCM和所述TPCM控制模块。在所述TCM的硬件资源自检失败的情况下,进入步骤S408:安全/可信启动失败,终止启动过程。
S405:检测TPCM控制模块:检测所述TPCM控制模块的标志位,若所述TPCM控制模块的标志位表征所述TPCM控制模块可用,则使能TPCM控制模块,后续度量步骤(S406)采用TPCM控制模块进行度量,若TPCM控制模块的标志位表征所述TPCM控制模块不可用,则后续度量步骤(S406)采用TCM进行度量。
S406:度量BL31、BL32、BL33,根据S405的检测结果,利用TCM或TPCM控制模块对BL31固件、BL32固件和BL33固件中的至少一项进行度量,若度量成功,则加载运行BL31固件、BL32固件和BL33固件中的至少一项。举例来说,利用TCM或TPCM控制模块对BL31固件、BL32固件和BL33固件进行逐个度量,若度量成功,则逐个加载运行BL31固件、BL32固件和BL33固件。在一些实施例中,可以利用TCM或TPCM控制模块BL31固件和BL33固件进行逐个度量,若度量成功,则逐个加载运行BL31固件和BL33固件。进入S407:安全/可信启动完成。若度量失败,则执行步骤S408:安全/可信启动失败,终止启动过程。
本实施例是以图2所示的启动过程为例进行说明的,在一些实施方式中,对于TPCM控制模块的标志位的检测通常伴随着TPCM控制模块的加载而执行,在TPCM控制模块的标志位检测为可用时,可以利用TPCM控制模块对BL2固件、BL31固件、BL32固件和BL33固件中的部分或全部进行度量,这可以取决于TPCM控制模块与这些固件的加载先后顺序,例如:当TPCM控制模块的加载顺序均优先于BL2固件、BL31固件、BL32固件和BL33固件时,TPCM控制模块可以对BL2固件、BL31固件、BL32固件和BL33固件的全部进行度量,当然,即使TPCM控制模块的加载顺序均优先于BL2固件、BL31固件、BL32固件和BL33固件,在一些情况下,也可以仅使用TPCM控制模块度量BL2固件、BL31固件、BL32固件和BL33固件中的部分,其余的部分可以不进行度量,也可以使用TCM度量。当TPCM控制模块的加载顺序处于BL2固件、BL31固件、BL32固件和BL33固件之间时,TPCM控制模块可以对加载顺序靠后的部分或全部固件进行度量,本说明书对此并不做限定。
在本实施例中,在TPCM控制模块加载时,设置表征TPCM控制模块是否可用的标志位,并在TPCM控制模块可用时,优先采用TPCM控制模块进行对启动过程中运行的固件进行度量,有利于发挥可信计算3.0路线的技术优势,保障安全/可信启动流程的自主可控和安全可信。
为了保障安全/可信启动流程从启动过程的一开始就是可信的,在一些实施例中,参考图5,还在所述安全服务平台中设置了可信根40。所述可信根40可以是写在计算设备的处理器的ROM中,启动时的前一行(段)或前几行(段)代码,是一切信任链的源头。在一些实施例中,由于BL1固件写在ROM中的不可篡改的特性,可信根40可以包括BL1固件。
相应的,在所述安全服务平台包括可信根时,参考图6,所述安全服务平台在运行所述BL2固件之前,还用于:
执行所述可信根,对所述第一处理器核和所述TCM的可信计算硬件资源进行自检,若自检失败则终止所述启动过程,若自检成功,则利用所述可信根对所述BL2固件进行签名认证。
所述安全服务平台运行所述BL2固件具体用于:
在所述BL2固件认证通过的情况下,运行所述BL2固件。在所述BL2固件认证不通过的情况下,终止启动过程。
图6所示的启动过程具体可以包括:
S601:启动:响应于上电请求,执行启动过程。
S602:执行可信根。在一些实施方式中,可信根可以在第三子系统中执行,也可以在第一处理器核上执行。
S603:自检:对所述第一处理器核和所述TCM的可信计算硬件资源进行自检,若自检失败则执行步骤S614:安全/可信启动失败,终止所述启动过程,若自检成功,则进入步骤S604:对BL2固件进行签名认证,若BL2固件认证失败,则进入步骤S614:安全/可信启动失败,终止所述启动过程,若BL2固件签名认证成功,则进入步骤S605:加载运行BL2,即加载运行BL2固件。
S606:TCM自检:对所述TCM的硬件资源进行自检,在所述TCM的硬件资源自检通过(或称自检成功)的情况下,进入步骤S607:加载运行TCM和TPCM控制模块。在所述TCM的硬件资源自检不通过(或称自检失败)的情况下,进入步骤S614。
S608:检测TPCM:检测所述TPCM控制模块的标志位,若所述TPCM控制模块的标志位表征所述TPCM控制模块可用,则使能TPCM控制模块,后续度量步骤(S609、S611)采用TPCM控制模块进行度量,若TPCM控制模块的标志位表征所述TPCM控制模块不可用,则后续度量步骤(S609、S611)采用TCM进行度量。
在一些实施方式中,在步骤S607中,还可以为系统固件运行时提供用于初始化的调用服务,即暴露出TCM的调用接口,满足系统固件对TCM的调用需求。
通过可信根对BL2固件进行签名认证时可以使用包括SM2、ECC(Ellipse CurveCryptography,椭圆加密算法)算法等在内的公钥算法,以这种方式,可以保障BL2固件的完整性和正确性。需要说明的是,上述SM2、ECC只是一种示例,不应构成限定。对TCM的可信计算硬件资源的自检可以包括对随机数产生器(例如TRNG)、密码算法硬件引擎等核心硬件资源的自检。BL2固件度量成功的情况下,进入步骤S606。
S610:度量BL3:根据S608的检测结果,利用TCM或TPCM控制模块对BL31固件、BL32固件和BL33固件中的至少一项进行度量,若度量成功,则执行步骤S610:加载运行BL3:即加载运行BL31固件、BL32固件和BL33固件中的至少一项。若度量失败,则执行步骤S614:安全/可信启动失败,终止启动过程。
在一些实施方式中,BL3加载结束后,还可以包括步骤S611:根据S608的检测结果,利用TCM或TPCM控制模块度量系统内核,若度量成功则执行步骤S612:系统初始化,S613:安全/可信启动完成。若度量失败,则执行步骤S614:安全/可信启动失败,终止启动过程。
在本实施例中,将BL1固件作为可信根,从可信根开始执行,保障了整个启动链条的安全/可信,提高了安全架构系统的安全性。
此外,BL2固件、BL31固件、BL32固件和BL33固件在度量失败后均不执行相应的固件加载任务,并终止启动过程,可以满足安全架构系统的安全启动的要求。
在所述安全架构系统包括可信根时,也可以在可信根中加载运行TCM和TPCM控制模块,具体参考图7,所述安全服务平台在运行所述BL2固件之前,还用于:
执行所述可信根,对所述第一处理器核和所述TCM的可信计算硬件资源进行自检,若自检失败则终止所述启动过程,若自检成功,在所述可信根中运行所述TCM和所述TPCM控制模块;
利用所述TCM或所述TPCM控制模块对所述BL2固件进行签名认证;
所述安全服务平台运行所述BL2固件具体用于:
在所述BL2固件认证通过的情况下,运行所述BL2固件。在所述BL2固件认证不通过的情况下,终止启动过程。
参考图7,启动过程可以包括:
S701:启动:响应于上电请求,执行启动过程。
S702:执行可信根。在一些实施方式中,可信根可以在第三子系统中执行,也可以在第二子系统中执行。
S703:自检:对所述第一处理器核和所述TCM的可信计算硬件资源进行自检,若自检失败则执行步骤S713:安全/可信启动失败,终止所述启动过程,若自检成功,则执行步骤S704:对计算设备进行基本初始化,加载TCM和TPCM控制模块,并对所述TCM的硬件资源进行自检,在所述TCM的硬件资源自检通过(或称自检成功)的情况下,加载TCM和TPCM控制模块,进入步骤S705:检测TPCM控制模块:检测所述TPCM控制模块的标志位,若所述TPCM控制模块的标志位表征所述TPCM控制模块可用,则使能TPCM控制模块,后续度量步骤(S706、S708、S709、S710)采用TPCM控制模块进行度量,若TPCM控制模块的标志位表征所述TPCM控制模块不可用,则后续度量步骤(S706、S708、S709、S710)采用TCM进行度量。此步骤中对TCM的硬件资源的自检可以是对TCM除核心硬件资源之外的其他硬件资源的自检。
TPCM控制模块检测完成后,进入步骤S706:度量BL2,即利用TPCM控制模块或TCM度量BL2固件,在BL2固件度量失败的情况下,进入步骤S713:安全/可信启动失败,终止启动过程。可信根度量BL2固件时可以使用包括SM2、ECC(Ellipse Curve Cryptography,椭圆加密算法)算法等在内的公钥算法,此处只是一种示例,不应构成限定。对TCM的可信计算硬件资源的自检可以包括对随机数产生器(例如TRNG)、密码算法硬件引擎等核心硬件资源的自检。BL2固件度量成功的情况下,进入步骤S706。
在一些实施方式中,在步骤S705中,还可以为系统固件运行时提供用于初始化的调用服务,即暴露出TCM的调用接口,满足系统固件对TCM的调用需求。
S705:度量BL2,根据S705的检测结果,利用TCM或TPCM控制模块对BL2固件进行度量,若度量成功则执行步骤S706:加载运行BL2,即加载运行BL2固件。若度量失败则执行步骤S713:安全/可信启动失败,终止启动过程。
S708:度量BL3:根据S705的检测结果,利用TCM或TPCM控制模块对BL31固件、BL32固件和BL33固件中的至少一项进行度量,若度量成功,则执行步骤S709:加载运行BL3:即加载运行BL31固件、BL32固件和BL33固件中的至少一项。若度量失败,则执行步骤S713:安全/可信启动失败,终止启动过程。
在一些实施方式中,BL3加载结束后,还可以包括步骤S710:根据S705的检测结果,利用TCM或TPCM控制模块度量系统内核,若度量成功则执行步骤S711:系统初始化,S712:安全/可信启动完成。若度量失败,则执行步骤S713:安全/可信启动失败,终止启动过程。
在本实施例中,将BL1固件作为可信根,从可信根开始执行,保障了整个启动链条的安全/可信,提高了安全架构系统的安全性。
此外,BL2固件、BL31固件、BL32固件和BL33固件在度量失败后均不执行相应的固件加载任务,并终止启动过程,可以满足安全架构系统的安全启动的要求。
在本实施例中,在步骤S703对所述第一处理器核和所述TCM的可信计算硬件资源进行自检成功之后,在可信根中加载运行所述TCM和所述TPCM控制模块,使得TCM和所述TPCM控制模块可以优先于启动过程中所需运行的大部分固件运行,使得TCM和TPCM控制模块可以对BL2固件、BL31固件、BL32固件和BL33固件均进行度量,发挥可信计算在安全/可信启动过程中的主动度量功能。
然而,需要注意的是,由于在可信根中,也就是说在硬件可信启动根中,完成自检及上电基本初始化后,再加载运行TCM和TPCM控制模块,这种实现方式需要占用比较大的硬件资源,硬件成本也更高,因此该方式实际应用性较为局限。
在本实施例中,通过在可信根中加载TCM和TPCM控制模块,使得TCM和TPCM控制模块可以较早开始运行,可以实现对启动过程中的固件的完整度量,实现了整个启动链条的安全/可信,提高了安全架构系统的安全性。
在一些实施方式中,在启动过程中所需运行的固件的度量结束后,为了保障整个计算设备的系统安全,所述安全架构系统被设置在计算设备中,仍然参考图6,所述安全服务平台还用于:
利用所述TCM或所述TPCM控制模块对所述计算设备的操作系统内核进行度量。
在所述计算设备的操作系统内核度量结果为通过时,加载所述操作系统内核,以初始化所述计算设备的硬件资源以及引导所述操作系统,从而完成所述计算设备的启动。
在图6中,步骤S611即实现了利用所述TCM或所述TPCM控制模块对所述计算设备的操作系统内核进行度量的操作,保障了启动过程的全链条安全与可信。
在一些实施方式中,除了对于TCM硬件资源的自检,在TCM加载运行时,还可以对TCM进行进一步的自检,保障TCM的安全可信。具体地,在本说明书的一个实施例中,所述安全服务平台加载运行所述TCM具体用于:
加载所述TCM。
运行所述TCM的自检程序,并获得所述TCM的自检程序返回的自检结果,若所述自检结果为自检失败,则终止所述启动过程。
TCM的自检程序可以是TCM内置的Self-Task程序,通过运行该自检程序,保障TCM除硬件资源外的其他资源的安全可信。
需要说明的是,在上面的启动过程中,主要体现了可信启动过程中TCM或TPCM控制模块对固件的度量。在可信启动过程中,安全启动过程也可并行进行,即利用可信根对固件进行逐级验证,实现安全启动技术的信任链构建,其中,固件可以包括BL1固件、BL2固件、BL31固件、BL32固件和BL33固件中的一种或多种。如前文所述,BL1固件可以被设置在可信根中,具有不可篡改的特性,是上电启动的第一段代码,是一切信任链的源头。在这种情况下,为实现安全启动技术,需先执行可信根,之后,对BL2固件、BL31固件、BL32固件和BL33固件中的一种或多种进行逐级验证,示例性地,该逐级验证具体体现在:可信根对BL2固件进行验证,之后,BL2固件对BL31固件进行验证,BL31固件对BL32和/或BL33固件分别进行验证。
在一些情况下,计算设备包括多核处理器,在这种情形下,本说明书实施例还提供了一种基于多核处理器的安全架构系统,如图8所示,包括:第一子系统11、第二子系统12和第三子系统13,所述第一子系统11、所述第二子系统12和所述第三子系统13各自对应的安全等级依次递增,所述第二子系统12运行在第一处理器核31中,所述第三子系统13运行在第二处理器核32中,所述安全架构系统100构建有安全服务平台20,所述安全服务平台20内置有可信密码模块TCM21,所述安全服务平台20还搭载有TPCM控制模块22,所述TPCM控制模块22用于通过软件方式调用所述TCM21,所述TCM21和所述TPCM控制模块22运行于所述第三子系统13,所述安全服务平台20配置成:
响应于上电请求,执行启动过程,在所述启动过程中,利用所述TCM21或所述TPCM控制模块22对启动过程中运行的固件进行度量,并记录度量结果。
本实施例中,在所述安全架构系统100的第三子系统13中集成了包括TCM21和TPCM控制模块22的安全服务平台20,使得所述安全服务平台20可以在启动过程中,利用TCM21或TPCM控制模块22对启动过程中运行的固件进行度量,TCM21或TPCM控制模块22对固件的主动度量可以包括可信度量、可信存储和可信报告,实现可信计算基数的信任链构建。在一些实施方式中,为了便于实现对安全服务平台20的优先启动,所述安全服务平台20的TCM21和所述TPCM控制模块22可以与计算设备的处理器集成在同一块芯片中,如此可以减少安全服务平台20与集成处理器的芯片之间的外部通信接口,使得安全服务平台20可以便于接收或检测所述上电请求,也使得所述安全服务平台20方便利用所述TCM21或所述TPCM控制模块22对启动过程中运行的固件进行度量。
另外,所述第二子系统12和所述第三子系统13分别运行在不同的处理器核上(即所述第二子系统12运行在所述第一处理器核31上,所述第三子系统13运行在所述第二处理器核32上),使得包括TCM21和TPM的第三子系统13可以无需依赖第二子系统12的硬件资源而独立运行,不受第一子系统11和第二子系统12的影响,具有更高的安全性,有利于提高安全架构系统100的整体安全性。另外,运行在独立的处理器核上的第三子系统13可以独享第二处理器核32的运算资源,有利于提高第三子系统13的任务执行效率,从而提升所述安全架构系统100的安全服务执行效率。
度量结果可以记录在安全架构系统100的PCR中,记录的度量结果可以在安全架构系统100启动完成后,提供远程验证服务,满足可信启动的要求。记录在PCR中的度量结果也可以用于生成可信报告,向外界提供描述安全架构系统100内部状态的报告。
上电请求可以是计算设备接通电源后的电源信号,也可以是计算设备接通电源后向安全架构系统100发送的请求启动系统的请求。
TPCM控制模块以软件方式调用所述TCM可以是指TPCM控制模块以向TCM发送软件程序调用指令的方式调用所述TCM。
在一些实施例中,所述安全架构系统还可以包括可信根,基于可信根对固件进行逐级验证,实现安全启动技术的信任链构建,其中,固件可以包括BL1固件、BL2固件、BL31固件、BL32固件和BL33固件中的一种或多种。在一些实施方式中,可信根包括BL1固件,这种情况下,BL1固件具有不可篡改的特性,是上电启动的第一段代码,是一切信任链的源头。在这种情况下,所述安全架构系统还可以基于可信根实现系统的安全启动,具体地,安全启动过程可以包括:先执行可信根,之后对BL2固件、BL31固件、BL32固件和BL33固件中的一种或多种进行逐级签名验证,示例性地,该逐级验证过程可以包括:可信根对BL2固件进行签名验证,之后,BL2固件对BL31固件进行签名验证,BL31固件分别对BL32固件和BL33固件进行签名验证,任意一级签名验证不通过均可以终止启动过程,实现安全架构系统的安全启动。可选地,在一些实施方式中,安全架构启动过程中运行的固件可以不包括BL32固件,此时BL31固件对BL33固件进行验证即可。
第一子系统11可以是普通执行环境(Rich Execution Environment,REE,也可称为富执行环境)子系统,该子系统可以用于运行计算设备的操作系统(Operating System,OS)和普通应用(也可称为客户端应用(Client Application,CA))等对象。
第二子系统12可以是可信执行环境(Trusted Execution Environment,TEE)子系统,该子系统可以用于运行可信应用(Trusted Application,TA),满足数字版权管理(Digital Rights Management,DRM)、移动支付和敏感数据保护等应用需求。
第三子系统13可以是安全元件子系统(Secure Element,SE),该子系统可以用于实施安全芯片技术,保证重要资源的安全性。
安全等级,也可称为安全保护等级,可以是指定义各子系统信息安全保护能力的等级。子系统的信息安全保护能力可以通过硬件隔离和/或软件隔离等方式保障。
图8中示出了在第一子系统11、第二子系统12和第三子系统13中可能运行/搭载的对象。例如,第一子系统11中可以运行系统固件、操作系统OS或虚拟机VM(VirtualMachine)。系统固件可以是实现为面向桌面、服务器等领域的可扩展固件接口(UnifiedExtensible Firmware Interface,UEFI),或者可以是实现为面向嵌入式领域的引导加载程序(U-Boot)。此外,基础固件、系统固件以及操作系统OS可以与带外控制系统(例如嵌入式控制器EC、基板管理控制器BMC等)进行通信。
第二子系统12可以运行第二子系统12依赖的安全操作系统(TEE OS)。在一些实施例中,第二子系统12中还可以运行可信应用TA。第二子系统12的安全等级高于第一子系统11,即第二子系统12的安全性高于第一子系统11,第二子系统12例如可以用于支持支付业务中校验支付环境等功能。第二子系统12可以向诸如第一子系统11及其上运行的普通应用提供可信服务并且与第一子系统11相隔离,即第一子系统11及其上运行的普通应用无法直接访问第二子系统12的硬件和软件资源。
第三子系统13运行的应用可以称为安全元件应用(Applet),其安全性高于第二子系统12。第三子系统13可以用于存储诸如根密钥等重要资源,通过权限校验、密码技术等手段来保证第三子系统13中存储的重要资源的安全性。在安全架构系统100中,通过这三个子系统之间的相互配合来保障计算环境的安全性。
除此之外,第一子系统11还用于运行普通应用程序(简称普通应用),其中的普通应用可以是涉及支付场景的应用,其中实现诸如浏览商品、选择商品、提交订单等基本业务。第二子系统12中可以运行可信应用,通过可信应用来对第一子系统11提供可信赖的运行环境,再通过对机密性、完整性的保护和数据访问权限的控制,确保端到端的安全性。此外,第二子系统12可以与第一子系统11并行运行,并且例如第二子系统12通过安全的应用程序编程接口(Application Programming Interface,API)与第一子系统11进行交互。作为示例,第一子系统11可以向第二子系统12传递可信服务发起请求,以请求第二子系统12提供相应的可信服务并基于请求做出响应。
第三子系统13相较于第二子系统12的安全等级更高,可以用于构建可信安全的资源存储和运算环境。一般情况下,第三子系统13中的软件系统相对简单,包括较少的硬件元器件,因此更容易建立物理防护和实施安全保障,从而提高第三子系统13的安全等级,以服务于对安全性要求更高的安全系统。作为示例,第二子系统12可以向第三子系统13传递安全服务请求,以请求第三子系统13提供相应的安全服务并基于请求做出响应,第二子系统12请求的安全服务例如可以是请求第三子系统13进行与密码运算相关的服务等。
例如,在一些实施例中,第一子系统11与第二子系统12不存在直接访问第三子系统13的物理通路,只能通过共享内存等交互的方式向第三子系统13提出请求,由第三子系统13向第一子系统11、第二子系统12提供服务。关于第三子系统13,作为一种实现方式,第三子系统13可以包括执行引擎、静态随机存取存储器(SRAM)、非易失性存储器,或者还可以包括密钥派生模块(Key Derivation Function,KDF)。其中,诸如根密钥等重要资源可以存入第三子系统13内的非易失性存储器,并且由第三子系统13的固件或硬件保证根密钥不具有传递出第三子系统13的软件或硬件路径。此外,第三子系统13内集成的密钥派生模块KDF例如可以实现为软件或硬件并用于实现基于根密钥产生派生密钥。例如,密钥派生模块KDF可以是哈希函数,通常用来将短密码变成长密码。具体的,上述共享内存可以是指在多处理器的计算机系统中,可以被不同处理器访问的大容量内存。在一些实施方式中,第三子系统13包括的执行引擎等资源可以作为TCM21和/或TPM的可信计算硬件资源。
在本实施例中,通过在安全架构系统100中集成包括TCM21和TPCM控制模块22的安全服务平台20,并配置安全服务模块在启动过程中,利用所述TCM21或所述TPCM控制模块22对启动过程中运行的固件进行度量,并记录度量结果,实现了兼容TCM21和TPCM两种控制路线实现可信启动的目的,提高了安全架构系统100的适用性。
为了灵活配置对启动过程中需要度量的固件,在本说明书的一些实施方式中,所述安全服务平台利用所述TCM或所述TPCM控制模块对启动过程中运行的固件进行度量具体用于:
利用所述TCM或所述TPCM控制模块对以下固件中的一种或多种进行度量:BL2固件、BL31固件、BL32固件、BL33固件。
关于BL2固件、BL31固件、BL32固件和BL33固件的限定可参考上文中的相关描述。
在本实施例中,所述安全服务平台可以根据计算设备的实际情况或对安全/可信启动的实际需要,在启动过程中对BL2固件、BL31固件、BL32固件和BL33固件进行有选择性的度量,在保障安全架构系统的安全性的基础上,提升安全架构系统对各应用场景的适用性。
下面的一些实施方式,介绍一些可能的具体启动流程,可选地,在本说明书的一个实施例中,参考图9,所述安全服务平台执行启动过程,在所述启动过程中,利用所述TCM或所述TPCM控制模块对以下固件中的一种或多种进行度量:BL2固件、BL31固件、BL32固件、BL33固件具体用于:
加载运行所述第三子系统中的固件,以初始化所述第三子系统;
对所述TCM的硬件资源进行自检;
在所述TCM的硬件资源自检通过的情况下,加载运行所述TCM和所述TPCM控制模块;
利用所述TCM或所述TPCM控制模块对以下固件中的一种或多种进行度量:BL2固件、BL31固件、BL32固件、BL33固件。
具体过程可参考图9,该过程包括:
S901:启动:响应于上电请求,执行启动过程。
S902:运行第三子系统中的固件,以初始化第三子系统。在本实施例中,由于第三子系统运行于单独的第二处理器核上,具备图灵完备性,可以自己运行第三子系统中的固件。
S903:对所述TCM的硬件资源进行自检,在所述TCM的硬件资源自检通过的情况下,执行步骤S904:加载运行所述TCM和所述TPCM控制模块。在所述TCM的硬件资源自检不通过的情况下,执行步骤S907,安全/可信启动失败,终止所述启动过程。
S905:度量固件:利用所述TCM或所述TPCM控制模块对以下固件中的一种或多种进行度量:BL2固件、BL31固件、BL32固件、BL33固件,若度量成功,则执行步骤S906:安全/可信启动完成,若度量失败,则执行步骤S907,安全/可信启动失败,终止所述启动过程。
关于步骤S905的执行过程可以包括:利用TCM或所述TPCM控制模块对BL2固件进行度量,若度量失败,则执行步骤S907,若度量成功,则加载运行BL2固件,并利用TCM或所述TPCM控制模块对BL31固件、BL32固件和BL33固件中的一项或多项进行度量,若度量失败,则执行步骤S907,若度量成功,则加载运行BL31固件、BL32固件和BL33固件中的一项或多项,执行步骤S906。
在一些实施例中,利用TCM或TPCM对系统上电过程中加载的固件和/或软件,进行可信度量。其度量结果系统不进行判断,上电过程会正常进行。只将其可信度量的结果可信存储于系统的PCR中。等到上电完成以后,系统在实时运行过程中,会利用该PCR值对远程服务器进行可信报告。由所述远程服务器判断度量的结果成功或失败。一般地,PCR值若不正确,本地设备/处理器架构系统将被判断为不可信设备。不可信设备的仲裁策略会合并到态势感知系统中处理。本专利不能限定可信度量失败的结果。需要说明的是,后续相关实施例也适用该具体实现方式,不再一一赘述。
在本实施例中,由于第三子系统的图灵完备性,使得第三子系统的固件运行之后,可以在第三子系统中加载TCM和TPCM控制模块,使得TCM和TPCM控制模块可以较早的介入启动过程中的固件度量,有利于提高安全架构系统的安全性。
此外,BL2固件、BL31固件、BL32固件和BL33固件在度量失败后均不执行相应的固件加载任务,并终止启动过程,可以满足安全架构系统的安全启动的要求。
为了保障安全/可信启动流程从启动过程的一开始就是可信的,在一些实施例中,参考图10,还在所述安全服务平台中设置了可信根40。所述可信根40可以是写在计算设备的处理器的ROM中,启动时的前一行(段)或前几行(段)代码,是一切信任链的源头。由于BL1固件存储于难以篡改的ROM中,因此可以使可信根40包括BL1固件。
相应的,在所述安全服务平台包括可信根时,参考图11,所述安全服务平台在加载运行所述第三子系统中的固件之前,还用于:
执行所述可信根,对所述第一处理器核和所述TCM的可信计算硬件资源进行自检,若自检失败则终止所述启动过程,若自检成功,则通过所述可信根签名认证所述第三子系统中的固件;
所述安全服务平台加载运行所述第三子系统中的固件具体用于:
在所述第三子系统中的固件认证通过的情况下,加载运行所述第三子系统中的固件。在所述第三子系统中的固件认证不通过的情况下,终止启动过程。
具体过程参考图11:
S1101:启动:响应于上电请求,执行启动过程。
S1102:执行可信根。在一些实施方式中,可信根可以在第三子系统中执行,也可以在第一处理器核/第二处理器核上执行。
S1103:自检:对所述TCM的可信计算硬件资源进行自检,若自检失败则执行步骤S1110:安全/可信启动失败,终止所述启动过程;若自检成功,则执行步骤S1104:签名认证固件:利用所述可信根对所述第三子系统的固件进行签名认证。进行签名认证时可以使用包括SM2、ECC(Ellipse Curve Cryptography,椭圆加密算法)算法等在内的公钥算法,以这种方式,可以保障固件的完整性和正确性。需要说明的是,上述SM2、ECC只是一种示例,不应构成限定。对TCM的可信计算硬件资源的自检可以包括对随机数产生器(例如TRNG)、密码算法硬件引擎等核心硬件资源的自检。
若第三子系统的固件度量成功(在所述第三子系统中的固件认证通过的情况下),则执行步骤S1105:运行第三子系统中的固件,以初始化第三子系统。
若第三子系统的固件度量失败,则执行步骤S1110:安全/可信启动失败,终止所述启动过程。
S1106:对所述TCM的硬件资源进行自检,此步骤中对TCM的硬件资源的自检可以是对TCM除核心硬件资源之外的其他硬件资源的自检。在所述TCM的硬件资源自检通过的情况下,执行步骤S1107:加载运行所述TCM和所述TPCM控制模块。在所述TCM的硬件资源自检不通过的情况下,执行步骤S1110,安全/可信启动失败,终止所述启动过程。
在一些实施方式中,在步骤S1107中,在加载TCM时还可以为系统固件运行时提供用于初始化的调用服务,即暴露出TCM的调用接口,满足系统固件对TCM的调用需求。
S1108:度量固件:利用所述TCM或所述TPCM控制模块对以下固件中的一种或多种进行度量:BL2固件、BL31固件、BL32固件、BL33固件,若度量成功,则执行步骤S1109:安全/可信启动完成,若度量失败,则执行步骤S1010,安全/可信启动失败,终止所述启动过程。
在本实施例中,通过可信根度量第三子系统的固件,实现了整个启动链条的安全/可信,提高了安全架构系统的安全性。
在本实施例中,除了可以通过TCM或TPCM控制模块对以下固件中的一种或多种进行度量:BL2固件、BL31固件、BL32固件、BL33固件之外,还可以同时执行安全启动过程,即利用可信根对固件进行逐级签名认证,逐级签名认证过程可以包括:通过可信根对BL2固件进行签名认证,通过BL2固件对BL31固件进行签名认证,通过BL31固件对BL32固件和/或BL33固件分别进行签名认证,任一级固件签名认证失败,则终止启动过程。
在所述安全架构系统包括可信根时,也可以在可信根中加载运行TCM和TPCM控制模块,所述可信根可以包括BL1固件,具体参考图12,所述安全服务平台执行启动过程,在所述启动过程中,利用所述TCM或所述TPCM控制模块对以下固件中的一种或多种进行度量:BL2固件、BL31固件、BL32固件、BL33固件具体用于:
执行所述可信根,对所述第一处理器核和所述TCM的可信计算硬件资源进行自检,若自检失败则终止所述启动过程,若自检成功,则在所述可信根中加载运行所述TCM和所述TPCM控制模块。
利用所述TCM或所述TPCM控制模块对以下固件中的一种或多种进行度量:BL2固件、BL31固件、BL32固件、BL33固件。
参考图12,在本实施例中,在步骤S1203自检:对所述TCM的可信计算硬件资源进行自检成功之后,执行步骤S1204:在可信根中加载运行所述TCM和所述TPCM控制模块,使得TCM和所述TPCM控制模块可以优先于启动过程中所需运行的大部分固件运行,使得TCM和TPCM控制模块可以对BL2固件、BL31固件、BL32固件和BL33固件均进行度量,发挥可信计算在安全/可信启动过程中的主动度量功能。在步骤S1203自检失败后,执行步骤S1209:安全/可信启动失败,终止启动过程。
在可信根中加载运行TCM和TPCM控制模块之后,可以执行步骤S1205:签名认证固件:即利用TCM或TPCM控制模块签名认证第三子系统中的固件,在认证失败的情况下,执行步骤S1209,在认证成功的情况下,执行步骤S1206~S1209。
关于步骤S1201~S1203、S1206~S1209的具体可行执行过程可参考图11中S1101~S1110的相关描述,本说明书在此不做赘述。
在本实施例中,通过在可信根中加载TCM和TPCM控制模块,使得TCM和TPCM控制模块可以对第三子系统的固件、BL2固件、BL31固件、BL32固件和BL33固件进行度量,实现了整个启动链条的安全/可信,提高了安全架构系统的安全性。
然而,需要注意的是,由于在可信根中,也就是说在硬件可信启动根中,完成自检及上电基本初始化后,再加载运行TCM和TPCM控制模块,这种实现方式需要占用比较大的硬件资源,硬件成本也更高,因此该方式实际应用性较为局限。
在一些实施方式中,对如何利用TCM或TPCM控制模块对固件进行度量提出了优化设计,具体地,参考图13,所述TCM和所述TPCM控制模块的加载运行过程包括:
加载运行所述TCM和所述TPCM控制模块,根据所述TPCM控制模块的可用状态,设置所述TPCM控制模块的标志位,所述TPCM控制模块的标志位用于表征所述TPCM控制模块是否可用。
所述安全服务平台利用所述TCM或所述TPCM控制模块对以下固件中的一种或多种进行度量:BL2固件、BL31固件、BL32固件、BL33固件具体用于:
检测所述TPCM控制模块的标志位,若所述TPCM控制模块的标志位表征所述TPCM控制模块可用,利用所述TPCM控制模块对所述BL2固件、BL31固件、BL32固件、BL33固件中的一种或多种进行度量。
若所述TPCM控制模块的标志位表征所述TPCM控制模块不可用,利用所述TCM模块对所述BL2固件、BL31固件、BL32固件、BL33固件中的一种或多种进行度量。
具体过程可参考图13,在本实施例中,在步骤S1307加载运行TCM和TPCM控制模块时,还设置了TPCM控制模块的标志位,之后执行步骤S1308:检测TPCM,即检测所述TPCM控制模块标志位,若所述TPCM控制模块的标志位表征所述TPCM控制模块可用,则使能TPCM控制模块,后续度量步骤(S1309、S1310)采用TPCM控制模块进行度量,若TPCM控制模块的标志位表征所述TPCM控制模块不可用,则后续度量步骤(S1309、S1310)采用TCM进行度量。
关于步骤S1301~S1313的其他未详尽描述的执行细节可参考图11中S1101~S1110的相关描述,本说明书在此不做赘述。
本实施例是以图11所示的启动过程为例进行说明的,在一些实施方式中,对于TPCM控制模块的标志位的检测通常伴随着TPCM控制模块的加载而执行,在TPCM控制模块的标志位检测为可用时,可以利用TPCM控制模块对BL2固件、BL31固件、BL32固件和BL33固件中的部分或全部进行度量,这可以取决于TPCM控制模块与这些固件的加载先后顺序,例如:当TPCM控制模块的加载顺序均优先于BL2固件、BL31固件、BL32固件和BL33固件时,TPCM控制模块可以对BL2固件、BL31固件、BL32固件和BL33固件的全部进行度量,当然地,即使TPCM控制模块的加载顺序均优先于BL2固件、BL31固件、BL32固件和BL33固件,在一些情况下,也可以仅使用TPCM控制模块度量BL2固件、BL31固件、BL32固件和BL33固件中的部分,其余的部分可以不进行度量,也可以使用TCM度量。当TPCM控制模块的加载顺序处于BL2固件、BL31固件、BL32固件和BL33固件之间时,TPCM控制模块可以对加载顺序靠后的部分或全部固件进行度量,本说明书对此并不做限定。
在本实施例中,在TPCM控制模块加载时,设置表征TPCM控制模块是否可用的标志位,并在TPCM控制模块可用时,优先采用TPCM控制模块进行对启动过程中运行的固件进行度量,有利于发挥可信计算3.0路线的技术优势,保障安全/可信启动流程的自主可控和安全可信。
在一些实施方式中,仍然参考图13,在步骤S1309的度量结束后,还进行了步骤S1310:加载运行BL2固件、BL31固件、BL32固件和BL33固件中的至少一项,之后还可以包括步骤S1311:根据S1308的检测结果,利用TCM或TPCM控制模块度量系统内核,若度量成功则执行步骤S1312:系统初始化,S1313:安全/可信启动完成。若度量失败,则执行步骤S1314:安全/可信启动失败,终止启动过程。
对系统内核的度量使得可信计算技术贯穿整个启动过程,保障整个启动过程的安全/可信。
在一些实施方式中,除了对于TCM硬件资源的自检,在TCM加载运行时,还可以对TCM进行进一步的自检,保障TCM的安全可信。具体地,在本说明书的一个实施例中,所述安全服务平台加载运行所述TCM具体用于:
加载所述TCM。
运行所述TCM的自检程序,并获得所述TCM的自检程序返回的自检结果,若所述自检结果为自检失败,则终止所述启动过程。
TCM的自检程序可以是TCM内置的Self-Task程序,通过运行该自检程序,保障TCM除硬件资源外的其他资源的安全可信。
需要说明的是,在上面的启动过程中,主要体现了可信启动过程中TCM或TPCM控制模块对固件的度量。在可信启动过程中,安全启动过程也可并行进行,即利用可信根对固件进行逐级验证,实现安全启动技术的信任链构建,其中,固件可以包括BL1固件、BL2固件、BL31固件、BL32固件和BL33固件中的一种或多种。如前文所述,BL1固件可以被设置在可信根中,具有不可篡改的特性,是上电启动的第一段代码,是一切信任链的源头。在这种情况下,为实现安全启动技术,需先执行可信根,之后,对BL2固件、BL31固件、BL32固件和BL33固件中的一种或多种进行逐级签名验证,示例性地,该逐级签名认证具体体现在:可信根对BL2固件进行签名验证,之后,BL2固件对BL31固件进行签名验证,BL31固件对BL32和/或BL33固件分别进行签名验证。
在一些情况下,TPCM控制模块可能与TCM的TCM密码模块设置于不同的子系统中,具体地,本说明书实施例还提供了一种安全架构系统,如图14所示,包括:第一子系统11、第二子系统12和第三子系统13,所述第一子系统11、所述第二子系统12和所述第三子系统13各自对应的安全等级依次递增,所述第二子系统12和所述第三子系统13运行在第一处理器核中,所述安全架构系统构建有安全服务平台,所述安全服务平台内置有可信密码模块TCM,所述安全服务平台还搭载有TPCM控制模块22,所述TPCM控制模块22用于通过软件方式调用所述TCM,所述TCM包括TCM密码模块211,所述TPCM控制模块22和所述TCM密码模块211运行于除所述第一子系统11外的不同子系统,所述安全服务平台配置成:
响应于上电请求,执行启动过程,在所述启动过程中,利用所述TCM或所述TPCM控制模块22对启动过程中运行的固件进行度量,并记录度量结果。
在本实施例中,当安全架构系统接收或检测到上电请求后,响应该上电请求优先于启动过程中所需运行的固件先行启动,利用TCM或TPCM控制模块22实现对启动过程中所需运行的固件的主动度量,TCM21或TPCM控制模块22对固件的主动度量可以包括可信度量、可信存储和可信报告,实现可信计算基数的信任链构建。在一些实施方式中,为了便于实现对安全服务平台的优先启动,所述安全服务平台的TCM和所述TPCM控制模块22可以与计算设备的处理器集成在同一块芯片中,如此可以减少安全服务平台与集成处理器的芯片之间的外部通信接口,使得安全服务平台可以便于接收或检测所述上电请求,也使得所述安全服务平台方便利用所述TCM或所述TPCM控制模块22对启动过程中运行的固件进行度量。
度量结果可以记录在安全架构系统的PCR中,记录的度量结果可以在安全架构系统启动完成后,提供远程验证服务,满足可信启动的要求。记录在PCR中的度量结果也可以用于生成可信报告,向外界提供描述安全架构系统内部状态的报告。
TPCM控制模块22以软件方式调用所述TCM可以是指TPCM控制模块22以向TCM发送软件程序调用指令的方式调用所述TCM。
上电请求可以是计算设备接通电源后的电源信号,也可以是计算设备接通电源后向安全架构系统发送的请求启动系统的请求。
在一些实施例中,所述安全架构系统还可以包括可信根,基于可信根对固件进行逐级验证,实现安全启动技术的信任链构建,其中,固件可以包括BL1固件、BL2固件、BL31固件、BL32固件和BL33固件中的一种或多种。在一些实施方式中,可信根包括BL1固件,这种情况下,BL1固件具有不可篡改的特性,是上电启动的第一段代码,是一切信任链的源头。在这种情况下,所述安全架构系统还可以基于可信根实现系统的安全启动,具体地,安全启动过程可以包括:先执行可信根,之后对BL2固件、BL31固件、BL32固件和BL33固件中的一种或多种进行逐级签名验证,示例性地,该逐级签名验证过程可以包括:可信根对BL2固件进行验证,之后,BL2固件对BL31固件进行签名验证,BL31固件分别对BL32固件和BL33固件进行签名验证,任意一级签名验证不通过均可以终止启动过程,实现安全架构系统的安全启动。可选地,在一些实施方式中,安全架构启动过程中运行的固件可以不包括BL32固件,此时BL31固件对BL33固件进行验证即可。
第一子系统11可以是普通执行环境(Rich Execution Environment,REE,也可称为富执行环境)子系统,该子系统可以用于运行计算设备的操作系统(Operating System,OS)和普通应用(也可称为客户端应用(Client Application,CA))等对象。
第二子系统12可以是可信执行环境(Trusted Execution Environment,TEE)子系统,该子系统可以用于运行可信应用(Trusted Application,TA),满足数字版权管理(Digital Rights Management,DRM)、移动支付和敏感数据保护等应用需求。
第三子系统13可以是安全元件子系统(Secure Element,SE),该子系统可以用于实施安全芯片技术,保证重要资源的安全性。
安全等级,也可称为安全保护等级,可以是指定义各子系统信息安全保护能力的等级。子系统的信息安全保护能力可以通过硬件隔离和/或软件隔离等方式保障。
图14中示出了在第一子系统11、第二子系统12和第三子系统13中可能运行/搭载的对象。例如,第一子系统11中可以运行系统固件、操作系统OS或虚拟机VM(VirtualMachine)。系统固件可以是实现为面向桌面、服务器等领域的可扩展固件接口(UnifiedExtensible Firmware Interface,UEFI),或者可以是实现为面向嵌入式领域的引导加载程序(U-Boot)。此外,基础固件、系统固件以及操作系统OS可以与带外控制系统(例如嵌入式控制器EC、基板管理控制器BMC等)进行通信。
第二子系统12可以运行第二子系统12依赖的安全操作系统(TEE OS)。在一些实施例中,第二子系统12中还可以运行可信应用TA。第二子系统12的安全等级高于第一子系统11,即第二子系统12的安全性高于第一子系统11,第二子系统12例如可以用于支持支付业务中校验支付环境等功能。第二子系统12可以向诸如第一子系统11及其上运行的普通应用提供可信服务并且与第一子系统11相隔离,即第一子系统11及其上运行的普通应用无法直接访问第二子系统12的硬件和软件资源。
第三子系统13运行的应用可以称为安全元件应用(Applet),其安全性高于第二子系统12。第三子系统13可以用于存储诸如根密钥等重要资源,通过权限校验、密码技术等手段来保证第三子系统13中存储的重要资源的安全性。在安全架构系统中,通过这三个子系统之间的相互配合来保障计算环境的安全性。
除此之外,第一子系统11还用于运行普通应用程序(简称普通应用),其中的普通应用可以是涉及支付场景的应用,其中实现诸如浏览商品、选择商品、提交订单等基本业务。第二子系统12中可以运行可信应用,通过可信应用来对第一子系统11提供可信赖的运行环境,再通过对机密性、完整性的保护和数据访问权限的控制,确保端到端的安全性。此外,第二子系统12可以与第一子系统11并行运行,并且例如第二子系统12通过安全的应用程序编程接口(Application Programming Interface,API)与第一子系统11进行交互。作为示例,第一子系统11可以向第二子系统12传递可信服务发起请求,以请求第二子系统12提供相应的可信服务并基于请求做出响应。
第三子系统13相较于第二子系统12的安全等级更高,可以用于构建可信安全的资源存储和运算环境。一般情况下,第三子系统13中的软件系统相对简单,包括较少的硬件元器件,因此更容易建立物理防护和实施安全保障,从而提高第三子系统13的安全等级,以服务于对安全性要求更高的安全系统。作为示例,第二子系统12可以向第三子系统13传递安全服务请求,以请求第三子系统13提供相应的安全服务并基于请求做出响应,第二子系统12请求的安全服务例如可以是请求第三子系统13进行与密码运算相关的服务等。
例如,在一些实施例中,第一子系统11与第二子系统12不存在直接访问第三子系统13的物理通路,只能通过共享内存等交互的方式向第三子系统13提出请求,由第三子系统13向第一子系统11、第二子系统12提供服务。关于第三子系统13,作为一种实现方式,第三子系统13可以包括执行引擎、静态随机存取存储器(SRAM)、非易失性存储器,或者还可以包括密钥派生模块(Key Derivation Function,KDF)。其中,诸如根密钥等重要资源可以存入第三子系统13内的非易失性存储器,并且由第三子系统13的固件或硬件保证根密钥不具有传递出第三子系统13的软件或硬件路径。此外,第三子系统13内集成的密钥派生模块KDF例如可以实现为软件或硬件并用于实现基于根密钥产生派生密钥。例如,密钥派生模块KDF可以是哈希函数,通常用来将短密码变成长密码。具体的,上述共享内存可以是指在多处理器的计算机系统中,可以被不同处理器访问的大容量内存。在一些实施方式中,第三子系统13包括的执行引擎等资源可以作为TCM和/或TPM的可信计算硬件资源。
本实施例中,在所述安全架构系统的第三子系统13中集成了包括TCM和TPCM控制模块22的安全服务平台,使得所述安全服务平台可以在启动流程中,利用TCM或TPCM控制模块22对目标固件进行度量,并存储度量结果,存储的度量结果可以在计算设备联网后供远程验证,满足可信启动的要求。基于所述安全架构系统实现了兼容TCM和TPCM标准进行可信启动的目的。
另外,所述TPCM控制模块22和所述TCM密码模块211运行于除所述第一子系统11外的不同子系统,使得TCM密码模块211和TPCM控制模块22彼此隔离,一方面有利于增强TCM密码模块211和TPCM控制模块22之间的独立性;另一方面,当除第一子系统11外的某一子系统不可用时,安全服务平台仍可以利用另一子系统中的TCM密码模块211/TPCM控制模块22对启动过程中运行的固件进行度量,有利于提高安全架构系统的鲁棒性。
参考图15,并结合参考图14,图14和图15示出了可行的TCM密码模块211和TPCM控制模块22的设置方式,在图14中,所述TCM密码模块211运行于所述第三子系统13,所述TPCM控制模块22运行于所述第二子系统12。在图15中,所述TCM密码模块211运行于所述第二子系统12,所述TPCM控制模块22运行于所述第三子系统13。
将TCM密码模块211设置于安全等级更高的第三子系统13中,有利于保障TCM的硬件资源基础(即所述TCM密码模块211)得到更好的保证。而将TPCM控制模块22设置于第三子系统13中,有利于尽早启动所述TPCM控制模块22,使得TPCM控制模块22可以更早地参与到启动过程中运行的固件的度量工作中,发挥可信计算3.0的优势。TCM密码模块211和TPCM控制模块22的具体设置位置可以根据实际情况灵活选择,本说明书对此并不做限定。
为了灵活配置对启动过程中需要度量的固件,在本说明书的一些实施方式中,所述安全服务平台利用所述TCM或所述TPCM控制模块对启动过程中运行的固件进行度量具体用于:
利用所述TCM或所述TPCM控制模块对以下固件中的一种或多种进行度量:BL2固件、BL31固件、BL32固件、BL33固件。
关于BL2固件、BL31固件、BL32固件和BL33固件的限定可参考上文中的相关描述。
在本实施例中,所述安全服务平台可以根据计算设备的实际情况或对安全/可信启动的实际需要,在启动过程中对BL2固件、BL31固件、BL32固件和BL33固件进行有选择性的度量,在保障安全架构系统的安全性的基础上,提升安全架构系统对各应用场景的适用性。
下面的一些实施方式,介绍一些可能的具体启动流程,可选地,在本说明书的一个实施例中,参考图16,所述TCM21还包括TCM服务模块212,所述TCM服务模块212和所述TCM密码模块211运行于所述第三子系统13中,所述TPCM控制模块22运行于所述第二子系统12,且所述第二子系统12与所述第三子系统13运行于第一处理器核31。
参考图17,所述安全服务平台执行启动过程,在所述启动过程中,利用所述TCM或所述TPCM控制模块对以下固件中的一种或多种进行度量:BL2固件、BL31固件、BL32固件、BL33固件具体用于:
运行所述BL2固件,并初始化所述安全架构系统的处理器内核。
对所述TCM密码模块的硬件资源进行自检。在该步骤中,对TCM的硬件资源的自检可以包括对TCM的随机数产生器(例如可以是TRNG)、密码算法硬件引擎等硬件资源的自检。
在所述TCM密码模块的硬件资源自检通过的情况下,加载运行所述TCM密码模块。
加载运行所述TCM服务模块和所述TPCM控制模块。
利用所述TCM或所述TPCM控制模块对所述BL31固件、所述BL32固件和所述BL33固件中的一种或多种进行度量。
具体过程参考图17:
S1701:启动:响应于上电请求,执行启动流程。
S1702:加载运行BL2:即运行所述BL2固件,初始化所述安全架构系统的处理器内核。
S1703:TCM的硬件资源自检:即对所述TCM密码模块的硬件资源进行自检,在所述TCM的硬件资源自检通过(或称自检成功)的情况下,进入步骤S1704:加载运行所述TCM密码模块。在所述TCM的硬件资源自检失败的情况下,进入步骤S1710:安全/可信启动失败,终止启动过程。
S1705:加载运行TCM服务模块。
S1706:度量BL31、BL32、BL33:利用TCM或TPCM控制模块对所述BL31固件、所述BL32固件、所述BL33固件中的一种或多种进行度量,若度量成功则进入步骤S1707:安全/可信启动完成,若度量失败则进入步骤S1708:安全/可信启动失败,终止启动过程。在步骤S1706中,由于TPCM控制模块运行于第二子系统中,通常与第二子系统的操作系统封装在一起,因此在包括第二子系统的操作系统的BL32固件加载运行完毕后,才能进行TPCM控制模块的加载运行。
在本实施例中,选择对BL2固件和BL31、BL32和BL33固件的部分或全部进行度量,在保障安全系统架构的安全性的基础上,有利于实现安全架构系统的可信启动,保障安全系统架构的安全性。
另外,TCM密码模块和TCM服务模块在TCM密码模块的硬件资源自检通过的情况下一起加载,可以使得TCM尽快获得完整的功能,为系统固件的开放调用接口,满足系统固件调用TCM进行可信计算的需求。
可选地,在另一个实施例中,所述安全服务平台运行所述BL2固件之后还用于:
利用所述BL2固件对所述BL31固件进行签名认证。
该过程可以包括:
启动:响应于上电请求,执行启动流程。
加载运行BL2:即运行所述BL2固件,初始化所述安全架构系统的处理器内核。
在BL2固件运行之后,对所述TCM的硬件资源进行自检,在所述TCM的硬件资源自检通过(或称自检成功)的情况下,加载运行所述TCM和所述TPCM控制模块。在所述TCM的硬件资源自检失败的情况下,安全/可信启动失败,终止启动过程。
度量BL31、BL32、BL33:利用TCM或TPCM控制模块对所述BL31固件、所述BL32固件、所述BL33固件中的一种或多种进行度量,若度量失败则安全/可信启动失败,终止启动过程。
BL2签名认证BL31,即在BL2固件运行之后,还利用BL2固件对BL31固件进行签名认证,在BL2固件对BL31固件的签名认证成功,且度量BL31、BL32、BL33的度量结果为成功时,安全/可信启动完成,否则安全/可信启动失败,终止启动过程。
在本实施例中,利用BL2固件、TCM/TPCM控制模块对BL31固件进行双重认证,实现了安全/可信启动的有机结合,提高了安全架构系统的安全性。
在本说明书的一个实施例中,参考图18,所述TCM还包括TCM服务模块,所述TCM服务模块212和所述TCM密码模块211运行于所述第三子系统13中,且所述第二子系统12运行于第二处理器核32,所述第三子系统13运行于第三处理器核33;
所述安全服务平台执行启动过程,在所述启动过程中,利用所述TCM或所述TPCM控制模块对以下固件中的一种或多种进行度量:BL2固件、BL31固件、BL32固件、BL33固件具体用于:
加载运行所述第三子系统中的固件,以初始化所述第三子系统;
对所述TCM密码模块的硬件资源进行自检;
在所述TCM密码模块的硬件资源自检通过的情况下,加载运行所述TCM;
利用所述TCM度量BL2固件;
运行所述BL2固件;
利用所述TCM或所述TPCM控制模块对所述BL31固件、所述BL32固件和所述BL33固件中的一种或多种进行度量。
在本实施例中,由于第二子系统和第三子系统分别运行于不同的处理器核上,使得第三子系统具备了图灵完备性,能够自己独立执行任务,有利于提高第三子系统的任务执行效率。
也正是由于第三子系统具有图灵完备性,使得启动过程中,可以先加载运行第三子系统中的固件,初始化第三子系统,使得第三子系统具备运行环境,之后的度量步骤可参考图17中的相关描述。
在一些实施方式中,对如何利用TCM或TPCM控制模块对固件进行度量提出了优化设计,具体地,当TPCM控制模块运行于第二子系统,TCM服务模块和TPM密码模块运行于第三子系统时,参考图19,所述安全服务平台利用所述TCM或所述TPCM控制模块对所述BL31固件、所述BL32固件和所述BL33固件中的一种或多种进行度量具体用于:
利用所述TCM度量所述BL31固件;
在所述BL31固件认证通过时,加载运行所述BL31固件;在所述BL31固件认证不通过时,终止启动过程。
利用所述TCM度量所述BL32固件;
运行所述BL32固件和所述TPCM控制模块;
检测所述TPCM控制模块的可用状态,设置表征所述TPCM控制模块的可用状态的标志位;
若所述标志位表征所述TPCM控制模块可用,则利用所述TPCM控制模块度量所述BL33固件;
若所述标志位表征所述TPCM控制模块不可用,则利用所述TCM度量所述BL33固件。
具体步骤包括:
S1901:度量BL31:由于TPCM控制模块运行于第二子系统,因此在加载运行BL32固件之前,TPCM控制模块暂未运行,此时需要利用TCM度量BL31固件。
若BL31固件度量成功,则执行步骤S1902:加载运行BL31。若BL31固件度量失败,则执行步骤S1907:安全/可信启动失败,终止启动过程。
S1903:度量BL32:同样的,由于BL32固件加载之前,TPCM控制模块未运行,因此需要利用已经在之前步骤中加载运行的TCM度量BL32固件。
若BL32固件度量成功,在执行步骤S1904:加载运行BL32固件和TPCM控制模块。
若BL32固件度量失败,则执行步骤S1907:安全/可信启动失败,终止启动过程。
S1905:检测TPCM控制模块:检测所述TPCM控制模块的标志位,若所述TPCM控制模块的标志位表征所述TPCM控制模块可用,则使能TPCM控制模块,后续度量步骤(S1906)采用TPCM控制模块进行度量,若TPCM控制模块的标志位表征所述TPCM控制模块不可用,则后续度量步骤(S1906)采用TCM进行度量。
S1906:度量BL33:根据步骤S1905的检测结果,选择TCM或TPCM控制模块,对BL33固件进行度量。
若BL33固件度量失败,则执行步骤S1907:安全/可信启动失败,终止启动过程。
若BL33固件度量成功,则执行步骤S1908:安全/可信启动完成。
在步骤S1901之前的步骤根据第二子系统和第三子系统是否运行于同一处理器核等因素的不同而有所不同,具体可行执行过程可参考上文中的相关描述。
在本实施例中,在TPCM控制模块加载时,设置表征TPCM控制模块是否可用的标志位,并在TPCM控制模块可用时,优先采用TPCM控制模块进行对启动过程中运行的固件进行度量,有利于发挥可信计算3.0路线的技术优势,保障安全/可信启动流程的自主可控和安全可信。
在本说明书的一个实施例中,参考图20,所述TCM还包括TCM服务模块212,所述TCM服务模块212和所述TPCM控制模块22运行于所述第二子系统12中,所述TCM密码模块211运行于所述第三子系统13中,且所述第二子系统12与所述第三子系统13运行于第一处理器核31;
如图21所示,所述安全服务平台执行启动过程,在所述启动过程中,利用所述TCM或所述TPCM控制模块对以下固件中的一种或多种进行度量:BL2固件、BL31固件、BL32固件、BL33固件具体用于:
对所述TCM密码模块的硬件资源进行自检。
在所述TCM密码模块的硬件资源自检通过的情况下,加载运行所述TCM密码模块。
利用所述TCM密码模块,对所述BL2固件进行度量。
运行所述BL2固件,并初始化所述安全架构系统的处理器内核。
利用所述TCM或所述TPCM控制模块对所述BL31固件、所述BL32固件和所述BL33固件中的一种或多种进行度量。
参考图21,具体启动过程包括:
S2101:启动:响应于上电请求,执行启动流程。
S2102:加载运行BL2:即运行所述BL2固件,初始化所述安全架构系统的处理器内核。
S2103:TCM的硬件资源自检:即在BL2固件运行之后,对所述TCM密码模块的硬件资源进行自检,在所述TCM的硬件资源自检通过(或称自检成功)的情况下,进入步骤S2104:加载运行所述TCM密码模块。在所述TCM的硬件资源自检失败的情况下,进入步骤S2107:安全/可信启动失败,终止启动过程。
S2105:度量BL31、BL32、BL33:利用TCM或TPCM控制模块对所述BL31固件、所述BL32固件、所述BL33固件中的一种或多种进行度量,若度量成功则进入步骤S2106:安全/可信启动完成,若度量失败则进入步骤S2107:安全/可信启动失败,终止启动过程。在步骤S2105中,由于TPCM控制模块和TCM服务模块运行于第二子系统中,通常与第二子系统的操作系统封装在一起,因此在包括第二子系统的操作系统的BL32固件加载运行完毕后,才能进行TPCM控制模块和TCM服务模块的加载运行。
在本实施例中,TCM服务模块不与TCM密码模块一起加载运行,可以将TCM服务模块的加载运行任务放在运算资源加载相对充分的阶段(例如BL2固件加载运行之后)进行,有利于缩短启动过程所需的启动时间。
对于具有多核处理器的计算设备,在一些实施例中,参考图22,所述TCM服务模块212和所述TPCM控制模块22运行于所述第二子系统12,且所述第二子系统12运行于第二处理器核32,所述第三子系统13运行于第三处理器核33;
参考图23,所述安全服务平台执行启动过程,在所述启动过程中,利用所述TCM或所述TPCM控制模块对以下固件中的一种或多种进行度量:BL2固件、BL31固件、BL32固件、BL33固件具体用于:
加载运行所述第三子系统中的固件,以初始化所述第三子系统;
对所述TCM密码模块的硬件资源进行自检;
在所述TCM密码模块的硬件资源自检通过的情况下,加载运行所述TCM密码模块;
利用所述TCM密码模块,对所述BL2固件进行度量;
加载运行所述BL2固件,初始化所述安全架构系统的处理器内核;
利用所述TCM或所述TPCM控制模块对以下固件中的一种或多种进行度量:BL31固件、BL32固件、BL33固件。
具体步骤参考图23,包括:
S2301:启动:响应于上电请求,执行启动流程。
S2302:加载运行第三子系统的固件,以初始化第三子系统。在本实施例中,由于第三子系统运行于单独的第二处理器核上,具备图灵完备性,可以自己运行第三子系统中的固件。
S2303:TCM的硬件资源自检:即对所述TCM密码模块的硬件资源进行自检,在所述TCM的硬件资源自检通过(或称自检成功)的情况下,进入步骤S2304:加载运行所述TCM密码模块。在所述TCM的硬件资源自检失败的情况下,进入步骤S2309:安全/可信启动失败,终止启动过程。
S2305:度量BL2:利用TCM密码模块对BL2固件进行度量,在BL2固件度量结果为通过(或称成功)的情况下,进入步骤S2306:加载运行BL2:即加载运行所述BL2固件,初始化所述安全架构系统的处理器内核。在BL2固件度量结果为失败的情况下,进入步骤S2309,终止启动过程。
S2307:度量BL31、BL32、BL33:利用TCM或TPCM控制模块对所述BL31固件、所述BL32固件、所述BL33固件中的一种或多种进行度量,若度量成功则进入步骤S2308:安全/可信启动完成,若度量失败则进入步骤S2309:安全/可信启动失败,终止启动过程。在步骤S2307中,由于TPCM控制模块和TCM服务模块运行于第二子系统中,通常与第二子系统的操作系统封装在一起,因此在包括第二子系统的操作系统的BL32固件加载运行完毕后,才能进行TPCM控制模块和TCM服务模块的加载运行。
在本实施例中,在启动过程中先加载运行第三子系统,使得第三子系统可以首先正常运行,有利于提高第三子系统的任务处理效率,从而提高启动效率。
对于TCM服务模块和TPCM控制模块运行于第二子系统中,TCM密码模块运行第三子系统的异构架构(即第二子系统运行于第二处理器核,第三子系统运行于第三处理器核)的情况,本说明书的一些实施例给出了一种BL3固件(即BL31固件、BL32固件和BL33固件中的至少一种)的度量方式,具体地,参考图24,所述安全服务平台利用所述TCM或所述TPCM控制模块对所述BL31固件、所述BL32固件和所述BL33固件中的一种或多种进行度量具体用于:
利用所述TCM密码模块度量所述BL31固件。
在所述BL31固件认证通过时,加载运行所述BL31固件。在所述BL31固件认证失败时,终止启动过程。
利用所述TCM密码模块度量所述BL32固件。
运行所述BL32固件、所述TCM服务模块和所述TPCM控制模块。
检测所述TPCM控制模块的可用状态,设置表征所述TPCM控制模块的可用状态的标志位。
若所述标志位表征所述TPCM控制模块可用,则利用所述TPCM控制模块度量所述BL33固件。
若所述标志位表征所述TPCM控制模块不可用,则利用所述TCM度量所述BL33固件。
具体步骤包括:
S2401:度量BL31:由于TCM服务模块和TPCM控制模块运行于第二子系统,因此在加载运行BL32固件之前,TCM服务模块和TPCM控制模块暂未运行,此时需要利用TCM密码模块度量BL31固件。
若BL31固件度量成功,则执行步骤S2402:加载运行BL31。若BL31固件度量失败,则执行步骤S2407:安全/可信启动失败,终止启动过程。
S2403:度量BL32:同样的,由于BL32固件加载之前,TCM服务模块和TPCM控制模块未运行,因此需要利用已经在之前步骤中加载运行的TCM密码模块度量BL32固件。
若BL32固件度量成功,在执行步骤S2404:加载运行BL32固件和TPCM控制模块。
若BL32固件度量失败,则执行步骤S2407:安全/可信启动失败,终止启动过程。
S2405:检测TPCM控制模块:检测所述TPCM控制模块的标志位,若所述TPCM控制模块的标志位表征所述TPCM控制模块可用,则使能TPCM控制模块,后续度量步骤(S2406)采用TPCM控制模块进行度量,若TPCM控制模块的标志位表征所述TPCM控制模块不可用,则后续度量步骤(S2406)采用TCM进行度量。
S2406:度量BL33:根据步骤S2405的检测结果,选择TCM或TPCM控制模块,对BL33固件进行度量。
若BL33固件度量失败,则执行步骤S2407:安全/可信启动失败,终止启动过程。
若BL33固件度量成功,则执行步骤S2408:安全/可信启动完成。
在步骤S2401之前的步骤根据第二子系统和第三子系统是否运行于同一处理器核等因素的不同而有所不同,具体可行执行是可参考上文中的相关描述。
在本实施例中,在TPCM控制模块加载时,设置表征TPCM控制模块是否可用的标志位,并在TPCM控制模块可用时,优先采用TPCM控制模块进行对启动过程中运行的固件进行度量,有利于发挥可信计算3.0路线的技术优势,保障安全/可信启动流程的自主可控和安全可信。
为了保障安全/可信启动流程从启动过程的一开始就是可信的,在一些实施例中,参考图25,对于第二子系统12和第三子系统13运行于同一处理器核(即第一处理器核31)的情况下,还在所述安全服务平台中设置了可信根40。所述可信根40可以是写在计算设备的处理器的ROM中,启动时的前一行(段)或前几行(段)代码,是一切信任链的源头。所述可信根40可以包括BL1固件。
执行所述可信根,对所述第一处理器核和所述TCM的可信计算硬件资源进行自检,若自检失败则终止所述启动过程,若自检成功,则利用所述可信根对所述BL2固件进行签名认证。
所述安全服务平台运行所述BL2固件具体用于:
在所述BL2固件认证通过的情况下,运行所述BL2固件。在所述BL2固件认证不通过的情况下,终止启动过程。
关于运行BL2固件之后的启动过程,可参考上文中对于第二子系统和第三子系统运行于同一处理器核时的启动过程的相关描述,本说明书在此不做赘述。
在本实施例中,通过可信根度量BL2固件,实现了整个启动链条的安全/可信,提高了安全架构系统的安全性。
参考图26,对于第二子系统12和第三子系统13运行于不同处理器核的情况下(即第二子系统12运行于第二处理器核32,第三子系统13运行于第三处理器核33),还在所述安全服务平台中设置了可信根40。所述可信根40可以是写在计算设备的处理器的ROM中,启动时的前一行(段)或前几行(段)代码,是一切信任链的源头。在一些实施方式中,由于BL1固件存储于ROM中,不易篡改的特性,所述可信根40包括BL1固件。
所述安全架构系统内置有可信根,所述安全服务平台加载运行所述第三子系统中的固件之前,还用于:
执行所述可信根;
通过所述可信根对所述第三子系统中的固件进行签名认证;
所述安全服务平台加载运行所述第三子系统中的固件具体用于:
在所述第三子系统中的固件认证通过的情况下,加载运行所述第三子系统中的固件。
在所述第三子系统中的固件认证不通过的情况下,终止所述启动过程。
在加载运行所述第三子系统中的固件之后的启动步骤,可参考上文中对于第二子系统和第三子系统运行于不同处理器核时的启动过程的相关描述,本说明书在此不做赘述。
在本实施例中,通过可信根度量第三子系统中的固件,实现了整个启动链条的安全/可信,提高了安全架构系统的安全性。
此外,BL2固件、BL31固件、BL32固件和BL33固件在度量失败后均不执行相应的固件加载任务,并终止启动过程,可以满足安全架构系统的安全启动的要求。
在一些实施方式中,在启动过程中所需运行的固件的度量结束后,为了保障整个计算设备的系统安全,所述安全架构系统被设置在计算设备中,所述安全服务平台还用于:
利用所述TCM或所述TPCM控制模块对所述计算设备的操作系统内核进行度量。
在所述计算设备的操作系统内核度量结果为通过时,加载所述操作系统内核,以初始化所述计算设备的硬件资源以及引导所述操作系统,从而完成所述计算设备的启动。
在本实施例中,实现了利用所述TCM或所述TPCM控制模块对所述计算设备的操作系统内核进行度量的操作,保障了启动过程的全链条安全与可信。
在一些实施方式中,除了对于TCM硬件资源的自检,在TCM加载运行时,还可以对TCM进行进一步的自检,保障TCM的安全可信。具体地,在本说明书的一个实施例中,所述安全服务平台加载运行所述TCM具体用于:
加载所述TCM。
运行所述TCM的自检程序,并获得所述TCM的自检程序返回的自检结果,若所述自检结果为自检失败,则终止所述启动过程。
TCM的自检程序可以是TCM内置的Self-Task程序,通过运行该自检程序,保障TCM除硬件资源外的其他资源的安全可信。
需要说明的是,在上面的启动过程中,主要体现了可信启动过程中TCM或TPCM控制模块对固件的度量。在可信启动过程中,安全启动过程也可并行进行,即利用可信根对固件进行逐级验证,实现安全启动技术的信任链构建,其中,固件可以包括BL1固件、BL2固件、BL31固件、BL32固件和BL33固件中的一种或多种。如前文所述,BL1固件可以被设置在可信根中,具有不可篡改的特性,是上电启动的第一段代码,是一切信任链的源头。在这种情况下,为实现安全启动技术,需先执行可信根,之后,对BL2固件、BL31固件、BL32固件和BL33固件中的一种或多种进行逐级签名验证,示例性地,该逐级签名认证具体体现在:可信根对BL2固件进行签名验证,之后,BL2固件对BL31固件进行签名验证,BL31固件对BL32和/或BL33固件分别进行签名验证。
示例性方法
本说明书实施例还提供了一种实现安全可信启动的方法,应用于安全架构系统,如图27所示,所述实现安全可信启动的方法包括:
S2701:响应于上电请求,执行启动过程,在所述启动过程中,利用所述TCM或所述TPCM控制模块对启动过程中运行的固件进行度量,并记录度量结果。
所述安全架构系统可以包括:第一子系统、第二子系统和第三子系统,所述第一子系统、所述第二子系统和所述第三子系统各自对应的安全等级依次递增,所述第二子系统和所述第三子系统运行在第一处理器核中,所述安全架构系统构建有安全服务平台,所述安全服务平台内置有可信密码模块TCM,所述安全服务平台还搭载有TPCM控制模块,所述TPCM控制模块用于通过软件方式调用所述TCM,所述TCM包括TCM密码模块,所述TPCM控制模块和所述TCM密码模块运行于除所述第一子系统外的不同子系统
所述安全架构系统也可以包括:第一子系统、第二子系统和第三子系统,所述第一子系统、所述第二子系统和所述第三子系统各自对应的安全等级依次递增,所述第二子系统和所述第三子系统运行在第一处理器核中,所述安全架构系统构建有安全服务平台,所述安全服务平台内置有包括可信密码模块TCM,所述安全服务平台还搭载和有TPCM控制模块,所述TPCM控制模块用于通过软件方式调用所述TCM,所述TCM和所述TPCM控制模块运行于所述第三子系统
所述安全架构系统还可以包括:第一子系统、第二子系统和第三子系统,所述第一子系统、所述第二子系统和所述第三子系统各自对应的安全等级依次递增,所述第二子系统运行在第一处理器核中,所述第三子系统运行在第二处理器核中,所述安全架构系统构建有安全服务平台,所述安全服务平台内置有可信密码模块TCM,所述安全服务平台还搭载有TPCM控制模块,所述TPCM控制模块用于通过软件方式调用所述TCM,所述TCM和所述TPCM控制模块运行于所述第三子系统。
可选地,所述在所述启动过程中,利用所述TCM或所述TPCM控制模块对启动过程中运行的固件进行度量包括:
利用所述TCM或所述TPCM控制模块对以下固件中的一种或多种进行度量:BL2固件、BL31固件、BL32固件、BL33固件。
关于安全架构系统的具体结构以及各具体结构下各自对应的实现安全可信启动的方法的具体可行执行步骤可以参考上文“示例性系统”中的相关描述。本文在此不做赘述。
示例性电子设备
本申请另一实施例还提出一种电子设备,参见图28所示,本说明书的一个示例性实施例还提供了一种电子设备,包括:存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时执行本说明书上述实施例中描述的根据本说明书各种实施例的实现安全可信启动的方法中的步骤。
该电子设备的内部结构可以如图28所示,该电子设备包括通过系统总线连接的处理器、存储器、网络接口和输入装置。其中,该电子设备的处理器用于提供计算和控制能力。该中控设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统和计算机程序。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该电子设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以本说明书上述实施例中描述的根据本说明书各种实施例的实现安全可信启动的方法中的步骤。
处理器可包括主处理器,还可包括基带芯片、调制解调器等。
存储器中保存有执行本发明技术方案的程序,还可以保存有操作系统和其他关键业务。具体地,程序可以包括程序代码,程序代码包括计算机操作指令。更具体的,存储器可以包括只读存储器(read-only memory,ROM)、可存储静态信息和指令的其他类型的静态存储设备、随机存取存储器(random access memory,RAM)、可存储信息和指令的其他类型的动态存储设备、磁盘存储器、flash等等。
处理器可以是通用处理器,例如通用中央处理器(CPU)、微处理器等,也可以是特定应用集成电路(application-specific integrated circuit,ASIC),或一个或多个用于控制本发明方案程序执行的集成电路。还可以是数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
输入设备可包括接收用户输入的数据和信息的装置,例如键盘、鼠标、摄像头、扫描仪、光笔、语音输入装置、触摸屏、计步器或重力感应器等。
输出设备可包括允许输出信息给用户的装置,例如显示屏、打印机、扬声器等。
通信接口可包括使用任何收发器一类的装置,以便与其他设备或通信网络通信,如以太网,无线接入网(RAN),无线局域网(WLAN)等。
处理器执行存储器中所存放的程序,以及调用其他设备,可用于实现本申请上述实施例所提供的任意一种实现安全可信启动的方法的各个步骤。
该电子设备还可以包括显示组件和语音组件,该显示组件可以是液晶显示屏或者电子墨水显示屏,该电子设备的输入装置可以是显示组件上覆盖的触摸层,也可以是电子设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图28中示出的结构,仅仅是与本说明书方案相关的部分结构的框图,并不构成对本说明书方案所应用于其上的电子设备的限定,具体的电子设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
示例性计算机程序产品和存储介质
除了上述方法和设备以外,本说明书实施例提供的实现安全可信启动的方法还可以是计算机程序产品,其包括计算机程序指令,所述计算机程序指令在被处理器运行时使得所述处理器执行本说明书上述“示例性方法”部分中描述的根据本说明书各种实施例的实现安全可信启动的方法中的步骤。
所述计算机程序产品可以以一种或多种程序设计语言的任意组合来编写用于执行本说明书实施例操作的程序代码,所述程序设计语言包括面向对象的程序设计语言,诸如Java、C++等,还包括常规的过程式程序设计语言,诸如“C”语言或类似的程序设计语言。程序代码可以完全地在用户计算设备上执行、部分地在用户设备上执行、作为一个独立的软件包执行、部分在用户计算设备上部分在远程计算设备上执行、或者完全在远程计算设备或服务器上执行。
此外,本说明书实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行本说明书上述“示例性方法”部分中描述的根据本说明书各种实施例的实现安全可信启动的方法中的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本说明书所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本说明书的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本说明书实施例提供的方案范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本说明书构思的前提下,还可以做出若干变形和改进,这些都属于本说明书的保护范围。因此,本说明书专利的保护范围应以所附权利要求为准。
Claims (12)
1.一种安全架构系统,其特征在于,包括:第一子系统、第二子系统和第三子系统,所述第一子系统、所述第二子系统和所述第三子系统各自对应的安全等级依次递增,所述第二子系统和所述第三子系统运行在第一处理器核中,所述安全架构系统构建有安全服务平台,所述安全服务平台内置有可信密码模块TCM,所述安全服务平台还搭载有TPCM控制模块,所述TPCM控制模块用于通过软件方式调用所述TCM,所述TCM和所述TPCM控制模块运行于所述第三子系统,所述安全服务平台配置成:
响应于上电请求,执行启动过程,在所述启动过程中,利用所述TCM或所述TPCM控制模块对启动过程中运行的固件进行度量,并记录度量结果。
2.根据权利要求1所述的系统,其特征在于,所述安全服务平台利用所述TCM或所述TPCM控制模块对启动过程中运行的固件进行度量具体用于:
利用所述TCM或所述TPCM控制模块对以下固件中的一种或多种进行度量:BL2固件、BL31固件、BL32固件、BL33固件。
3.根据权利要求2所述的系统,其特征在于,所述安全服务平台执行启动过程,在所述启动过程中,利用所述TCM或所述TPCM控制模块对以下固件中的一种或多种进行度量:BL2固件、BL31固件、BL32固件、BL33固件具体用于:
运行所述BL2固件,初始化所述安全架构系统的处理器内核;
对所述TCM的硬件资源进行自检;
在所述TCM的硬件资源自检通过的情况下,加载运行所述TCM和所述TPCM控制模块;
利用所述TCM或所述TPCM控制模块对所述BL31固件、所述BL32固件、所述BL33固件中的一种或多种进行度量。
4.根据权利要求3所述的系统,其特征在于,所述安全服务平台运行所述BL2固件之后还用于:
利用所述BL2固件对所述BL31固件进行签名认证。
5.根据权利要求3或4任一项所述的系统,其特征在于,所述安全服务平台还包括可信根;所述可信根包括BL1固件;
所述安全服务平台在运行所述BL2固件之前,还用于:
执行所述可信根,对所述第一处理器核和所述TCM的可信计算硬件资源进行自检,若自检失败则终止所述启动过程,若自检成功,则利用所述可信根对所述BL2固件进行签名认证;
所述安全服务平台运行所述BL2固件具体用于:
在所述BL2固件认证通过的情况下,运行所述BL2固件。
6.根据权利要求3或4所述的系统,其特征在于,所述安全服务平台还包括可信根;所述可信根包括BL1固件;
所述安全服务平台在运行所述BL2固件之前,还用于:
执行所述可信根,对所述第一处理器核和所述TCM的可信计算硬件资源进行自检,若自检失败则终止所述启动过程,若自检成功,在所述可信根中运行所述TCM和所述TPCM控制模块;
利用所述TCM或所述TPCM控制模块对所述BL2固件进行签名认证;
所述安全服务平台运行所述BL2固件具体用于:
在所述BL2固件认证通过的情况下,运行所述BL2固件。
7.根据权利要求3或4所述的系统,其特征在于,所述安全服务平台加载运行所述TCM具体用于:
加载所述TCM;
运行所述TCM的自检程序,并获得所述TCM的自检程序返回的自检结果,若所述自检结果为自检失败,则终止所述启动过程。
8.根据权利要求1~4任一项所述的系统,其特征在于,所述安全服务平台运行所述TPCM控制模块的过程包括:
运行所述TPCM控制模块,根据所述TPCM控制模块的可用状态,设置所述TPCM控制模块的标志位,所述TPCM控制模块的标志位用于表征所述TPCM控制模块是否可用;
所述安全服务平台利用所述TCM或所述TPCM控制模块对以下固件中的一种或多种进行度量:BL2固件、BL31固件、BL32固件、BL33固件具体用于:
检测所述TPCM控制模块的标志位,若所述TPCM控制模块的标志位表征所述TPCM控制模块可用,利用所述TPCM控制模块对所述BL2固件、BL31固件、BL32固件和BL33固件中的一种或多种进行度量;
若所述TPCM控制模块的标志位表征所述TPCM控制模块不可用,利用所述TCM模块对所述BL2固件、BL31固件、BL32固件和BL33固件中的一种或多种进行度量。
9.根据权利要求1~4任一项所述的系统,其特征在于,所述安全架构系统被设置在计算设备中,所述安全服务平台还用于:
利用所述TCM或所述TPCM控制模块对所述计算设备的操作系统内核进行度量;
在所述计算设备的操作系统内核度量结果为通过时,加载所述操作系统内核,以初始化所述计算设备的硬件资源以及引导所述操作系统,从而完成所述计算设备的启动。
10.一种实现安全可信启动的方法,其特征在于,应用于安全架构系统,所述安全架构系统包括:第一子系统、第二子系统和第三子系统,所述第一子系统、所述第二子系统和所述第三子系统各自对应的安全等级依次递增,所述第二子系统和所述第三子系统运行在第一处理器核中,所述安全架构系统构建有安全服务平台,所述安全服务平台内置有可信密码模块TCM,所述安全服务平台还搭载有TPCM控制模块,所述TPCM控制模块用于通过软件方式调用所述TCM,所述TCM和所述TPCM控制模块运行于所述第三子系统,所述实现安全可信启动的方法包括:
响应于上电请求,执行启动过程,在所述启动过程中,利用所述TCM或所述TPCM控制模块对启动过程中运行的固件进行度量,并记录度量结果。
11.根据权利要求10所述的方法,其特征在于,所述在所述启动过程中,利用所述TCM或所述TPCM控制模块对启动过程中运行的固件进行度量包括:
利用所述TCM或所述TPCM控制模块对以下固件中的一种或多种进行度量:BL2固件、BL31固件、BL32固件、BL33固件。
12.一种计算设备,其特征在于,所述计算设备包括如权利要求1-9任一项所述的安全架构系统。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211624051.2A CN118211225A (zh) | 2022-12-16 | 2022-12-16 | 一种安全架构系统、实现安全可信启动的方法和计算设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211624051.2A CN118211225A (zh) | 2022-12-16 | 2022-12-16 | 一种安全架构系统、实现安全可信启动的方法和计算设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN118211225A true CN118211225A (zh) | 2024-06-18 |
Family
ID=91447660
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211624051.2A Pending CN118211225A (zh) | 2022-12-16 | 2022-12-16 | 一种安全架构系统、实现安全可信启动的方法和计算设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN118211225A (zh) |
-
2022
- 2022-12-16 CN CN202211624051.2A patent/CN118211225A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102376626B1 (ko) | 데이터 처리 가속기의 난독화를 통한 데이터 전송 | |
US10516533B2 (en) | Password triggered trusted encryption key deletion | |
CN107533609B (zh) | 用于对系统中的多个可信执行环境进行控制的系统、设备和方法 | |
US11455396B2 (en) | Using trusted platform module (TPM) emulator engines to measure firmware images | |
CN110321713B (zh) | 基于双体系架构的可信计算平台的动态度量方法和装置 | |
CN110321235B (zh) | 基于双体系架构的可信计算平台的系统交互方法和装置 | |
CN110334512B (zh) | 基于双体系架构的可信计算平台的静态度量方法和装置 | |
CN103353931A (zh) | 安全增强型计算机系统和方法 | |
CN102208000A (zh) | 为虚拟机镜像提供安全机制的方法和系统 | |
EP3326105A1 (en) | Technologies for secure programming of a cryptographic engine for secure i/o | |
CN111264044A (zh) | 芯片、生成私钥的方法和可信证明的方法 | |
CN107704308B (zh) | 虚拟平台vTPM管理系统、信任链构建方法及装置、存储介质 | |
US20220382874A1 (en) | Secure computation environment | |
CN109992973B (zh) | 一种利用oprom机制的启动度量方法及装置 | |
CN115618364B (zh) | 实现安全可信启动的方法、安全架构系统及相关设备 | |
US10771462B2 (en) | User terminal using cloud service, integrated security management server for user terminal, and integrated security management method for user terminal | |
CN110334509B (zh) | 双体系架构的可信计算平台的构建方法和装置 | |
KR102565414B1 (ko) | 데이터 처리 가속기에 사용되는, 난독화 유닛에 의해 난독화 를 진행하는 데이터 전송 | |
CN115618365B (zh) | 实现安全可信启动的方法、安全架构系统及相关设备 | |
CN102833296A (zh) | 用于构建安全的计算环境的方法和设备 | |
CN118211225A (zh) | 一种安全架构系统、实现安全可信启动的方法和计算设备 | |
CN110334532B (zh) | 文件的加密、解密处理方法及加解密系统 | |
CN118211242A (zh) | 一种安全架构系统、实现安全可信启动的方法和计算设备 | |
CN118211239A (zh) | 一种安全架构系统、实现安全可信启动的方法和计算设备 | |
CN118211275A (zh) | 一种安全架构系统、安全服务方法和计算设备 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination |