QRPROM介绍

从零构建高通安全启动环境:硬件熔丝与密钥管理的实战指南 本文详细介绍了如何从零构建高通安全启动环境,重点解析硬件熔丝(QFPROM)配置与密钥管理技术。通过实战指南,开发者可以掌握安全启动基础架构、开发环境准备、密钥体系构建、QFPROM编程等关键步骤,确保设备从启动阶段就具备高级安全防护能力。 阅读详情
AI摘要

本文介绍了QFPROM(Qualcomm Fuse Programmable ReadOnly Memory),它是Qualcomm用于存储芯片鉴权配置的一种非易失性ROM解决方案。文章详细描述了在MSM8909平台上实现SecureBoot的过程,包括生成数字证书、配置属性文件、使用sectools脚本进行签名等关键步骤。

QFPROM (Qualcomm Fuse Programmable Read Only Memory)是QFUSE的替代方案,在一个非易失性ROM(non-volatile memory)中存储代表芯片鉴权相关的配置。目前初步了解的情况为,该模块是Secure Boot的一部分,存储的配置为各Image鉴权需要的数字证书及相关属性。QFUSE是Qualcomm FUSE的缩写,FUSE还有一种将网络文件系统变为用户空间文件系统的解释,但不是这个含义。由于QFPROM只能烧写一次,在没有烧录任何内容之前,手机不会启用Image签名认证流程,一旦烧写后就会对其中写明的Image进行签名认证,以达到安全的目的,也就是熔丝功能。
以MSM8909平台为例,主要的步骤如下:
1)生成数字证书可以利用vendor/qcom/proprietary/common/scripts/SecImage/resources/openssl/目录下的opensslroot.cfg和v3.ext两个文件,再用openssl命令生成需要的数字证书,同时会生成一个哈希值
2)将哈希值和其他启用Secure Boot的属性写入8909_fuseblower_USER.xml
3)将数字证书拷入sectools对应的目录中
4)使用sectools.py脚本的fuseblower子功能用8909_fuseblower_OEM.xml、8909_fuseblower_QC.xml、8909_fuseblower_USER.xml和数字证书共同生成sec.dat文件
5)使用sectools.py脚本的secimage子功能给各Image签名,8909需求签名的有如下几个:
   boot_images/build/ms/bin/8909/emmc/sbl1.mbn
   boot_images/build/ms/bin/8909/emmc/unsigned/prog_emmc_firehose_8909_ddr.mbn
   LINUX/android/out/target/product/msm8909/emmc_appsboot.mbn
   modem_proc/build/ms/bin/8909.gen.prod/mba.mbn
   modem_proc/build/ms/bin/8909.gen.prod/qdsp6sw.mbn
   rpm_proc/build/ms/bin/8909/pm8909/rpm.mbn
   trustzone_images/build/ms/bin/MAZAANAA/tz.mbn
   wcnss_proc/build/ms/bin/SCAQMAZ/reloc/wcnss.mbn
6)由于Image大小发生变化,可能会涉及到分区调整,将签名后的Image下载到单板。
7)将sec.dat刷写到sec分区后,Secure Boot就正常工作了,这时就不能使用高通的QFIL烧录Image了,不过高通提供了解决方案。本质上就是给BootLoader签名并修改其中的一个鉴权判断变量。
对于QFPROM来说,有两个重要的参数,一个是Blow Time(我理解为烧录时长),一个是QFPROM时钟频率。这两个之间的关系由芯片内部的一个计数器值协调,计数器值个时钟周期正好为Blow Time。这个是跟硬件设计有关的,以后再说。
有两个疑问:
1)QFPROM中的配置属性名采用如下格式,目前还不明白其含义,好像跟上面的对不上号。
qfprom_<type>_<device_number>_<optional_field>_<feature_set>
<type> → cfg; phwk; xy; cc_id; hdcp
<device_number> → MDM9000; MSM7200; QSD8250; QSC6245
<optional_field>
<feature_set> → FS01, FS02, FS03, etc.
2)mba.mbn等Image在secImage.xml等地方有定义相关属性,但在烧录过程中是怎样的对应关系还不清楚。


高通平台fingerprint指纹框架 指纹是android系统中目前应用比较广发的一种安全验证手段,它使得我们的手机安全得到了极大的提高,同时指纹它也拥有了极高权限,这就意味着,对于指纹这个软件需要一个绝对安全的运行环境,让外界很难突破去破解它。在高通平台中,手机内是分为安全环境和非安全环境的,安全环境是trustzone,简称TZ,这这里面运行的应用程序被称为qsapp,是需要经过签名验证通过才能运行,除TZ意外的地方被称为非安全环境,如下图:trustzone由两部分软件组成:TZBSP(TrustZone board support pa 阅读详情

相关推荐

ProM开发指北3——ProM插件开发入门

以下内容参考:setup/HowToCreatePluginsInProM – prom Hello World插件 插件定义 package org.processmining.plugins.gettingstarted; import org.processmining.contexts.uitopia.annotations.UITopiaVariant; import org.processmining.framework.plugin.PluginContext; import o.

hyhy12580的博客 5209

嵌入式开发人员,这些ROM、FLASH、硬盘技术知识,必须要了解

在嵌入式开发中,如果芯片内部有Flash,应用程序通常保存在芯片内部FLASH中,比如Cortex-M系列的单片机;如果芯片内部没有Flash,则应用程序通常保存于外部的NAND FLASH中,比如Cortex-A系列的芯片。这些Flash都是可以通过软件编码进行重新编程。 在计算机发展早期,数据是存储在ROM中,ROM中的数据只读不可写,应用有限,直到后面出现的EEPROM、NAND存储器,使得计算机存储技术的应用得到快速发展,特别是近十年广泛应用的高速存储技术eMMC与UFS,推动消费电子领域的快速发

一口Linux的专栏 8819

caoporn-video-address-extractor:双击以获取CaoPorn的视频地址

caoporn视频地址提取器 双击获取视频地址!

Qualcomm(简称 QC)SoC 安全体系的一般原理总结

摘要: 本文系统介绍了高通SoC中的熔丝技术(eFuse/QFPROM)及其在安全启动中的关键作用。熔丝作为一次性可编程存储器,存储信任根公钥哈希、安全启动策略、调试接口控制等核心配置。文章详细解析了熔丝分类(安全启动、调试控制、防回滚等)、设备生命周期管理策略,并重点提出OEM厂商需注意的11个关键事项,包括密钥管理、熔丝写入流程、风险控制等。同时列举了8个典型实施错误案例,给出从研发到量产的推荐流程,最后提供了执行前的核对清单。全文为基于熔丝技术的安全启动方案提供了完整的实施框架和最佳实践指导。(149

就聊这个了,window/linux 嵌入式驱动 1873

资金穿透分析

我们把准备好的银行数据导入到软件中,导入具体步骤这里不做详解,大家可以通过“清林情报分析师”公众号,查看操作视频第二节

清林情报分析师 3491

Java课程设计——扫雷游戏程序

使用Java语言对扫雷游戏的复刻

m0_60671275的博客 3500

OpenCAEPoro优化(2)

OpenCAEPoro优化,使用vtune(没能获得有效信息),修改代码(优化内存分配,并行化循环)

2301_80138548的博客 1298

串行RapidIO(Serial RapidIO,SRIO):协议介绍

目录一、RapidIO背景介绍二、RapidIO协议概述2.1 包与控制符号2.2 包格式2.4 消息传递2.5 全局共享存储器2.6 流量控制2.7 串行物理层三、I/O逻辑操作与包格式四、维护操作与包格式五、消息操作与包格式六、总结 本文是基于Xilinx平台SRIO介绍(一)RapidIO协议介绍的内容作读书笔记。 一、RapidIO背景介绍 RapidIO采用三层分级体系结构,包括逻辑层、传输层和物理层该分级结的如下图所示: ● 逻辑层:位于最高层,定义全部协议和包的格式,它们为端点器件发起和完

Starry__的博客 1万+

本地屏蔽

C:/Windows/System32/drivers/etc/hosts

caofaping的专栏 1万+

YOLOv8改进-bifpn

跨尺度连接通过添加一个跳跃连接和双向路径来实现,自此实现了加权融合和双向跨尺度连接。该结构是加权且双向连接的,即自顶向下和自底向上结构,通过构造双向通道实现跨尺度连接,将特征提取网络中的特征直接与自下而上路径中的相对大小特征融合,保留了更浅的语义信息,而不会丢失太多的深层语义信息。传统的特征融合时将尺度不同的特征图以相同权重进行加权,但是当输入的特征图分辨率不同时,以相同的权重进行加权对输出的特征图不平等。所以BiFPN根据不同输入特征的重要性设置不同的权重,同时反复采用这种结构来加强特征融合。

weixin_45303602的博客 8139

深度学习笔记——Transformer

本文详细介绍面试过程中可能遇到的Transformer知识点。

haopinglianlian的博客 1703

CAOPORM:AI如何革新传统编程模式

快速原型开发标准化业务逻辑实现教学演示项目个人小型项目开发理解生成的代码逻辑根据实际需求进行定制修改处理复杂的业务规则进行性能优化总的来说,InsCode(快马)平台提供的AI辅助开发体验非常流畅,从项目生成到最终部署上线,整个过程几乎不需要配置任何环境,特别适合想要快速实现想法的开发者。对于我这个项目来说,原本可能需要几天的工作量,现在几个小时就能完成核心功能的开发和部署,效率提升非常明显。

ThunderstormLynx23的博客 4067

解锁Vscode:C/C++环境配置超详细指南

本文详细介绍如何在 VSCode 中配置 C/C++ 开发环境,帮助开发者快速搭建高效的编码调试环境。内容涵盖前期准备、软件下载安装、环境变量配置、工作区文件设置及测试运行全流程:首先需准备 VSCode 编辑器、MinGW-w64 编译器及 C/C++ 插件;接着完成工具下载与安装,配置系统环境变量以确保编译器可全局调用;然后通过创建.vscode工作区文件夹,配置核心文件,实现代码智能提示与调试功能;最后通过编写 Hello World 示例验证环境可用性,并附上常见问题排查方案。

邓邓子的博客 3047

Qualcomm 常见缩写

HLOS、dm-verity、verity boot

caopeng的专栏 8367

基于Simulink进行步进电机的重复控制仿真建模

目的:通过引入一个周期延迟环节来补偿系统的周期性误差,从而提高系统对周期性参考信号或扰动的跟踪性能。方法内部模型原理:在控制器中嵌入一个与周期性信号相关的模型(例如周期延迟环节),以实现对周期性误差的零稳态误差控制。滤波器设计:为了避免高频噪声放大,通常会在重复控制器中加入低通滤波器。优势对周期性信号具有良好的跟踪性能。不需要精确的数学模型即可实现高性能控制。挑战:需要合理设计重复控制器的参数以避免系统不稳定。

MHD0815的博客 382

【科研数据获取】根据Excel表个中的企业/公司信息批量获取经纬度坐标,并进行地图可视化

批量获取企业/公司的经纬度坐标,并进行地图可视化1 需求2 实现途径3 需求逐步实现 1 需求 在做项目的时候,老板或者项目答辩时候甲方最喜欢看到的就是可视化结果,尤其是涉及到地图可视化。很多时候会遇到企业/公司的数据,想要做地图可视化,必不可少的就是要获取它们具体地址:第一种就是像查户口一样精准一下具体的城镇街道,还有一种就是经纬度信息,前一种属于文字内容往往用于管理方面,第二种数字信息多用于数据处理与分析。 2 实现途径 获取地理信息数据,自然需要使用到地图的功能,这里直接采用百度地图的拾取坐标系统,

lys_828的博客 2337

【Camera专题】Qcom-高通OTP编程调试指南-上

关于高通OTP编程的知识,网上少得可怜,官方文档又没有那么清晰,于是就来一篇干货吧!OTP编程完全指南分上、下2篇。上:主要讲OTP的知识和调试流程。下:主要讲OTP的源码。1.OTP的基本概念2.OTP的作用3.OTP的调试流程。

jfl558604的博客 2884

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

hisi3559AV100开发之系统移植

hisi3559AV100开发之系统移植 1、概述 开发环境 :ubuntu18.04, hisi开发包版本《Hi3559AV100R001C02SPC020; 开发板型号为"EVM3559AV_A2"。 2、hisi平台uboot移植 1、适用于hisi3559平台的uboot生成需要两个步骤:a、生成uboot,make -j4;b、根据hisi脚本配置相关硬件寄存器。参考服务器代码 Hi3559AV100_SDK_V2.0.2.0/osdrv/tools/pc/uboot_tools/make.sh

gwc_master的博客 1532

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

玩机搞机-----带你了解高通刷机平台中的一些选项释义 玩转平台

很多刷机工具玩家都使用过,但对于一些新手来说。有些选项所表达的意义不太了解,选择与否严重会导致机型固件刷完个别功能出现故障,今天的这个博文对有些刷机平台中的选项做个简单的说明。

小马哥的专栏 2963

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

ProM开发指北1——什么是ProM

ProM(Process Mining framework)是一个流程挖掘算法的开源框架,是流程挖掘社区进行研究的开发框架平台,为开发者和用户提供一个易使用、易扩展的流程挖掘算法平台。开发者可以在ProM上贡献代码,ProM为用户提供这些公开的开发的工具(插件)的使用。 以下介绍引用来源:intro.pptx in Documentation/Workshop – prom ProM概览 ProM框架对ProM包和文件管理,并对用户提供这些资源的访问。 ProM框架 ProM框架中有..

hyhy12580的博客 4557

最完整的step-ca部署教程:从安装到生产环境配置

你还在为自签名证书警告烦恼?还在手动管理证书续期?step-ca作为一款开源证书颁发机构(Certificate Authority, CA)软件,可帮助你构建企业级PKI(Public Key Infrastructure, 公钥基础设施),实现TLS和SSH证书的自动化管理。本文将从环境准备到生产配置,带你一站式掌握step-ca的部署与应用。读完本文,你将能够:搭建安全可控的私有CA服务、配...

gitblog_00469的博客 1809

ProM 网站资源

目录 .xes格式 .xes格式 https://blog.youkuaiyun.com/free1985/article/details/75735797?ops_request_misc=%25257B%252522request%25255Fid%252522%25253A%252522160748483519724816666562%252522%25252C%252522scm%252522%25253A%25252220140713.130102334..%252522%25257D&r.

无忧 1699

高通Linux安全指南(一)

验证设备软件的 SELinux 状态非常重要,以确保关键软件模块或驱动程序没有非特权访问。SELinux 和启用 SELinuxSEPolicy。

weixin_38498942的博客 2066

android (MTK) 驱动层读取摄像头ID失败问题、低温下Camera打开花屏或者读不到id、概率性读取不到id

底层驱动读不到摄像头的ID,可以从以下几个方面做检查 首先检查硬件方面,多拿几个摄像头模组来做试验。因为会存在打样模组有问题的情况,在原理图上对清摄像头的各个脚是否都对应上了、模组是否都扣好等。这个是硬件层面上的。 第二检查I2C地址是否正确,如MTK平台的基本都是以7位地址的方式操作的。既是偏移一位的。最后是要看看模组的规格书,确认器件的I2C地址 第三就要看摄像头的上、下电时序这一块。如MTK平台的,它在这个文件里实现:mt6737_65_a_n_mp1\kernel-3.18\driv..

weixin_38360181的博客 3140

CAOPORM vs 传统开发:效率提升300%的秘诀

对于想尝试CAOPORM的开发者,我强烈推荐先用这个平台做个小项目体验下。整个过程就像有个编程助手在帮你完成大部分重复工作,你只需要专注在核心业务逻辑上。最近我尝试用两种不同的方式开发同一个TODO应用:传统手工编码和基于AI辅助的CAOPORM方法。最让我惊喜的是,AI生成的代码已经处理了大部分常见边界情况,省去了大量调试时间。最头疼的是调试阶段,各种边界条件处理就占用了大量时间。当然,对于特别复杂的业务逻辑,可能还是需要传统开发方式做深度定制。完成这个对比实验非常顺畅。的对比实验,结果让我大吃一惊。

SnowflakeJaguar14的博客 1046

ES6-promise对象的使用

Promise 的含义(摘自阮一峰ES6ru) Promise 是异步编程的一种解决方案,比传统的解决方案——回调函数和事件——更合理和更强大。它由社区最早提出和实现,ES6 将其写进了语言标准,统一了用法,原生提供了Promise对象。 所谓Promise,简单说就是一个容器,里面保存着某个未来才会结束的事件(通常是一个异步操作)的结果。从语法上说,Promise 是一个对象,从它...

dayu5595的博客 265
上一篇: FFMPEG(二)关键数据结构
makeyourprogress
博客等级 码龄11年 26粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值