系统和用户数据在文件系统中都是以明文进行保存的。这也为系统带来了不安全因素,例如,黑客在获取到设备后,由于文件系统没有密码保护,只要能设法挂载文件系统,就可以绕过用户权限等控制,获取其中存储的数据。Android系统中的文件加密功能通过Linux内核中的dm-crypt模块实现。加密采用了128位的AES算法,CBC模式,初始化向量使用ESSIV:SHA256.为防止未经授权而访问用户数据,加密采用的密钥同样经过了重重保护。系统将用户输入的密码与一个随机种子结合,然后使用标准的PBKDF2算法使用SHA1重复地进行哈希计算,最后才会作为解密文件系统的密钥对文件系统进行解密。 文件系统加密只支持用户输入密码的方式进行加密,并不支持图形方式的锁屏密码输入方式。

由于android的文件系统加密依赖的内核模块dm-crypt只能在块设备层起作用,因此这种加密方式无法应用在YAFFS文件系统中。这是因为YAFFS文件系统直接在NAND Flash芯片的裸设备上进行各种操作。但是EMMC或类似的存储芯片是作为块设备挂载在内核中的,因此是可以使用加密功能的。dm-crypt的代码位于内核的driver/md/dm-crypt.c中。

为了实现挂载加密文件系统的工作,系统将所有服务分配到了三个不同组中:核心(core),主要(main),后启动(late_start)。对这三个服务组的控制,实现了对/daa分区进行加密的主要流程:

1)关闭主要和后启动服务组,卸载/data分区。

2)将/data分区挂载到临时文件系统(tmpfs),然后启动主要服务和临时框架。

3)对文件系统进行加密操作

4)停止主要服务和临时框架,卸载/data,然后挂载解密后的/data分区

5)停止主要服务和后启动服务。

在块存储设备上启用加密文件系统

1)   为确保加密过程可以顺利完成,系统首先会检查电池的电量是否充足以及是否连接了外部电源。这是因为如果在加密过程中系统因为电量不足而关机,文件系统的文件会因为只有部分进行了加密而导致数据不可用,只有回复出场设置才能使设备回复正常,所有的数据都会丢失。在确保电力充足后,界面向vold发送“cryptfs enablecrypto inplace”命令启动加密流程,加密使用的密码为用户锁屏密码

2)   vold进行错误检查,如果无法进行加密的会返回状态代码“-1”,并且在日志中输入错误原因。如果可以进行加密操作,程序会将vold.decrypt属性设置为“trigger_shutdown_framework”。这会导致init.rc停止所有的后启动服务和主要服务。然后vold卸载/mnt/sdcard和/data。

3)   如果使用inplace模式加密,vold会将/data挂载到临时文件系统上(使用ro.crypto.tmpfs_options中的选项),并且将vold.encrypt_progress属性设置为“0”。之后vold会对新的/data分区进行准备,然后将vold.decrypt属性设置为“trigger_restart_min_framework”。这会是init.rc启动所有主要服务。这时框架会看到vold.encypt_process的值为0,并且显示一个进度条来提示加密过程。界面每5秒中查询一下这个属性,并且会更新进度条。

4)   之后vold会将真正的块设备通过加密映射到一个虚拟的加密块设备上。这个新的块设备对所有写入的数据进行加密,对所有读取的数据进行解密。然后vold将相关的加密信息写入分区尾部。

5)   如果使用wipe方式进行加密,vold对加密块设备使用make_ext4fs命令来格式化文件系统,并且保证新的文件系统不会包含分区的最后16K字节。如果以inplace方式加密,vold从原始的设备中读出每个扇区的数据,然后写入加密设备。

6)   当加密完成时,vold清除ENCRYPTION_IN_PROGRESS标识,然后重新启动系统,如果重启失败,程序将vold.encrypt_progress设置为“error_not_failed”。这时界面会弹出提示,要求用户手动重新启动系统。

7)   如果vold在加密过程中出现了错误且还没有数据被破坏(例如加密还没有开始),vold会将vold.encrypt_progress属性设置为“error_not_encrypted”,并且以界面显示提示用户加密流程没有开始并给出用户重启系统的选项。如果错误发生在框架停止且进度条出现之前,vold会立即重新启动系统。如果重启也失败了,程序会将vold.encrypt_progress设置为“error_shutting_down”并且返回-1。如果在进行加密操作时遇到了错误,vold.encrypt_progress设置为“error_partially_encrypted”并返回-1。这时界面会提示用户加密失败并向用户提供恢复出厂设置的选项按钮。

Android加密文件系统相关推荐

  1. android 加密指定文件系统,基于android系统的加密文件系统设计

    android开放性,使其快速发展.并给人们带来便利,但也给个人信息安全带来风险, 个人私密文件面临着被窥视与窃取的风险,哈哈,特别是官员和明星尤其担心!还有商务人士. 网络爆光最多的私密文件:通讯信 ...

  2. Android加密之全盘加密详解

    前言 Android 的安全性问题一直备受关注,Google 在 Android 系统的安全方面也是一直没有停止过更新,努力做到更加安全的手机移动操作系统. 在 Android 的安全性方面,有很多模 ...

  3. Android加密之全盘加密(FDE)

    全盘加密 注意:搭载 Android 7.0 - 9 的设备支持全盘加密.搭载 Android 10 及更高版本的新设备必须使用文件级加密. 全盘加密是使用密钥(密钥本身也经过加密)对 Android ...

  4. Android-APP 安全(五)之android取证-文件系统与数据结构

    以下对Android 取证技术的讲解,整理思路取材大多来源于网络以及<Android 取证实战>一书. Android取证:文件系统与数据结构 上一篇文章已简单介绍了Andorid关于存储 ...

  5. Android加密手机

    CSDN地址: http://blog.csdn.net/magod/article/details/7928090 原文地址:http://source.android.com/tech/encry ...

  6. EFS 加密文件系统

    BitLocker: * 加密整个卷(如:操作系统卷). * 不需要用户证书. * 能够防止操作系统被恶意篡改. * BitLocker针对离线***而设计,主要用于加密操作系统所在的卷,以保护重要的 ...

  7. linux文件系统启动流程,linux 内核启动过程以及挂载android 根文件系统的过程

    转载 作者:汕头大学-黄珠唐 时间:2009 年10 月29 日 主要介绍linux 内核启动过程以及挂载android 根文件系统的过程,以及介绍android 源代码中文件系统部分的浅析. 主要源 ...

  8. Android NFS文件系统挂载遇到的问题解决方法

    在网上他人博客中方法都大同小异,但是却无法解决我遇到的问题. 我随意挑选一个网友的方法http://blog.csdn.net/zjg555543/article/details/7792984 当然 ...

  9. 如何在 Windows Server 2003、Windows 2000 和 Windows XP 中备份恢复代理的加密文件系统 (EFS) 私钥...

    本 文介绍了如何在运行 Microsoft Windows Server 2003.Microsoft Windows 2000 或 Microsoft Windows XP 的计算机上备份恢复代理加 ...

最新文章

  1. Spring MVC+Spring+Mybatis实现支付宝支付功能(图文详解+完整代码)
  2. 【C】浅谈strcpy
  3. 编程爱好者学vb还是python-高手,这是高手!推荐几个我常看的顶级技术类公众号...
  4. js两个数组对象通过相同元素匹配筛选
  5. 细讲 | Attention Is All You Need
  6. SCVMM 2012 R2运维管理九之:添加非信任的Hyper-v主机和群集
  7. clear ,refresh,free
  8. 美图拟收购乐游科技附属公司约30%股份 后者为Warframe开发商
  9. Spring Aop中@Pointcut用法
  10. GBS服装分床裁剪计划软件V4.0正式发布
  11. 如何在教学中利用计算机网络,教师论苑(二十二)| 利用XMind思维导图优化计算机网络基础课堂教学...
  12. java word转pdf dox4j,使用 docx4j 将 Web 页面转换为 DOCX 与 PDF 格式
  13. LoadRunner教程(2)-LoadRunner性能测试利器
  14. OPEN-WRT老毛子固件的无线中继设置建议
  15. Unity3D连接本地或局域网MySQL数据库
  16. 全面的IE兼容性调试问题
  17. Linux select函数的使用
  18. 传奇玩家申请怪物攻城脚本
  19. 所谓带芯片的TYPEC头解剖
  20. 快速通过论文相似度检测

热门文章

  1. 《A Single Camera Eye-Gaze Tracking System with Free Head Motion》论文阅读
  2. numpy数据升维与降维
  3. Excel处理 中文转拼音缩写
  4. 100天带你系统入门VR/AR游戏开发,成为5G时代的“头号玩家”
  5. php 验证手机号码格式
  6. 8×8二维载荷谱编制
  7. Gamma Correction sRGB texture
  8. 从钉钉后台API获取企业通讯录以后,获取每个人的钉钉运动步数
  9. python对钉钉考勤旷工的数据填入excel
  10. iGuard6.0 — 有序组织的网页防篡改