איך 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. יש להשתמש בקובץ הגיבוי במקום זאת.
- האפליקציה לא מבקשת גישה למיקום, לאנשי הקשר או ל"כל הקבצים".
- כספת ריקה בתבנית שגויה. תבנית שלא פותחת אף כספת פותחת כספת ריקה במקום שגיאה, כך שמי שמכריח אותך לפתוח את האפליקציה לא יכול לדעת מה עוד יש בה. ניסיונות שגויים עדיין נספרים, תמונות פולשים עדיין מצולמות וזמני ההמתנה עדיין חלים. אפשר לכבות את זה בהגדרות > אבטחה > כספת ריקה בתבנית שגויה.
בינה מלאכותית וניחוש תבניות
- בינה מלאכותית לא יכולה לדלג על החישוב. כל ניחוש עדיין צריך להריץ Argon2id עם 64 MiB זיכרון. בינה מלאכותית לא שוברת את Argon2id או את AES, ולכן אף ניחוש לא נעשה זול יותר.
- מה שבינה מלאכותית משנה הוא סדר הניחושים. היא יכולה ללמוד אילו צורות אנשים אוהבים (אותיות, ריבועים, פינות התחלה מועדפות) ולנסות אותן קודם. היא גם יכולה לעזור לקרוא תבנית מסרטון שצולם מעבר לכתף שלך, או מכתמים על המסך.
- לכן ההגנות נוגעות לתבנית, לא לחישוב. מד החוזק מזהיר מפני צורות נפוצות. תבנית + 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 מותקנת.
הכספת הריקה מטעה רק את המסך
מי שיכול לקרוא את קובצי האפליקציה (למשל בטלפון עם הרשאות root) יכול לספור את תיקיות הכספות ולראות שההגדרה הזו מופעלת. בנוסף, אחרי 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 שניות אחרי שזה מסתיים.
כל הכספות משתפות מלח מכשיר אחד
כל הכספות בטלפון משתמשות באותו מלח מכשיר. אם המלח הזה אצל מישהו, ניחוש אחד בודק את כל הכספות בבת אחת. העלות של תקיפת כספת יחידה נשארת זהה.
דברים שאף אפליקציה לא יכולה למנוע
מישהו שמסתכל עליך בזמן שהתבנית מצוירת, או מצלמה שמצלמת את המסך שלך.
אם איבדת את שניהם, אף אחד לא יכול לעזור
אם איבדת גם את התבנית וגם את ביטוי השחזור, אף אחד לא יוכל לשחזר את הקבצים שלך. גם לא אנחנו.