Jimmy Chen

A Programmer

(原创)高通MSM8909+Android 8.1.0 FDE全盘加密失败分析记录(二)启用ICE

  emmmmmmm……上一篇,我们尝试使用了软件加密方式来进行全盘加密。但是呢,软件加密正如其名是通过软件的方式进行加密操作,这样一来,在执行加密的时候就需要CPU的参与。如果需要加密的内容较多,那吃的CPU资源就多,同时消耗的电量也多,最坑爹的就是效率还不高。典型的吃得多做得少啊,有鉴于此,加入硬件加密还是很有必要的。

  上一篇也讲到,因为不确定8909上是否支持使用ICE进行加密,所以这一篇我是试着去配置的。发现可以使用,但是因为涉及到一些时序的问题,不能保证是完全正确的。下面就开始进行配置吧。

上一次讲到在load mapping table的时候出现失败,失败的原因是因为没有使用到硬件加密。这里开始我们尝试配置好硬件加密的内容。

首先将Boardconfig.mk中的TARGET_HW_DISK_ENCRYPTION改回true

《(原创)高通MSM8909+Android 8.1.0 FDE全盘加密失败分析记录(二)启用ICE》

看Makefile可以知道需要将CONFIG_DM_REQ_CRYPT配置为y才会将dm-req-crypt编译到内核中。我们在项目kernel的defconfig文件中添加如下一句

回到load_crypto_mapping_table中,继续往下分析,在设置启用了dm-req-crypt加密插件后,接下来有一个is_ice_enabled函数,我们看看这个函数做了什么东西

load_crypto_mapping_table —> is_ice_enable

可以看到如果是EMMC需要访问到/dev/icesdcc这个节点,所以需要看看icesdcc这个阶段是在哪里配置的,通过查找可以在kernel/msm-3.18/driver/crypto/msm/ice.c中找到定义

所以内核在配置icesdcc的时候是会查找设备树是否存在qcom,ice这个节点的。明显开始阶段8909是不存在这个节点的,那怎么办?折中的方法就是查看其它的设备树进行模仿配置,博主这里模仿使用的设备树是msm8917.dtsi

最后配置好的msm8909.dtsi设备树如下

emmmm…..,这样还没完,还要在头文件中添加clk的定义,kernel/msm-3.18/include/dt-binding/clock/msm-clocks-8909.h中添加如下内容

设备树改完,但是还差最后一步,我们看看kernel/msm-3.18/driver/crypto/msm下的Makefile文件

可以看到,还需要在kernel的defconfig文件中加上CONFIG_CRYPTO_DEV_QCOM_ICE=y的配置即可。

到这里就配置完成了,大家编译试一试吧。不过需要说明的是,在setting下执行加密后,手机会显示phone encrypted,但是我使用androbench2测试EMMC读写速度时发现启用ICE后测试出来的速度和没有启用FDE加密时相当。这就让我感觉ICE并没有启用成功,但是无论通过setting查看,还是adb shell getprop来查看都显示是encrypted了,这么说应该是启用成功了,不然我岂不是在无意中发现了一个BUG,emmmmmm…….,还有就是记得ICE的介绍有说,ICE不启用时就ICE是直接读写,启用的时候就进过ICE加解密再传送,也就是说都会经过ICE,那速度差不多好像也合理。具体是BUG还是ICE特性就是如此,请读者们自行斟酌啦,这里就当提供修改参考。

下面贴一下测试速度图:

不执行任何加密的测试结果

《(原创)高通MSM8909+Android 8.1.0 FDE全盘加密失败分析记录(二)启用ICE》
《(原创)高通MSM8909+Android 8.1.0 FDE全盘加密失败分析记录(二)启用ICE》

测试的时候,测试APK和mmcqd占用的CPU比较多。

启用软件加密的测试结果

《(原创)高通MSM8909+Android 8.1.0 FDE全盘加密失败分析记录(二)启用ICE》
《(原创)高通MSM8909+Android 8.1.0 FDE全盘加密失败分析记录(二)启用ICE》

软件加密的速度降得就有点夸张了,而且在测试的时候会启用4个kworker进行写入,CPU占用极高。

启用硬件加密的测试结果

《(原创)高通MSM8909+Android 8.1.0 FDE全盘加密失败分析记录(二)启用ICE》
《(原创)高通MSM8909+Android 8.1.0 FDE全盘加密失败分析记录(二)启用ICE》

硬件加密速度和不加密基本类似,CPU占用也差不多。

最后,以上内容仅供参考,下次有时间再在Pixel上试一试。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注