FDE:Full-Disk Encryption 全盘加密
FBE:File-Based Encryption基于文件的加密
ce默认存储位置(user/0):用户解锁后才可以使用;
de(user_de/0)”直接启动“(direct boot)模式和用户解锁后均可用;
在开机未解锁的场景,ce目录被锁定,只能访问de目录,但是有些应用场景,例如闹钟,即使开机未解锁也需要提供服务,因此需要适配FBE。
1.配置
在manifest里面配置 android:directBootAware=“true”,并设置一个广播接收器,用户解锁之后,可以收到android.intent.action.LOCKED_BOOT_COMPLETED广播
2.访问de
在“直接启动”模式下,需要调用Context.createDeviceProtectedStorageContext() 创建另一个 Context 实例。
3.一些api
例如天气,并不涉及到用户的隐私,因此可以直接将所有的数据从ce迁移到de当中,即从user/0目录迁移到user_de/0目录。
在“直接启动”模式下,通过Context.createDeviceProtectedStorageContext() 访问de文件,当收到android.intent.action.LOCKED_BOOT_COMPLETED广播之后,可以使用Context.moveSharedPreferencesFrom() 和 Context.moveDatabaseFrom() 方法将ce目录下的内容迁移到de目录下,实现兼容。
参考资料:
https://source.android.com/security/encryption/full-disk.html
https://source.android.com/security/encryption/file-based.html