0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

系统安全基石IP-OTPC :OTPC的概述与工作原理

ruikundianzi 来源:IP与SoC设计 2023-12-29 16:47 次阅读

系统安全基石IP-OTPC :OTPC的概述与工作原理

前言

OTP是为设备提供一次性编程功能的模块。

这种编程的结果是非易失性的,并且与闪存不同,无法逆转。OTP功能通过开源OTP控制器和专有OTP IP构建。

OTP控制器提供:

•一个开源抽象接口,软件可以使用它与下面的专有OTP块进行交互。

•一种开源抽象接口,硬件组件(例如生命周期控制器和密钥管理器)可以使用该接口与下面的专有OTP块进行交互。

•高级逻辑安全保护,如完整性检查和对敏感内容的加扰。

• OTP内容可读和可编程时的软件隔离。

专有OTP IP提供:

•可靠的非易失性存储。

•技术特定的冗余或纠错机制。

•物理防御特征,如SCA和FI抵抗。

•视觉和电气探测电阻

OTP控制器和IP一起提供了在设备的整个生命周期(LC)中使用的安全一次性编程功能。

特征

•底层OTP IP的多个逻辑分区

•每个分区都可锁定并检查完整性

•完整性摘要存储在每个逻辑库旁边

•OTP值的定期/持续检查

•定期检查阴影内容与摘要

•定期检查OTP存储的内容和阴影内容

•持续检查即时错误

•独立的生命周期分区和与生命周期控制器的接口

•支持生命周期功能,但不能被完整性锁定

•使用全局网表常量对秘密OTP分区进行轻量级加扰

•用于RAM加扰机制的轻量级短暂密钥派生功能

•FLASH加扰机制的轻量级密钥推导功能

OTP控制器概述

OTP的功能分为开源和闭源两部分,两者之间有明确的边界,如下面简化的高级框图所示。

4352bde0-a626-11ee-8b88-92fbcf53809c.png

在这里插入图片描述

开源控制器的任务是为OTP用户提供一个通用的、非技术特定的接口,该接口具有通用寄存器接口和明确定义的硬件I/O接口。

开源控制器实现了OTP存储的逻辑隔离和分区,使用户可以将OTP的不同功能划分为具有不同属性的“分区”。

最后,

•开源控制器通过为每个分区提供完整性摘要,

•并在需要时对分区进行加扰,

•为特定分区提供了高级别的安全性。

另一方面,专有IP将通用访问接口转换为技术特定的OTP接口,用于功能访问和调试访问(例如对宏内部控制结构的寄存器访问)。

这种分离意味着每个专有的OTP IP都必须实现从标准化OpenTitan接口到底层模块的转换层。

这也意味着,无论OTP存储或文字大小在下面如何变化,开源控制器都必须提供一致和连贯的软件和硬件接口。

这个标准化接口将在下文中进一步定义,包装器利用OpenTitan其他部分中使用的相同技术原始机制来包装和抽象可能是闭源的技术特定宏(如存储器和时钟单元)。

工作原理

从概念上讲,OTP功能处于高级,分为“前端”和“后端”。

•“前端”包含逻辑分区,这些分区为系统的硬件和软件使用者接口提供信息

•“后端”表示硬件和软件组件用来存储即将到来的值的编程接口。

下图说明了这种行为模型。

4386dac6-a626-11ee-8b88-92fbcf53809c.png

在这里插入图片描述

请注意,前端同时包含缓冲分区和非缓冲分区。

每个电源循环感应一次缓冲分区,并将其内容存储在寄存器中,而按需读取未缓冲分区。

前者通常是包含硬件配置位、关键材料和生命周期状态等数据的分区,这些数据需要始终可用于硬件,

而后者是很少访问的大型分区,例如软件配置。

通过编程接口(与读取验证相结合)编程到缓冲分区中的值只是“暂存”的,直到下一次电源循环才生效。

下面的部分描述了OTP控制器的各个部件的操作以及它如何支持所描述的功能。

Logical Partitions

OTP在逻辑上被划分为表示不同功能的分区。这意味着隔离是虚拟的,由OTP控制器而不是底层OTP IP来维护。

在每个逻辑分区中,都有特定的可执行属性:

•通过秘密分区进行保密

•这控制特定分区是否包含机密数据。

•如果分区是秘密的,那么一旦锁定,软件就无法读取分区,并在存储中进行加扰。

•读取锁定能力

•这控制特定分区是否禁用后期软件的软件可读性。

•一些分区可以静态锁定(通过在OTP中计算和存储相关摘要),其他分区可以在运行时通过CSR读取锁定。

•写入锁定能力

•这控制分区是否被锁定并阻止将来更新。

•锁定分区与摘要一起存储,以便稍后用于完整性验证。

•完整性验证

•一旦分区通过计算并向其写入非零摘要而被写锁定,它就可以进行周期性验证(时间范围可由软件配置)。这种验证有两种形式,分区完整性检查和存储一致性检查。

由于OTP本质上类似于存储器(每个地址位置只输出一定数量的位),一些逻辑分区被缓冲在寄存器中,用于硬件的即时和并行访问。

这是一个关键点,因为在通电之后,这些特定的OTP内容被存储在触发器中并来源于系统。

也就是说,缓冲分区不是直接来自OTP宏本身。因此,易失性存储器(OTP控制器)和非易失性存储(OTP IP)的安全性变得重要。

分区列表和描述

OpenTitan的OTP控制器包含如下所示的七个逻辑分区。

439dd302-a626-11ee-8b88-92fbcf53809c.png

在这里插入图片描述

一般来说,设备的生产生命周期分为5个阶段“制造”->“校准和测试”->“供应”->“任务”->“RMA”。OTP值通常在“校准和测试”、“供应”和“RMA”阶段进行编程,

校准和测试-Calibration and Test

在此阶段,对设备进行功能测试和校准,以确保一致性。

校准可以集中在许多事情上,但通常以调整时钟、电压和定时源为中心,以消除工艺变化。

这些校准值被编程到CREATOR_SW_CFG分区中,因为它们是非机密值,旨在由软件读出并编程到相应的外围设备中。

在这个阶段的早期,各种tokens 也被编程到秘密分区中,并由芯片厂商创造者读出使用。

预配置-Provisioning

在此阶段,为设备提供最终固件和“唯一”种子或标识。

秘密分区填充有根秘密和密钥,这些密钥对建立设备标识至关重要。

作为注入最终固件的一部分,还对库存单元特定的硬件和软件配置进行了编程。

生命周期划分-Life Cycle Partition

生命周期分区在所有阶段都是活动的,因此它是唯一不能锁定的分区。

设备完成供应并投入生产后,必须保留在发生意外故障时转换回RMA的能力。

为了支持这种转换,生命周期状态和计数器必须始终是可更新的。

生命周期控制器是芯片互连总线上的外围设备模块,因此遵循可组装性规范。

生命周期实施是指包含所有生命周期功能的设计。这涉及以下模块的功能,这些模块未按特定顺序列出:

•The life cycle controller itself - A new peripheral

•The key manager

•The flash controller

•The OTP controller

•The reset / power controller

•The debug infrastructure, specifically TAP isolation

•Any other peripheral where life cycle information may alter its behavior

生命周期控制器提供以下功能:

•专用OTP接口,用于读取和更新冗余编码的设备生命周期状态。

• CSR和JTAG接口,用于启动生命周期转换。

•冗余生命周期状态的专用并行解码和冗余编码的生命周期资格信号的广播(例如,启用DFT功能或主处理器)。

•一种令牌哈希和匹配机制,用于保护重要的生命周期转换。

•警报子系统的升级接收器,它允许作为升级序列的一部分使生命周期状态无效(另请参阅警报处理程序子系统)。

Locking a Partition

当软件确定不再对某个分区进行任何更新时,对该分区的写入访问可以被永久锁定。

为了锁定,完整性常数与该分区的其他数据一起计算和编程。

完整性常数的大小取决于分区大小颗粒,是32位还是64位(另请参阅直接访问内存映射)。

一旦“完整性摘要”为非零,就不允许进行进一步的更新。如果分区是秘密的,软件将无法再读取其内容(请参阅秘密分区描述)。

但是,请注意,在所有分区中,摘要本身总是可读的。这使软件有机会确认锁定操作是否正确进行,如果没有,则立即报废零件。

完整性摘要的计算取决于分区是否需要定期的后台验证。

供应商测试分区

供应商测试分区旨在用于制造流程中的OTP编程冒烟检查。

芯片供应商可以在prim_otp包装器的专有版本中实现这些检查。

此分区的行为与任何其他SW分区类似,但ECC不可纠正的错误不会像在所有其他分区中那样导致致命错误/警报。

这是由于OTP编程烟雾检查的性质,这可能使某些OTP字处于与OTP读出时使用的ECC多项式不一致的状态。

Software Configuration Partitions

软件配置分区用作标志、配置和校准数据的非易失性存储器。

因此,作为代码执行的一部分,这个分区的内容通常被消耗一次,或者被移动到设计中的另一个存储隔间。

例如,时钟校准值和LDO校准值在启动时编程到模拟传感器顶部(AST)。

因此,没有必要在OTP源处定期检查。相反,软件可以简单地作为安全引导的一部分进行检查,并在将这些值编程到外围设备中时采取其他措施。

因此,对于该分区,软件有责任计算完整性摘要并将其编程到OTP中。在主内存中对该分区(部分)进行阴影处理也是合理的,并且OTP内容不会对硬件产生直接影响。

Hardware Configuration and Secret Partitions

硬件和秘密分区直接影响下游硬件。

内容必须经过定期的完整性检查,因此当软件提供锁定意图时,存储的摘要由硬件计算(而不是必须由软件计算摘要的软件分区)。

生命周期划分

生命周期分区无法锁定,因此不会包含存储的摘要。然而,请注意,只有生命周期控制器可以访问该分区,即,直接访问接口(DAI)不能从生命周期分区读取或写入。

Secret vs Non-Secret Partitions

非机密OTP分区保存可以公开的数据;或对安全性没有影响的数据。例如,锁定位的当前值或时钟校准值。这些值以明文形式存储在OTP中。

机密分区包含对安全至关重要的数据,例如FLASH加扰密钥、设备根机密和解锁令牌。这些值被加扰地存储在OTP中,并且在读取时被解扰。目前使用的密码是PRESENT,因为它很适合迭代分解,而且它是一种已被证明的轻量级分组密码(另请参阅PRESENT加扰原语。然而,分组密码的使用意味着秘密分区只能写入64位块。

此外,特定秘密分区的内容一旦被锁定就不能被软件读取(除了必须始终可读的摘要之外);而非秘密分区总是可读的,除非软件明确地去除读取可访问性。

不幸的是,机密分区必须使用全局网表密钥进行加扰操作,因为没有其他非易失性存储器来存储唯一密钥。

Partition Checks

Integrity

一旦锁定了适当的分区,硬件完整性检查器就采用两种完整性检查来验证易失性缓冲寄存器的内容:

•所有缓冲分区都有额外的ECC保护(每个64位块有8位ECC),同时进行监控。

•分区的摘要以半随机间隔重新计算,并与存储在分区旁边的摘要进行比较。

此检查的目的不是在存储触发器和OTP之间进行检查,而是检查缓冲寄存器内容是否与计算的摘要保持一致。此验证主要关注存储触发器是否经历过故障攻击。此检查仅适用于HW_CFG和SECRET*分区。

如果遇到故障,OTP控制器将发出致命检查错误警报-fatal_check_error,并将其所有硬件输出重置为默认值。

Storage Consistency

这种验证确保存储在缓冲寄存器中的值与OTP中的值保持一致。

该过程以半随机间隔重新读取OTP,并确认读取的值与存储的值相同。

注意,如果存在并行的完整性检查,则某些分区没有必要检查所有读取内容的一致性。

如果存在完整性摘要,则只需要读取该摘要;否则,必须读取所有值。

Secret Partition Integrity Checks-秘密分区完整性检查

由于秘密分区是加扰存储的,这也意味着完整性摘要是在加扰形式上计算的。

为了平衡所需的缓冲寄存器数量,缓冲寄存器中只保存秘密分区的解密形式。

硬件通过在通过摘要之前对数据进行重新加扰来计算摘要。

Power-up and Sense

重置释放时,OTP控制器分区存储必须输出指定的安全默认值(它不像空白OTP那样总是0)。此默认输出必须保持,直到OTP控制器完成所有检查。

OTP控制器读取OTP IP。如果读取通过OTP IP内部检查(例如ECC或冗余),则更新分区存储;然而,输出仍然经由输出mux保持在默认状态。

在所有读取完成后,OTP控制器对HW_CFG和SECRET*分区执行完整性检查。

如果分区在这一点上没有通过完整性检查,它将在状态CSR中发出初始化错误的信号,并中止进一步的初始化。

在所有完整性检查完成后,OTP控制器释放输出门控并将输出标记为有效。但是,任何标有“error”的分区都会继续将其输出保持在默认状态。

一旦完成上述步骤,缓冲寄存器中的分区存储就不会再次更新(通过生命周期接口更新生命周期分区除外)。也就是说,通过编程接口编程到OTP的值在下一次电源循环之后才会在缓冲寄存器中可见。

在这一点上,分区存储的输出预计不会改变,除非定期检查突然失败。发生此故障时,所有输出都将恢复到默认状态,并立即向警报处理程序触发警报。

出于定时目的,OTP输出可以被视为半静态,因为这种错误事件应该是罕见和特殊的。

Partition Defaults

分区默认值是特定于上下文的。例如,锁定特定访问的硬件配置项应默认为“无访问”。这确保了对OTP的故障攻击不能轻易地将设计恢复到不安全状态。

因此,这表明,当OTP都是0和1时,它应该尽可能在受影响项目的编码空间中反映无效或惰性状态。这也意味着使用代理的重置状态(例如密钥管理器和生命周期)也应默认为无效/惰性状态。

Program and Read Ports

如前所示,OTP分为前端和后端。后端接口主要用于更新OTP内容,并读取以进行调试和验证。尽管是与逻辑分区分离的功能访问端口,但程序和读取端口受到相同的访问控制。

当分区被写锁定时,编程访问被禁止。如果分区是秘密的,则后端接口的读取访问也被禁止(摘要必须始终可读)。软件还可以通过CSR设置禁用对软件配置分区的任何读取访问,以防止后期软件读取任何内容。

上述情况的例外是生命周期分区。生命周期控制器接口还充当“后端”接口,始终具有编程访问权限,以确保生命周期状态可以提前。

请注意,程序和读取端口可能与正在进行的后台存储检查冲突,OTP控制器在这两方之间进行仲裁。将始终完成正在进行的操作。之后,或者当两个请求同时到达时,优先级为生命周期>编程接口>通过CSR窗口的按需读取访问>背景检查。

Programming the OTP

OTP控制器有两条编程路径:

•通过软件的功能编程路径(程序端口),

•通过硬件的生命周期编程路径。

功能接口用于更新除生命周期之外的所有分区。如前所述,在下一次重新启动之前,当前电源周期中进行的任何更新都不会反映在缓冲分区中。

生命周期接口仅用于更新生命周期状态和转换计数器。命令是从生命周期控制器发出的,类似地,成功或失败的指示也被发送回生命周期控制器。与功能接口类似,生命周期控制器每个电源周期只允许一次更新,并且在请求的转换之后恢复到惰性状态,直到重新启动。

请注意,req/ack协议在OTP时钟上运行。扰频设备的任务是通过实例化prim_sync_repack.sv原语来同步握手协议,如下所示。

43b4e240-a626-11ee-8b88-92fbcf53809c.png

在这里插入图片描述

OTPC对接的信号

•EDN Interface(随机数熵,之前我们发过哦)

•Power Manager Interface

•Life Cycle Interfaces

•Interface to Key Manager(OTP里面存储了一些密钥,肯定要使用到Key Manager)

• Interface to Flash Scrambler 到FLASH加扰设备的接口是一个简单的req/ack接口,该接口为闪存控制器提供用于数据和地址加扰的两个128位密钥。用来加扰解扰内存

43c02b6e-a626-11ee-8b88-92fbcf53809c.png

在这里插入图片描述

•Interfaces to SRAM and OTBN Scramblers

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 控制器
    +关注

    关注

    112

    文章

    16191

    浏览量

    177360
  • 编程
    +关注

    关注

    88

    文章

    3587

    浏览量

    93585
  • OTP
    OTP
    +关注

    关注

    4

    文章

    184

    浏览量

    47098

原文标题:工作原理

文章出处:【微信号:IP与SoC设计,微信公众号:IP与SoC设计】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    影响 Linux 系统安全基石的 glibc 严重漏洞

    [安全 Shell] 客户端都可能触发该漏洞,我们认为这是严重的,主要是因为对 Linux 系统存在的风险,但也因为潜在的其他问题。”其他问题可能包括一种通过电子邮件触发调用易受攻击的 glibc 库
    发表于 06-25 10:01

    检查系统安全和仪器保护的重要性

    检查系统安全和仪器保护的重要性
    发表于 05-13 06:10

    怎么实现工业控制系统安全防护的设计?

    工业控制系统潜在的风险是什么?怎么实现工业控制系统安全防护的设计?
    发表于 05-25 06:12

    BMS电池管理系统安全定义

    ​1. 系统安全定义包含电子电气的功能安全还包含机械等其他防护部分1. 机械安全需求无锋利锐边/强度保证(碰撞/冲击/挤压/振动/承载等)2. 化学安全需求无有毒有害化学物质/材料的可
    发表于 09-15 08:12

    电子商务系统安全与 支付概述

    电子商务系统安全与支付概述 1.1  电子商务及其发展 1.2  网络信息安全 1.3  电子商务安全规范 1.4  电子商务和支付
    发表于 04-28 16:15 0次下载

    网络系统安全

    网络系统安全操作系统安全入网登录访问控制帐号的识别与验证帐号的默认限制检查网络的权限控制目录与属性级安全控制网络服务器安全控制Window
    发表于 06-16 23:12 0次下载

    基于PMI的工作流管理系统安全模型

    将PMI 引入到工作流管理系统经典的安全模型中,建立了一个基于PMI 的工作流管理系统安全模型。同时将基于角色和任务的访问控制引入到
    发表于 08-05 09:12 14次下载

    基于Web的信息系统安全风险评估工具的设计

    本文作者在对信息系统安全风险评估理论和方法进行深入研究的基础上,根据自身参与信息系统安全风险评估的工作实践,提出了一种基于Web 的信息系统安全风险评估工具的设计
    发表于 08-11 10:45 25次下载

    UNIX系统安全工具

    本书详细介绍了UNIX系统安全的问题、解决方法和策略。其内容包括:帐号安全及相关工具Crack;日志系统的机制和安全性,日志安全工具Swat
    发表于 08-27 16:20 0次下载

    Windows系统安全模式另类应用

    Windows系统安全模式另类应用 相信有一部份的用户对Windows操作系统安全模式的应用还比较模糊,下面的我们就给大家讲讲Windows安全
    发表于 01-27 09:58 652次阅读

    安全气囊系统工作原理

    安全气囊系统工作原理
    发表于 01-19 21:15 36次下载

    Linux必学的系统安全命令

    虽然Linux和Windows NT/2000系统一样是一个多用户的系统,但是它们之间有不少重要的差别。对于很多习惯了Windows系统的管理员来讲,如何保证Linux操作系统安全、可
    发表于 11-02 15:09 0次下载

    嵌入式系统安全实用技巧

    嵌入式系统安全实用技巧
    的头像 发表于 12-28 09:51 701次阅读

    OpenHarmony技术大会 | OS安全分论坛圆满举办:构建系统安全“堡垒”

    ,如何确保系统安全、防止数据被窃取,已成为全球用户关注的焦点。在这样的背景下,2023年11月4日举办的第二届开放原子开源基金会OpenHarmony技术大会OS安全分论坛上,众多专家学者就系统安全、数据
    的头像 发表于 11-10 20:25 695次阅读

    系统安全基石IP-OTPC(一)什么是OTP

    MTP: Multiple-Time Programmable,可以多次编程
    的头像 发表于 11-15 14:43 3277次阅读
    <b class='flag-5'>系统安全</b><b class='flag-5'>基石</b><b class='flag-5'>IP-OTPC</b>(一)什么是OTP