全盘数据加密功能在 Android 3.0 时代就出现了,不过谷歌直到 2014 年的的 Nexus 6 才将这个功能进行默认开启,其最大原因就在于该功能对手机内存读写性能的影响,至于性能的影响有多大,请看我们的测试。
?
在之前的针对运行 Android 5.0 的设备的评测之中, 我们常规的 eMMC 读写测试得出了异常的结果,拿运行 Android 5.0 开发者预览版的 Nexus 5 来说,使用 Androbench 进行内存读写速度的测试之后,Android 5.0 之下结果相较于 Android 4.4 之下的结果有了 2~10 倍的提升,这一点在深入探究之后,我们发现造成这一问题的主要原因是我们用于测试的软件 Androbench 在计算结果的时候是以来 Android 系统内部的一个时间算法的,而这个算法在 4.4 上和 5.0 上不相同。
因此我们换用了另一款软件 AndEBench 进行测试,该软件功能和 Androbench 类似,不过这款软件本身使用了低层级的操作指令,所以 Android 从 4.4 升级到 5.0 对该款软件的结果没有影响。
此外,我们在进行 Nexus 6 的评测时发现,原生搭载 Android 5.0 的 Nexus 6 在出厂状态下就默认启用了 Android 的全盘加密功能(Full Disk Encryption,下文简称 FDE),该功能最早于 Android 3.0 系统上出现,但是谷歌直到 5.0 系统才将该功能进行默认开启。FDE 开启时,所有写入内存的数据将在写入之前进行加密,从内存读取已经加密的数据之后进行处理之前,也必须进行解密。解密的钥匙自然就是用户设定的锁屏密码了,也就是说任何人在拿到手机之后都无法在没有密码的情况下读取手机之中的数据。
但是,Android 手机上这个 FDE 和 SSD 上的又不太一样,SSD 上的 FDE 功能常常是具有原生硬件支持的,而手机上用的 eMMC 芯片则在设计之初没有加入这个模块,大部分的 SoC 也不具有硬件层面上对 FDE 的支持。若是在设计 SoC 之初就加入硬件模块的支持,FDE 对于性能的影响是微乎其微的,甚至可以忽略不计。
所以这一切都解释的通了,在默认开启 FDE 的 Nexus 6 上我们发现了非常明显的读写性能下降,在刷入摩托罗拉发布的不默认开启 FDE 的固件之后,我们对二者的测试结果进行了对比,在对比之中,我们也加入了 Nexus 5。
?
图表之中,Nexus 5(Lollipop)的数据是在升级 5.0 之后使用 AndEBench 进行测试得出的,Nexus 5 则是在 4.4 下的成绩,并且需要说明的是,Nexus 5 在经由 OTA 或者是刷入镜像包升级到 5.0 系统之后是不会自动开启 FDE 功能的。
? 从上面的测试结果不难看出,使用软件实现的 FDE 会导致严重的读写性能下降:随机读取性能下降 62.9%,随机写入性能下降 50.5%,而序列读取性能更是下降了惊人的 80.7%,只要用户让手机进行需要对内存进行读写的操作,FDE 对于性能的影响就是可见的,再者来说,谷歌默认开启 FDE 功能也许对于提高用户实际使用的安全性并没有太大帮助——毕竟在安全性这方面用户的使用习惯还是很重要的,再说 Nexus 6 上对加密的数据也仅仅是通过密码或者手势来保护,要是不设定密码解锁,那么 FDE 在安全上就是个个摆设,除了影响性能之外别无任何用处。
在评测 Nexus 6 的时候,我也发现 Nexus 6 在某些时候会有性能短板问题,而这一问题在运行 Android 5.0 的 Nexus 5 上并不存在,最初我们认为这可能是 FDE 所致,但是在刷入关闭 FDE 的固件之后,对于性能的提升却并不明显,至少不如上面测试的那么明显,在 Messenger 和日历 APP 之中依旧有着明显的吊针问题,于是这一问题暂时还是只能归咎于 Nexus 6 所使用的 GPU 或者是处理器的带宽不足以应付 2K 屏幕。
对我来说,谷歌在 Nexus 6 上强制开启 FDE 或许是在目前这个大环境下是情有可原的,增强手机数据的安全性当然是必要的,但是目前这种简单粗暴的解决办法要以牺牲性能为代价,我认为不太可取。在未来,我还是希望谷歌取消 FDE 默认开启的设定,或者是采取其他措施,以尽量减小 FDE 对于性能的影响。
Via Anandtech
推荐经销商