ASP源码.NET源码PHP源码JSP源码JAVA源码DELPHI源码PB源码VC源码VB源码Android源码
当前位置:首页 >> 系统运维 >> android全磁盘加密

android全磁盘加密(5/7)

来源:网络整理     时间:2016-02-23     关键词:

本篇文章主要介绍了"android全磁盘加密",主要涉及到方面的内容,对于系统运维感兴趣的同学可以参考一下: android 全磁盘加密 什么是全磁盘加密?全磁盘加密是使用一个密钥来为android设备上所有的用户数据加密的过程。一旦设备被加密,所有的用户创建的数据都...

  1. ro.crypto.fs_type
  2. ro.crypto.fs_real_blkdev
  3. ro.crypto.fs_mnt_point
  4. ro.crypto.fs_options
  5. ro.crypto.fs_flags (ASCII 8-digit hex number preceded by 0x)
  • 启动框架以提示输入密码

    框架启动,然后查看vold.decrypt是否被设置为 trigger_restart_min_framework。这告诉框架这是在tmpfs /data磁盘中启动的,他需要获取用户密码。

    首先,他需要确定磁盘是否被正确加密。他发送命令cryptfs cryptocomplete到vold。如果加密完全成功,则返回0.如果内部错误,返回-1.或者是如果加密没有完全成功返回-2。vold通过查看用于CRYPTO_ENCRYPTION_IN_PROGRESS标志的加密元数据来决定这个。如果被设置了,加密进程被中断了,在设备中没有可用的数据。如果vold返回一个错误,UI应该向用户展示一个信息来重启和工厂重置设备,并且给用户一个按钮来这样做。

  • 解密带有密码的数据

    一旦cryptfs cryptocomplete成功了,框架就会展示一个UI询问磁盘密码。UI通过向vold发送命令cryptfs checkpw 来检查密码。如果密码正确(这是由正确挂载到临时位置的加密/data决定的,然后卸载塔),vold在属性ro.crypto.fs_crypto_blkdev中保存解密块设备的名称,并且向UI返回状态0.如果密码不正确,向UI返回-1。

  • 停止框架

    UI弹出一个加密启动图形,然后使用命令 cryptfs restartvold设置属性vold.decrypt为trigger_reset_main来调用vold,这样会使init.rc 去处理class_reset main。这会在主类中停止所有的服务,这允许tmpfs /data被卸载。

  • 挂载/data

    vold然后挂载解密/data分区,然后准备新的分区(如果是带有可擦选项加密的话,是不会被准备的,这在首次发行的时候是不支持的)。他设置属性vold.post_fs_data_done为0,然后设置vold.decrypt为trigger_post_fs_data。这会使init.rc来运行他的post-fs-data命令。他们会创建任何必要的目录或者是链接,然后设置vold.post_fs_data_done为1.一旦vold在那个属性中看到1,他便会设置属性 vold.decrypt 为trigger_restart_framework.这会使init.rc重新开始位于类main中的服务,并且从启动后第一次启动位于类late_start中的服务。

  • 开启全框架

    现在,框架就会使用解密/data文件系统启动他所有的服务,并且系统准备投入使用。

  • 失败

    一个解密失败的设备可能是下面几个原因。设备使用常规系列步骤开始启动:

    1. 检测带有密码的加密设备
    2. 挂载tmpfs
    3. 开启框架提示输入密码

    但是框架打开之后,设备可能会遇到一些错误:

    • 密码匹配但是不能解密数据
    • 用户输入错误密码30次

    如果这些错误没有解决,提示用户进行工厂清除:

    相关图片

    相关文章