Adiantum aktivieren

Adiantum ist eine Verschlüsselungsmethode, die für Geräte mit Android 9 und höher entwickelt wurde auf denen CPUs fehlen, AES-Anweisungen. Wenn Sie ein ARM-basiertes Gerät mit ARMv8-Kryptografie-Erweiterungen oder ein x86-basiertes Gerät mit AES-NI, sollten Sie Adiantum nicht verwenden. AES ist hier schneller. Plattformen.

Auf Geräten ohne diese AES-CPU-Anweisungen bietet Adiantum eine Verschlüsselung mit sehr geringem Leistungsoverhead. Für Benchmarking-Zahlen Weitere Informationen finden Sie im Adiantum-Artikel. Die Benchmarking-Quelle, die auf Ihrer Hardware ausgeführt werden soll, finden Sie in der Adiantum-Quelle auf GitHub.

Um Adiantum auf einem Gerät mit Android 9 oder höher zu aktivieren, müssen Sie Kernel- und Userspace-Änderungen vornehmen.

Kerneländerungen

Adiantum wird von den gängigen Android-Kerneln Version 4.9 und höher unterstützt.

Wenn der Kernel Ihres Geräts noch keine Adiantum-Unterstützung hat, können Sie die unten aufgeführten Änderungen auswählen. Wenn Sie Probleme beim Filtern haben, können Geräte mit der Laufwerksverschlüsselung den fscrypt: -Patch.

Kernel-Version Crypto- und fsCrypt-Patches dm-crypt-Patch
4,19 Kernel 4.19 dm-crypt-Patch
4,14 Kernel 4.14 dm-crypt-Patch
4.9 4.9 Kernel dm-crypt-Patch

Adiantum in Ihrem Kernel aktivieren

Android 11 oder höher

Wenn auf deinem Gerät Android 11 oder höher installiert ist, Aktivieren Sie die folgenden Einstellungen in der Kernel-Konfiguration Ihres Geräts:

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

Wenn auf Ihrem Gerät ein 32-Bit-ARM-Kernel ausgeführt wird, aktivieren Sie auch die NEON-Anweisungen, um Leistung verbessern:

CONFIG_KERNEL_MODE_NEON=y
CONFIG_CRYPTO_AES_ARM=y
CONFIG_CRYPTO_CHACHA20_NEON=y
CONFIG_CRYPTO_NHPOLY1305_NEON=y

Android 9 und 10

Wenn Ihr Gerät mit Android 9 oder 10 gestartet wird, sind etwas andere Kernelkonfigurationseinstellungen erforderlich. Aktivieren Sie die folgenden Einstellungen:

CONFIG_CRYPTO_ADIANTUM=y
CONFIG_DM_CRYPT=y

Wenn Ihr Gerät die dateibasierte Verschlüsselung verwendet, aktivieren Sie außerdem:

CONFIG_F2FS_FS_ENCRYPTION=y

Wenn Ihr Gerät einen 32-Bit-ARM-Kernel ausführt, aktivieren Sie die NEON-Anweisungen, um Leistung verbessern:

CONFIG_KERNEL_MODE_NEON=y
CONFIG_CRYPTO_AES_ARM=y
CONFIG_CRYPTO_CHACHA20_NEON=y
CONFIG_CRYPTO_NHPOLY1305_NEON=y

Änderungen im Userspace

Auf Geräten mit Android 10 oder höher sind die Adiantum-Änderungen im Userspace bereits vorhanden.

Wählen Sie für Geräte mit Android 9 folgende Änderungen:

Adiantum auf Ihrem Gerät aktivieren

Prüfen Sie zuerst, ob PRODUCT_SHIPPING_API_LEVEL auf Ihrem Gerät richtig für die Android-Version festgelegt ist, mit der es gestartet wird. Beispiel: Geräte, die mit Android 11 auf den Markt gebracht werden, PRODUCT_SHIPPING_API_LEVEL := 30 Das ist wichtig, da einige der Verschlüsselungseinstellungen in verschiedenen Release-Versionen unterschiedliche Standardeinstellungen haben.

Geräte mit dateibasierter Verschlüsselung

Wenn Sie die dateibasierte Adiantum-Verschlüsselung auf dem internen Speicher Ihres Geräts aktivieren möchten, fügen Sie der letzten Spalte (fs_mgr_flags) der Zeile für die userdata-Partition in der fstab-Datei des Geräts die folgende Option hinzu:

fileencryption=adiantum

Wenn auf deinem Gerät Android 11 oder höher installiert ist, anschließend Aktivieren Metadatenverschlüsselung ist ebenfalls erforderlich. Adiantum für Metadaten verwenden Verschlüsselung im internen Speicher, fs_mgr_flags für userdata muss außerdem die folgenden Optionen enthalten:

metadata_encryption=adiantum,keydirectory=/metadata/vold/metadata_encryption

Aktivieren Sie als Nächstes die Adiantum-Verschlüsselung für den Adiantum-Speicher. Legen Sie dazu den Parameter folgende Systemeigenschaften in PRODUCT_PROPERTY_OVERRIDES:

Android 11 und höher:

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

Android 9 und 10:

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

Fügen Sie abschließend optional blk-crypto-fallback.num_keyslots=1 zum Kernel-Befehlszeile. Dadurch wird die Arbeitsspeichernutzung etwas reduziert, Metadatenverschlüsselung verwendet wird. Stellen Sie vorher sicher, Die Bereitstellungsoption inlinecrypt ist in fstab nicht angegeben. Entfernen Sie sie, falls sie angegeben ist, da sie für die Adiantum-Verschlüsselung nicht erforderlich ist und in Kombination mit blk-crypto-fallback.num_keyslots=1 zu Leistungsproblemen führt.

Wenn Sie prüfen möchten, ob Ihre Implementierung funktioniert hat, erstellen Sie einen Fehlerbericht oder führen Sie Folgendes aus:

adb root
adb shell dmesg

Wenn Adiantum richtig aktiviert ist, sollte im Kernel-Log Folgendes angezeigt werden:

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

Wenn Sie die Metadatenverschlüsselung aktiviert haben, führen Sie auch den folgenden Befehl aus, um zu prüfen, ob die Adiantum-Metadatenverschlüsselung richtig aktiviert ist:

adb root
adb shell dmctl table userdata

Das dritte Feld der Ausgabe sollte xchacha12,aes-adiantum-plain64 sein.

Geräte mit Datenträgervollverschlüsselung

Wenn Sie Adiantum aktivieren und seine Leistung verbessern möchten, legen Sie die folgenden Eigenschaften in PRODUCT_PROPERTY_OVERRIDES fest:

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

Wenn Sie fde_sector_size auf 4096 festlegen, wird die Leistung verbessert. Dies ist jedoch keine Voraussetzung für die Funktion von Adiantum. Wenn Sie diese Einstellung verwenden möchten, muss die userdata-Partition auf dem Laufwerk an einem auf 4.096 Byte ausgerichteten Offset beginnen.

Legen Sie in der fstab für „userdata“ Folgendes fest:

forceencrypt=footer

Wenn Sie prüfen möchten, ob Ihre Implementierung funktioniert hat, erstellen Sie einen Fehlerbericht oder führen Sie Folgendes aus:

adb root
adb shell dmesg

Wenn Adiantum richtig aktiviert ist, sollte im Kernel-Log Folgendes angezeigt werden:

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