加密

加密是指使用对称加密密钥对 Android 设备上的所有用户数据进行编码的过程。设备加密后,所有用户创建的数据在提交到磁盘之前都会自动加密,并且所有读取操作都会在将数据返回到调用进程之前自动解密数据。加密可确保即使未经授权的方尝试访问数据,他们也无法读取数据。

Android 有两种设备加密方法:基于文件的加密和全盘加密。

基于文件的加密

Android 7.0 及更高版本支持基于文件的加密。基于文件的加密允许使用不同的密钥对不同的文件进行加密,这些密钥可以独立解锁。支持基于文件加密的设备也支持 Direct Boot,这使得加密设备可以直接启动到锁屏界面,从而可以快速访问重要的设备功能,如辅助功能服务和闹钟。

通过基于文件的加密和使应用感知加密的 API,应用可以在有限的上下文中运行。这可以在用户提供凭据之前发生,同时仍然保护用户的私人信息。

元数据加密

Android 9 引入了对元数据加密的支持,在硬件支持的情况下可以使用。通过元数据加密,启动时存在的单个密钥会加密未被 FBE 加密的任何内容,例如目录布局、文件大小、权限以及创建/修改时间。此密钥受 Keymaster 保护,而 Keymaster 又受启动时验证保护。

全盘加密

Android 5.0 到 Android 9 支持全盘加密。全盘加密使用单个密钥(使用用户的设备密码保护)来保护设备的整个 userdata 分区。启动后,用户必须提供其凭据,然后才能访问磁盘的任何部分。

虽然这对安全性很有好处,但这意味着当用户重启设备时,手机的大部分核心功能都无法立即使用。由于对他们数据的访问受到其单一用户凭据的保护,因此闹钟等功能无法运行,辅助功能服务不可用,并且手机无法接听电话。