คุณเข้ารหัสอุปกรณ์ของคุณที่ใช้ CyanogenMod 12.1 อย่างไร


9

การตั้งค่า 'เข้ารหัสโทรศัพท์' ของ CyanogenMod 12 และ 12.1 นั้นใช้งานไม่ได้และได้ผ่านมาระยะหนึ่งแล้ว มีวิธีการเข้ารหัสโทรศัพท์ในวิธีอื่นบ้างไหม? CM สามารถถูกไซด์โหลดเข้าสู่โทรศัพท์ด้วยไดเรกทอรีเข้ารหัส / ข้อมูลได้หรือไม่? มีวิธีอื่นในการรักษาข้อมูลของคุณให้ปลอดภัยและมีเสียงหรือไม่? อุปกรณ์ที่ฉันกำลังทำงานคือ Verizon LG G3

คำตอบ:


6

มีคำสั่งระดับต่ำ (เอ้อ) ที่สามารถใช้ในเชลล์เพื่อเข้ารหัสพาร์ติชันข้อมูลผู้ใช้ของคุณ คำเตือน / คำเตือน: คำแนะนำต่อไปนี้จะล้างข้อมูลของคุณให้แน่ใจว่าคุณทำการสำรองข้อมูลหากจำเป็น

ทำตามขั้นตอนเหล่านี้คุณควรจะสามารถล้างพาร์ติชันข้อมูลของคุณและทำการเข้ารหัสในภายหลัง (คล้ายกับการรีเซ็ตเป็นค่าจากโรงงาน):

  1. บูตโทรศัพท์ของคุณตามปกติ (ไม่สามารถกู้คืนได้อีกต่อไปหรือฉันพบปัญหาอื่น)
  2. ตรวจสอบให้แน่ใจว่าเปิดใช้งานโหมดการแก้ไขข้อบกพร่อง USB (adb) และ การเข้าถึงรูทสำหรับ ADB
  3. ใส่เปลือกรากที่มีตามมาด้วยadb rootadb shell
  4. ทางเลือก: ดูบันทึกโดยเรียกใช้adb logcatในเชลล์อื่น
  5. ป้อนคำสั่งนี้พิมพ์รหัสผ่านของคุณแล้วกด Enter นี่จะเป็นการตั้งรหัสผ่านของคุณ คำสั่งนี้อ่านอินพุตหนึ่งบรรทัด ( head -1) ตัดการขึ้นบรรทัดใหม่ต่อท้ายจาก Enter ( tr -d '\n') และแปลงเป็นการแสดงเลขฐานสิบหก ( hexdump ...) ถ้ามันดูน่ากลัวหรือคุณไม่แน่ใจว่าคำสั่งนี้ทำอะไรดูด้านล่าง

    vdc cryptfs enablecrypto wipe password $(head -1 | tr -d '\n' | hexdump -ve '1/1 "%.2x"')
    
  6. หากทุกอย่างเรียบร้อยดีอุปกรณ์ของคุณจะตั้งค่าคีย์และรีบูตเพื่อทำการเข้ารหัสให้เสร็จสมบูรณ์

ดังกล่าวข้างต้นvdcคำสั่ง (Volume "ภูตลูกค้า") สื่อสารกับvold(เล่มภูต) มี subcommands บางอย่างเช่นcryptfsการเข้ารหัส คำenablecryptoสั่งย่อยมีสองโหมด: wipe(เคลียร์/dataทั้งหมด) และinplace(ควรใช้การเข้ารหัสขณะคัดลอกต้นฉบับของคุณ/dataภายในคอนเทนเนอร์)

จากนั้นมีสี่ตัวเลือกให้เริ่มต้นด้วย Android 5.0 หนึ่งในนั้นคือตัวเลือกpasswordที่ยอมรับลำดับเลขฐานสิบหกเดียวเป็นกุญแจ ดังนั้นหากรหัสผ่านของคุณคือfooการแสดงเลขฐานสิบหกคือ666f6f( fเป็นเลขฐานสิบ66หกoคือ6fดูhttp://www.asciitable.com/ ) คำสั่งสำหรับสิ่งนี้คือ:

vdc cryptfs enablecrypto wipe password 666f6f

สิ่งนี้ได้รับการทดสอบบน Nexus 5 (ชื่อรหัสหัวค้อนเรียกใช้ cm-12.1-20150814) ซึ่งมีพาร์ติชันแยกต่างหากสำหรับการจัดเก็บข้อมูลเมตา มันเป็นสิ่งสำคัญที่พาร์ทิชัน UserData มีชุดธงตามด้วยเส้นทางไปยังพาร์ทิชันหรือสตริงพิเศษ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

Wow @Lekensteyn ขอบคุณที่สละเวลาเขียนสิ่งนี้ ฉันจะต้องใช้เวลาช่วงสุดสัปดาห์นี้เพื่อพยายามตั้งค่านี้ ในกรณีที่ฉันหมดแรงฉันสามารถเช็ดทุกอย่างจาก TWRP แล้วลองอีกครั้งใช่ไหม
Zlatty

1
ใช่มันเป็นเพียงพาร์ติชันข้อมูล ฉันตั้งใจจะเช็ดทุ่นระเบิดหลายครั้งเมื่อฉันทำการทดลอง
Lekensteyn

2
LPT: ตั้งแต่ 6.0 (Marshmallow) vdc ใช้รหัสผ่านที่ไม่ได้เข้ารหัส ASCII เป็นพารามิเตอร์ (= cleartext) มันค่อนข้างดีที่จะฝึกซ้อมกับตาราง ASCII เมื่อฉันพบสิ่งนี้ - เพียงไม่กี่นาทีหลังจากที่ฉันถูกขอให้ป้อนรหัสผ่านของฉัน ฉันต้องใส่รหัสผ่านของฉันใน ASCII เพราะความผิดของฉันฮ่า ๆ
Denys Vitali

4

สำหรับฉันคำตอบเดิมไม่ทำงานตามที่คาดไว้ ดูเหมือนว่าจะเข้ารหัสสำเร็จแล้ว แต่ UI กลับมาเร็วมากและการตั้งค่า "การเข้ารหัส" ไม่ได้แสดงว่าอุปกรณ์นั้นถูกเข้ารหัส ฉันใช้คำสั่งที่ได้รับในการอัพเดทแต่ก็ยังไม่ทำงาน ฉันลดขนาดของพาร์ติชั่นข้อมูลและทำการเข้ารหัสสำเร็จ กล่าวคือ

mount | grep dataเพื่อค้นหาอุปกรณ์บล็อกจริงของพาร์ติชันข้อมูล /dev/block/mmcblk0p26สมมติว่ามันเป็น

umount /data เพื่อให้ ext-tools ทำงาน

e2fsck -f -p /dev/block/mmcblk0p26 เพื่อไม่ให้เกิดปัญหาสำหรับการปรับขนาดที่กำลังจะมาถึง

tune2fs -l /dev/block/mmcblk0p26 เพื่อให้ได้จำนวนบล็อก 3057395สมมติว่ามันเป็น

resize2fs /dev/block/mmcblk0p26 3057375คือ substract จำนวนที่เพียงพอเช่น 20 จากจำนวนบล็อกดั้งเดิม

e2fsck -f -p /dev/block/mmcblk0p26 พบ inode ที่วางผิดสำหรับฉัน

ฉันยังต้องติดพาร์ทิชันเพื่อให้ได้รับถือของ/system resize2fsในระบบของฉันไบนารีนั้นเชื่อมโยงกับ libc เวอร์ชัน 64 บิต แต่ TWRP ที่ฉันใช้ดูเหมือนจะไม่ได้ให้สิ่งนั้น env LD_LIBRARY_PATH=/system/lib64ดังนั้นผมจึงจำเป็นต้องใช้คำนำหน้าคำสั่งด้วย


สำหรับระบบไฟล์ F2FS: android.stackexchange.com/questions/146081/…
Marc.2377

2

ในฐานะของCM12.1 2015/10/15 คำตอบโดย Lekensteyn ไม่ทำงาน

เห็นได้ชัดว่าmkfs.f2fsซึ่งจำเป็นในการสร้างระบบไฟล์ถูกย้ายจาก/system/bin/ไปยัง/sbin/

เราต้องต่อสู้กับ SELINUX ด้วย ซึ่งหมายความว่าเราต้องทำตามขั้นตอนเพิ่มเติมหลายประการ:

  1. adb root
  2. adb shell
  3. setenforce 0
  4. mount -oremount, rw / system
  5. ln -s /sbin/mkfs.f2fs /system/bin/mkfs.f2fs
  6. vdc cryptfs enablecrypto ล้างรหัสผ่าน 666f6f

2

การอัปเดตอีกครั้ง - CM13 9 ม.ค. 2016 สร้างโดยใช้นูเบีย Z7 แม็กซ์โทรศัพท์ NX505J

คำสั่งนี้ ( ln -s /sbin/mkfs.f2fs /system/bin/mkfs.f2fs) ไม่จำเป็นอีกต่อไปเนื่องจากไฟล์ยังคงอยู่ที่นี่อีกครั้ง ไม่จำเป็นต้องสร้างลิงก์สัญลักษณ์

คำสั่งนี้ไม่จำเป็นต้องอยู่ใน HEX อีกต่อไปและถ้าคุณป้อน hex ของคุณ PW จะเป็นเลขฐานสิบหก
cryptfs enablecrypto wipe password 666f6f- สิ่งนี้สร้างรหัสผ่านสำหรับฉัน666f6fไม่ได้foo

ฉันยังคงค้นคว้าปัญหานี้เพราะฉันได้ผ่านบล็อกเพิ่มเติมที่จำเป็นสำหรับข้อมูลเมตา ตอนนี้ฉันต้องผ่านข้อเท็จจริงที่ว่า GUI และคำสั่งด้วยตนเองเพื่อเข้ารหัสทั้งสองผลลัพธ์ในการเข้ารหัสที่ทำงานได้ผ่านวงจรบู๊ตเครื่องเดียวเท่านั้น ฉันจะรายงานกลับเมื่อฉันมีการเข้ารหัสที่ประสบความสำเร็จ

ตอนนี้ฉันเข้ารหัสและมันทำงานได้ดีและฉันบูตในครั้งแรกและมันบอกว่าโทรศัพท์ถูกเข้ารหัส การใช้ TWRP ฉันสามารถยืนยัน / ข้อมูลถูกเข้ารหัส แต่รหัสผ่าน HEX และ ASCI ที่ฉันลองใช้ใน TWRP ทั้งสองไม่ทำงาน ในการรีบูตครั้งถัดไประบบปฏิบัติการ Android จะไม่สามารถบูต CM13 ได้อย่างสมบูรณ์ ยืนยันว่าฉันมีรหัสผ่านการเข้ารหัสที่ถูกต้องจากนั้นฉันจะได้รับการเข้ารหัสที่บูตเพียงครั้งเดียวเท่านั้น หลังจากการเริ่มการเข้ารหัสสำเร็จครั้งแรกมันจะล็อคในขั้นตอนการเคลื่อนไหวของวงจรการบูตหลังจากนั้น แนวปฏิบัติด้านความปลอดภัยที่ดีที่สุดแนะนำให้ใช้การเข้ารหัสโทรศัพท์ AES256


ระบบน่าเชื่อถือด้วยการเข้ารหัสโทรศัพท์ AES256 ใน CM13 อย่างไร ฉันเปิดกระทู้เกี่ยวกับสิ่งที่นี่android.stackexchange.com/q/134981/9897
LéoLéopold Hertz 준영

2

การมี Moto X 2013 ที่ใช้ Cyanogenmod 12.1 ฉันยังไม่สามารถเข้ารหัสได้ ในที่สุดฉันก็ประสบความสำเร็จกับขั้นตอนเหล่านี้:

  1. เปิดใช้งานรูทในการตั้งค่านักพัฒนาบนโทรศัพท์และเปิดเปลือก (แอปเทอร์มินัลสามารถเปิดใช้งานได้ในการตั้งค่านักพัฒนา)
  2. ป้อนsuและยืนยันการเข้าถึงรูท
  3. เข้าสู่ setenforce 0
  4. ตอนนี้เปิดการตั้งค่าไปที่การรักษาความปลอดภัยและเลือกเข้ารหัสโทรศัพท์ Android จะรีบูตและเริ่มการเข้ารหัสโทรศัพท์

ฉันมาเพื่อแก้ปัญหานี้โดยการรวมคำตอบของศิลปะและฟอรั่มนี้


ไม่ได้ผลสำหรับฉัน Btw คุณสามารถตั้งค่าสถานะ SELinux เป็น 1 หลังจากนี้ได้หรือไม่
Marc.2377

1

หลังจาก 6 ชั่วโมงของอาการปวดจิตและเหงื่อฉันอาจจะสะดุดกับวิธีแก้ปัญหาที่เหมาะกับฉัน และมันก็เป็นอุบัติเหตุด้วย ฉันทำสิ่งนี้กับ Samsung S4 Mini ด้วย CyanogenMod 13.0 และ Android 6.0.1 ปัจจัยสำคัญที่สำคัญที่นี่คือฉันเริ่มต้นมันจากโทรศัพท์ที่สะอาด (เฟิร์มแวร์สดและไม่ได้หยั่งราก) เพราะเมื่อก่อนหน้านี้โทรศัพท์ถูกรูทแล้วโทรศัพท์ก็ไม่ต้องการทำงานเลย

ฉันใช้วิธีแก้ปัญหาของ Firelord และ Lekensteyn แต่ฉันลืมลืมบรรทัดหนึ่งจากคำสั่ง

นี่คือวิธีที่ฉันทำ:

  1. ผมหันในการแก้จุดบกพร่องของ Androidและเข้าถึงรากเพื่อADB เพียงในตัวเลือกสำหรับนักพัฒนา

  2. ในพรอมต์คำสั่ง ADB ฉันใช้adb rootและadb shellคำสั่ง หลังจากนั้นฉันเปิดพรอมต์คำสั่ง ADB อื่นและใช้adb logcatคำสั่ง

  3. ในเปลือก ADB แรกที่ผมเดินไปข้างหน้าด้วยและหลังจากนั้นsetenforce 0vdc cryptfs enablecrypto wipe password YOUR-PASSWORD

ประกาศสำคัญ:คำสั่งรหัสผ่านอาจแตกต่างจากเวอร์ชั่น Android ที่คุณใช้งานอยู่ หากคุณใช้Android 5.Xคุณต้องใช้ระบบเลขฐานสิบหก (ในบรรทัด Chr คือสัญลักษณ์ในรหัสผ่านของคุณค่าเลขฐานสิบหกจะอยู่ที่บรรทัด Hx) หากคุณใช้Android 6.Xรหัสผ่านของคุณจะเป็นรหัสผ่านที่คุณป้อน

ตามที่คุณสังเกตเห็นแล้วฉันลืมที่จะใช้mount -oremount,rw /systemคำสั่ง หลังจากนั้นฉันหน้าจอจะเป็นสีดำ เมื่อฉันเห็นว่า ADB เชลล์ที่มีการบันทึกหยุดทำงานและเสร็จสิ้นจากนั้นฉันรีบูตโทรศัพท์ แต่สำหรับทุกคนปัญหาคือว่า CyanogenMod จะไม่โหลด และฉันจัดการเพื่อแก้ไขมันค่อนข้างง่าย:

  1. ถือVol Up & Home & Powerจนกว่าจะมีการบูท TWRP ขึ้น มันจะขอรหัสผ่านการเข้ารหัสของคุณ
  2. ทำCyanogenMod ติดตั้งชิ้นส่วนด้วย Google Apps เพิ่มเติม (ส่วนที่สองของคู่มือ)
  3. หลังจากเสร็จสิ้นจากนั้นรีบูทอุปกรณ์ เมื่อบูทขึ้นแล้วมันจะใช้เวลาสักครู่ ก่อนจะเริ่มโทรศัพท์จากนั้นจะถามรหัสผ่านการเข้ารหัสและจากนั้นจะใช้เวลาสักครู่จนกว่าจะเริ่มต้นขึ้น

ไปแล้วมันควรจะทำงาน ในตอนแรกเมื่อตั้งค่าโทรศัพท์แล้วให้รอสักครู่ อาจมีความผิดพลาดเล็กน้อยสำหรับตัวช่วยสร้างการตั้งค่าถ้าคุณเร่งความเร็วเร็วเกินไป แต่จะเริ่มต้นใหม่โดยอัตโนมัติเมื่อเกิดปัญหา

ในความรู้เล็ก ๆ น้อย ๆ ของฉันเกี่ยวกับวิธีการทำงานของ CyanogenMod และการเข้ารหัส Android ฉันคิดว่าในระหว่างการฟอร์แมตมันจะลบไฟล์ Cyanogen หรือ Android ที่สำคัญบางไฟล์


1

การเข้ารหัสไม่ทำงานบนโทรศัพท์ของฉัน (SGS5; CM13, TWRP 3.0.2-2) - ฉันมีหน้าจอสีดำอยู่เสมอ

ฉันไม่ต้องการใช้คำสั่งเชลล์ดังนั้นฉันจึงพบวิธีอื่น:

ผมได้มีการติดตั้ง SuperSU ฉันยกเลิกการติดตั้งใน App แล้วประกายSU-Remover

หลังจากนั้นฉันสามารถใช้การเข้ารหัสจากเมนู

คำเตือน:

  • การเข้ารหัสลบข้อมูลและแอพของฉันทั้งหมด (รวมถึงไฟล์ใน SD ภายใน) ดังนั้นทำการสำรองข้อมูลก่อน !
  • หลังจากการเข้ารหัสฉันเหลือพื้นที่ภายใน 2 GB เท่านั้น (ปกติ 11 GB) - ฉันต้องทำการลบแบบเต็ม (เช่นลบ Cyanogenmod เอง) ติดตั้ง Cyanogenmod ใหม่และพยายามเข้ารหัสอีกครั้งเพื่อให้ Space ของฉันกลับมา
  • คุณต้องเปิดใช้งานรูทอีกครั้งฉันใช้BETA-SuperSU-v2.68-20160228150503สำหรับสิ่งนั้น (แฟลชด้วย twrp)
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.