CyanogenMod 12.1을 실행하는 장치를 어떻게 암호화합니까? 다른 방식으로 전화를 암호화하는 방법이 있습니까?

CyanogenMod 12 및 12.1 ‘전화기 암호화’설정이 손상 되어 꽤 오랫동안 사용되었습니다. 다른 방식으로 전화를 암호화하는 방법이 있습니까? 암호화 된 / data 디렉토리를 사용하여 CM을 전화기에 사이드로드 할 수 있습니까? 데이터를 안전하게 유지하는 다른 방법이 있습니까? 내가 작업하고있는 기기는 Verizon LG G3입니다.



답변

쉘에서 사용자 데이터 파티션을 암호화하는 데 사용할 수있는 하위 레벨 명령이 있습니다. 고지 사항 / 경고 : 다음 지침에 따라 데이터가 지워지고 필요한 경우 백업해야합니다.

다음 단계를 수행, 당신은 해야 데이터 파티션을 초기화 할 수 있습니다 그것은 나중에 (공장 초기화 유사) 암호화가 :

  1. 휴대 전화를 정상적으로 부팅합니다 (복구가 더 이상 작동하지 않거나 다른 문제가 발생했습니다).
  2. 그 확인 USB 디버깅 모드 (ADB)과 루트 액세스를 ADB에 대한이 활성화됩니다.
  3. adb root다음으로 루트 쉘을 입력하십시오 adb shell.
  4. 선택 사항 : adb logcat다른 쉘 을 호출 하여 로그를 감시하십시오 .
  5. 이 명령을 입력하고 비밀번호를 입력 한 후 Enter를 누르십시오. 실제로 비밀번호가 설정됩니다. 이 명령은 한 줄의 입력 ( head -1)을 읽고 Enter ( tr -d '\n') 에서 후행 줄 바꿈을 제거하고 16 진 표현 ( hexdump ...)으로 변환합니다 . 그것이 무섭게 보이거나이 명령이 무엇을하는지 확실하지 않으면 아래를 참조하십시오.

    vdc cryptfs enablecrypto wipe password $(head -1 | tr -d '\n' | hexdump -ve '1/1 "%.2x"')
    
  6. 모든 것이 정상이면 장치가 키를 설정하고 재부팅하여 암호화를 완료합니다.

(볼륨 데몬) vdc과 통신 하는 위의 명령 ( “볼륨 데몬 클라이언트” vold)에는 cryptfs암호화 와 같은 일부 하위 명령이 있습니다. enablecrypto: 부속 명령은 두 가지 모드가 있습니다 wipe(취소 /data완전히) 및 inplace(원본을 복사하는 동안 가정 암호화를 적용 /data컨테이너 내부를).

그런 다음 Android 5.0부터 네 가지 옵션을 사용할 수 있습니다. 그 중 하나는 password16 진수 단일 키를 키로 허용하는 옵션입니다. 비밀번호는 따라서 경우 foo, 다음 16 진수 표현이다 666f6f( f이다 66, 진수에 o있다 6f, 참조 http://www.asciitable.com/ ). 이에 대한 명령은 다음과 같습니다.

vdc cryptfs enablecrypto wipe password 666f6f

메타 데이터 저장을위한 별도의 파티션이있는 Nexus 5 (코드 이름 망치 머리, cm-12.1-20150814로 실행)에서 테스트되었습니다. 이다 중요한 유저 데이터 파티션이 가지고 encryptable파티션의 경로 또는 특수한 캐릭터 중 하나를 다음 플래그가 설정 footer. 내 /fstab.hammerhead파일 의 (약어) 줄 :

/dev/block/platform/msm_sdcc.1/by-name/userdata / data ext4 …, 확인, 암호화 가능 = /dev/block/platform/msm_sdcc.1/by-name/metadata

특수 문자열 footer( encryptable=footer)이 있으면 데이터 파티션 끝에 16 KiB가 암호화 메타 데이터를 저장하는 데 사용됩니다.

자세한 내용은 다음을 참조하십시오.


부록 : logcat은 암호화 명령이 완료되고 재부팅 될 때까지 암호화 명령을 발췌 한 것입니다 (끝에 관련없는 그래픽 메시지는 생략). 이 Nexus 5에는 하드웨어 가속 암호화 (QSEECom)가 있습니다.

--------- beginning of main
08-16 12:57:15.459 W/DrmManagerClientImpl(Native)( 2108): DrmManager server died!
08-16 12:57:15.459 I/ServiceManager(  184): service 'drm.drmManager' died
08-16 12:57:15.467 D/Cryptfs (  186): Just asked init to shut down class main
08-16 12:57:15.470 D/Cryptfs (  186): unmounting /mnt/shell/emulated succeeded
08-16 12:57:15.599 I/ServiceManager(  184): service 'media.audio_flinger' died
08-16 12:57:15.599 I/ServiceManager(  184): service 'media.player' died
08-16 12:57:15.599 I/ServiceManager(  184): service 'media.camera' died
...
08-16 12:57:16.695 D/Cryptfs (  186): unmounting /data succeeded
08-16 12:57:16.695 D/QSEECOMAPI: (  186): QSEECom_get_handle sb_length = 0x2000
08-16 12:57:16.696 D/QSEECOMAPI: (  186): App is already loaded QSEE and app id = 2
08-16 12:57:16.697 I/Cryptfs (  186): keymaster version is 3
08-16 12:57:16.697 D/QSEECOMAPI: (  186): QSEECom_dealloc_memory
08-16 12:57:16.697 D/QSEECOMAPI: (  186): QSEECom_shutdown_app, app_id = 2
08-16 12:57:16.697 D/QSEECOMAPI: (  186): QSEECom_get_handle sb_length = 0x2000
08-16 12:57:16.697 D/QSEECOMAPI: (  186): App is already loaded QSEE and app id = 2
08-16 12:57:18.058 D/QSEECOMAPI: (  186): QSEECom_dealloc_memory
08-16 12:57:18.058 D/QSEECOMAPI: (  186): QSEECom_shutdown_app, app_id = 2
08-16 12:57:18.058 I/Cryptfs (  186): Using scrypt with keymaster for cryptfs KDF
08-16 12:57:18.208 D/BootAnimation( 2683): Use save memory method, maybe small fps in actual.
08-16 12:57:18.208 E/QCOM PowerHAL( 2683): Failed to acquire lock.
08-16 12:57:18.691 D/QSEECOMAPI: (  186): QSEECom_get_handle sb_length = 0x2000
08-16 12:57:18.691 D/QSEECOMAPI: (  186): App is already loaded QSEE and app id = 2
08-16 12:57:18.692 I/Cryptfs (  186): Signing safely-padded object
08-16 12:57:18.797 D/QSEECOMAPI: (  186): QSEECom_dealloc_memory
08-16 12:57:18.797 D/QSEECOMAPI: (  186): QSEECom_shutdown_app, app_id = 2
08-16 12:57:20.056 I/Cryptfs (  186): Using scrypt with keymaster for cryptfs KDF
08-16 12:57:20.690 D/QSEECOMAPI: (  186): QSEECom_get_handle sb_length = 0x2000
08-16 12:57:20.691 D/QSEECOMAPI: (  186): App is already loaded QSEE and app id = 2
08-16 12:57:20.691 I/Cryptfs (  186): Signing safely-padded object
08-16 12:57:20.796 D/QSEECOMAPI: (  186): QSEECom_dealloc_memory
08-16 12:57:20.796 D/QSEECOMAPI: (  186): QSEECom_shutdown_app, app_id = 2
08-16 12:57:21.429 I/Cryptfs (  186): Enabling support for allow_discards in dmcrypt.
08-16 12:57:21.429 I/Cryptfs (  186): load_crypto_mapping_table: target_type = crypt
08-16 12:57:21.429 I/Cryptfs (  186): load_crypto_mapping_table: real_blk_name = /dev/block/platform/msm_sdcc.1/by-name/userdata, extra_params = 1 allow_discards
08-16 12:57:21.431 I/Cryptfs (  186): Making empty filesystem with command /system/bin/make_ext4fs -a /data -l 13725837312 /dev/block/dm-0
08-16 12:57:21.447 I/make_ext4fs(  186): SELinux: Loaded file_contexts from /file_contexts
08-16 12:57:21.447 I/make_ext4fs(  186): Creating filesystem with parameters:
08-16 12:57:21.447 I/make_ext4fs(  186):     Size: 13725835264
08-16 12:57:21.448 I/make_ext4fs(  186):     Block size: 4096
08-16 12:57:21.448 I/make_ext4fs(  186):     Blocks per group: 32768
08-16 12:57:21.448 I/make_ext4fs(  186):     Inodes per group: 8144
08-16 12:57:21.448 I/make_ext4fs(  186):     Inode size: 256
08-16 12:57:21.448 I/make_ext4fs(  186):     Journal blocks: 32768
08-16 12:57:21.449 I/make_ext4fs(  186):     Label:
08-16 12:57:21.449 I/make_ext4fs(  186):     Transparent compression: none
08-16 12:57:21.449 I/make_ext4fs(  186):     Blocks: 3351034
08-16 12:57:21.449 I/make_ext4fs(  186):     Block groups: 103
08-16 12:57:21.459 I/make_ext4fs(  186):     Reserved block group size: 823
08-16 12:57:21.465 I/make_ext4fs(  186): Created filesystem with 11/838832 inodes and 93654/3351034 blocks
08-16 12:57:21.465 I/make_ext4fs(  186):     Total files: 0
08-16 12:57:21.465 I/make_ext4fs(  186):     Total bytes: 0
08-16 12:57:42.926 D/Cryptfs (  186): Successfully created filesystem on /dev/block/dm-0

답변

나에게는 원래의 대답 이 예상대로 작동하지 않았습니다. 성공적으로 암호화 된 것처럼 보였지만 UI가 매우 빠르게 돌아 왔으며 “암호화”설정에 장치가 암호화 된 것으로 표시되지 않았습니다. 그런 다음 update에 제공된 명령을 적용 했지만 여전히 작동하지 않습니다. 그런 다음 데이터 파티션의 크기줄이고 성공적으로 암호화했습니다. 즉

mount | grep data데이터 파티션의 실제 블록 장치를 찾습니다. 그것이 있다고 가정 해 봅시다 /dev/block/mmcblk0p26.

umount /data 확장 도구가 작동합니다.

e2fsck -f -p /dev/block/mmcblk0p26 다가오는 크기 조정에 문제가 발생하지 않습니다.

tune2fs -l /dev/block/mmcblk0p26 블록 카운트를 얻습니다. 그것이 있다고 가정 해 봅시다 3057395.

resize2fs /dev/block/mmcblk0p26 3057375즉, 원래 블록 카운트에서 20과 같은 충분한 양을 빼십시오.

e2fsck -f -p /dev/block/mmcblk0p26 나를 위해 잘못 배치 된 inode를 발견했습니다.

또한를 /system확보하기 위해 파티션 을 마운트해야했습니다 resize2fs. 내 시스템에서 해당 바이너리는 64 비트 버전의 libc와 연결되었지만 사용 된 TWRP는 그것을 제공하지 않는 것 같습니다. 그래서 명령 앞에 접두사를 붙여야했습니다 env LD_LIBRARY_PATH=/system/lib64.


답변

현재 CM12.1 2015년 10월 15일 대답 Lekensteyn에 의해 더 이상 작동하지 않습니다.

분명히 mkfs.f2fs 파일 시스템을 만드는 데 필요한에서 이동되었습니다 /system/bin//sbin/

또한 SELINUX와 경쟁해야합니다. 즉, 몇 가지 추가 단계를 수행해야합니다.

  1. adb 루트
  2. adb 쉘
  3. setenforce 0
  4. 마운트 -oremount, rw / 시스템
  5. ln -s /sbin/mkfs.f2fs /system/bin/mkfs.f2fs
  6. vdc cryptfs enablecrypto 와이프 암호 666f6f

답변

Nubia Z7 Max, NX505J 전화를 사용한 다른 업데이트
CM13 2016 년 1 월 9 일 빌드

ln -s /sbin/mkfs.f2fs /system/bin/mkfs.f2fs파일이 다시 여기에 있으므로이 명령 ( )은 더 이상 필요하지 않습니다. 심볼릭 링크를 만들 필요가 없습니다.

이 명령은 더 이상 HEX에있을 필요가 없으며 16 진수를 입력하면 PW가 16 진수가됩니다.
cryptfs enablecrypto wipe password 666f6f-이것은 문자 그대로 나를 위해 암호를 만들지 666f6f않았습니다.foo

메타 데이터에 필요한 추가 블록을 통과했기 때문에 여전히이 문제를 연구하고 있습니다. 이제 GUI와 수동 명령을 통해 암호화를 수행하여 한 번의 부팅주기만으로도 암호화가 가능하다는 사실을 극복해야합니다. 암호화에 성공하면 다시보고하겠습니다.

지금은 암호화하고 제대로 작동하며 처음 부팅하면 전화가 암호화되어 있습니다. TWRP를 사용하면 / data가 암호화되어 있음을 확인할 수 있지만 TWRP에서 시도하는 HEX 및 ASCI 비밀번호가 모두 작동하지 않습니다. 다음에 재부팅 할 때 Android OS는 CM13을 완전히 부팅 할 수 없습니다. 올바른 암호화 암호가 있음을 확인한 다음 암호화 된 부팅이 1 개만 나타납니다. 암호화가 처음으로 성공적으로 시작된 후에는 부팅주기의 애니메이션 단계에서 잠 깁니다. 보안 모범 사례에서는 이제 AES256 전화 암호화를 권장합니다.


답변

Cyanogenmod 12.1을 실행하는 Moto X 2013을 사용하면 암호화 할 수 없었습니다. 마지막으로 다음 단계를 수행했습니다.

  1. 전화기의 개발자 설정에서 루트를 활성화하고 셸을 엽니 다 (터미널 앱, 개발자 설정에서도 활성화 할 수 있음)
  2. 를 입력 su하고 루트 액세스를 확인 하십시오 .
  3. 시작하다 setenforce 0
  4. 이제 설정을 열고 보안으로 이동하여 전화 암호화를 선택하십시오 . 그런 다음 Android가 재부팅되고 전화 암호화가 시작됩니다.

나는 결합하여이 솔루션에 온 예술의 대답이 포럼 스레드를 .


답변

6 시간 동안 정신적 고통과 땀을 흘린 후에 나는 나를 위해 일한 해결책을 발견했을 수도 있습니다. 그리고 그것은 사고이기도했다. CyanogenMod 13.0 및 Android 6.0.1이 설치된 Samsung S4 Mini 에서이 작업을 수행했습니다. 여기서 중요한 핵심 요소는 전화가 이전에 루팅되었을 때 전화가 전혀 작동하지 않기 때문에 깨끗한 전화 (새 펌웨어 및 루팅되지 않은)에서 시작한 것입니다.

나는 Firelord와 Lekensteyn의 솔루션을 문제에 사용했지만 명령에서 한 줄을 잊어 버렸습니다.

내가 한 방법은 다음과 같습니다.

  1. 나는 켜져 안드로이드 디버깅루트 액세스만 ADB 에서 개발자 옵션 .

  2. ADB 명령 프롬프트에서 adb rootand adb shell명령을 사용했습니다 . 그 후 다른 ADB 명령 프롬프트를 열고 명령을 사용했습니다 adb logcat.

  3. 첫 번째 ADB 셸에서 나는 setenforce 0그 이후로 갔다 vdc cryptfs enablecrypto wipe password YOUR-PASSWORD.

중요 공지 : password 명령은 사용중인 Android 버전과 다를 수 있습니다. 당신이 사용하는 경우 안드로이드 5.X를 , 당신은 해야한다 사용 진수 시스템을합니다 (대하 라인에서 16 진수 값의 Hx 라인에 암호의 상징이다). Android 6.X를 사용하는 경우 YOUR-PASSWORD는 입력 한 비밀번호입니다.

알다시피 mount -oremount,rw /system명령 을 사용하는 것을 잊었습니다 . 그 후 화면이 검게 변합니다. 내가 보았을 때, 로그가있는 ADB 쉘이 중지되고 완료 된 후 전화를 재부팅했습니다. 그러나 모든 사람에게 문제는 CyanogenMod 가로 드되지 않는다는 것입니다. 그리고 나는 그것을 매우 쉽게 고칠 수있었습니다.

  1. 보류 권까지 및 홈 및 전원을 TWRP 부팅까지 아래로. 암호화 비밀번호를 묻습니다.
  2. 할 일 사이 애 노젠 모드 설치 추가 Google 애플리케이션 (가이드의 두 번째 부분)와 부분.
  3. 완료되면 장치를 재부팅하십시오. 부팅되면 시간이 걸립니다. 먼저 전화를 시작한 다음 암호화 암호를 묻고 부팅 될 때까지 시간이 걸립니다.

거기 당신은 간다, 그것은 작동합니다. 처음에는 전화가 설정되면 잠시 기다리십시오. 너무 빨리 돌진하면 설치 마법사가 약간 충돌 할 수 있지만 충돌이 발생하면 자동으로 다시 시작됩니다.

CyanogenMod와 Android Encryption이 작동하는 방식에 대한 아주 작은 지식으로 포맷 중에 중요한 Cyanogen 또는 Android 파일을 삭제하여 부팅을 중지시키는 것으로 생각합니다.


답변

휴대 전화에서 암호화가 작동하지 않습니다 (SGS5; CM13, TWRP 3.0.2-2). 나는 항상 검은 색 화면을 받았습니다.

쉘 명령을 사용하고 싶지 않았으므로 다른 방법을 찾았습니다.

SuperSU를 설치하고 앱에서 제거한 다음 SU-Remover 를 플래시했습니다 .

그 후 메뉴에서 암호화를 사용할 수있었습니다.

경고:

  • 암호화가 내 데이터 및 앱 (내부 SD의 파일 포함)을 모두 삭제 했으므로 먼저 백업하십시오 !
  • 암호화 후, 2GB의 내부 공간 만 남았습니다 (일반적으로 11GB). Cyanogenmod 자체를 제거하고 전체 지우기를 수행하고 Cyanogenmod를 다시 설치하고 내 공간을 다시 확보하기위한 다른 암호화 시도가 필요했습니다.
  • 또한 루트를 다시 활성화해야합니다 .BETA-SuperSU-v2.68-20160228150503 을 사용했습니다 ( twrp 로 플래시).