Adiantum é um método de criptografia projetado para dispositivos com Android 9 e superior cujas CPUs não possuem instruções AES . Se você estiver enviando um dispositivo baseado em ARM com extensões de criptografia ARMv8 ou um dispositivo baseado em x86 com AES-NI, não deverá usar o Adiantum. AES é mais rápido nessas plataformas.
Para dispositivos que não possuem essas instruções de CPU AES, o Adiantum fornece criptografia em seu dispositivo com muito pouca sobrecarga de desempenho. Para números de benchmarking, consulte o artigo da Adiantum . Para que a fonte de benchmarking seja executada em seu hardware, consulte a fonte Adiantum no GitHub .
Para ativar o Adiantum em um dispositivo com Android 9 ou superior, você precisa fazer alterações no kernel e no espaço do usuário.
Mudanças no kernel
Adiantum é compatível com os kernels comuns do Android, versão 4.9 e superior.
Se o kernel do seu dispositivo ainda não tiver suporte para Adiantum, escolha as alterações listadas abaixo. Se você estiver tendo problemas para escolher, os dispositivos que usam criptografia de disco completo (FDE) podem excluir o patch fscrypt:
Versão do kernel | Patches de criptografia e fscrypt | patch dm-crypt |
---|---|---|
4.19 | núcleo 4.19 | patch dm-crypt |
4.14 | núcleo 4.14 | patch dm-crypt |
4.9 | núcleo 4.9 | patch dm-crypt |
Habilite Adiantum em seu kernel
Android 11 e superior
Se o seu dispositivo estiver iniciando com Android 11 ou superior, habilite as seguintes configurações na configuração do kernel do seu dispositivo:
CONFIG_CRYPTO_ADIANTUM=y CONFIG_FS_ENCRYPTION=y CONFIG_BLK_INLINE_ENCRYPTION=y CONFIG_BLK_INLINE_ENCRYPTION_FALLBACK=y CONFIG_FS_ENCRYPTION_INLINE_CRYPT=y CONFIG_DM_DEFAULT_KEY=y
Se o seu dispositivo estiver executando um kernel ARM de 32 bits, ative também as instruções NEON para melhorar o desempenho:
CONFIG_KERNEL_MODE_NEON=y CONFIG_CRYPTO_AES_ARM=y CONFIG_CRYPTO_CHACHA20_NEON=y CONFIG_CRYPTO_NHPOLY1305_NEON=y
Android 9 e 10
Se o seu dispositivo estiver iniciando com Android 9 ou 10, serão necessárias configurações de kernel ligeiramente diferentes. Ative as seguintes configurações:
CONFIG_CRYPTO_ADIANTUM=y CONFIG_DM_CRYPT=y
Se o seu dispositivo usar criptografia baseada em arquivo, habilite também:
CONFIG_F2FS_FS_ENCRYPTION=y
Finalmente, se o seu dispositivo executa um kernel ARM de 32 bits, habilite as instruções NEON para melhorar o desempenho:
CONFIG_KERNEL_MODE_NEON=y CONFIG_CRYPTO_AES_ARM=y CONFIG_CRYPTO_CHACHA20_NEON=y CONFIG_CRYPTO_NHPOLY1305_NEON=y
Mudanças no espaço do usuário
Para dispositivos com Android 10 ou superior, as alterações no espaço de usuário do Adiantum já estão presentes.
Para dispositivos com Android 9, escolha as seguintes alterações:
- cryptfs: Adicionar suporte Adiantum
- cryptfs: Permitir definir o tamanho do setor dm-crypt
- cryptfs: arredondar o tamanho do dispositivo dm-crypt para o limite do setor criptográfico
- cryptfs: melhora o registro de criação de dispositivos dm-crypt
- libfscrypt: Adicionar suporte Adiantum
- fs_mgr_fstab: Adicionar suporte Adiantum
Habilite Adiantum em seu dispositivo
Primeiro, certifique-se de que PRODUCT_SHIPPING_API_LEVEL
do seu dispositivo esteja configurado corretamente para corresponder à versão do Android com a qual está sendo lançado. Por exemplo, um dispositivo lançado com Android 11 deve ter PRODUCT_SHIPPING_API_LEVEL := 30
. Isso é importante porque algumas configurações de criptografia têm padrões diferentes em diferentes versões de inicialização.
Dispositivos com criptografia baseada em arquivos
Para ativar a criptografia baseada em arquivo Adiantum no armazenamento interno do seu dispositivo, adicione a seguinte opção à última coluna (a coluna fs_mgr_flags ) da linha da partição userdata
no arquivo fstab
do dispositivo:
fileencryption=adiantum
Se o seu dispositivo for lançado com Android 11 ou superior, também será necessário ativar a criptografia de metadados . Para usar o Adiantum para criptografia de metadados no armazenamento interno, o fs_mgr_flags para userdata
também deve conter as seguintes opções:
metadata_encryption=adiantum,keydirectory=/metadata/vold/metadata_encryption
Em seguida, habilite a criptografia Adiantum no armazenamento adotável . Para fazer isso, defina as seguintes propriedades do sistema em PRODUCT_PROPERTY_OVERRIDES
:
Para Android 11 e superior:
ro.crypto.volume.options=adiantum ro.crypto.volume.metadata.encryption=adiantum
Para Android 9 e 10:
ro.crypto.volume.contents_mode=adiantum ro.crypto.volume.filenames_mode=adiantum ro.crypto.fde_algorithm=adiantum ro.crypto.fde_sector_size=4096
Finalmente, adicione opcionalmente blk-crypto-fallback.num_keyslots=1
à linha de comando do kernel. Isto reduzirá ligeiramente o uso de memória quando a criptografia de metadados Adiantum for usada. Antes de fazer isso, verifique se a opção de montagem inlinecrypt
não está especificada no fstab
. Se for especificado, remova-o, pois não é necessário para criptografia Adiantum e causa problemas de desempenho quando usado em combinação com blk-crypto-fallback.num_keyslots=1
.
Para verificar se sua implementação funcionou, faça um relatório de bug ou execute:
adb root
adb shell dmesg
Se o Adiantum estiver habilitado corretamente, você deverá ver isto no log do kernel:
fscrypt: Adiantum using implementation "adiantum(xchacha12-neon,aes-arm,nhpoly1305-neon)"
Se você habilitou a criptografia de metadados, execute também o seguinte para verificar se a criptografia de metadados Adiantum está habilitada corretamente:
adb root
adb shell dmctl table userdata
O terceiro campo da saída deve ser xchacha12,aes-adiantum-plain64
.
Dispositivos com criptografia de disco completo
Para ativar o Adiantum e melhorar seu desempenho, defina estas propriedades em PRODUCT_PROPERTY_OVERRIDES
:
ro.crypto.fde_algorithm=adiantum ro.crypto.fde_sector_size=4096
Definir fde_sector_size
como 4096 melhora o desempenho, mas não é necessário para que o Adiantum funcione. Para usar essa configuração, a partição userdata deve começar em um deslocamento alinhado de 4.096 bytes no disco.
No fstab
, para o conjunto userdata:
forceencrypt=footer
Para verificar se sua implementação funcionou, faça um relatório de bug ou execute:
adb root
adb shell dmesg
Se o Adiantum estiver habilitado corretamente, você deverá ver isto no log do kernel:
device-mapper: crypt: adiantum(xchacha12,aes) using implementation "adiantum(xchacha12-neon,aes-arm,nhpoly1305-neon)",
Adiantum é um método de criptografia projetado para dispositivos com Android 9 e superior cujas CPUs não possuem instruções AES . Se você estiver enviando um dispositivo baseado em ARM com extensões de criptografia ARMv8 ou um dispositivo baseado em x86 com AES-NI, não deverá usar o Adiantum. AES é mais rápido nessas plataformas.
Para dispositivos que não possuem essas instruções de CPU AES, o Adiantum fornece criptografia em seu dispositivo com muito pouca sobrecarga de desempenho. Para números de benchmarking, consulte o artigo da Adiantum . Para que a fonte de benchmarking seja executada em seu hardware, consulte a fonte Adiantum no GitHub .
Para ativar o Adiantum em um dispositivo com Android 9 ou superior, você precisa fazer alterações no kernel e no espaço do usuário.
Mudanças no kernel
Adiantum é compatível com os kernels comuns do Android, versão 4.9 e superior.
Se o kernel do seu dispositivo ainda não tiver suporte para Adiantum, escolha as alterações listadas abaixo. Se você estiver tendo problemas para escolher, os dispositivos que usam criptografia de disco completo (FDE) podem excluir o patch fscrypt:
Versão do kernel | Patches de criptografia e fscrypt | patch dm-crypt |
---|---|---|
4.19 | núcleo 4.19 | patch dm-crypt |
4.14 | núcleo 4.14 | patch dm-crypt |
4.9 | núcleo 4.9 | patch dm-crypt |
Habilite Adiantum em seu kernel
Android 11 e superior
Se o seu dispositivo estiver iniciando com Android 11 ou superior, habilite as seguintes configurações na configuração do kernel do seu dispositivo:
CONFIG_CRYPTO_ADIANTUM=y CONFIG_FS_ENCRYPTION=y CONFIG_BLK_INLINE_ENCRYPTION=y CONFIG_BLK_INLINE_ENCRYPTION_FALLBACK=y CONFIG_FS_ENCRYPTION_INLINE_CRYPT=y CONFIG_DM_DEFAULT_KEY=y
Se o seu dispositivo estiver executando um kernel ARM de 32 bits, ative também as instruções NEON para melhorar o desempenho:
CONFIG_KERNEL_MODE_NEON=y CONFIG_CRYPTO_AES_ARM=y CONFIG_CRYPTO_CHACHA20_NEON=y CONFIG_CRYPTO_NHPOLY1305_NEON=y
Android 9 e 10
Se o seu dispositivo estiver iniciando com Android 9 ou 10, serão necessárias configurações de kernel ligeiramente diferentes. Ative as seguintes configurações:
CONFIG_CRYPTO_ADIANTUM=y CONFIG_DM_CRYPT=y
Se o seu dispositivo usar criptografia baseada em arquivo, habilite também:
CONFIG_F2FS_FS_ENCRYPTION=y
Finalmente, se o seu dispositivo executa um kernel ARM de 32 bits, habilite as instruções NEON para melhorar o desempenho:
CONFIG_KERNEL_MODE_NEON=y CONFIG_CRYPTO_AES_ARM=y CONFIG_CRYPTO_CHACHA20_NEON=y CONFIG_CRYPTO_NHPOLY1305_NEON=y
Mudanças no espaço do usuário
Para dispositivos com Android 10 ou superior, as alterações no espaço de usuário do Adiantum já estão presentes.
Para dispositivos com Android 9, escolha as seguintes alterações:
- cryptfs: Adicionar suporte Adiantum
- cryptfs: Permitir definir o tamanho do setor dm-crypt
- cryptfs: arredondar o tamanho do dispositivo dm-crypt para o limite do setor criptográfico
- cryptfs: melhora o registro de criação de dispositivos dm-crypt
- libfscrypt: Adicionar suporte Adiantum
- fs_mgr_fstab: Adicionar suporte Adiantum
Habilite Adiantum em seu dispositivo
Primeiro, certifique-se de que PRODUCT_SHIPPING_API_LEVEL
do seu dispositivo esteja configurado corretamente para corresponder à versão do Android com a qual está sendo lançado. Por exemplo, um dispositivo lançado com Android 11 deve ter PRODUCT_SHIPPING_API_LEVEL := 30
. Isso é importante porque algumas configurações de criptografia têm padrões diferentes em diferentes versões de inicialização.
Dispositivos com criptografia baseada em arquivos
Para ativar a criptografia baseada em arquivo Adiantum no armazenamento interno do seu dispositivo, adicione a seguinte opção à última coluna (a coluna fs_mgr_flags ) da linha da partição userdata
no arquivo fstab
do dispositivo:
fileencryption=adiantum
Se o seu dispositivo for lançado com Android 11 ou superior, também será necessário ativar a criptografia de metadados . Para usar o Adiantum para criptografia de metadados no armazenamento interno, o fs_mgr_flags para userdata
também deve conter as seguintes opções:
metadata_encryption=adiantum,keydirectory=/metadata/vold/metadata_encryption
Em seguida, habilite a criptografia Adiantum no armazenamento adotável . Para fazer isso, defina as seguintes propriedades do sistema em PRODUCT_PROPERTY_OVERRIDES
:
Para Android 11 e superior:
ro.crypto.volume.options=adiantum ro.crypto.volume.metadata.encryption=adiantum
Para Android 9 e 10:
ro.crypto.volume.contents_mode=adiantum ro.crypto.volume.filenames_mode=adiantum ro.crypto.fde_algorithm=adiantum ro.crypto.fde_sector_size=4096
Finalmente, adicione opcionalmente blk-crypto-fallback.num_keyslots=1
à linha de comando do kernel. Isto reduzirá ligeiramente o uso de memória quando a criptografia de metadados Adiantum for usada. Antes de fazer isso, verifique se a opção de montagem inlinecrypt
não está especificada no fstab
. Se for especificado, remova-o, pois não é necessário para criptografia Adiantum e causa problemas de desempenho quando usado em combinação com blk-crypto-fallback.num_keyslots=1
.
Para verificar se sua implementação funcionou, faça um relatório de bug ou execute:
adb root
adb shell dmesg
Se o Adiantum estiver habilitado corretamente, você deverá ver isto no log do kernel:
fscrypt: Adiantum using implementation "adiantum(xchacha12-neon,aes-arm,nhpoly1305-neon)"
Se você habilitou a criptografia de metadados, execute também o seguinte para verificar se a criptografia de metadados Adiantum está habilitada corretamente:
adb root
adb shell dmctl table userdata
O terceiro campo da saída deve ser xchacha12,aes-adiantum-plain64
.
Dispositivos com criptografia de disco completo
Para ativar o Adiantum e melhorar seu desempenho, defina estas propriedades em PRODUCT_PROPERTY_OVERRIDES
:
ro.crypto.fde_algorithm=adiantum ro.crypto.fde_sector_size=4096
Definir fde_sector_size
como 4096 melhora o desempenho, mas não é necessário para que o Adiantum funcione. Para usar essa configuração, a partição userdata deve começar em um deslocamento alinhado de 4.096 bytes no disco.
No fstab
, para o conjunto userdata:
forceencrypt=footer
Para verificar se sua implementação funcionou, faça um relatório de bug ou execute:
adb root
adb shell dmesg
Se o Adiantum estiver habilitado corretamente, você deverá ver isto no log do kernel:
device-mapper: crypt: adiantum(xchacha12,aes) using implementation "adiantum(xchacha12-neon,aes-arm,nhpoly1305-neon)"