【NVMEM子系统】一、Efuse介绍及安全启动浅析

news2024/11/17 10:36:40
img
个人主页:董哥聊技术
我是董哥,嵌入式领域新星创作者
创作理念:专注分享高质量嵌入式文章,让大家读有所得!
img

文章目录

    • 1、Efuse是什么
    • 2、OTP是什么
    • 3、什么是Secure Boot
    • 4、CPU内部安全机制
      • 4.1 bootROM
      • 4.2 iRAM
      • 4.3 eFUSE
      • 4.5 Security Engine
      • 4.6 First Stage Bootloader(FSBL)
      • 4.7 根信任建立
    • 5、参考文章:

1、Efuse是什么

eFuse(electronic fuse):电子保险丝,熔丝性的一种器件,属于一次性可编程存储器

之所以成为eFuse,因为其原理像电子保险丝一样,CPU出厂后,这片eFuse空间内所有比特全为1,如果向一位比特写入0,那么就彻底烧死这个比特了,再也无法改变它的值,也就是再也回不去 1 了。

一般OEMCPU厂商购买芯片后,一般都要烧写eFuse,用于标识自己公司的版本信息,运行模式等相关信息。

同时,由于其一次性编程的特性,我们又将其用在Secure Boot安全启动中。

 

2、OTP是什么

了解完eFuse后,我们就顺便了解一下OTP

OTP(One Time Programmable)是反熔丝的一种器件,就是说,当OTP存储单元未击穿时,它的逻辑状态为0;当击穿时,它的逻辑状态为1,也属于一次性可编程存储器

它的物理状态和逻辑状态正好和eFuse相反!

img

两者区别如下

  • 从成本上讲,eFuse器件基本上是各个Foundry厂自己提供,因此通常意味着免费或者很少的费用,而OTP器件则通常是第三方IP厂家提供,这就要收费。

  • 从器件面积上讲,eFuse的cell的面积更大,所以仅仅有小容量的器件可以考虑。当然如果需要大容量的,也可以多个eFuse Macro拼接,但是这意味着芯片面积的增加,成本也会增加;OTP的cell面积很小,所有相对来讲,可以提供更大容量的Macro可供使用。

  • OTPeFuse 安全性更好,eFuse的编程位可以通过电子显微镜看到,因此其存储的内容可以被轻易破解,但OTP在显微镜下无法区分编程位和未编程位,因此无法读取数据。

  • eFuse默认导通,存储的是"1",而OTP默认是断开,存储的是"0",因此OTP的功耗也较eFuse小,面积也较eFuse小。

 

3、什么是Secure Boot

上面我们也了解过了,efuse主要用于记录一些OEM的产品信息,并且也会用于安全启动,那么安全启动是什么,为什么要做安全启动?

安全启动Secure Boot,其主要目的是:以限制消费者能力,防止消费者从软硬件层面,对产品的部分关键系统进行读写,调试等高级权限,达到对产品的商业保密,知识产权的保护。

安全启动的安全模型是建立在消费者是攻击者的假设之上,一般常见的操作有:

  • 刷机安装自定义的操作系统
  • 绕过厂家封闭的支付平台
  • 绕过系统保护,复制厂家保护的数字产品。

除此之外呢,有的比较专业的消费者,还可以

  • 使用数字示波器监听 CPURAMeMMC 之间的数据传输来读取非常底层的数据传输
  • 而且像 eMMC 这种芯片通常都是业界标准化的,攻击者甚至可以把芯片拆下来,然后用市面上现成的通用 eMMC 编程工具来读写上面的内容。

img

安全启动等级也有一个上限:这个上限通常是认为攻击者不至于能够剥离芯片的封装,然后用电子显微镜等纳米级别精度的显像设备来逆向芯片的内部结构。

简单来说:能成功攻破芯片安全机制的一次性投资成本至少需要在十万美元以上才可以认为是安全的。

 

4、CPU内部安全机制

img

4.1 bootROM

BootROM是集成在CPU芯片的一个ROM空间,其主要用于存放一小段可执行程序,出厂的时候被烧录进去写死,不可修改。

CPU在通电之后,执行的第一条程序就在BootROM,用于初始化Secure Boot安全机制,加载Secure Boot Key密钥,从 存储介质中加载并验证 First Stage Bootloader(FSBL);最后跳转进 FSBL 中。

 

4.2 iRAM

为了避免使用外部的RAM,支持Secure BootCPU都会内置一块很小的RAM,通常只有 16KB 到 64KB ,我们称之为 iRAM

这块 iRAM 上的空间非常宝贵,bootROM 一般会用 4KBiRAM 作为它的堆栈。FSBL 也会被直接加载到 iRAM 上执行。

 

4.3 eFUSE

如上面所述,在Secure Boot中存放的是根密钥,用于安全启动的验证。

  • 一般有两种根密钥:一个是加密解密用的对称密钥 Secure Boot Key,一般是 AES 128 的,每台设备都是随机生成不一样的;

  • 另一个是一个 Secure Boot Signing Key 公钥,一般用的 RSAECC,这个是每个 OEM 自己生成的,每台设备用的都一样,有些芯片会存公钥的 Hash 来减少 eFUSE 的空间使用。

 

4.5 Security Engine

有些 CPU 中还会有一个专门负责加密解密的模块,我们称为 Security Engine。这个模块通常会有若干个密钥槽(Keyslots),可以通过寄存器将密钥加载到任意一个 Keyslot 当中,通过寄存器操作 DMA 读写,可以使用 Keyslot 中的密钥对数据进行加密、解密、签名、HMAC、随机数生成等操作.

 

4.6 First Stage Bootloader(FSBL)

FSBL 的作用是初始化 PCB 板上的其他硬件设备,给外部 RAM 映射内存空间,从 外部存储介质中加载验证并执行接下来的启动程序。

 

4.7 根信任建立

  1. CPU上电后执行Boot ROM的程序,其这一小段程序用于初始化RAM,并加载Efuse上的内容,判断其所处的运行模式是不是生产模式。

  2. 如果在生产模式,开启Secure Boot功能,把Efuse上保存的Secure Boot Key加载到Security Engine加密模块中处理。

  3. 从外部存储介质中加载FSBLFSBL里面会有一个数字签名和公钥证书,bootROM 会验证这个签名的合法性,以及根证书的 Hash 是否和 eFUSE 中的 Signing KeyHash 相同。

  4. 如果验证通过,说明 FSBL 的的确确是 OEM 正式发布的,没有受到过篡改。

  5. 然后bootROM 就会跳转到 FSBL 执行接下来的启动程序。

 

5、参考文章:

[1]:https://zhuanlan.zhihu.com/p/540171344

[2]:https://blog.csdn.net/phenixyf/article/details/125675637

img

点赞+关注,永远不迷路

img

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/349233.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

高通开发系列 - USB不能正常工作

By: fulinux E-mail: fulinux@sina.com Blog: https://blog.csdn.net/fulinus 喜欢的盆友欢迎点赞和订阅! 你的喜欢就是我写作的动力! 返回高通开发系列 - 总目录 目录 USB不能正常工作问题概述问题分析USB不能正常工作 问题概述 升级完linux内核后,msm-4.9内核中usb、adb…

[22] Rodin: A Generative Model for Sculpting 3D Digital Avatars Using Diffusion

paper: https://arxiv.org/abs/2212.06135 总结:提出一种基于扩散模型和tri-plain features的3D虚拟人像生成方法。该方法包含多个模型,需要多次训练: 使用Blender synthetic pipeline(Fake it untill you make it)生…

LeetCode-257. 二叉树的所有路径

目录题目分析递归法题目来源 257. 二叉树的所有路径 题目分析 前序遍历以及回溯的过程如图: 递归法 1.递归函数参数以及返回值 要传入根节点,记录每一条路径的path,和存放结果集的result,这里递归不需要返回值,代…

时间序列预测--基于CNN的股价预测(Matlab代码实现)

目录 💥1 概述 📚2 运行结果 🎉3 参考文献 👨‍💻4 Matlab代码 💥1 概述 时间序列预测有很多方法,如传统的时序建模方法ARIMA、周期因子法、深度学习网络等,本次实验采用最简单的…

趣味三角——第11章——一个著名的公式

目录 1. 著名无限积公式简述及证明 2. Jules Lissajous 和他的图形(Jules Lissajous and His Figures) 11章 一个著名的公式 The prototype of all infinite processes is repetition. . . . Our very concept of the infinite derives from the notion that what has bee…

umap 速度测试

今天终于把umap的速度给测了一下,结果如下 预处理文件(83万的数据量) # import scanpy as sc # adatasc.read("/DATA1/zhangjingxiao/yxk/dataset/FullMouseBrain/FullMouseBrain_raw.h5ad") # print(adata) # sc.pp.normalize_…

HTTP协议---详细讲解

目录 一、HTTP协议 1.http 2.url url的组成: url的保留字符: 3.http协议格式​编辑 ①http request ②http response 4.对request做出响应 5.GET与POST方法 ①GET ②POST 7.HTTP常见Header ①Content-Type:: 数据类型(text/html等)在上文…

H5/APP客服端源码/uniapp在线客服系统源码开源了,全源码代码解读及发行安装教程...

前言 目前,即时通讯在线咨询在网站、APP、小程序中已经是不可获取的功能,尤其是专注于线上营销的商家,迫切需要一套可以随时与访客交流的即时通讯工具。 如果使用市面上的SaaS客服系统,会在功能上受限制,需要开通高级V…

AWS Control Tower

Hello大家好,在本课时我们将讨论AWS Control Tower。 **AWS Control Tower是AWS organizations的一个功能延伸,**它是设置在organizations的上层,并为您提供一些额外的控制。 通过Control Tower可以创建一个Landing zone,Landing…

linux安装jenkins

1. 官网寻找安装方式 进入到jenkins官网,找到对应的下载页面:https://www.jenkins.io/download/ 根据自己系统还有想要使用的版本,进行选择即可。这里我们使用CentOS作为示例,版本选择长期支持版(LTS) 2.…

DaVinci:色彩扭曲器

调色页面:色彩扭曲器 Color:Color Warper色彩扭曲器 Color Warper是一个非常强大的调色工具,它基于网格的形式,能将控制点从一个位置“扭曲”到另一位置,从而可同时调整两个颜色属性:“色相 - 饱和度”&…

最简单的物体识别例子

第一步下载百度EASYDL工具。 网址EasyDL 图像 然后下载本地训练工具包: 本地下载,运行。 首先创建数据集, 完成,创建目标任务。 选择物体检测创建任务 选择训练,将数据集引入 通用型小型设备SDK 选择这个可以本地直…

Lesson 7.2 Mini Batch K-Means与DBSCAN密度聚类

文章目录一、Mini Batch K-Means 算法原理与实现二、DBSCAN 密度聚类基本原理与实践1. K-Means 聚类算法的算法特性2. DBSCAN 密度聚类基本原理3. DBSCAN 密度聚类的 sklearn 实现除了 K-Means 快速聚类意外,还有两种常用的聚类算法。(1) 是能…

在国内优雅地使用Rancher部署k8s集群

Background 作为一款开源的企业级Kubernetes管理平台,Rancher进入中国已经5年了,在国内使用会有从Github上下载资源慢、拉镜像十分耗时、无法使用library和system-library等问题。通过配置也是可以解决的,即使用阿里云镜像仓库搭建Rancher。记…

2022浙江省“信息安全管理与评估“--应急响应日志分析解析(高职组)

2022浙江省“信息安全管理与评估”(高职组)任务书2022浙江省“信息安全管理与评估”任务书第一阶段竞赛项目试题第二阶段竞赛项目试题任务1:应急响应第三阶段竞赛项目试题2022浙江省“信息安全管理与评估”任务书 第一阶段竞赛项目试题 先略…

21岁,华科博士在读,我的赛事Top经验

Datawhale干货 作者:vaew,华中科技大学,博士二年级在读简介笔者vaew,21岁,现为华中科技大学机械科学与工程学院陶波教授课题组博士二年级学生。主要研究方向是基于视触融合的机器人灵巧操作。学业之余的研究兴趣包括图…

ChatGPT怎么样?

一、先说几个注意的地方1、chat.openai.com发现是中国网络的用户也会访问不了,或提示你此网站在此国家访问不了。2、短信接码平台要先充值,才能加购物车。3、印度、马来西亚、印尼的号不行可以换美国的很快就能收到(找个便宜的)。…

刷题25-重排链表

重排链表 解题思路:通过观察链表可以发现,把链表一分为二,后半段链表反转,然后两个链表穿插连接,当链表的节点总数是奇数时,要保证链表的前半段比后半段多一个节点。 关于把链表一分为二,可以…

CSS中的BFC详细讲解(易懂)

带你用最简单的方式理解最全面的BFC~~~1.先了解最常见定位方案普通流元素按照其在 HTML 中的先后位置至上而下布局行内元素水平排列,直到当行被占满然后换行,块级元素则会被渲染为完整的一个新行所有元素默认都是普通流定位浮动元素首先按照普通流的位置…

通过中断控制KUKA机器人暂停与再启动的具体方法示例

通过中断控制KUKA机器人暂停与再启动的具体方法示例 中断程序的基本介绍:  当出现例如输入信号变化等事先定义的事件时,机器人控制器中断当前程序,并处理一个已定义好的子程序  由中断而调用的子程序称为中断程序  最多允许同时声明32个中断  同一时间最多允许有16个…