QSEE不会自动对你的数据进行加密的,除非使用SFS。存储在RPMB的数据是有权限写入的,不是任何人都可以写,写之前需要鉴权。如果需要防止数据泄露,那就需要在写RPMB之前对数据进行加密。

介绍一下RPMB分区

RPMB(Replay Protected Memory Block)Partition 是 eMMC 中的一个具有安全特性的分区。
eMMC 在写入数据到 RPMB 时,会校验数据的合法性,只有指定的 Host 才能够写入,同时在读数据时,也提供了签名机制,保证 Host 读取到的数据是 RPMB 内部数据,而不是攻击者伪造的数据。

RPMB 在实际应用中,通常用于存储一些有防止非法篡改需求的数据,例如手机上指纹支付相关的公钥、序列号等。RPMB 可以对写入操作进行鉴权,但是读取并不需要鉴权,任何人都可以进行读取的操作,因此存储到 RPMB 的数据通常会进行加密后再存储。

重放保护的原理:

使用 eMMC 的产品,在产线生产时,会为每一个产品生产一个唯一的 256 bits 的 Secure Key,烧写到 eMMC 的 OTP 区域(只能烧写一次的区域),同时 Host 在安全区域中(例如:TEE)也会保留该 Secure Key。

在 eMMC 内部,还有一个RPMB Write Counter。RPMB 每进行一次合法的写入操作时,Write Counter 就会自动加一 。

通过 Secure Key 和 Write Counter 的应用,RMPB 可以实现数据读取和写入的 Replay Protect。

RPMB 数据读取

RPMB 数据读取的流程如下:

Host 向 eMMC 发起读 RPMB 的请求,同时生成一个 16 bytes 的随机数,发送给 eMMC。

eMMC 将请求的数据从 RPMB 中读出,并使用 Secure Key 通过 HMAC SHA-256 算法,计算读取到的数据和接收到的随机数拼接到一起后的签名。然后,eMMC 将读取到的数据、接收到的随机数、计算得到的签名一并发送给 Host。

Host 接收到 RPMB 的数据、随机数以及签名后,首先比较随机数是否与自己发送的一致,如果一致,再用同样的 Secure Key 通过 HMAC SHA-256 算法对数据和随机数组合到一起进行签名,如果签名与 eMMC 发送的签名是一致的,那么就可以确定该数据是从 RPMB 中读取到的正确数据,而不是攻击者伪造的数据。

通过上述的读取流程,可以保证 Host 正确的读取到 RPMB 的数据。

RPMB 数据写入

RPMB 数据写入的流程如下

Host 按照上面的读数据流程,读取 RPMB 的 Write Counter。

Host 将需要写入的数据和 Write Counter 拼接到一起并计算签名,然后将数据、Write Counter 以及签名一并发给 eMMC。

eMMC 接收到数据后,先对比 Write Counter 是否与当前的值相同,如果相同那么再对数据和 Write Counter 的组合进行签名,然后和 Host 发送过来的签名进行比较,如果签名相同则鉴权通过,将数据写入到 RPMB 中。

通过上述的写入流程,可以保证 RPMB 不会被非法篡改

高通QSEE中使用qsee_stor_write_sectors函数存储数据到emmc的RPMB分区相关推荐

  1. afe 高通_高通ASOC中的machine驱动

    ASoC被分为Machine.Platform和Codec三大部分,其中的Machine驱动负责Platform和Codec之间的耦合以及部分和设备或板子特定的代码,再次引用上一节的内容:Machin ...

  2. 高通Audio中ASOC的machine驱动

    高通Audio中ASOC的machine驱动 233333发表于linux驱动个人学习已订阅 1.1K ASoC被分为Machine.Platform和Codec三大部分,其中的Machine驱动负责 ...

  3. 高通Audio中ASOC的machine驱动(一) ---mark 详细条理

    高通Audio中ASOC的machine驱动(一) 转载原文:https://www.cnblogs.com/linhaostudy/p/8419231.html 阅读目录 1. 注册Platform ...

  4. 高通Audio中ASOC的codec驱动(二)

    继上一篇文章:高通Audio中ASOC的machine驱动(一) ASOC的出现是为了让codec独立于CPU,减少和CPU之间的耦合,这样同一个codec驱动就无需修改就可以匹配任何一款平台. 在M ...

  5. 在python中使用json格式存储数据

    在python中使用json格式存储数据 代码如下: import jsonlist1 = [{'A': [1, 2, 3, 4, 5, 6], 'B': [3, 4, 5, 6, 7]},{'C': ...

  6. 计算机算最大值如何操作,Excel表格中如何通过函数判断数据中的最大值

    Excel表格中如何通过函数判断数据中的最大值 腾讯视频/爱奇艺/优酷/外卖 充值4折起 Excel是我们常用的一款数据处理软件,深受大家的欢迎,是我们学习办公的助手,有的朋友想知道怎么通过函数判断数 ...

  7. 高通Audio中ASOC的machine驱动(一)

    ASoC被分为Machine.Platform和Codec三大部分,其中的Machine驱动负责Platform和Codec之间的耦合以及部分和设备或板子特定的代码,再次引用上一节的内容:Machin ...

  8. 高通 mtk 展讯等芯片机型读取 备份手机全字库分区 的一些操作解析

    这个工具结合mtkclient对软件修改了多机型支持,支持 高通 mtk 展讯等芯片的字库备份等其他多功能选项 通过个人实测图示展现以下软件的几个功能 1---安卓各选项简单说明 第一个安卓界面是读取 ...

  9. 【Python基础】在pandas中利用hdf5高效存储数据

    1 简介 HDF5(Hierarchical Data Formal)是用于存储大规模数值数据的较为理想的存储格式. 其文件后缀名为h5,存储读取速度非常快,且可在文件内部按照明确的层次存储数据,同一 ...

最新文章

  1. JAVA的两个FTP包的比较
  2. 网站百度索引量受哪些因素影响呢?
  3. Linux 让进程在后台可靠运行的几种方法
  4. 用Go语言建立一个简单的区块链part7:网络
  5. php数据库备份脚本
  6. 双代号网络图节点编号原则_难倒一片的双代号网络图你学会了吗?
  7. 三菱伺服自动调谐_自动化领域最值得关注的十大伺服电机
  8. python 安装impala包
  9. vue2.x使用jsoneditor编辑器
  10. 徽州区数字城管平台智慧管理城市
  11. 硬盘属不属于计算机主机组成,电脑主机是由哪些硬件组成
  12. 27.【小学五年级】确定母亲节
  13. spatial transformer network (STN)
  14. Kinect+unity 实现体感格斗闯关小游戏
  15. 生也有涯而知也无涯,以有涯应无涯,殆矣
  16. 用递归法求两个数的最大公约数
  17. 电脑重装系统后台式电脑网卡坏了怎么修复
  18. python能调用身份证读卡器吗_最近的项目中用到读卡器,用的华视身份证阅读器,附上SDK使用手册...
  19. LeetCode-只出现一次的数字-哈希表-异或-py
  20. Abaqus2022功能介绍

热门文章

  1. 1万粉的小红书kol报价_小红书粉丝推广一次多少钱,小红书营销
  2. 交叉编译 arm libssh2 和libcurl(变态方法)
  3. 【微语】第十一周(01.25~01.31)
  4. 地缘剧本杀 (十三):逃亡(原创小说连载,内含语音)
  5. 概率论与数理统计知识点
  6. 产品经理必读的九步法(转)
  7. java登录界面背景设置,一个java写的QQ登录的界面,请问背景图片如何设置
  8. 网赚 +操作网盘项目几个思路
  9. MFC学习 —— 使用RawInput获取键盘输入
  10. git怎么合并两个分支