Android Lollipop 上的“加密和擦除”程序?

信息安全 加密 安卓 删除
2021-08-23 00:02:48

我知道很多人都在提倡销售二手安卓手机的“加密和擦除”程序。但根据 AOSP 网站,在 Android 5.x Lollipop 中:

创建快速加密,仅加密数据分区上已使用的块,以避免首次启动需要很长时间。

更具体地说,当 Lollipop 加密以前未加密的设备时:

为了启用就地加密,vold 启动一个循环来读取实际块设备的每个扇区,然后将其写入加密块设备。vold 在读取和写入之前检查扇区是否正在使用,这使得在几乎没有数据的新设备上加密速度更快。

换句话说,谷歌做出了一个令人不安的选择,即只加密存储中标记为“已使用”的任何空间,而不是任何可用空间,这很可能包括在加密之前删除的未加密信息。除非我弄错了,否则这是一个巨大的安全风险,使“加密和擦除”过程只不过是一种无用的安慰剂,并使物理破坏成为合理保护未加密 Android Lollipop 设备的唯一方法。

这种对棒棒糖加密系统的评估准确吗?

是否存在强制 Lollipop 使用全盘加密而不是“快速加密”废话的方法?

2个回答

你犯了一个常见的错误,就是问了一个错误的问题:“这个系统安全吗?” 而不是“这个系统在这种情况下安全吗?”。

谷歌选择不加密未使用的空间在用户决定加密他们的数据并且他们所有当前和未来的数据都被加密的典型使用场景中非常有意义。在这种情况下,不加密未使用空间的选择只会产生最小的安全影响:在年轻的设备上,它会显示已使用了多少空间。最终,随着块的分配和释放,所有块最终都将被加密,从而无法分辨哪些块当前正在使用,哪些块只是以前在使用。

此过程不会对存储在设备上但不再可访问的数据进行加密。这是一个合理的设计,因为这是一种加密功能,而不是擦除功能。

您仍然可以通过首先打开加密,然后用数据(任何数据)填充分区来利用加密功能进行擦除功能。例如,如果您具有 root shell 访问权限,则cat /dev/zero >/data/zero && cat /dev/zero >/cache/zero && rm /data/zero /cache/zero打开加密后将擦除包含/data和的分区上的可用空间/cache请咨询您最喜欢的 Android 专家,了解如何在没有 root 访问权限的情况下完成此操作。

请注意,即使在棒棒糖之前,将您描述的过程称为“加密和擦除”也是用词不当。如果有真正的擦除,加密就没有用了,无论如何数据都会消失。它实际上是“加密和重置”,其中重置使数据无法通过正常方式访问,但不会被擦除。

Android 的就地加密对新文件和现有文件都非常有效,但必须牢记它不会擦除可用空间这一事实。请注意,即使它如您所说的那样进行了“全盘”加密,它将整个分区声明为“加密”,也无济于事,因为它也不会覆盖所有块。

我见过的大多数指南都包括附加步骤 3.“再次设置加密,然后填充大数据直到达到限制”和 4.“再次擦除”,到 1.加密,2.擦除。第三步将填充和覆盖/data分区的空闲存储。

即使这两个步骤也不会覆盖所有内容,因为某些数据仍然可以保留在保留空间中,tune2fs -l报告为“保留块计数”,但是对于 android 设备,这个值通常设置为 0(至少我的报告是这样的),以及为文件系统保留的其他区域。真正确定所有数据都被删除的唯一方法是卸载 /data 分区(例如,当设备处于恢复模式时),并擦除整个设备文件,然后创建一个新的 ext4 文件系统,如果它打算卖。

另外,请注意 1. 加密步骤是不必要的,您可以直接重新格式化驱动器,加密,填充和擦除。