Google cam kết thúc đẩy công bằng chủng tộc cho Cộng đồng người da đen. Xem cách thực hiện.

Kích hoạt Adiantum

Adiantum là một phương pháp mã hóa được thiết kế cho các thiết bị chạy Android 9 trở lên có CPU thiếu hướng dẫn AES . Nếu bạn đang vận chuyển thiết bị dựa trên ARM có Tiện ích mở rộng mã hóa ARMv8 hoặc thiết bị dựa trên x86 với AES-NI, bạn không nên sử dụng Adiantum. AES nhanh hơn trên các nền tảng đó.

Đối với các thiết bị thiếu các hướng dẫn CPU AES này, Adiantum cung cấp mã hóa trên thiết bị của bạn với chi phí hiệu suất rất thấp. Để biết số điểm chuẩn, hãy xem bài báo Adiantum . Để nguồn đo điểm chuẩn chạy trên phần cứng của bạn, hãy xem nguồn Adiantum trên GitHub .

Để bật Adiantum trên thiết bị chạy Android 9 trở lên, bạn cần thực hiện thay đổi nhân và thay đổi không gian người dùng.

Thay đổi nhân

Adiantum được hỗ trợ bởi các hạt nhân chung của Android, phiên bản 4.9 trở lên.

Nếu hạt nhân của thiết bị của bạn chưa có hỗ trợ Adiantum, hãy chọn những thay đổi được liệt kê bên dưới. Nếu bạn gặp sự cố khi chọn anh đào, các thiết bị sử dụng mã hóa toàn đĩa (FDE) có thể loại trừ fscrypt: patch.

Phiên bản hạt nhân Các bản vá mật mã và fscrypt bản vá dm-crypt
4,19 Hạt nhân 4,19 bản vá dm-crypt
4,14 Nhân 4,14 bản vá dm-crypt
4,9 4,9 hạt nhân bản vá dm-crypt

Bật Adiantum trong nhân của bạn

Android 11 trở lên

Nếu thiết bị của bạn đang chạy Android 11 trở lên, hãy bật các cài đặt sau trong cấu hình hạt nhân của thiết bị:

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

Nếu thiết bị của bạn đang chạy nhân ARM 32-bit, hãy bật hướng dẫn NEON để cải thiện hiệu suất:

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

Android 9 và 10

Nếu thiết bị của bạn đang chạy Android 9 hoặc 10, thì cần có các cài đặt cấu hình hạt nhân hơi khác một chút. Bật các cài đặt sau:

CONFIG_CRYPTO_ADIANTUM=y
CONFIG_DM_CRYPT=y

Nếu thiết bị của bạn sử dụng mã hóa dựa trên tệp, hãy bật:

CONFIG_F2FS_FS_ENCRYPTION=y

Cuối cùng, nếu thiết bị của bạn chạy nhân ARM 32-bit, hãy bật hướng dẫn NEON để cải thiện hiệu suất:

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

Thay đổi không gian người dùng

Đối với các thiết bị chạy Android 10 trở lên, các thay đổi về không gian người dùng Adiantum đã có sẵn.

Đối với các thiết bị chạy Android 9, hãy chọn những thay đổi sau:

Bật Adiantum trong thiết bị của bạn

Trước tiên, hãy đảm bảo rằng thiết bị của bạn đã đặt PRODUCT_SHIPPING_API_LEVEL chính xác để khớp với phiên bản Android mà thiết bị đang chạy. Ví dụ: một thiết bị chạy Android 11 phải có PRODUCT_SHIPPING_API_LEVEL := 30 . Điều này quan trọng vì một số cài đặt mã hóa có các giá trị mặc định khác nhau trên các phiên bản khởi chạy khác nhau.

Thiết bị có mã hóa dựa trên tệp

Để bật mã hóa dựa trên tệp Adiantum trên bộ nhớ trong của thiết bị, hãy thêm tùy chọn sau vào cột cuối cùng (cột fs_mgr_flags ) của hàng cho phân vùng userdata liệu người dùng trong tệp fstab của thiết bị:

fileencryption=adiantum

Nếu thiết bị của bạn đang chạy Android 11 trở lên, thì việc bật mã hóa siêu dữ liệu cũng là bắt buộc. Để sử dụng Adiantum cho mã hóa siêu dữ liệu trên bộ nhớ trong, fs_mgr_flags cho dữ liệu người userdata cũng phải chứa các tùy chọn sau:

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

Tiếp theo, bật mã hóa Adiantum trên bộ nhớ có thể sử dụng. Để thực hiện việc này, hãy đặt các thuộc tính hệ thống sau trong PRODUCT_PROPERTY_OVERRIDES :

Đối với Android 11 trở lên:

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

Đối với Android 9 và 10:

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

Cuối cùng, tùy chọn thêm blk-crypto-fallback.num_keyslots=1 vào dòng lệnh kernel. Điều này sẽ làm giảm mức sử dụng bộ nhớ một chút khi sử dụng mã hóa siêu dữ liệu Adiantum. Trước khi thực hiện việc này, hãy xác minh rằng tùy chọn mount inlinecrypt không được chỉ định trong fstab . Nếu nó được chỉ định, hãy xóa nó vì nó không cần thiết cho mã hóa Adiantum và nó gây ra các vấn đề về hiệu suất khi được sử dụng kết hợp với blk-crypto-fallback.num_keyslots=1 .

Để xác minh rằng việc triển khai của bạn đã hoạt động, hãy báo cáo lỗi hoặc chạy:

adb root
adb shell dmesg

Nếu Adiantum được bật đúng cách, bạn sẽ thấy điều này trong nhật ký hạt nhân:

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

Nếu bạn đã bật mã hóa siêu dữ liệu, hãy chạy phần sau để xác minh rằng mã hóa siêu dữ liệu Adiantum được bật chính xác:

adb root
adb shell dmctl table userdata

Trường thứ ba của đầu ra phải là xchacha12,aes-adiantum-plain64 .

Thiết bị có mã hóa toàn đĩa

Để bật Adiantum và cải thiện hiệu suất của nó, hãy đặt các thuộc tính này trong PRODUCT_PROPERTY_OVERRIDES :

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

Đặt fde_sector_size thành 4096 cải thiện hiệu suất, nhưng không bắt buộc để Adiantum hoạt động. Để sử dụng cài đặt này, phân vùng dữ liệu người dùng phải bắt đầu ở độ lệch căn lề 4096 byte trên đĩa.

Trong fstab , đối với tập dữ liệu người dùng:

forceencrypt=footer

Để xác minh rằng việc triển khai của bạn đã hoạt động, hãy báo cáo lỗi hoặc chạy:

adb root
adb shell dmesg

Nếu Adiantum được bật đúng cách, bạn sẽ thấy điều này trong nhật ký hạt nhân:

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