探究eFuse:硬件保障与系统安全的核心

这篇具有很好参考价值的文章主要介绍了探究eFuse:硬件保障与系统安全的核心。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

探究eFuse:硬件保障与系统安全的核心

efuse,AndroidFramework,系统安全,安全

图1: 编程熔断的 eFuse

eFUSE的全名是"Electrically Programmable Read-Only Memory Fuse",它是一种电可编程只读存储器。
eFUSE是一种用于存储固定信息的存储器,它的主要特点是一旦编程后就无法再进行擦除或修改,类似于传统的只读存储器(ROM)的功能。

作为系统工程师,虽然不会对eFuse 这块做深入的开发,更多的还是依赖芯片厂商自己的实现,然后取出自己的数据,但是通过对 eFuse 大致的了解,能够对整机的一些概念紧密联系起来,让知识图谱更全面。

目前手机行业内,出厂都会做熔丝处理,熔丝之后,不能进行随意刷机,非熔丝设备一般属于开发设备,用来内部自定义刷机。
熔丝过程中,有一个步骤就是写入设备ID信息, 熔丝设备通常具有唯一的设备ID,可以用防止软件篡改和仿冒,一些商业化行为的唯一标记等。
这些标识通常是在制造过程中预先烧录到eFUSE中的,用于识别每个设备的唯一性,Bootloader可以读取eFUSE中的这些标识,并在设备启动时使用它们来进行身份验证。

eFuse不是软件上的分区

eFUSE(熔断保护)通常是硬件特性,而不是预置的软件特性,eFUSE是一种一次性可编程的硬件存储器,用于存储固定的数据或配置信息,例如设备序列号、密钥、硬件配置等。
eFUSE在手机或其他设备的主板上实现,并由硬件厂商预置一些不可更改的数据。这些数据通常在制造过程中被烧录到eFUSE中,并且无法在后续的使用中被修改。因此,eFUSE中存储的信息是设备固有的、不可更改的。
在 Android 系统中,eFUSE通常被用于存储一些重要的设备信息和安全相关的数据,例如设备唯一标识、安全密钥、加密相关信息等。这些数据的安全性和不可篡改性是系统的重要保障,因此通常会将它们存储在eFUSE中,以防止被非法篡改或泄漏。
由于eFUSE的特性,它一般不受 Android 系统软件的影响,也不是可编程的软件特性。因此,Google 原生 Android 系统上的eFUSE通常是由设备硬件厂商预置和配置的,与 Android 系统软件无关。

BootLoader 实现读取

eFUSE 在Bootloader中扮演着重要的角色,用于存储关键的设备信息和安全配置,帮助确保设备的启动过程和运行环境的安全性。它是Android设备等嵌入式系统中重要的安全保障措施之一。

Android bootloader 是一个引导加载程序,它位于 Android 设备的存储芯片中,负责启动设备并加载操作系统。它是设备上的第一个软件程序,负责执行一系列初始化任务和配置操作,以确保设备能够正确启动。
目前 bootloader 不属于 AOSP 内标准的模块,一般是芯片厂商在维护,目录结构也不统一,对于 eFuse 的读取模块也在 lk 内, 高通的 bsp 模块一般是独立编译,MTK和展讯所在的目录也不太一样,常见的有这些目录结构:

  • bsp/bootloader/lk
  • kernel/lk/

eFuse 存在 BootLoader 中的功能有:

  1. 安全启动验证
    Bootloader是在设备启动时运行的第一个软件程序,负责初始化硬件和加载操作系统,在安全启动流程中,Bootloader通常会检查 eFUSE 中的安全配置信息,例如是否启用了 Secure Boot(安全启动)功能。
    如果eFUSE中的安全标志被设置为启用,Bootloader会执行相应的安全验证流程,以确保设备启动的固件和操作系统是经过验证的,从而防止未经授权的固件加载。

  2. 设备唯一标识
    Bootloader可能会使用eFUSE中存储的设备唯一标识(Device ID)作为设备的身份认证信息。
    这些标识通常是在制造过程中预先烧录到eFUSE中的,用于识别每个设备的唯一性。
    Bootloader可以读取eFUSE中的这些标识,并在设备启动时使用它们来进行身份验证。

  3. 安全密钥存储
    某些Bootloader可能会使用eFUSE来存储安全密钥,例如用于加密和解密数据的密钥。这些密钥通常是在制造过程中预先烧录到eFUSE中的,以确保密钥的安全性和不可篡改性。

  4. 防止硬件修改
    Bootloader可能会使用eFUSE来检查设备硬件的配置和状态,以确保硬件没有被修改或篡改。通过读取eFUSE中存储的硬件配置信息,Bootloader可以识别任何不合法的硬件修改,从而确保设备的完整性和安全性。

eFuse 和 NVRAM 的区别

eFUSE(Electrically Programmable Read-Only Memory Fuse)和 NVRAM(Non-Volatile Random Access Memory)

  • eFUSE(电可编程只读存储器):

    • 特性:eFUSE是一种只读存储器,一旦编程后就无法再进行擦除或修改。它是一次性可编程的,一旦被烧录,存储的数据将变为永久性的。
    • 用途:eFUSE通常用于存储一些重要的设备信息和安全相关的数据,例如设备唯一标识、安全密钥、硬件配置等。这些数据的安全性和不可篡改性是系统的重要保障。
    • 编程:eFUSE通常在制造过程中被烧录,由硬件厂商预置一些不可更改的数据。它一般不受软件的影响,也不是可编程的软件特性。
  • NVRAM(非易失性随机存取存储器):

    • 特性:NVRAM是一种随机访问存储器,它可以读取和写入数据,并且数据在断电后仍然保持不变,具有非易失性特性。
    • 用途:NVRAM通常用于存储一些配置信息、用户设置、操作系统状态等需要持久化保存的数据。
    • 编程:NVRAM中的数据通常由操作系统或应用程序进行读取和写入,可以在运行时进行修改和更新。

在手机行业中, eFuse 涉及到的开发一般是工具开发工程师在处理,兼容不同芯片,将设备ID等基础功能兼容好,NVRAM的开发更多是涉及到软件工程师,根据实际的需求来读写数据。

比如常见的电子保卡,WIFI、MAC等一些格式化需要保留的信息等,后续文章在针对性来讲解。

efuse,AndroidFramework,系统安全,安全

MTK的刷机设备上通过 Download Only 以及 Android设备自带的恢复出厂设置就不会将 NVRAM 存储的数据清除, 但是 Format ALL+Download(格式化刷机) 就会将NVRAM数据清除。

eFuse 一般就是一次写入,比如设备ID, NVRAM是根据实际的需求,由软件工程师来进行读写。

熔丝工具

熔丝工具(Fuse Programming Tool)是用于编程eFuse的特定工具,其原理主要涉及以下方面:

  • 接口和通信
    熔丝工具需要与目标设备建立通信,并通过特定的接口与设备进行数据传输。通常,熔丝工具使用USB、JTAG、SWD(Serial Wire Debug)等接口与目标设备进行连接。
  • 认证和权限
    为了确保对eFuse的编程是安全可靠的,熔丝工具通常需要进行认证和权限验证。这可以防止未经授权的访问者对设备的eFuse进行编程。
  • 操作命令
    熔丝工具通过发送特定的操作命令到目标设备来控制eFuse的编程。这些命令可能包括读取eFuse的状态、擦除eFuse、编程eFuse等。
  • 保护机制
    为了防止误操作或恶意篡改,熔丝工具可能会实现一些保护机制,如写保护功能、编程次数限制等。
  • 错误处理
    熔丝工具需要能够处理可能出现的错误情况,如通信错误、设备响应超时、编程失败等,以保证编程的准确性和稳定性。

熔丝工具原理可能因厂商、芯片型号和设备特性而异, 因此,在使用熔丝工具时,需要严格按照厂商提供的文档和指导进行操作,避免因错误的操作而导致设备损坏或数据丢失,
此外,由于eFuse是一次性编程的,一旦编程完成,其中的信息将无法修改或擦除,因此操作时必须谨慎。

所以对于工具工程师而言,这里面核心的工作任务就是兼容不同芯片,保证熔丝的稳定。

一般涉及到 eFuse 写入的稳定性问题,一般都是芯片厂内部的逻辑,对于手机厂商而言,如果遇到设备ID失败,异常的问题,就会被归类为影响整机的严重问题。

安全问题

任天堂的 Switch 掌机通过 eFuse 来防止设备降级, 在用户升级系统时,机器会熔断一定数量 eFuse ,而用户试图降级系统时会校验版本和熔丝的数量,如果不匹配就无法刷入系统。
软破解的任天堂的Switch,就是通过外接锡纸的形式然后进入到一个大气层系统,然后在进入到Switch原始的系统, 对于设备的破解而言,一般都是推荐用户在离线的模式下进行,一个是防止软件上的数据更新导致的异常行为被发现,一个是设备升级版本之后,会对 eFuse进行熔断到当前的系统版本,如果熔断到最新版本后,可能就没法在刷入三方系统。

eFuse 是可以通过电子显微镜看见熔断的情况,见图一。

在大型安全SOC芯片中, eFuse 是一种重要的非易失性存储单元,由熔丝结构构成,通过熔丝可以在芯片上编程并存储信息.常常用于存储安全相关的内容,比如密钥、密码等信息,
因此对于芯片的安全系统非常重要。但是由于工艺尺寸的突飞猛进,efuse作为一种较为脆弱的电路单元,常常在使用过程中由于静电或者其他原因造成efuse损坏,造成整个芯片和系统无法工作,只能整机报废,从而导致大量的浪费。

eFuse 读取

对于设备ID而言,一般是通过在 BootLoader 内部读取 eFuse存储位中的信息得到设备ID,可以写入到属性,然后Android 系统进入后,就可以通过读取属性得到唯一的设备ID。
大部分的情况而言,设备ID的异常问题,是出现在 BootLoader 的读取里面,需要手机厂商自行去解决。

例如,在某些系统中,eFuse 可能被配置为存储一个 32 位的整数值。读取该 eFuse 后,得到的数据可能是一个 32 位的二进制数,或以十六进制表示的 8 位数(4 字节)。

比如通过芯片厂商提供的接口,能够获取到32位的整数值,然后需要转换记录到本地, 比如fdt32_to_cpu 函数的实现:

#include <stdint.h>

uint32_t fdt32_to_cpu(const uint32_t *val)
{
// 假设系统为小端字节序(Little-Endian)
uint32_t result;
uint8_t *p = (uint8_t *)val;

    result = (uint32_t)p[0];
    result |= ((uint32_t)p[1] << 8);
    result |= ((uint32_t)p[2] << 16);
    result |= ((uint32_t)p[3] << 24);

    return result;
}

fdt32_to_cpu 函数接受一个指向 FDT 中存储 32 位整数的指针 val,然后按照小端字节序将这个 32 位整数值转换为 CPU 的本地字节序,并将转换后的值返回。

本文只是从软件开发的角度,简单梳理一下eFuse 涉及到的模块以及基本概念,本文也在持续的更新中,如果你需要得到最新的更新,请访问: 探究eFuse:硬件保障与系统安全的核心文章来源地址https://www.toymoban.com/news/detail-744559.html

到了这里,关于探究eFuse:硬件保障与系统安全的核心的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 医院信息系统集成平台—安全保障体系

    隐私保护及信息安全是医院信息平台所要重点解决的问题,应从患者同意,匿名化服务,依据病种、角色等多维度授权,关键信息(字段级、记录级、文件级)加密存储等方面展开。电子病历等医疗数据进行调阅时,包括强身份认证需求、角色授权需求、责任认定需求、电子

    2024年02月02日
    浏览(36)
  • 云CRM系统如何保障企业数据安全?

    受前几年的疫情影响和政策引导,“企业上云”概念得到进一步普及,更多的企业意识到这是一种刚需选择。不少企业选择云CRM客户管理系统向数字化管理转型,不仅可以降低管理成本,更不受时间地点的拘束。但也有不少企业担心, 云CRM系统如何保障企业数据安全? 随着

    2024年02月08日
    浏览(47)
  • 隧道结构健康监测系统,保障隧道稳定安全运行

    隧道是地下隐蔽工程,会受到潜在、无法预知的地质因素影响,早期修建的隧道经常出现隧道拱顶开裂、地表沉降、隧道渗漏水、围岩变形、附近建筑物倾斜等隧道的健康问题变得日益突出,作为城市生命线不可或缺的一部分,为了确保隧道工程安全、及时预报险情,对隧道

    2024年02月10日
    浏览(49)
  • 安全与道路测试:自动驾驶系统安全性探究

    随着自动驾驶技术的迅速发展,如何确保自动驾驶系统的安全性已成为业界关注的焦点。本文将探讨自动驾驶系统的潜在风险、安全设计原则和道路测试要求。 自动驾驶系统在改善交通安全和提高出行效率方面具有巨大潜力,但其安全性仍面临许多挑战,主要包括: 技术故

    2023年04月25日
    浏览(41)
  • 汽车智能充电桩系统是如何保障充电安全的?

    充电接口安全设计 智能充电桩会采用国际标准的充电接口,如CHAdeMO、GB/T、CCS等,这些标准充电接口都有严格的安全认证,可以防止电击、短路等危险。接头设计合理,插头和接口连接牢固,确保充电过程中不会断开。 绝缘监测与保护 充电桩内部设置绝缘电阻监测装置,实

    2024年02月04日
    浏览(37)
  • 高压电缆故障监测系统——实时监测,保障电力传输安全

    随着科技的发展,电力系统的安全运行越来越受到重视。为了确保高压电缆输电线路的安全稳定运行,本文将介绍由恒峰智慧科技研发的一款高压电缆故障监测系统。该系统由分布式安装于电缆接头处的高压电缆故障与隐患监测装置、故障数据分析中心主站和用户系统三部分

    2024年02月04日
    浏览(88)
  • Android存储系统源码走读(一),androidframework视频

    // Add ourself to the Watchdog monitors if enabled. if (WATCHDOG_ENABLE) { Watchdog.getInstance().addMonitor(this); } // 汽车应用支持 mIsAutomotive = context.getPackageManager().hasSystemFeature( PackageManager.FEATURE_AUTOMOTIVE); } FUSE FUSE(Filesystem in Userspace) 为了实现更灵活的权限管理能力,Android引入了fuse文件系统。 File

    2024年04月27日
    浏览(58)
  • 07-Docker 安全:基于内核的弱隔离系统如何保障安全性?

    在讨论容器的安全性之前,我们先了解下容器与虚拟机的区别,这样可以帮助我们更好地了解容器的安全隐患以及如何加固容器安全。 Docker 与虚拟机区别 Docker 是基于 Linux 内核的 Namespace 技术实现资源隔离的,所有的容器都共享主机的内核。其实这与以虚拟机为代表的云计算

    2024年01月17日
    浏览(60)
  • 城市内涝监测预警系统:有效降低内涝风险,保障城市安全

    近日,受台风“海葵”的影响,福建广东多地遭遇了持续性强降雨的袭击,道路积水严重,“城市看海”模式再次开启,不少网友纷纷调侃房子已经升级为海景房。近年来受极端天气影响,城市内涝灾害越发凸显,屡屡发生的城市看海,昭示着城市需要更加有效的监测和预警

    2024年02月09日
    浏览(48)
  • 计讯物联水库泄洪监测预警系统,保障水库安全度汛

    近日,受台风外围环流影响,多地受到特大暴雨侵袭。因此水库泄洪是势在必行。泄洪作为水库防洪的重要方法之一,水库可通过其库容拦蓄洪水,在水库容量超出或下游需求的时候则开始实行泄洪,达到减免洪水灾害的目的,然而,泄洪并不简单,涉及范围之广,不仅需要

    2024年03月15日
    浏览(79)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包