1.全盘加密
    数据在空闲的时候进行加密
    每个设备只有一个用户可以被全盘加密进行保护
    那个用户在做任何工作前必须登录
    
2.文件级别加密
    使用ext4文件系统
    使用AES-256方式对文件内容进行加密
    文件名也需要进行加密
    
文件级别加密的性能要稍微好于全盘加密
f2fs文件系统用于支持nand flash

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

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

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

用户数据布局的变更:
    APPS:   1.默认的app的存储必须使用ce key来保证数据安全
            2.一个app可以存取一个DE存储空间
    
    MEDIA:  内部的共享存储必须是使用CE进行加密的
    
    SYSTEM: 1.默认的系统存储空间必须是使用DEsys进行加密的,以使数据迁移变得简单
        2.系统可以访问多个CE和DE存储空间,以便更好地保护数据

存储空间和key的对应关系

system存储空间  SYSTEM
DEsys   /data/system/
        /data/misc

CE0-n   /data/system_ce/{0-n}
    /data/misc_ce/{0-n}        
        
DE0-n   /data/system_de/{0-n}
    /data/misc_de/{0-n}

media存储空间   MEDIA
CE0-n   /data/media/{0-n}

应用存储空间   APP
CE0-n   /data/user/{0-n}
DE0-n   /data/user_de/{0-n}

如何判断数据应该属于CE还是DE
    DE:
    WIFI认证,蓝牙匹配码
    闹钟数据
    壁纸,铃声

CE:
    通讯录
    账户授权密码
    历史浏览信息,地址信息
    最近任务,截屏

获取系统存储空间的CE,DE目录的API
    Environment.getUserSystemDirectory    DEsys
    Environment.getUserSystemEncryptedDirectory    DE0-n
    Environment.getUserSystemCredentialEncryptedDirectory     CE0-N
    Environment.getMiscNotEncryptedDirectory

获取应用存储空间的CE,DE目录的API
    应用中的上下文(Context)默认指向CE目录,如果需要访问DE目录,需要使用Context.createDeviceEncryptedStorageContext函数创建指向DE目录的上下文
    
用户的状态和key的获取
    running locked: DEsys和DEn
    running unlocked: DEsys,DEn,CEn

加密敏感APP
    应用的组件可以申明encryptionAware=true,以在没有拿到CE的key的时候也可以运行
    package会根据用户的状态对组件的查询进行过滤

判断用户状态的API
    当用户进入locked state状态的时候,会发送LOCKED_BOOT_COMPLETED
    当用户进入unlocked state状态的时候,BOOT_COMPLETED,USER_UNLOCKED广播会被发送

Android CE DE加密小结相关推荐

  1. 【译】Android中的安全数据— Android中的加密(第2部分)

    目录 锁屏 选择一个钥匙 密钥存储 密钥生成 密钥管理 加密与解密 使用范例 下一步是什么 安全提示 锁屏 如果要保护数据,请保护设备. 为了更加安全,在提供对任何应用程序功能的访问权限之前,我们可以 ...

  2. Android之设备加密

    相关推荐:Android EventBus源码解析 带你深入理解EventBus 转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/4 ...

  3. 深入理解Android之设备加密Device Encryption

    深入理解Android之设备加密Device Encryption Android从4.4开始就支持一项功能,那就是对设备进行加密.加密自然是为了安全性考虑,由于/system目录是只读的,手机里那些 ...

  4. 【数据安全】3. Android 文件级加密(File-based Encryption)技术介绍

    1. 概览  1.1 设计概览 采用文件级加密时: 可以使用不同的密钥对不同的文件进行加密,也可以对加密文件单独解密 可以有的放矢,没有安全要求的文件可以不加密 支持多用户,不同用户使用不同的密钥 基 ...

  5. Android 即时通讯开发小结(二)

    <Android 即时通讯开发小结>基于IM Andriod 开发的各种常见问题,结合网易云信即时通讯技术的实践,对 IM 开发做一个全面的总结. 相关推荐阅读:. Android即时通讯 ...

  6. 利用SQLChiper对Android SQLite数据库加密

    利用SQLChiper对Android SQLite数据库加密 前言: 上篇文章讲了Android studio+SQLCipher加密SQLite数据库的几个坑,跳过这几个坑,那么SQLCipher ...

  7. Android APK程序加密,防止被别人反编译

    作为Android应用开发者,不得不面对一个尴尬的局面,就是自己辛辛苦苦开发的应用可以被别人很轻易的就反编译出来. Google似乎也发现了这个问题,从SDK2.3开始我们可以看到在android-s ...

  8. Android 即时通讯开发小结(一)

    本文将基于 IM Andriod 开发的各种常见问题,结合网易云信即时通讯技术的实践,对 IM 开发做一个全面的总结. 客户端架构 作为一个 IM 软件,最重要的一个特性就是保证消息的达到率和实时性. ...

  9. android视频播放异常,Android 播放视频常见问题小结

    在android 开发中常见到视频播放的问题,在常规的视频中 有直接用videoView + MediaController 或者 mediaController + serfercie holder ...

最新文章

  1. php析构函数的用法
  2. DPDK — PMD,DPDK 的核心优化
  3. plsqldev远程连接mysql_PLSQL Developer连接远程Oracle数据库
  4. bzoj3589 动态树 求链并 容斥
  5. pointnet分割自己的点云数据_细嚼慢咽读论文:PointNet论文及代码详细解析
  6. 云计算概况及第一个Azure程序
  7. jmeter jdbc mysql_jmeter获取JDBC响应做接口关联(三)
  8. 函数节流-避免重复提交
  9. 超级外链SEO工具源码 可发9600条优质外链
  10. 空气阻力对乒乓球运动轨迹的影响
  11. 使用 prometheus 监控 MySQL
  12. NXP JN5169 使用红外发送 / 接收
  13. 从异常堆栈中还原 ProGuard 混淆过的代码
  14. 2021-10-18 WPF调用dll出现异常
  15. 腾讯代码安全指南开源,涉及 C/C++、Go 等六门编程语言
  16. 在 ASP.NET Core 使用 IOptions pattern
  17. 使用数据流引擎进行大型矩阵操作
  18. 5 款非常好用的 Docker 工具
  19. 超市积分管理系统(Java+Web+MySQL)
  20. 【工具】1640- 这 5 款 AI 绘图工具,让你的绘图更高效!

热门文章

  1. Oracle ERP财务系统——固定资产
  2. 经济学基础(本)【3】
  3. 在Ubuntu16.04上安装Aegisub
  4. 通过wlanapi连接无线网络
  5. 2.1.5 校验码(一文带你分析搞懂:奇偶校验码、海明码、CRC码)
  6. 【Spark分布式内存计算框架——Structured Streaming】2. Structured Streaming 核心设计与编程模型
  7. Linux 内核clk 添加clk provider
  8. 编程,绘图,设置坐标轴,做出自己的坐标轴
  9. uiautomator2 库中文手册
  10. 从0学习C语言(第3天)---- C语言初探、把C玩弄于股掌之中的思维(思维无限扩展法)