信息安全的三个基本目标是机密性、完整性和可用性:

  1. 机密性意味着应该保密的信息只能被授权的实体阅读和理解。其他未经访问授权不能阅读或理解机密信息。
  2. 完整性是指能够确保信息不受未经授权的更改、修改或删除的能力。信息的完整性包括信息的来源、完整性和正确性(使用标识和身份验证等方法)。
  3. 可用性意味着信息始终可供授权用户使用

eMMC安全方案

eMMC设备包含多种数据保护和安全功能,包括:写保护、密码锁定/解锁和RPMB。这些特性经过多年的发展,并随着eMMC规范的每个版本而不断改进。

内核关于emmc设备分区的信息 emmc规范_security

eMMC分区划分

内核关于emmc设备分区的信息 emmc规范_RPMB_02

写保护

写保护旨在防止数据损坏或擦除(无论是恶意的还是无意的)。在eMMC4.3和更早版本的规范中,写保护仅为用户区域提供保护。随着eMMC4.4中分区的引入,写保护得到了更新,以支持不同的分区和分区内的区域。随着eMMC5.1的发布,写保护允许使用身份验证来保护分区和分区中的区域。

一旦设置了写保护,主机就不能擦除或写入指定的保护区域。但是,与密码锁不同,数据仍然可以从这个区域读取。

在eMMC版本5.1中,有四种类型的写保护:

  1. 永久:一旦启用写保护,就不能禁用它
  2. 开机:一旦启用写保护,它只能通过关闭电源或切换设备重置引脚来恢复,这会导致设备重新启动。
  3. 临时:可以启用和禁用写保护。
  4. 安全:只有授权使用RPMB的用户才能启用和禁用写保护。

现在,写保护功能可以在整个设备(包括引导和RPMB分区)上启用,也可以在写保护组的分区内部的小区域上启用:

  1. 通过在CSD中设置永久或临时写保护位,可以对整个设备(包括引导区域分区、通用区域分区、RPMB和用户/增强型用户数据区域分区)进行写保护。
  2. 启动分区可以是永久的、安全的或加电写保护的。
  3. 用户数据区(UDA)和通用分区(GPP)写保护可应用于特定的段(或规范中称为“写保护组”),这些段可以设置为永久、安全、通电或临时写保护。

密码锁定/解锁

密码锁定功能旨在保护用户区域(只有User Area才有密码锁定功能)内容的任何类型访问(读、写或擦除),主机仍然可以访问引导分区、RPMB和常规分区区域。密码锁定/解锁功能是使用CMD42设置的,启用密码锁定后,主机可以执行某些操作(包括重置、初始化、选择、查询状态等)但不能访问设备用户区域的任何数据。这种保护对于防止数据被盗很有用,但是它也限制了任何人(包括数据所有者)可以使用设备,因为不允许(任何类型)访问受保护的数据。

RPMB – Replay Protected Memory Block(重放保护内存块)

RPMB(重放保护内存块)功能首次在eMMC4.4中引入,此功能使设备能够将数据存储在经过身份验证和防止重播攻击的小型特定区域(通常为4M大小)。RPMB是一种包含的安全协议(具有自己的命令操作码和数据结构)。该协议的机制包括一个共享密钥和一个HMAC(哈希消息认证码),用于对访问安全区域的所有读/写操作进行签名。

RPMB身份验证

RPMB使用对称密钥身份验证,其中主机和设备都使用相同的身份验证密钥(此密钥也称为“共享密钥”)。其工作方式如下:

  1. RPMB身份验证密钥信息首先由主机编程到eMMC设备(这必须在安全环境中进行,通常在生产线上安装rpmb key)。
  2. 然后,主机和设备都使用身份验证密钥对涉及RPMB区域的读写消息进行签名和身份验证。
  3. 对消息进行签名涉及到一个消息认证码(MAC),它是使用HMAC SHA-256算法计算的。

RPMB防止重放攻击

重放保护的基本思想是确保每条消息都是唯一的。在RPMB中,设备管理一个只读计数器,该计数器在每次写入消息后递增,其新值将包括在下一个要发送的验证码的计算中。

RPMB命令通过HMAC SHA-256计算进行验证,该计算将作为输入:

  1. 共享/密钥。
  2. 包含写入命令或读取结果的消息。
  3. 写入计数器,统计写入RPMB的总次数。
  4. 一个nonce,它是每个读命令随机生成的数字。

MAC(Message Authentication Code)是一个256位(32字节)密码,它嵌入在RPMB数据帧中,并与消息数据本身一起发送。

写RPMB

当eMMC设备接收到写入命令消息到RPMB时,它通过检查计数器已增加和主机发送的MAC是否与设备使用其保存的密钥生成的MAC相同来验证命令的有效性。

内核关于emmc设备分区的信息 emmc规范_RPMB_03

读RPMB

eMMC设备将读取的数据连同MAC签名一起发送到主机。主机接收消息并使用共享密钥生成MAC。只有当两个mac相同时,主机才会信任从RPMB读取的数据。

使用随机数生成和计数器寄存器是防止重播攻击的关键:

  1. 在写入RPMB的情况下,MAC的值受RPMB写入计数器的影响,RPMB写入计数器在每次成功写入RPMB时都会增加(主机和设备)
  2. 在从RPMB读取的情况下,MAC的值受主机发送的随机数的影响。

RPMB用例

不同的供应商出于不同的目的使用RPMB,但是某些用例是RPMB的良好候选。一些著名的用例包括软件版本认证、指纹验证、安全密钥存储、网络供应商信息、数字权限管理(DRM)和安全支付。