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을 실행하는 기기의 경우 다음 변경사항을 선별합니다.
- cryptfs: Adiantum 지원 추가
- cryptfs: dm-crypt 섹터 크기 설정 허용
- cryptfs: dm-crypt 기기 크기를 암호화 섹터 경계로 내림
- cryptfs: dm-crypt 기기 생성 로깅 개선
- libfscrypt: Adiantum 지원 추가
- fs_Admin_fstab: Adiantum 지원 추가
기기에 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)"