Android DirectBoot模式及其数据存储

支持“Direct boot”模式

当设备已开机但用户尚未解锁设备时,Android 7.0 将在安全的“直接启动”模式下运行。为支持此模式,系统为数据提供了两个存储位置:

  • 凭据加密存储(Credential encrypted storage),这是默认存储位置,仅在用户解锁设备后可用。

  • 设备加密存储(Device encrypted storage ),该存储位置在“直接启动”模式下和用户解锁设备后均可使用。
    默认情况下,应用不会在“Direct boot”模式下运行。如果您的应用需要在“直接启动”模式下执行操作,您可以注册应在此模式下运行的应用组件。需要在“直接启动”模式下运行的一些常见应用用例包括:

  • 已安排通知的应用,如闹钟应用。

  • 提供重要用户通知的应用,如短信应用。

  • 提供无障碍服务的应用,如 Talkback。

如果应用在“Direct boot”模式下运行时需要访问数据,请使用设备加密存储。设备加密存储包含使用密钥加密的数据,该密钥只有在设备成功执行启动时验证后才可用。

对于应使用与用户凭据(如 PIN 码或密码)关联的密钥加密的数据,请使用凭据加密存储。凭据加密存储仅在用户成功解锁设备后可用,直到用户再次重启设备。如果用户在解锁设备后启用锁定屏幕,则不会锁定凭据加密存储。

请求在“Direct boot”模式下运行

应用必须先向系统注册其组件,然后才能在“Direct boot"模式下运行或访问设备加密存储。应用通过将组件标记为加密感知来向系统注册。如需将您的组件标记为加密感知,请在清单中将 android:directBootAware 属性设为 true。

当设备重启后,加密感知组件可以注册以接收来自系统的 ACTION_LOCKED_BOOT_COMPLETED 广播消息。此时,设备加密存储可用,您的组件可以执行需要在“直接启动”模式下运行的任务,在用户解锁设备后,所有组件均可访问设备加密存储和凭据加密存储。

访问设备加密存储

如需访问设备加密存储,请通过调用 Context.createDeviceProtectedStorageContext() 创建另一个 Context 实例。通过此上下文发出的所有存储 API 调用均访问设备加密存储。以下示例会访问设备加密存储并打开现有的应用数据文件:

Context directBootContext = appContext.createDeviceProtectedStorageContext();
// Access appDataFilename that lives in device encrypted storage
FileInputStream inStream = directBootContext.openFileInput(appDataFilename);
// Use inStream to read content...
SharedPreferences recordSavePreferences = directBootContext.getSharedPreferences(preferencesFilename, MODE_PRIVATE);
// Use SharedPreferences
new DatabaseHelper(directBootContext);
// Use database
Cursor cursor = directBootContext.getContentResolver().query(CONTENT_URI, QUERY_COLUMNS, selection, selectionArgs, null);
// Database query

请只将设备加密存储用于在“Direct boot”模式下必须可以访问的信息。请勿将设备加密存储用作通用加密存储。对于私密用户信息,或在"Direct boot”模式下不需要的加密数据,请使用凭据加密存储。

文件加密方式

  • DE(device encrypted)
    文件会被一个密钥进行加密,这个密钥仅在系统执行了可验证的启动后才能获得。
    在系统中,只有一个DEsys的key,有多个DEn的key对于每一个用户

  • CE(credential encrypted)
    文件加密使用一个和用户认证(PIN,图案,密码)关联的key,这个key只有用户先执行了认证后才能获取
    每一个用户拥有一个ce key

  • NE(none encrypted)
    文件不加密,这种情况十分少见,而OTA更新文件是个例子

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值