eMMC安全简介
1. 引言
- 机密性:确保本应保密的信息仅能被授权实体读取和理解。未经授权的个体无法访问或理解机密信息。
- 完整性:指确认信息受到保护,防止未经授权的更改、修改或删除。信息的完整性涵盖其来源、完整性和正确性,通常通过身份识别和认证等方法实现。
- 可用性:确保授权用户能够始终访问所需信息。
- e.MMC写保护机制旨在保障数据可用性;
- 重放保护内存块(RPMB)方案专注于确保数据完整性;
- Android全盘加密(FDE)则是一种针对数据隐私保护的安全方案,旨在确保机密性。
2. eMMC安全特性的发展
2.1 密码锁(Password Lock)
- 通过CMD42指令启用密码锁定。
- 锁定后,主机仍可执行基础操作(复位、初始化、状态查询等),但禁止访问用户数据区。
- 允许访问区域:启动分区(Boot Partitions)、RPMB、通用分区(General Partition)。
- 完全阻断访问:包括数据所有者在内的所有用户均无法操作受保护数据,可能导致使用灵活性下降。
- 密码锁功能最初源自传统SD卡,后被整合至早期eMMC规范。
2.2 写保护(Write Protect)
- eMMC4.3及更早:仅支持用户区(User Area)写保护。
- eMMC4.4:引入分区概念,支持对分区内特定区域的写保护。
- eMMC5.1:新增认证机制,可通过身份验证动态管理写保护权限。
| 类型 | 特点 |
| 永久写保护 | 一旦启用,无法禁用(防固件回滚或关键配置篡改)。 |
| 上电写保护 | 启用后,需断电重启或复位引脚触发才能解除(防运行时恶意修改)。 |
| 临时写保护 | 可动态启用/禁用(适用于临时敏感操作保护)。 |
| 安全写保护 | 仅授权用户(通过RPMB认证)可管理写保护状态(高安全性场景)。 |
- 全局保护:可对整个设备(包括启动分区、RPMB、通用分区、用户数据区)设置永久或临时写保护。
- 分区级保护:
- 启动分区:支持永久、安全或上电写保护。
- 用户数据区(UDA)与通用分区(GPP):支持按“写保护组”(Write Protect Groups)细分保护区域,并灵活选择保护类型。
- 用户数据区(UDA)与通用分区(GPP)的写保护可应用于特定区段(规范中称为“写保护组”),这些区段支持配置为以下模式:
- 永久写保护(不可逆锁定)
- 安全写保护(需RPMB授权解除)
- 上电写保护(重启后生效)
- 临时写保护(动态启用/禁用)
2.3 RPMB(重放保护内存块)
- 共享密钥:设备与主机预先协商或预置的加密密钥。
- HMAC(哈希消息认证码):用于对访问安全区域的所有读写操作进行数字签名,确保操作合法性。
- 写入数据时,主机需使用共享密钥生成HMAC,附加到操作请求中;设备验证HMAC合法性后执行写入。
- 读取数据时,设备返回的数据会附带HMAC,供主机验证完整性和来源真实性。
- 防重放攻击:通过递增计数器(Counter)值,拒绝重复或过期指令(例如:恶意复制旧指令篡改数据)。
3 RPMB用于身份验证和防止重放攻击的完整性保护。
3.1 What Is a Replay Attack?
3.2 RPMB Authentication
- 密钥编程:
- 主机首先将身份验证密钥信息编程到 eMMC 设备中(通常在安全环境下进行,如生产线)。
- 签名和验证:
- 主机和设备使用该身份验证密钥对涉及 RPMB 区域的读写消息进行签名和验证。
- 消息签名:
- 签名过程涉及消息认证码(MAC),该 MAC 使用 HMAC-SHA-256 算法计算。
3.3 RPMB Protection against Replay Attack
- 共享/秘密密钥。
- 包含写入命令或读取结果的消息。
- 记录 RPMB 总写入次数的写计数器。
- 读取命令对应的随机生成数(Nonce)。
Writing to RPMB
- 检查计数器是否已增加。
- 检查主机发送的 MAC 是否与设备使用其保存的密钥生成的 MAC 相同。

Reading from RPMB
- 在写入 RPMB 时,MAC 的值受 RPMB 写计数器的影响,该计数器在每次成功写入 RPMB 后(由主机和设备共同)增加。
- 在读取 RPMB 时,MAC 的值受主机生成的随机数影响,该随机数作为读取请求的一部分发送。
4 RPMB应用场景
4.1 示例1——软件版本认证防范降级攻击
4.2 示例2——防范未授权解锁
- 初始设置:用户预先设定解锁凭证(如PIN码、指纹或手势密码)。
- 解锁监控:每次解锁尝试的时间均被记录至RPMB。
- 防暴力破解:若短时间内尝试次数超过阈值,系统将暂停解锁功能一定时间。
- 即使黑客使用自动化工具暴力穷举PIN码,一旦触发RPMB记录的尝试次数限制,攻击将立即终止。
- 解锁尝试记录无法被篡改(因存储于RPMB),除非攻击者在前几次尝试中巧合命中正确PIN码,否则设备几乎无法被破解。

4.3 示例3——安全启动与写保护机制
5 结论
相关文章:
eMMC安全简介
1. 引言 术语“信息安全”涵盖多种不同的设计特性。一般而言, 信息安全是指通过实践防止信息遭受未经授权的访问、使用、披露、中断、篡改、检查、记录或销毁。 信息安全的三大核心目标为 机密性(Confidentiality)、完整性(Integr…...
在VSCode 中使用通义灵码最新版详细教程
在 VSCode 中使用通义灵码:最新版详细教程与使用场景 Visual Studio Code(简称 VSCode)是一款由微软开发的轻量级、功能强大的开源代码编辑器,支持多种编程语言,深受开发者喜爱。而通义灵码(TONGYI Lingma…...
Ubuntu20.04安装Isaac sim/ Isaac lab
2025年之后omniverse好像不能直接装Isaac sim了,要跳转到官网链接。 Isaac lab要在Isaac sim安装之后才能安装 Ubuntu20.04安装Isaac sim/ Isaac lab Isaac sim安装Isaac lab安装 Isaac sim安装 找到官网 Isaac sim官方文档 下载下来解压到本地文件夹,…...
Redis 持久化方式:RDB(Redis Database)和 AOF(Append Only File)
本部分内容是关于博主在学习 Redis 时关于持久化部分的记录,介绍了 RDB 和 AOF 两种持久化方式,详细介绍了持久化的原理、配置、使用方式、优缺点和使用场景。并对两种持久化方式做了对比。文章最后介绍了 Redis 持久化的意义并与其他常见的缓存技术做了…...
spring boot 连接FTP实现文件上传
spring boot 连接FTP实现文件上传 maven: <!--ftp--><dependency><groupId>commons-net</groupId><artifactId>commons-net</artifactId><version>3.8.0</version></dependency>接口示例: ApiO…...
怎么进行mysql的优化?
MySQL 的优化是一个系统性的工作,涉及多个层面,包括查询优化、索引优化、配置优化、架构优化等。以下是一些常见的 MySQL 优化方法: 查询优化 避免全表扫描:确保查询能够使用索引,避免 SELECT *,只选择需要…...
Octave3D 关卡设计插件
课程参考链接 这位大佬有在视频合集中有详细的讲解,个人体验过,感觉功能很强大 https://www.bilibili.com/video/BV1Kq4y1C72P/?share_sourcecopy_web&vd_source0a41d8122353e3e841ae0a39908c2181 Prefab资源管理 第一步 在场景中创建一个空物体…...
【论文笔记-TPAMI 2024】FreqFusion:用于密集图像预测的频率感知特征融合
Frequency-aware Feature Fusion for Dense Image Prediction 用于密集图像预测的频率感知特征融合 Abstract:密集图像预测任务要求具有强类别信息和高分辨率精确空间边界细节的特征。为了实现这一点,现代分层模型通常利用特征融合,直接添加…...
DeepBI成单关键词管理策略:提升转化与曝光,助力电商业绩双增长
在电商竞争愈发激烈的市场环境中,优化广告投放的关键词管理是提升产品转化率和曝光量的关键。特别是对于那些已经证明其转化能力的成单关键词,如何更好地管理和优化,成为了卖家们亟需解决的问题。DeepBI通过一套智能化的管理方案,…...
ai-3、机器学习之逻辑回归
机器学习之逻辑回归 1、分类问题2、逻辑回归2.1、二分类问题线性回归2.2、二分类问题逻辑回归 1、分类问题 分类问题常用的算法:逻辑回归 y0 :垃圾邮件 y1:正常邮件 准确来说是分类任务与线性回归任务的区别 2、逻辑回归 2.1、二分类问题线性回归 分类…...
在kubernetes集群中持续压测 SpringCloud 应用,pod 的 memory cache 持续增长问题
问题描述 在kubernetes集群中压测 SpringCloud 应用,持续压测, pod 的 memory cache 持续增长,导致 pod 最终挂了。上图看看效果吧~pod的资源配置 cpu: 1~2 core内存:1~3 G pod 数:1分析思路 1)pod 级的 Memory Cache ,显示的为当前 pod 的 linux 系统的 cache 内存的…...
金融赋能绍兴纺织 民生银行助力外贸中小微企业“走出去”
在浙江绍兴,纺织业作为一张熠熠生辉的产业名片,承载着深厚的历史底蕴与蓬勃的发展活力。这里依傍长三角经济圈,交通网络纵横交错,将原材料产地与广阔市场紧密相连;产业集群高度成熟,上下游产业链完备&#…...
ubuntu:换源安装docker-ce和docker-compose
更新apt源 apt换源:ubuntu:更新阿里云apt源-CSDN博客 安装docker-ce 1、更新软件源 sudo apt update2、安装基本软件 sudo apt-get install apt-transport-https ca-certificates curl software-properties-common lrzsz -y3、指定使用阿里云镜像 su…...
基于 Elasticsearch 和 Milvus 的 RAG 运维知识库的架构设计和部署落地实现指南
最近在整理一些业务场景的架构设计和部署落地实现指南 先放一个 【基于RAG的运维知识库 (ElasticSearch + Milvus) 的详细实现指南】,其中包含了详尽的技术实现细节、可运行的示例代码、原理分析、优缺点分析和应用场景分析。 架构描述: 基于RAG的运维知识库 (ElasticSearch…...
基于Python的web漏洞挖掘,漏洞扫描系统(附源码,部署)
本次技术通过利用Python技术来开发一款针对web漏洞挖掘扫描的技术,通过web漏洞的挖掘扫描来实现对网站URL的漏洞检测,通过高中低风险的判断来实现对一款网站中存在的漏洞进行可视化的分析,从而能够找到问题并且尽快的实现问题的解决。 博主介…...
Spring Boot全局异常处理:“危机公关”团队
目录 一、全局异常处理的作用二、Spring Boot 实现全局异常处理(附上代码实例)三、总结: 🌟我的其他文章也讲解的比较有趣😁,如果喜欢博主的讲解方式,可以多多支持一下,感谢…...
Wireshark:自定义类型帧解析
文章目录 1. 前言2. 背景3. 开发 Lua 插件 1. 前言 限于作者能力水平,本文可能存在谬误,因此而给读者带来的损失,作者不做任何承诺。 2. 背景 Wireshark 不认识用 tcpdump 抓取的数据帧,仔细分析相关代码和数据帧后,…...
Redis7——进阶篇(一)
前言:此篇文章系本人学习过程中记录下来的笔记,里面难免会有不少欠缺的地方,诚心期待大家多多给予指教。 基础篇: Redis(一)Redis(二)Redis(三)Redis&#x…...
word转换为pdf后图片失真解决办法、高质量PDF转换方法
1、安装Adobe Acrobat Pro DC 自行安装 2、配置Acrobat PDFMaker (1)点击word选项卡上的Acrobat插件,(2)点击“首选项”按钮,(3)点击“高级配置”按钮(4)点…...
Kafka零拷贝
Kafka为什么适用零拷贝,其他存储结构不适用? Kafka 采用的是日志存储模型,数据通常是顺序写入、顺序读取,并且它的消费模式是 “读完即走”(一次性读取并发送给消费者),这与零拷贝的特性完美匹…...
Redis相关知识总结(缓存雪崩,缓存穿透,缓存击穿,Redis实现分布式锁,如何保持数据库和缓存一致)
文章目录 1.什么是Redis?2.为什么要使用redis作为mysql的缓存?3.什么是缓存雪崩、缓存穿透、缓存击穿?3.1缓存雪崩3.1.1 大量缓存同时过期3.1.2 Redis宕机 3.2 缓存击穿3.3 缓存穿透3.4 总结 4. 数据库和缓存如何保持一致性5. Redis实现分布式…...
大型活动交通拥堵治理的视觉算法应用
大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...
uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖
在前面的练习中,每个页面需要使用ref,onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入,需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...
python爬虫:Newspaper3k 的详细使用(好用的新闻网站文章抓取和解析的Python库)
更多内容请见: 爬虫和逆向教程-专栏介绍和目录 文章目录 一、Newspaper3k 概述1.1 Newspaper3k 介绍1.2 主要功能1.3 典型应用场景1.4 安装二、基本用法2.2 提取单篇文章的内容2.2 处理多篇文档三、高级选项3.1 自定义配置3.2 分析文章情感四、实战案例4.1 构建新闻摘要聚合器…...
【Java_EE】Spring MVC
目录 Spring Web MVC 编辑注解 RestController RequestMapping RequestParam RequestParam RequestBody PathVariable RequestPart 参数传递 注意事项 编辑参数重命名 RequestParam 编辑编辑传递集合 RequestParam 传递JSON数据 编辑RequestBody …...
dify打造数据可视化图表
一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...
均衡后的SNRSINR
本文主要摘自参考文献中的前两篇,相关文献中经常会出现MIMO检测后的SINR不过一直没有找到相关数学推到过程,其中文献[1]中给出了相关原理在此仅做记录。 1. 系统模型 复信道模型 n t n_t nt 根发送天线, n r n_r nr 根接收天线的 MIMO 系…...
2023赣州旅游投资集团
单选题 1.“不登高山,不知天之高也;不临深溪,不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...
Go 并发编程基础:通道(Channel)的使用
在 Go 中,Channel 是 Goroutine 之间通信的核心机制。它提供了一个线程安全的通信方式,用于在多个 Goroutine 之间传递数据,从而实现高效的并发编程。 本章将介绍 Channel 的基本概念、用法、缓冲、关闭机制以及 select 的使用。 一、Channel…...
Linux 中如何提取压缩文件 ?
Linux 是一种流行的开源操作系统,它提供了许多工具来管理、压缩和解压缩文件。压缩文件有助于节省存储空间,使数据传输更快。本指南将向您展示如何在 Linux 中提取不同类型的压缩文件。 1. Unpacking ZIP Files ZIP 文件是非常常见的,要在 …...
