打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
Efuse介绍及安全启动浅析
userphoto

2023.03.16 湖北

关注

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

1、Efuse是什么

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

之所以成为eFuse,因为其原理像电子保险丝一样,CPU出厂后,这片eFuse空间内所有比特全为1,如果向一位比特写入0,那么就彻底烧死这个比特了,再也无法改变它的值,也就是再也回不去 1 了。一般OEM从CPU厂商购买芯片后,一般都要烧写eFuse,用于标识自己公司的版本信息,运行模式等相关信息。

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

2、OTP是什么

了解完eFuse后,我们就顺便了解一下OTPOTP(One Time Programmable)是反熔丝的一种器件,就是说,当OTP存储单元未击穿时,它的逻辑状态为0;当击穿时,它的逻辑状态为1,也属于一次性可编程存储器。它的物理状态和逻辑状态正好和eFuse相反!

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

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

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

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

3、什么是Secure Boot

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

安全启动Secure Boot,其主要目的是:以限制消费者能力,防止消费者从软硬件层面,对产品的部分关键系统进行读写,调试等高级权限,达到对产品的商业保密,知识产权的保护。安全启动的安全模型是建立在消费者是攻击者的假设之上,一般常见的操作有:

刷机安装自定义的操作系统

绕过厂家封闭的支付平台

绕过系统保护,复制厂家保护的数字产品。

除此之外呢,有的比较专业的消费者,还可以:使用数字示波器监听CPU和RAM、eMMC

之间的数据传输来读取非常底层的数据传输而且像eMMC这种芯片通常都是业界标准化的,攻击者甚至可以把芯片拆下来,然后用市面上现成的通用eMMC编程工具来读写上面的内容。安全启动等级也有一个上限:这个上限通常是认为攻击者不至于能够剥离芯片的封装,然后用电子显微镜等纳米级别精度的显像设备来逆向芯片的内部结构。

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

4、CPU内部安全机制4.1 bootROM

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

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

4.2 iRAM

为了避免使用外部的RAM,支持Secure Boot的CPU都会内置一块很小的RAM,通常只有 16KB 到 64KB ,我们称之为 iRAM。这块iRAM的空间非常宝贵,bootROM一般会用4KB的iRAM作为它的堆栈。FSBL也会被直接加载到iRAM上执行。

4.3 eFUSE

如上面所述,在Secure Boot中存放的是根密钥,用于安全启动的验证。一般有两种根密钥:一个是加密解密用的对称密钥 Secure Boot Key,一般是 AES 128 的,每台设备都是随机生成不一样的;另一个是一个 Secure Boot Signing Key 公钥,一般用的 RSA 或 ECC,这个是每个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 根信任建立

CPU上电后执行oot ROM的程序,其这一小段程序用于初始化RAM,并加载Efuse上的内容,判断其所处的运行模式是不是生产模式。如果在生产模式,开启Secure Boot功能,把Efuse上保存的Secure Boot Key加载到Security Engine加密模块中处理。从外部存储介质中加载SBL,FSBL里面会有一个数字签名和公钥证书,bootROM 会验证这个签名的合法性,以及根证书的Hash是否和eFUSE中的Signing Key的Hash相同。如果验证通过,说明FSBL的的确确是OEM正式发布的,没有受到过篡改。然后bootROM就会跳转到FSBL执行接下来的启动程序。

5、参考文章:

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

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

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
浅析安全启动(Secure Boot)
zynq启动过程
怎么烧写imx6里的efuse? - 飞思卡尔FAE线上技术支持 - 飞思卡尔技术社区 - 手机版 - Powered by Discuz!
VxWorks基本概念及常见问题
痞子衡嵌入式:SNVS Master Key仅在i.MXRT10xx Hab关闭时才能用于DCP加解密
浅谈底层固件安全性(强解BL,隐藏ID机等等背后的真相) 来自 Jpnx49Db0
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服