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广播会被发送
本文详细介绍了移动设备上的数据加密方法,包括全盘加密和文件级别加密,对比了它们的性能差异,并阐述了不同文件系统如ext4和f2fs在加密中的作用。此外,还解释了DE、CE和NE等加密类型的区别,以及它们在系统、媒体和应用存储空间中的应用。
8万+

被折叠的 条评论
为什么被折叠?



