-
- PSA安全生命周期概述(强制要求)
图略
生命周期管理跟踪设备的整个生命周期状态——从开发和制造,使用,到调试和维修所有状态。例如,根据其生命周期状态,设备将具有不同的安全属性,例如:
- 在开发和制造状态初期,密钥和标识可能还没有准备好,调试端口可能还没有被锁定;
- 在某些调试和维修状态中,密钥可能会被破坏,或者启动状态和认证可能不再可信;
- 一些可信子系统,例如SIM和TPM类型的设备,将有它们自己的本地生命周期和供应流程;
- 应用程序本身可能也有一个应用程序生命周期管理机制,它可以跟踪服务的启动、激活、去激活、重新分配等等过程。
在大多数情况下,这些对象和生命周期管理针对于某个特殊实现或应用程序的,超出了本规范的范围。
本章为符合PSA的设备上的PSA可信根定义了一个通用的PSA安全生命周期(管理)。同样的,所有其他对象、任何相关的本地或应用程序生命周期管理机制都应隶属于PSA信任根和PSA安全生命周期管理。任何本地或应用程序的生命周期管理都不能与基于PSA可信根的PSA安全生命周期(管理)相冲突。
制造和工厂供应是设备在组装和安全供应过程中发生的活动,然后将其打包并沿着分销、零售等路径运送给终端客户。
对于兼容PSA的设备,必须提供PSA可信根,并充分发挥其作用。涉及的步骤包括配置PSA可信根参数、提供PSA可信根固件代码、锁定系统以便禁用调试接口和使能安全引导(启动)。
可能很多阶段都有对应用程序的需求,在制造阶段还可能需要额外的应用程序需要提供,或者在销售后期也需要。应用程序级数据和密钥的提供应该只在PSA 可信根完全准备好并可运行之后才进行,并且必须始终使用PSA可信根服务来保护产品,例如安全存储和初始认证。
规则 |
描述 | 备注 |
PSA可信根必须作为生产过程的一部分进行充分的准备和操作 | 只有完全安全的设备才能进入分销、零售和进入供应链。 | 这将要求出具生产报告,用以跟踪和识别完全安全的设备。 |
应用程序级配置应该只在PSA可信根完全准备好,并可运行之后才进行。 | 设备必须是可测试的,同时,在提供其他应用程序级敏感数据之前所有PSA可信根服务务必处于可信状态。 | 可以提供应用程序级敏感数据处理,例如,通过应用可信根配置客户端 |
作为维修和服务场景的一部分,比如返厂设备授权的处理,一个完全安全的设备可能需要打开进行调试和维修的接口/设置。调试和修复可能具有或多或少的干扰性,在一些侵入性较强的操作中,PSA可信根会受到破坏,这可能使其无法将设备返回到安全的操作状态。
PSA安全生命周期管理并不会辨别出调试是如何启动的,例如,通过启用硬件调试接口,或者通过启用软件调试特性。
侵入式调试模式应该使用合适的受控的安全授权过程。再次说明,PSA安全模型没有指定具体的处理方法,虽然其他PSA规范可能会提供一些指导。
PSA生命周期管理关心任何已经开启的调试设置的干扰性,应当在启用调试时能够保护数据和密钥,确保调试状态得到验证,以便验证实体可以根据设备的实际状态采取适当的操作。
调试干扰可以分为以下几类:
级别 |
安全影响 | 描述 |
不暴露(侵入)式诊断 | 不泄露任何敏感用户数据和密钥、应用程序级私密数据或PSA 可信根级私密数据。 不影响设备软件任何方面的可靠运行。 | 标准日志记录、基本诊断和类似的设备管理功能。 |
非安全调试 | 干扰性的调试,它对非安全级的操作进行了破坏,包括对破坏而非安全级数据和密钥的访问。 | 非安全级别的主动调试不会跨越应用程序可信根服务的隔离边界。 |
应用程序可信根调试 | 入侵式调试会损害调试应用程序可信根的运行,包括对应用程序可信根级数据和密钥的访问。 PSA可信根和安全引导仍然可以保持完整和可靠。 | 主动调试会跨越应用程序可信根服务的隔离边界,但是不会跨越PSA可信根的隔离边界。 |
PSA可信根调试 | 破坏PSA可信根操作或破坏安全引导的一种侵入式调试。 | 主动调试会跨越PSA可信根服务的隔离边界。启用了此级别的调试后,设备将不再具有可测试性(不再安全)。 |
根据硬件隔离实现,设备可能支持某些或所有调试级别。
例如,基于Trust Zone的设备可能支持NS(不安全)代码与ARoT(应用可信根)和PSA RoT(可信根)代码之间的调试边界,但是可能不支持ARoT和PSA RoT代码之间的调试边界。在这种情况下,支持ns级别的调试而不牺牲ARoT和PSA RoT是有可能的,但是在ARoT级别启用调试也会暴露PSARoT。
只要PSARoT不受破坏,设备就可以保持在一个可测试的状态,在这个意义上,最初的认证仍然有效和同时可信。初始认证必须始终反映设备的真实状态,包括任何调试开启的状态下。这又意味着在引导代码完成执行之后,调试状态不能改变,因此,更改调试状态需要设备重置。
只有在重置之后更改调试状态也很重要(调试时不能使用敏感数据和密钥),如果调试状态在运行时改变而没有重置,那么这些数据仍然可能通过内存中的缓存数据公开,例如:
为了防止PSARoT,或者启动过程(状态),被通过启用一定级别的调试而受到破坏,所有PSA根参数必须是不可访问的。假如调试允许不受限制地访问设备及其功能,它将可能会破坏认证,或者允许绕过安全引导,使设备处于不可测试的状态。
在这种情况下,必须使所有PSA根参数都不可访问,这样就能禁止生产级别的IAK无法发出有效认证,或者从安全存储区域导出(派生)密钥。
进入PSA RoT调试状态通常是不可恢复的。一旦安全启动和认证被破坏,通常不可能将设备返回到一个可信任的状态。在这种情况下,必须使PSA根参数永久不可访问,这意味着不能重新创建或恢复原始的PSA RoT级别的密钥和标识。
一组特定的PSA根参数具有最终状态。为了有效地重用硬件,在制造过程开始时将其收回,那么该设备可能能够获得一组新的PSA根参数。从PSA安全模型的观点来看,这种硬件的重新使用必须成为一个新的设备实例(不再是任何旧有设备了)。
一些具有专门硬件的设备可能能够独立地检测设备是否进入这样的(深度)调试状态,当设备处于这种状态时,保护PSA根参数,然后验证设备已恢复到完全可信的状态,然后再让PSA根参数可用。在这种情况下,原始的PSA根参数可以被恢复,因为该设备有一些其他手段来确保该设备——将启动状态PSARoT恢复到可信状态。
规则 |
描述 | 备注 |
非公开(暴露)诊断不得泄露任何秘密、敏感数据,或影响设备的正常运行。 | 设备必须保持在一个完全安全的、可测试的状态。 |
|
启用NS调试、ARoT调试和 PSA RoT调试必须只能在设备重置之后才能进行。 | 为了保护敏感的数据和密钥,调试状态在运行时绝对不能改变。 状态不能在运行时更改,因此任何调试都只能由boot ROM在启用。 | 在NS调试或ARoT调试中,调试状态必须在初始验证报告中显式显示 在PSA RoT调试中,调试状态是隐式的,任何初始认证报告都没有经过生产密钥和标识进行签名。 |
启用侵入式调试应该需要具有一定管控能力的安全授权过程。 | 应该将侵入式调试限制为需授权模式,并且应该获得用户权限。 | 取决于认证配置文件。 |
-
- 通用PSA安全生命周期(强制要求)
图略
上图概述了一般PSA安全生命周期,其目的是为PSA RoT获取最小的生命周期状态和切换过程。
在实际情况中,上述许多步骤都可能得到扩展,例如,工厂供应可能根据自己的流程,涉及单独供应的SIM或TPM类型的设备。同样,依赖于隔离硬件功能,无PSA RoT调试可能参照非安全(NS)调试,或者参考NS调试的同时也参考ARoT调试。也或者只对这两个级别的特定安全分区启用调试。
因此,一般PSA安全生命周期中的状态被定义为主状态,同时所有状态的安全属性都在此规范中定义,因为他们都与PSA RoT以及设备的可测试状态相关。
具体的实现可以给主状态设计附加子状态: 例如,隔离功能和应用程序需求,或者认证配置等。
子状态必须始终保留其关联的主状态的属性,但是可以增加更多的颗粒度。
当设备处于可测试状态时,主状态和子状态都必须是可测试的,这意味着在引导代码完成执行后,这种状态不能被改变,如果这种状态改变则需要设备复位
主状态 |
说明 | 备注 |
设备组装与测试状态 | 在设备组装和测试期间,我们预期设备不会处于安全状态,此时硬件调试和诊断接口可能是打开的,同时设备将运行一些正常执行过程中不会使用的生产和诊断软件 |
|
PSA可信根写入状态 | 设备必须处于安全状态,然后才能提供根参数,或对设备软件进行访问。 根据认证配置文件和设备功能的需求,可以在设备上或设备外生成根参数。 如果在设备上生成根参数,则必须小心确保设备在制造过程中获的信息足够完全。 | 如果根参数和标识是单独提供的,例如,存放在一个SE上,那么在设备达到这个状态之前,任何设备软件都不能访问或执行任何操作 |
安全状态 | 在安全状态下, PSA可信根是完全可操作和安全的。 此时,所有PSA根参数都已准备好并锁定。 | 依赖于设备功能和认证配置文件,PSA根参数值的锁定可以通过硬件(硬锁定)或PSA隔离(软锁定)来实现。 附加的应用程序级数据和密钥应该只在设备的运行到达这种状态后才提供 |
非PSA可信根调试 | 非PSA RoT调试是不损害PSA信任根的任何调试。 只要PSA可信根没有被破坏,设备就可以从非PSA RoT调试返回到安全状态。 |
|
可恢复的PSA可信根调试 | 可恢复的PSA RoT调试是破坏PSA RoT的任何调试,但它会保护PSA根参数,使其在设备处于调试状态时不可访问,当设备返回到可验证的安全状态后则可以恢复。 | 要求专用硬件支持:
处于这种状态的设备不能通过生产密钥签名来生成初始认证报告,因此不能进行认证。 |
报废(退役)状态 | 使所有PSA根参数永久不可访问的任何调试状态。 在不支持可恢复的PSA RoT调试的生产设备上,这是惟一可以进行PSA RoT调试的状态 | 处于这种状态的设备不能通过生产密钥签名来生成初始认证报告,因此不能进行认证。 |
规则 |
描述 | 备注 |
在设备装配和测试期间,不应出现生产根参数或其他敏感数据。 | 在设备组装和测试期间,设备通常是不受保护的,因此不可能存在根敏感数据和标识。 此时硬件调试端口和诊断接口可能是打开的 | 可以使用测试参数。 |
工厂测试工具和固件不应与最终生产镜像由相同的权威机构签署或验证。 | 工厂软件可能包含可能显示测试和诊断模式的信息,这些信息不应该出现在任何受保护的设备中。 除了在设备组装和测试状态之外,不应该在设备上加载此类软件。 |
|
当进入PSA RoT配置状态时,必须启用以下安全属性: 安全启动使能、boot ROM锁定 没有未签名的生产或调试软件 所有硬件调试和诊断接口禁用或锁定 只存在签名的生产软件 | 根据认证配置文件设置,调试和诊断接口可能被密码或密钥锁定,或被永久禁用 | 根据认证配置文件设置,boot ROM可能由硬件锁或者PSA隔离(软件锁)强制锁定 |
当进入安全状态时,设备必须具有以下安全属性:
| 一旦设备进入安全状态,就不能更新或修改根参数 | 根据认证配置文件设置,boot ROM可能由硬件锁或者PSA隔离(软件锁)强制锁定 |
设备只能在复位之后才能进入调试状态或退役(报废)状态 | 这条规则确保在进入任何调试模式时,不会在内存中留下任何可能泄露密钥或敏感用户数据的中间状态。 |
|
在设备进入可恢复的PSA RoT调试或退役状态之前,必须禁用所有PSA根参数 | 在这些状态中, PSA可信根受到破坏,不能信任。此时不能此时派生用于生产的密钥,或使用生产密钥验签报告。 |
|
只有当设备返回到可验证的、可测试状态时,才有可能从可恢复的PSA RoT调试返回到安全状态 |
| 通常需要专用的硬件来检测和验证设备是否已经返回到可测试状态。 |
设备不能从退役(报废)状态中退出。 当设备处于退役状态时,不能恢复PSA根参数。 |
| 根据硬件能力和认证配置,通过有效地处理方式可以用将硬件回收,并给它一组新的PSA根参数(一个新的标识),这样可以重新利用已退役的设备硬件。 但是这种情况超出了PSA安全生命周期的范围,这样一个重新使用的设备应该作为一个新设备来对待。 |
-
- 设备类型和属性(强制要求)
图略
与PSA生命周期管理相关的不同安全状态下的设备类型,有不同的使用目的:
- 生产使用的设备
生产设备已全部准备好并锁定。特别指出,PSA可信根此时被完全配置和操作,并且完全控制设备上的安全策略,并且可以对设备进行认证。
- 未锁定状态的设备
未锁定的设备可以是在锁定之前从生产线上取下的设备,或者是可恢复的PSA RoT调试设备,或已报废的设备。
典型的应用包括,例如,设备和服务开发和测试,安全开发和测试,以及一些修复和调试场景。
此类设备不能被生产密钥或实际客户数据所信任,并且永远不应该被标记为可信任的设备。但是,可能服务提供者为针对专用测试帐户进行测试和调试,会手动启动到这种状态。
- 调试状态的设备
根据隔离级别和相关方法,设备可能支持主动调试,此时PSA RoT不被破坏。
因为至少PSA信任根仍然在运行,并且完全控制其安全策略,设备依旧保持可测试性,服务可以相应地应用自己的策略。
此外,在调试模式下,PSA安全生命周期管理包含了绑定密钥的派生、所有生成密钥、设备上保存的实际客户数据以及绑定密钥隐藏。