Adiantum 사용 설정

Adiantum은 CPU에 AES 지침이 없는 Android 9 이상을 실행하는 기기를 위해 디자인된 암호화 메서드입니다. ARMv8 암호화 확장 프로그램을 포함하는 ARM 기반 기기나 AES-NI를 포함하는 x86 기반 기기를 제공하는 경우에는 Adiantum을 사용하면 안 됩니다. 이러한 플랫폼에서는 AES가 더 빠르게 작동합니다.

이러한 AES CPU 지침이 없는 기기의 경우 Adiantum은 기기에 성능 오버헤드가 매우 적은 암호화를 제공합니다. 벤치마킹 수치는 Adiantum 문서를 참조하세요. 하드웨어에서 벤치마킹 소스를 실행하려면 GitHub의 Adiantum 소스를 참조하세요.

Android 9 이상을 실행하는 기기에 Adiantum을 사용 설정하려면 커널과 사용자 공간을 변경해야 합니다.

커널 변경사항

Adiantum은 Android 공통 커널 버전 4.9 이상에서 지원됩니다.

기기 커널에서 아직 Adiantum을 지원하지 않는다면 아래 나열된 변경사항 중에서 선택하세요. 선택에 문제가 있는 경우 전체 디스크 암호화(FDE)를 사용하는 기기는 fscrypt: 패치를 제외할 수 있습니다.

커널 버전 암호화 및 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 파일 기반 암호화를 사용 설정하려면 다음과 같이 기기의 fstab에서 userdata 파티션에 적절한 fileencryption 옵션을 설정합니다.

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를 4,096으로 설정하면 성능이 개선되지만 Adiantum이 작동하는 데 필요하지는 않습니다. 이 설정을 사용하려면 사용자 데이터 파티션이 디스크에서 4,096바이트로 정렬된 오프셋에서 시작해야 합니다.

fstab에서 사용자 데이터의 경우 다음을 설정합니다.

forceencrypt

구현이 작동했는지 확인하려면 버그 신고를 가져오거나 다음을 실행합니다.

adb root
adb shell dmesg

Adiantum이 올바르게 사용 설정되었다면 커널 로그에 다음과 같은 내용이 표시됩니다.

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