Android Crypt - xapool/xapool.github.io GitHub Wiki

目录

Android 加密

  • FDE,会严重拖慢系统的读写性能,大多数机型上所配备的 eMMC 闪存并没有自带的加密标准,而且手机上的 SoC 也没有专门的模块用来处理数据的加密/解密功能。比较稳妥可行的解决方案包括采用更快的闪存芯片,更快的文件系统如 F2FS,优化 SoC 的数据加密和解密性能。单纯启用FDE全盘加密其实并不足够,还需其它加密相配合,例如解锁密码、数据读取密码等。若使用了密码,又会导致手机在重启后, 之前用户设置的所有提醒,如闹钟都会因为手机并未解锁, 而没法工作。

L 时,说是强制开启,后又因为性能问题,取消掉了,厂商可选择开启。Android M 中,CDD 强制默认开启 FDE。N 开始使用 FBE。

  • FBE,谷歌采用了 ext4 encryption,说性能达到了 FDE 的性能。并且避免了上面提到的缺点。所以也不支持 F2FS。

参见官方文档 Android 安全之加密

加密方式

  • dm-crypt,FDE 使用的正是这个,是对块设备加密,是内核态
  • ext4 encryption,FBE 采用的是这个,也是内核态。之所以使用这个,是因为谷歌说 eCryptfs 不符合性能需求
  • eCryptfs,是对文件和文件夹加密,是内核态
  • 一般来说,对文件和文件夹加密,用户态的加密方式就可以,如 EncFS、TrueCrypt。对块设备加密,因为要涉及到 DM,所以要是内核态的,如使用 dm-crypt 的 LUKS

其它方式

这个 github 中有论文,有代码。详细的描述了如何集成 eCryptfs,并在系统锁屏的时候清除 key,杀死某个应用,让其数据处于加密状态,在解锁的时候,在解密这个应用的数据。相比 FBE 的只在首次开机解锁的时候数据才是加密的。

ANDROID PRIVACY THROUGH ENCRYPTION

这个也是集成 eCryptfs,但是没有上面提到的功能。

Ecryptfs-Tools-for-Android

参考

中文讲解

⚠️ **GitHub.com Fallback** ⚠️