Adiantum ist eine Verschlüsselungsmethode für Geräte mit Android 9 und höher. auf denen CPUs fehlen, AES-Anweisungen. Wenn Sie ein ARM-basiertes ein 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.
Für Geräte ohne diese AES-CPU-Anweisungen bietet Adiantum Verschlüsselung auf mit sehr geringem Leistungsaufwand. Für Benchmarking-Zahlen Weitere Informationen finden Sie im Adiantum-Artikel. Für die Benchmarking-Quelle die auf Ihrer Hardware ausgeführt werden soll, 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 Adiantum noch nicht unterstützt, wählen Sie die
die unten aufgeführten Änderungen enthält. 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 und 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, dann eine etwas andere Kernel-Konfiguration Einstellungen 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
Bei Geräten mit Android 10 oder höher sind die Änderungen im Adiantum-Nutzerbereich bereits vorhanden.
Wählen Sie für Geräte mit Android 9 folgende Änderungen:
- Cryptfs: Adiantum-Unterstützung hinzufügen
- Cryptfs: Festlegen der dm-Crypt-Sektorgröße zulassen
- Cryptfs: Größe des dm-Crypt-Geräts auf die Grenze des kryptografischen Sektors abrunden
- Cryptfs: Verbessertes Logging der Erstellung von dm-Crypt-Geräten
- libfscrypt: Adiantum-Unterstützung hinzufügen
- fs_mgr_fstab: Adiantum-Unterstützung hinzufügen
Adiantum auf Ihrem Gerät aktivieren
Prüfe zuerst, ob auf deinem Gerät PRODUCT_SHIPPING_API_LEVEL
festgelegt ist
korrekt an die Android-Version anzupassen, 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, weil einige
haben die Verschlüsselungseinstellungen je nach Startversion unterschiedliche Standardeinstellungen.
Geräte mit dateibasierter Verschlüsselung
Um die dateibasierte Verschlüsselung von Adiantum im internen Speicher Ihres Geräts zu aktivieren, fügen Sie
die folgende Option in die letzte Spalte (fs_mgr_flags
Spalte) der Zeile für die Partition userdata
im
fstab
-Datei:
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
:
Ab Android 11:
ro.crypto.volume.options=adiantum ro.crypto.volume.metadata.encryption=adiantum
Für 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 Speichernutzung beim Adiantum-
Metadatenverschlüsselung verwendet wird. Stellen Sie vorher sicher,
Die Bereitstellungsoption inlinecrypt
ist in fstab
nicht angegeben.
Wenn es angegeben ist, entfernen Sie es, da es für die Adiantum-Verschlüsselung nicht benötigt wird.
Außerdem führt es zu Leistungsproblemen, wenn es in Kombination mit
blk-crypto-fallback.num_keyslots=1
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 korrekt aktiviert ist, sollten Sie Folgendes im Kernel-Protokoll sehen:
fscrypt: Adiantum using implementation "adiantum(xchacha12-neon,aes-arm,nhpoly1305-neon)"<ph type="x-smartling-placeholder">
Wenn Sie die Metadatenverschlüsselung aktiviert haben, führen Sie auch den folgenden Befehl aus, um zu prüfen, Die Verschlüsselung von Adiantum-Metadaten ist korrekt aktiviert:
adb root
adb shell dmctl table userdata
Das dritte Feld der Ausgabe
xchacha12,aes-adiantum-plain64
Geräte mit Datenträgervollverschlüsselung
Um Adiantum zu aktivieren und seine Leistung zu verbessern, legen Sie diese Eigenschaften in
PRODUCT_PROPERTY_OVERRIDES
:
ro.crypto.fde_algorithm=adiantum ro.crypto.fde_sector_size=4096
Durch Festlegen von fde_sector_size
auf 4096 wird die Leistung verbessert, das ist aber nicht
damit Adiantum funktioniert. Um diese Einstellung zu verwenden, muss die Partition für Nutzerdaten
beginnen bei einem 4096-Byte-Offset
auf der Festplatte.
In der fstab
für Nutzerdatensatz:
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 korrekt aktiviert ist, sollten Sie Folgendes im Kernel-Protokoll sehen:
device-mapper: crypt: adiantum(xchacha12,aes) using implementation "adiantum(xchacha12-neon,aes-arm,nhpoly1305-neon)"<ph type="x-smartling-placeholder">