Adiantum 是一种加密方法,专为搭载 Android 9 或更高版本且 CPU 缺少 AES 指令的设备而设计。如果您要寄送启用 ARMv8 加密扩展程序的基于 ARM 的设备或启用 AES-NI 的 x86 设备,则不得使用 Adiantum。AES 在这些平台上的运行速度更快。
对于缺少这些 AES CPU 指令的设备,Adiantum 在您的设备上提供了加密功能,且性能开销非常少。要查看基准数据,请参阅 Adiantum 论文。要查看在您的硬件上运行的基准源代码,请参阅 GitHub 上的 Adiantum 源代码。
要在搭载 Android 9 或更高版本的设备上启用 Adiantum,您需要更改内核和用户空间。
内核变更
择优挑选对内核进行的 Adiantum 更改并应用其他 dm-crypt 补丁程序。如果您在择优挑选时遇到了问题,使用全盘加密 (FDE) 的设备可以排除“fscrypt:”补丁程序。
| 内核版本 | 内核变更 | dm-crypt 补丁程序 |
|---|---|---|
| 4.19 | 4.19 内核 | dm-crypt 补丁程序
|
| 4.14 | 4.14 内核 | dm-crypt 补丁程序
|
| 4.9 | 4.9 内核 | dm-crypt 补丁程序
|
在内核中启用 Adiantum
在集成内核更改后,通过添加以下行来更改内核配置:
CONFIG_CRYPTO_ADIANTUM=y CONFIG_DM_CRYPT=y
如果您的设备使用 4.4 内核,还要添加:
CONFIG_CRYPTO_SEQIV=y
如果您的设备使用文件级加密 (FBE),还要添加:
CONFIG_F2FS_FS_ENCRYPTION=y
要确保在 32 位 ARM 内核上实现良好的性能,请为该内核启用 NEON 指令:
CONFIG_CRYPTO_AES_ARM=y CONFIG_CRYPTO_CHACHA20_NEON=y CONFIG_CRYPTO_NHPOLY1305_NEON=y CONFIG_KERNEL_MODE_NEON=y
用户空间更改
对于搭载 Android 9 的设备,请在 AOSP 中 pie-platform-release 分支上的 userspace_adiantum_support_pie 主题中择优挑选 Adiantum 用户空间更改。
AOSP 的 master 分支中也包含这些更改。
在您的设备中启用 Adiantum
这些设置适用于设备上的 userdata,也适用于可合并的存储设备。
支持文件级加密的设备
要启用 Adiantum 并提高其性能,请在 PRODUCT_PROPERTY_OVERRIDES 中设置以下属性:
ro.crypto.fde_algorithm=adiantum ro.crypto.fde_sector_size=4096 ro.crypto.volume.contents_mode=adiantum ro.crypto.volume.filenames_mode=adiantum
将 fde_sector_size 设为 4096 可以提高性能,但 Adiantum 无需此设置也可正常运行。
在 fstab 中,对 userdata 使用以下选项:
fileencryption=adiantum
要验证您的实现是否有效,请生成错误报告或运行:
adb rootadb shell dmesg
如果正确启用了 Adiantum,您应该会在内核日志中看到以下内容:
fscrypt: Adiantum using implementation "adiantum(xchacha12-neon,aes-arm,nhpoly1305-neon)"
支持全盘加密的设备
要启用 Adiantum 并提高其性能,请在 PRODUCT_PROPERTY_OVERRIDES 中设置以下属性:
ro.crypto.fde_algorithm=adiantum ro.crypto.fde_sector_size=4096
将 fde_sector_size 设为 4096 可以提高性能,但 Adiantum 无需此设置也可正常运行。要使用此设置,userdata 分区必须以磁盘上 4096 字节对齐的偏移量开始。
在 fstab 中,对 userdata 设置以下选项:
forceencrypt
要验证您的实现是否有效,请生成错误报告或运行:
adb rootadb shell dmesg
如果正确启用了 Adiantum,您应该会在内核日志中看到以下内容:
device-mapper: crypt: adiantum(xchacha12,aes) using implementation "adiantum(xchacha12-neon,aes-arm,nhpoly1305-neon)"