Google 致力于为黑人社区推动种族平等。查看具体举措
Эта страница была переведа с помощью Cloud Translation API.
Switch to English

Enabling Adiantum

Adiantum - это метод шифрования, разработанный для устройств под управлением Android 9 и выше, в процессорах которых отсутствуют инструкции AES . Если вы отправляете устройство на базе ARM с расширениями криптографии ARMv8 или устройство на базе x86 с AES-NI, вам не следует использовать Adiantum. AES работает быстрее на этих платформах.

Для устройств, на которых отсутствуют эти инструкции ЦП AES, Adiantum обеспечивает шифрование на вашем устройстве с очень небольшими издержками производительности. Для сравнительных показателей см. Статью Adiantum . Чтобы использовать исходный код для тестирования на вашем оборудовании, см. Исходный код Adiantum на GitHub .

Чтобы включить Adiantum на устройстве под управлением Android 9 или выше, вам необходимо внести изменения в ядро ​​и пользовательское пространство.

Изменения ядра

Adiantum поддерживается общими ядрами Android версии 4.9 и выше.

Если ядро ​​вашего устройства еще не поддерживает Adiantum, выберите изменения, перечисленные ниже. Если у вас возникли проблемы с выбором вишни, устройства, использующие fscrypt: шифрование (FDE), могут исключить fscrypt: patch.

Версия ядра Патчи Crypto и 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

Если ваше устройство использует шифрование на основе файлов (FBE) и ядро ​​версии 5.1 или выше, добавьте также:

CONFIG_FS_ENCRYPTION=y

Если ваше устройство использует файловое шифрование (FBE) и ядро ​​версии 5.0 или ниже, также добавьте:

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 10 или выше изменения пользовательского пространства Adiantum уже присутствуют.

Для устройств под управлением Android 9 выделите следующие изменения:

Включите Adiantum на вашем устройстве

Устройства с файловым шифрованием

Чтобы включить шифрование файлов Adiantum во внутренней памяти вашего устройства, установите соответствующую опцию fileencryption для раздела userdata в fstab устройства:

fileencryption=adiantum

Затем, если ваше устройство поддерживает адаптируемое хранилище , также включите шифрование Adiantum в адаптируемом хранилище. Для этого установите в PRODUCT_PROPERTY_OVERRIDES следующие свойства:

Для Android 11 и выше:

ro.crypto.volume.options=adiantum
ro.crypto.volume.metadata.encryption=adiantum

Для Android 9 и 10:

ro.crypto.volume.contents_mode=adiantum
ro.crypto.volume.filenames_mode=adiantum
ro.crypto.fde_algorithm=adiantum
ro.crypto.fde_sector_size=4096

Чтобы убедиться, что ваша реализация работает, создайте отчет об ошибке или запустите:

adb root
adb shell dmesg

Если Adiantum включен правильно, вы должны увидеть это в журнале ядра:

fscrypt: Adiantum using implementation "adiantum(xchacha12-neon,aes-arm,nhpoly1305-neon)"

Начиная с Android 11, также можно использовать Adiantum для шифрования метаданных во внутренней памяти. Подробности см. В документации по шифрованию метаданных .

Устройства с полнодисковым шифрованием

Чтобы включить Adiantum и улучшить его производительность, установите эти свойства в PRODUCT_PROPERTY_OVERRIDES :

ro.crypto.fde_algorithm=adiantum
ro.crypto.fde_sector_size=4096

Установка fde_sector_size на 4096 улучшает производительность, но не требуется для работы Adiantum. Чтобы использовать этот параметр, раздел пользовательских данных должен начинаться со смещения на диске размером 4096 байт.

В fstab для набора пользовательских данных:

forceencrypt

Чтобы убедиться, что ваша реализация работает, создайте отчет об ошибке или запустите:

adb root
adb shell dmesg

Если Adiantum включен правильно, вы должны увидеть это в журнале ядра:

device-mapper: crypt: adiantum(xchacha12,aes) using implementation "adiantum(xchacha12-neon,aes-arm,nhpoly1305-neon)"