当前位置: 首页> 黑客网> 正文

Android系统加密原理

Android系统采用了多种加密技术来保护用户数据的安全,主要包括全盘加密(FDE)、文件加密(FBE)和元数据加密(ME)。这些技术涉及到硬件加速引擎、高安全子系统、操作系统内核、TEE(可信执行环境)等多个层面。

1. 全盘加密 (FDE)

Android系统加密原理

全盘加密 (FDE) 是一种在设备级别对用户数据进行加密的方法。在 Android 4.4 及更高版本中,FDE 使用密钥 (密钥本身也会被加密) 对 Android 设备上的所有用户数据进行编码的过程。设备经过加密后,所有由用户创建的数据在存入磁盘前都会自动加密,而且所有读操作都会将数据返回给调用者之前自动解密。FDE 的安全性在于在系统启动过程中,会随机生成 userdata partition 加密密钥 DEK (Disk Encryption Key),同时用户还需要输入 Credentials 来加密保护 DEK。使用时,先要求用户输入 Credentials 并解密 DEK,接下来操作系统才可以使用 DEK 解密 userdata partition 上的数据。

2. 文件加密 (FBE)

文件加密 (FBE) 是一种基于文件的加密技术,由于 Android 将 userdata partition 格式化为 F2FS 类型的文件系统,因此也可以理解为基于 F2FS 类型系统的加密。在 Android 7.0 及更高的版本中,FBE 支持文件级加密的设备支持直接启动,当使能该功能时,已加密设备在启动后可以直接进入锁屏界面,从而使用户可以快速使用 Android 系统的闹钟和无障碍服务。FBE 的安全性体现在可以在用户解锁前使用系统服务,同时还可以保护用户的隐私数据。

3. 元数据加密 (ME)

元数据加密 (ME) 是 Android 9 引入的一种对存在硬件支持的元数据加密的支持。采用 Metadata Encryption 时,启动时出现的单个密钥会加密未通过 FBE 进行加密的任何内容,包括目录布局、文件大小、权限和创建/修改时间。该密钥受 Keymaster 保护,而 Keymaster 受到启动时验证功能的保护。

4. 加密算法的选择

在 Android 中,常用的对称加密算法有 AES 和 DES,而非对称加密方式分为 RSA、AES、DES、MD5、Base64 等。MD5 算法是一种不可逆的 hash 算法,常用于只需加密无需解密的数据上,比如用户密码。RSA 算法是一种非对称加密算法,使用长度可以变化的密钥,既可用于数据加密也可用于数字签名。

5. 加密技术的应用

在 Android 系统安全中,加密技术被广泛应用于各种场景。例如,OTA 包传输、dm-verity、fs-verity、selinux 重编译判断、bootconfig 数据 check 等都使用了加密技术来验证数据完整性。此外,在签名验签中也需要校验数据完整性,包括全盘加密、文件级加密、secureboot、AVB、OTA 包签名、apk 签名、apex、ko 签名等。

综上所述,Android 系统加密原理是一个复杂而全面的过程,它综合运用了多种加密技术和算法来确保用户数据的安全性。