学习笔记"/>
Android FBE学习笔记
1.FBE和FDE
FDE:Full-Disk Encryption 全盘加密
FBE:File-Based Encryption基于文件的加密
2.适配FBE
2.1存储位置
ce默认存储位置(user/0):用户解锁后才可以使用;
de(user_de/0)”直接启动“(direct boot)模式和用户解锁后均可用;
在开机未解锁的场景,ce目录被锁定,只能访问de目录,但是有些应用场景,例如闹钟,即使开机未解锁也需要提供服务,因此需要适配FBE。
2.2适配
1.配置
在manifest里面配置 android:directBootAware=“true”,并设置一个广播接收器,用户解锁之后,可以收到android.intent.action.LOCKED_BOOT_COMPLETED广播
<applicationandroid:directBootAware="true"android:defaultToDeviceProtectedStorage="true"><receiverandroid:directBootAware="true" >...<intent-filter><action android:name="android.intent.action.LOCKED_BOOT_COMPLETED" /></intent-filter>
</receiver>
2.访问de
在“直接启动”模式下,需要调用Context.createDeviceProtectedStorageContext() 创建另一个 Context 实例。
3.一些api
- 查询用户是否解锁
public static boolean isUserUnlocked(Context context) {if (Build.VERSION.SDK_INT >= BuildUtil.N) {UserManager userManager = (UserManager) context.getSystemService(Context.USER_SERVICE);return userManager.isUserUnlocked();} else {return false;}
}
- 迁移数据
Context.moveSharedPreferencesFrom()
Context.moveDatabaseFrom()
3.场景
例如天气,并不涉及到用户的隐私,因此可以直接将所有的数据从ce迁移到de当中,即从user/0目录迁移到user_de/0目录。
在“直接启动”模式下,通过Context.createDeviceProtectedStorageContext() 访问de文件,当收到android.intent.action.LOCKED_BOOT_COMPLETED广播之后,可以使用Context.moveSharedPreferencesFrom() 和 Context.moveDatabaseFrom() 方法将ce目录下的内容迁移到de目录下,实现兼容。
参考资料:
.html
.html
更多推荐
Android FBE学习笔记
发布评论