PSA架构之安全模型1.0(DEN0079)之7:存储

  1. 存储
    1. 概要(介绍性)

PSA要求为存储在设备上的任何敏感数据提供安全的存储服务: 例如私有数据、隐私、密钥和关键信息。从制造商提供的隐私数据到应用程序生成和服务提供的隐私数据,以及用户生成的私有数据

一般需要提供的安全储存服务:

  1. 访问控制策略——敏感数据的所有权
  2. 隐私和完整性保护——防止敏感数据被未授权的角色访问或修改
  3. 重放保护——防止一个存储的敏感数据被之前存储的同一数据集的版本所替换
  4. 防止在设备处于非安全状态(例如调试模式)时对敏感数据的未授权访问

根据实现要求和认证配置,如上属性可以通过PSA隔离、加密或在很多情况下,以某种组合的方

式实施。

图略

针对安全存储,PSAPSA安全模型定义了一个通用的PSA可信根级别的构建块(building blocks):

  1. 内部可信存储——一种简单的存储模型,用于在存储需求有限的设备上提供基本的存储服务,或作为根机密的存储和应用程序级的根元数据(ARoT或NS)存储服务。
  2. 绑定服务,允许ARoT和NS分区将数据绑定到设备实例、分区和安全生命周期状态

使用这些构建块,可以构建各种复杂程度和功能的存储服务。例如:

  1. 简单存储,利用PSA隔离和健壮性规则的保护,基于片上存储位置,仅用来做内部可信存储。
  2. 应用特定的储存服务,利用芯片外储存区域或可移动储存装置,也许使用针对某应用程序的访问控制策略,例如受保护的文件系统、安全的数据库或对象存储。

在这种情况下,可以使用内部可信存储来保存完整性树的根元数据,同时绑定服务对派生绑定到设备实例和它安全生命周期状态提供派生密钥梯子(ladders,用于派生密钥提供一些支撑:用于密钥派生的密钥)。

    1. 物理存储(强制要求)

物理存储表示实际的持久存储介质,为了安全模型的目的,PSA架构定义了以下类型的物理存储:

存储类型

隔离属性

使用案例

备注

隔离区域

系统外部的任何角色都无法访问的内存位置。

只可由PSA可信根访问

设备配置数据。

简单的持久密钥和数据存储。

应用程序级存储服务的根元数据。

通常是限制外部访问(例如,禁用)的片上闪存或NV存储器I2C)

屏蔽区域

为安全储存和保护秘密而专门设计和使用的一种隔离的区域或存储设备。例如,抗篡改内存或寄存器。

只可由PSA可信根访问

PSA根的机密数据

针对某应用程序的根机密数据

例如:不可拆卸SE,片上NV存储器,或片上闪存的专用扇区。

非隔离区域

通用内存映射持久存储(掉电不丢失)资源。

没有PSA RoT强制访问控制。

应用程序和用户生成的数据。

例如,文件系统或对象存储。

通常外部flash

非隔离存储设备

通用存储设备。

没有PSA RoT强制访问控制。

应用程序和用户生成的数据。

例如,文件系统或对象存储。

例如,USB存储设备或可移动存储卡(用于实现屏蔽位置的任何设备除外)。

 

规则

描述

备注

抗干扰:

屏蔽位置必须提供一定程度的防篡改能力

受保护的地点通常持有提供的秘密,包括PSA可信根机密信息。应该有一定程度的抗篡改性,以防止有人试图窃取这些机密。

根据认证文件和部署要求,防篡改可以解决一系列问题,包括:

  1. 物理访问控制(调试接口、外部接口、物理篡改防护)
  2. 侧通道(例如电源和定时分析)
  3. 主动探测(例如物理拆解、访问内部总线和接口、调试接口)
  4. 被动探测(x射线或电子显微镜)

隔离:

隔离位置和屏蔽位置必须只能直接接触到PSA可信根。

这些类型的位置通常依赖于隐私和完整性保护的不可访问性。

访问控制和所有权策略必须由PSA RoT强制执行。

 

调试接口:

设备上的任何外部接口都不能访问隔离位置和屏蔽位置和无psa RoT调试的安全生命周期状态。

这些类型区域均依赖于隐私和完整性保护的不可访问性。

当设备处于可测试状态时,访问控制和所有权策略必须由PSA RoT强制执行。

外部接口包括USB, I2C, JTAG, EJTAG,边界扫描,串口调试。

 

    1. 内部可信存储(Internal trusted storage)(强制要求)

内部可信存储是一种PSA RoT服务,为存储在隔离位置的数据提供安全的分区级访问控制。只能通过内部可信存储服务访问隔离区域。内部可信存储的例子如下:

  1. 一个简单的存储设备上的数据与有限的存储需求
  2. 存储基本设备配置数据
  3. 在具有更复杂的应用程序RoT或NS级存储服务的设备上存储跟密钥和根元数据

单个数据对象与所属分区相关联,只有所属分区才能访问或修改存储数据对象中的数据。在某些情况下,内部可信存储可能仅依赖于隔离位置的物理不可访问性以及PSA隔离,而不需要额外的密码保护。但是,如果内部可信存储用于调试不应该访问的敏感数据,则必须将加密保护绑定到设备的安全生命周期状态。

规则

描述

备注

隔离区域只能直接接触到PSA可信根。

能够对隔离的位置执行基于分区的访问控制规则。

PSA隔离强制实施。

安全分区可以将数据对象存储在隔离区域。

为存储需求有限的设备提供简单的存储。

为具有更复杂存储需求的设备提供根元数据存储。

 

存储在隔离区域的每个数据对象都应该与所属分区相关联。

 

PSA可信根强制实施

只有具有所有权的分区才能读取、修改或删除数据对象。

为存储在隔离位置的数据对象提供安全分区级别的访问控制。

由PSA可信根强制实施

当设备处于PSA安全生命周期中的任何调试状态时,调试角色都不能访问数据,必须基于绑定根密钥进行加密保护。

调试状态可能向调试角色公开存储在设备上的任何数据或秘密,或者直接破坏内部可信存储服务,或者通过读取调试分区的数据间接读取存储的数据

看安全生命周期管理章节

看绑定跟密钥章节

 

    1. 绑定(可选)

绑定是一种通用的PSA RoT服务,允许分区请求一个或多个分区特定的绑定密钥(binding keys),以供其自己使用。

特定于分区的绑定密钥用于以下情况:安全分区需要将数据存储在非隔离存储中,同时确保:

  1. 系统上的其他安全分区不能直接访问它的数据——分区绑定
  2. 它的数据和密钥只能在创建它们的设备上访问——设备绑定
  3. 调试代理不能直接访问它的任何敏感数据或密钥——安全生命周期绑定
  4. 特定于分区的绑定密钥总是根据请求派生的,从不持久存储。

一个典型的例子可能是一个安全存储服务,它管理密钥梯子(key ladders)和完整性树(integrity trees),以便对其管理的数据进行加密、完整性保护和重放保护。这是存储跟密钥、根数据的基础。针对分区的绑定密钥可用于加密或派生这样此一个根状态,以确保其他分区无法访问该状态,此状态只能在最初创建的设备上恢复,并且状态只能在特定的安全生命周期状态中恢复。

规则

描述

备注

一个安全分区应该能够请求一个分区特定的绑定密钥。

将数据和协议绑定到调用分区、设备实例和设备安全生命周期状态上。

 

分区特定的绑定密钥在启动后首次请求时必须始终派生为新的密钥,并且永远不能持久存储。

分区特定的绑定密钥依赖于生命周期状态、设备唯一根密钥和其他可能在设备重置事件中更改的状态

派生的针对分区的绑定密钥,可以缓存在基于PSA RoT的易失性内存中。

不能导出针对分区的绑定密钥

分区特定的绑定密钥应该只对加密操作可用。

 

调用的安全分区应能够具有以下功能:

1. 使用策略

2. 种子

3.调试策略

种子是一个特定于应用程序的功能,允许一个调用分区为不同的用例派生多个不同分区特定的绑定密钥。

这些策略控制何时以及如何使用针对分区的绑定密钥,参见下面。

 

使用策略为:

1. 密钥的推导

2. 加密

3.签名

防止绑定密钥被滥用。

例如,防止用于密钥派生的密钥(密钥梯子)被用于直接加密/解密。或防止签名密钥用于加密/解密。这两个示例都可能导致安全问题。

密钥派生:派生的密钥只能用于派生其他密钥。

加密:派生密钥只能用于加密/解密操作。

签名:派生密钥只能用于签名/验证操作。

不可能为不同的使用策略派生同一个分区绑定密钥

防止绑定密钥的滥用意外地或恶意地为不同的调试策略派生相同的根键。

为不同的调试策略使用不同的绑定根密钥,参见下面。

调试策略应包括:

1. 担保

2. Non-PSARoT调试

受保护(安全地):同一分区特定的绑定密钥只能在受保护的安全生命周期状态下派生。

PSA RoT调试:可以在受保护的安全生命周期状态和任何不危及PSARoT的调试状态中派生出相同的针对分区的绑定密钥。

如果没有指定调试策略,则默认为受保护方式调试

不可能为不同的调试策略派生同一个分区绑定密钥

总是为不同的调试策略派生不同密钥。

根据调试策略使用不同的绑定根密钥(见下面)。

在派生分区的绑定密钥时,应始终包括以下功能:

1. 调用分区ID

2. 一个依赖调试策略的合适的绑定根密钥(BRK)

调用分区ID:将派生密钥绑定到安全分区

BRK:将派生密钥绑定到设备实例及其安全生命周期状态上。

看绑定跟密钥章节

 

    1. 根密钥绑定(强制要求)

PSA安全模型定义了一个通用绑定根密钥(BRK),用于作为派生其他绑定密钥的根密钥。

本规范定义了两种类型的BRK:

  1. 安全BRK——只有当设备处于安全生命周期状态时,才能派生出相同的BRK
  2. 非PSA RoT调试BRK——如果设备处于安全的生命周期状态,或者处于不损害PSA RoT的任何调试状态,则可以派生出相同的BRK

无论哪种情况,BRK都取决于:

  1. 设备制造厂提供的一种持久的(不可变的)硬件唯一标识符(HUK)——看根参数部分(初始认证章节)

BRK总是在引导时重新派生,并构成引导状态的一部分——看启动章节。

 

规则

描述

备注

绑定根密钥(BRK)必须在每次引导时由引导代码重新派生:

1. 获得BRK

2. PSARoT调试BRK

BRK依赖于设备的PSA安全生命周期状态和HUK,因此可能会随着设备重启而改变。

 

派生BRK应包含在引导状态中。

PSA RoT必须可直接可直接后使用并且可以派生,派生后作为启动过程的一部分

 

BRK派生必须唯一地依赖于硬件唯一密钥(HUK)

BRK派生中包含HUK,使得BRK对于PSA RoT的特定实例是惟一的。

 

只有当设备处于安全PSA安全生命周期状态时,才有可能派生出相同的安全BRK。

确保任何安全的BRK在调试状态下都不可用

 

同一个非PSA可信根调试的BRK都应该被基于PSA可信根的安全生命周期状态和任何不会损害PSA可信根的调试状态衍生

只要PSARoT没有被破坏,就允许产生相同的BRK

应仅在数据受BRK保护时才可用于调试。

 

BRK的推导必须是一个密钥推导函数

BRK用于加密绑定,BRK派生必须生成加密安全密钥。

看PSA密钥管理

 

BRK只能用于派生其他密钥。

通过不直接使用根密钥(例如BRK)来确保密钥的多样性。

 

 

    1. 用例(介绍性)
      1. 简单数据存储
      2. 简单密钥存储
      3. 通用数据存储
      4. 通用密钥存储

 

 

你可能感兴趣的:(PSA,密码与安全)