LifeVeil ปกป้องไฟล์ของคุณอย่างไร
หน้านี้อธิบายด้วยคำง่าย ๆ ว่า LifeVeil ทำอะไร และสิ่งที่ทำไม่ได้ เราอยากให้คุณรู้ข้อจำกัด มากกว่าให้เชื่อคำสัญญาที่ใหญ่เกินจริง
สรุปสั้น ๆ
- การเข้ารหัสทั้งหมดเกิดขึ้นในโทรศัพท์ของคุณ ไม่มีเซิร์ฟเวอร์ของ LifeVeil และไม่มีบัญชี
- ไฟล์ของคุณถูกเข้ารหัสด้วยกุญแจแบบสุ่ม มีเพียงรูปแบบ วลีกู้คืน หรือลายนิ้วมือของคุณเท่านั้นที่ปลดล็อกกุญแจนั้นได้
- เราซึ่งเป็นผู้พัฒนาไม่เคยมีรูปแบบ วลี หรือกุญแจของคุณ เราเปิดไฟล์ของคุณไม่ได้ และรีเซ็ตรูปแบบของคุณไม่ได้
- เราใช้การเข้ารหัสที่มีอยู่ใน Android และไลบรารี libsodium ที่เป็นที่รู้จักดี เราไม่ได้เขียนการเข้ารหัสขึ้นเอง
- LifeVeil ยังไม่เคยผ่านการตรวจสอบความปลอดภัยจากผู้ตรวจสอบอิสระ
จากรูปแบบของคุณสู่กุญแจ
คุณวาดรูปแบบบนตาราง 5×5 โดยใช้อย่างน้อย 6 จุด และไม่ใช้จุดใดซ้ำ LifeVeil เปลี่ยนรูปแบบเป็นกุญแจด้วย Argon2id จาก libsodium (เวอร์ชัน 1.0.20 บน Android)
- การตั้งค่า: หน่วยความจำ 64 MiB, 3 รอบ, 1 เลน, กุญแจ 256 บิต
- Argon2id ถูกออกแบบให้ช้าโดยตั้งใจ และใช้หน่วยความจำมากในการเดาแต่ละครั้ง ทำให้การเดาด้วยการ์ดจอมีต้นทุนสูงขึ้นมาก
- บนโทรศัพท์ทดสอบของเรา การปลดล็อกหนึ่งครั้งใช้เวลาประมาณ 0.6 ถึง 0.9 วินาที
- รูปแบบจะถูกผสมกับ ซอลต์ของอุปกรณ์ แบบสุ่มขนาด 16 ไบต์ ซอลต์นี้เก็บไว้ในแอป โดยเข้ารหัสด้วยกุญแจที่อยู่ใน Android Keystore ซึ่งคัดลอกออกจากโทรศัพท์ไม่ได้
- ไม่มีการเก็บสำเนาของรูปแบบ แอปตรวจรูปแบบโดยลองปลดล็อกกุญแจ
- หลังจากวาดรูปแบบผิด 5 ครั้งติดต่อกัน คุณต้องรอ 30 วินาที เวลารอจะเพิ่มเป็นสองเท่าทุกครั้งที่ผิดเพิ่ม สูงสุด 16 นาที
ไฟล์ถูกเข้ารหัสอย่างไร
- ห้องนิรภัยแต่ละห้องมี กุญแจหลัก แบบสุ่มขนาด 256 บิต กุญแจจากรูปแบบและกุญแจกู้คืนของคุณมีหน้าที่เพียง "ห่อ" (เข้ารหัส) กุญแจหลักนี้
- ไฟล์ ภาพขนาดย่อ และรายการของคุณ (ชื่อไฟล์เดิม วันที่ ขนาด) ถูกเข้ารหัสด้วย AES-256-GCM โดยใช้การเข้ารหัสที่มีอยู่ใน Android นอกจากนี้ GCM ยังตรวจพบได้หากไฟล์ถูกแก้ไขหรือสลับ
- ไฟล์ภายในแอปมีชื่อแบบสุ่ม ไฟล์ขนาดใหญ่ถูกเข้ารหัสเป็นชิ้นละ 1 MiB วิดีโอจึงเล่นได้โดยไม่ต้องเขียนสำเนาที่ไม่เข้ารหัสลงในที่เก็บข้อมูลเลย
- สำหรับรูปภาพ JPEG รายละเอียดที่ซ่อนอยู่ (EXIF เช่น กล้องและวันที่) จะถูกเก็บแยกไว้ และเข้ารหัสด้วยเช่นกัน
- เมื่อแอปล็อก แอปจะเขียนทับกุญแจที่อยู่ในหน่วยความจำด้วยเลขศูนย์
วลีกู้คืน
- เมื่อคุณสร้างห้องนิรภัย ตัวสร้างตัวเลขสุ่มที่ปลอดภัยของโทรศัพท์จะเลือก คำภาษาอังกฤษ 9 คำ คำเหล่านี้มาจากรายการคำที่ใช้บ่อยสองรายการ รายการละ 1,024 คำ เรียงตามลำดับตายตัวแบบใดแบบหนึ่งจาก 4 แบบ ซึ่งเท่ากับความสุ่ม 92 บิต คำเหล่านี้เป็นภาษาอังกฤษในทุกภาษาของแอป
- วลีจะผ่านการตั้งค่า Argon2id ชุดเดียวกัน และปลดล็อกกุญแจหลักได้ด้วยตัวเอง วลีไม่ต้องใช้ซอลต์ของอุปกรณ์ จึงใช้ได้แม้ในตอนที่รูปแบบใช้ไม่ได้แล้ว
- สำเนาของวลีถูกเก็บไว้ในโทรศัพท์ โดยเข้ารหัสสองชั้น: ชั้นหนึ่งด้วยกุญแจหลัก และอีกชั้นด้วยกุญแจใน Android Keystore คุณดูวลีได้ในการตั้งค่าหลังจากวาดรูปแบบอีกครั้ง
- เมื่อคุณเปลี่ยนรูปแบบ หรือใช้วลีเพื่อกลับเข้าไป คุณจะได้วลีใหม่ วลีเดิมจะใช้ไม่ได้
ลายนิ้วมือ
การปลดล็อกด้วยลายนิ้วมือเป็นตัวเลือก Android เป็นผู้ตรวจลายนิ้วมือ ไม่ใช่ LifeVeil แอปไม่เคยได้รับลายนิ้วมือของคุณ กุญแจใน Android Keystore ที่ใช้ได้เฉพาะทันทีหลังการตรวจสอบไบโอเมตริกที่รัดกุมเท่านั้น จะเป็นตัวปลดล็อกกุญแจหลัก หากมีคนเพิ่มลายนิ้วมือใหม่ลงในโทรศัพท์ กุญแจนี้จะใช้ไม่ได้ และคุณต้องใช้รูปแบบอีกครั้ง
ไฟล์สำรอง
- ไฟล์สำรองคือไฟล์
.lvbหนึ่งไฟล์ ซึ่งเก็บรายการของคุณไว้ตามสภาพที่เข้ารหัสอยู่แล้ว พร้อมสำเนาของกุญแจหลักที่ถูกห่อไว้สองชุด: ชุดหนึ่งสำหรับรูปแบบที่คุณวาดตอนสร้างไฟล์สำรอง และอีกชุดสำหรับวลีกู้คืนที่คุณมีในตอนนั้น - สำเนาสำหรับรูปแบบใช้ซอลต์แบบสุ่มใหม่สำหรับไฟล์สำรองแต่ละไฟล์ ไม่ใช่ซอลต์ของอุปกรณ์ นี่คือสิ่งที่ทำให้คุณเปิดไฟล์สำรองบนโทรศัพท์เครื่องใหม่ได้
- ส่วนหัวของไฟล์ได้รับการป้องกัน จึงตรวจพบได้หากมีการแก้ไขหรือสลับส่วนต่าง ๆ
- คุณเลือกที่บันทึกไฟล์ด้วยหน้าจอบันทึกของ Android เอง ไฟล์ไม่เคยผ่านเรา
- หากต้องการกู้คืน ให้เปิดไฟล์ด้วยรูปแบบหรือวลีของไฟล์นั้น จากนั้นคุณจะวาดรูปแบบใหม่และได้วลีกู้คืนใหม่
การป้องกันอื่น ๆ ในแอป
- การจับภาพหน้าจอ การบันทึกหน้าจอ และภาพตัวอย่างในรายการแอปล่าสุด ถูกบล็อกในทุกหน้าจอ
- โดยค่าเริ่มต้น แอปจะล็อกทันทีที่คุณออกจากแอป คุณเลือกเป็น 30 วินาทีหรือ 1 นาทีแทนได้
- การสำรองข้อมูลบนคลาวด์และการโอนย้ายข้อมูลระหว่างโทรศัพท์ของ Android เองไม่รวมข้อมูลของ LifeVeil ให้ใช้ไฟล์สำรองแทน
- แอปไม่ขอสิทธิ์เข้าถึงตำแหน่ง รายชื่อติดต่อ หรือ "ไฟล์ทั้งหมด"
- ตู้เซฟว่างเมื่อรูปแบบไม่ถูกต้อง รูปแบบที่ไม่เปิดตู้เซฟใดเลยจะเปิดตู้เซฟว่างแทนการแจ้งข้อผิดพลาด คนที่บังคับให้คุณเปิดแอปจึงไม่รู้ว่ามีอะไรอีก การลองผิดยังคงถูกนับ รูปผู้บุกรุกยังคงถูกถ่าย และเวลารอยังคงมีผล คุณปิดได้ที่ การตั้งค่า > ความปลอดภัย > แสดงตู้เซฟว่างเมื่อรูปแบบไม่ถูกต้อง
AI และการเดารูปแบบ
- AI ข้ามการคำนวณไม่ได้ การเดาทุกครั้งยังต้องผ่าน Argon2id ที่ใช้หน่วยความจำ 64 MiB AI ไม่ได้เจาะ Argon2id หรือ AES การเดาแต่ละครั้งจึงไม่ได้ถูกลงเลย
- สิ่งที่ AI เปลี่ยนคือลำดับการเดา AI สามารถเรียนรู้รูปทรงที่คนชอบใช้ (ตัวอักษร สี่เหลี่ยม มุมเริ่มต้นที่นิยม) และลองรูปทรงเหล่านั้นก่อน AI ยังช่วยอ่านรูปแบบจากวิดีโอที่ถ่ายจากด้านหลังคุณ หรือจากรอยนิ้วบนหน้าจอได้ด้วย
- การป้องกันจึงอยู่ที่ตัวรูปแบบ ไม่ใช่การคำนวณ ตัววัดความแข็งแรงจะเตือนเมื่อใช้รูปทรงที่พบบ่อย รูปแบบ + PIN เพิ่ม PIN 4–6 หลัก รูปแบบที่ถูกถ่ายวิดีโอไว้จึงไม่พอ ซ่อนเส้นรูปแบบ ทำให้ไม่มีเส้นให้ถ่าย ซอลต์ของอุปกรณ์ใน Android Keystore ป้องกันการเดานอกโทรศัพท์
ข้อจำกัดที่คุณควรรู้
ไม่มีแอปใดป้องกันได้ทุกอย่าง นี่คือข้อจำกัดตามจริงของ LifeVeil
รูปแบบง่าย ๆ อาจถูกเดาได้
รูปทรงที่สั้นหรือพบบ่อย (ตัว L ตัว Z เส้นตรง) อาจถูกเดาได้จากการแอบดูคุณ จากรอยนิ้วบนหน้าจอ หรือภายในไม่กี่ครั้ง รูปแบบที่คนใช้จริงเดาได้ง่ายกว่าที่จำนวนรูปแบบที่เป็นไปได้บอกไว้มาก ให้ใช้จุดมากขึ้นและหักมุมมากขึ้น แอปจะเตือนคุณเมื่อรูปแบบง่ายมาก
การเดาอาจใช้เวลานานเท่าใด
ภายในแอป การลองแต่ละครั้งใช้เวลาประมาณหนึ่งวินาที และเวลารอจะเพิ่มขึ้นหลังผิด 5 ครั้ง แต่คนที่มี ไฟล์สำรอง ของคุณ หรือคนที่ดึงซอลต์ของอุปกรณ์ออกมาจากโทรศัพท์ที่ รูท แล้ว สามารถเดาบนคอมพิวเตอร์แทนได้โดยไม่ต้องรอ Argon2id ทำให้การเดาช้าลง แต่รูปแบบมีความเป็นไปได้น้อยกว่ารหัสผ่านยาว ๆ มาก ค่าประมาณคร่าว ๆ สำหรับการ์ดจอระดับสูงหนึ่งใบ (ระดับ RTX 4090) ที่เดาได้ประมาณ 1,000 ครั้งต่อวินาที:
| สิ่งที่ถูกเดา | ความเป็นไปได้ | เวลา การ์ดจอหนึ่งใบ |
|---|---|---|
| รูปแบบที่พบบ่อยที่สุด 10,000 แบบ | 104 | ประมาณ 10 วินาที |
| รูปแบบ 6 จุดทุกแบบ | 1.28 × 108 | ประมาณ 1.5 วัน |
| รูปแบบ 7 จุดทุกแบบ | 2.42 × 109 | ประมาณ 28 วัน |
| รูปแบบ 8 จุดทุกแบบ | 4.36 × 1010 | ประมาณ 1.4 ปี |
| วลีกู้คืน (92 บิต) | 4.95 × 1027 | ประมาณ 1.6 × 1017 ปี |
ตัวเลขเหล่านี้เป็นค่าประมาณ ไม่ใช่ค่าที่วัดจริง จำนวนรูปแบบเป็นขีดจำกัดบน รูปแบบที่คนใช้จริงมีน้อยกว่ามาก ฮาร์ดแวร์ที่มากขึ้นหรือเร็วขึ้นทำให้เดาได้เร็วขึ้นตามสัดส่วน
เก็บไฟล์สำรองไว้เป็นส่วนตัว
ไฟล์สำรองไม่มีซอลต์ของอุปกรณ์ ใครก็ตามที่ได้ไฟล์ไปจึงลองเดารูปแบบแบบออฟไลน์ได้ ดังที่แสดงไว้ด้านบน เก็บไฟล์ไว้เฉพาะในที่ที่มีเพียงคุณเข้าถึงได้ เช่น บัญชีคลาวด์ของคุณเอง และใช้รูปแบบที่ยาวขึ้น
โทรศัพท์ที่รูทหรือติดมัลแวร์
หากมีคนเรียกใช้โค้ดด้วยสิทธิ์ของแอปได้ (เช่น บนโทรศัพท์ที่รูทแล้ว หรือด้วยมัลแวร์ที่ควบคุมเครื่องได้ทั้งหมด) เขาจะปลดล็อกซอลต์ของอุปกรณ์และเดาแบบออฟไลน์ได้ ขณะที่ห้องนิรภัยเปิดอยู่ กุญแจจะอยู่ในหน่วยความจำ และอาจถูกอ่านได้ด้วยสิทธิ์รูทหรือดีบักเกอร์ สำเนาบางส่วนที่สร้างขึ้นภายใน Android และ Flutter รวมถึงรูปภาพที่แสดงบนหน้าจอ ไม่สามารถล้างออกจากหน่วยความจำได้ทันที
ข้อมูลบางอย่างมองเห็นได้
จำนวนไฟล์ที่เข้ารหัสในที่เก็บข้อมูลของแอป ขนาดคร่าว ๆ และเวลาที่สร้างหรือเปลี่ยนแปลงไฟล์ ไม่ได้ถูกซ่อน รวมถึงการที่ติดตั้ง LifeVeil ไว้ก็ไม่ได้ถูกซ่อนเช่นกัน
ตู้เซฟว่างหลอกได้แค่หน้าจอ
คนที่อ่านไฟล์ของแอปได้ (เช่น บนโทรศัพท์ที่รูท) สามารถนับโฟลเดอร์ตู้เซฟและเห็นว่าการตั้งค่านี้เปิดอยู่ และหลังจากวาดรูปแบบผิด 5 ครั้ง แอปจะให้รอ ซึ่งบอกว่ารูปแบบก่อนหน้าไม่ได้เปิดอะไรเลย
การปลอมตัวเปลี่ยนแค่หน้าจอหลัก
- เปลี่ยนเฉพาะไอคอนและชื่อบนตัวเรียกใช้งานเท่านั้น รายการในการตั้งค่า > แอป ข้อมูลแอป และหน้าจอพื้นที่เก็บข้อมูลของโทรศัพท์ยังแสดง LifeVeil
- โปรแกรมอ่านหน้าจออาจยังอ่านว่า "LifeVeil" เช่น ตัวเรียกใช้งานของ Samsung One UI จะส่งชื่อแอปจริงให้ TalkBack และแอปเปลี่ยนส่วนนี้ไม่ได้
- เมนูแชร์ของ Android แสดงชื่อแอปจริงเสมอ LifeVeil จึงออกจากเมนูแชร์เมื่อคุณเปลี่ยนไอคอน คุณเปิดกลับได้
- คำขอสิทธิ์ของ Android แสดงชื่อจริง แอปจึงขอสิทธิ์ก่อนที่คุณจะเปลี่ยนไอคอน
- ขณะที่ไอคอนถูกเปลี่ยน แอปจะไม่ส่งการแจ้งเตือน
- รหัสปลอมตัว (4 ถึง 8 หลัก) ใช้แสดงหน้าจอล็อกเท่านั้น ไม่ได้เปิดไฟล์ของคุณ รหัสนี้เก็บเป็นแฮชที่ผสมซอลต์ แต่เมื่อความเป็นไปได้มีน้อยขนาดนี้ หากมีคนได้ไฟล์ไปก็หารหัสได้ง่าย
ลายนิ้วมือเป็นทางที่อ่อนกว่า
การปลดล็อกด้วยลายนิ้วมือข้าม Argon2id ความแข็งแรงขึ้นอยู่กับเซ็นเซอร์ลายนิ้วมือและ Android Keystore ของโทรศัพท์คุณ คุณปิดได้ในการตั้งค่าทุกเมื่อ
รูปถ่ายผู้บุกรุก
แอปไม่เล่นเสียงชัตเตอร์ แต่โทรศัพท์ที่ขายในบางประเทศ เช่น ญี่ปุ่นและเกาหลี จะเล่นเสียงนี้เสมอ จะไม่มีการถ่ายรูปหากแอปอื่นกำลังใช้กล้องอยู่ หรือไม่มีกล้องหน้า จนกว่าคุณจะปลดล็อกห้องนิรภัยห้องแรกที่สร้างไว้ รูปจะถูกปิดผนึกด้วยกุญแจใน Android Keystore
รายละเอียดของรูปภาพ
- สำหรับรูปภาพ HEIC, PNG และ WebP รายละเอียดที่ซ่อนอยู่ (EXIF) จะยังอยู่ในไฟล์ แต่ไฟล์ทั้งไฟล์ยังคงถูกเข้ารหัส
- บน Android 10 ขึ้นไป Android จะลบตำแหน่ง GPS ออกจากรูปภาพที่ LifeVeil อ่าน เพราะแอปไม่ขอสิทธิ์เข้าถึงตำแหน่ง เมื่อลบต้นฉบับออกจากแกลเลอรี ตำแหน่งนั้นก็จะหายไป
- รูปภาพที่เพิ่มผ่านตัวเลือกรูปภาพของ Android จะได้ชื่อใหม่ตามวันที่ เพราะตัวเลือกไม่ให้ชื่อเดิมมา
การล็อกจะหยุดชั่วคราวระหว่างหน้าจอของระบบ
ขณะที่หน้าจอของระบบเปิดอยู่ (คำขอสิทธิ์ การยืนยันการลบ ตัวเลือกรูปภาพหรือไฟล์ หน้าต่างลายนิ้วมือ) และขณะที่การนำเข้าหรือส่งออกกำลังทำงาน แอปจะรอก่อนล็อก หากคุณออกจากแอปไปแล้ว แอปจะล็อก 2 วินาทีหลังจากนั้น
ห้องนิรภัยใช้ซอลต์ของอุปกรณ์ร่วมกัน
ห้องนิรภัยทั้งหมดในโทรศัพท์หนึ่งเครื่องใช้ซอลต์ของอุปกรณ์เดียวกัน หากมีคนได้ซอลต์นั้นไป การเดาหนึ่งครั้งจะทดสอบได้ทุกห้องนิรภัยพร้อมกัน ต้นทุนในการโจมตีห้องนิรภัยห้องเดียวยังเท่าเดิม
สิ่งที่ไม่มีแอปใดหยุดได้
คนที่แอบดูคุณวาดรูปแบบ หรือกล้องที่ถ่ายหน้าจอของคุณ
หากทำหายทั้งสองอย่าง จะไม่มีใครช่วยได้
หากคุณทำทั้งรูปแบบและวลีกู้คืนหาย จะไม่มีใครกู้คืนไฟล์ของคุณได้ แม้แต่เรา