איך LifeVeil מגינה על הקבצים שלך
הדף הזה מסביר במילים פשוטות מה LifeVeil עושה, וגם מה היא לא יכולה לעשות. אנחנו מעדיפים שתכירו את המגבלות מאשר שתסמכו על הבטחה גדולה מדי.
בקצרה
- כל ההצפנה מתבצעת בטלפון שלך. אין שרת של LifeVeil ואין חשבון.
- הקבצים של כל כספת מוצפנים במפתח אקראי. רק התבנית של אותה כספת (יחד עם ה-PIN שלה ברמה העליונה), ביטוי השחזור שלה אם הוספת אחד, או טביעת האצבע שלך אם הפעלת אותה, יכולים לפתוח את המפתח הזה.
- כל תבנית פותחת כספת. תבנית שלא מתאימה לאף כספת שמורה פותחת כספת ריקה, ושום דבר לא נכתב עד שמוסיפים לה קובץ.
- אנחנו, המפתחים, אף פעם לא מחזיקים את התבנית, את ה-PIN, את הביטוי או את המפתחות שלך. אנחנו לא יכולים לפתוח את הקבצים שלך, ולא יכולים לאפס את התבנית שלך.
- אנחנו משתמשים בהצפנה המובנית ב-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, ואי אפשר להעתיק אותו מהטלפון.
- לא נשמר שום עותק של התבנית, מלבד העותק שנשמר יחד עם ביטוי שחזור (ראו בהמשך). האפליקציה בודקת תבנית על ידי ניסיון לפתוח איתה את המפתח.
- כל מה שמקלידים בתיבת ה-PIN שמעל הנקודות נכנס לאותה גזירת מפתח כמו התבנית. תיבה ריקה פירושה תבנית בלבד.
רמות אבטחה
לכל כספת יש רמה אחת. בוחרים אותה בהתחלה, ואפשר לשנות אותה מאוחר יותר בהגדרות > כספת > רמת אבטחה, אחרי ציור התבנית שוב.
- אבטחה מרבית (Ultra): תבנית ו-PIN בן 6 עד 8 ספרות, שניהם רק בראש שלך. בטוח גם מפני ניחוש בעזרת בינה מלאכותית. אם שוכחים אחד מהם, אי אפשר לשחזר את הכספת.
- רמה 1 (מומלץ): תבנית בלבד. בטוח אם נמנעים מצורות נפוצות. אם שוכחים אותה, אי אפשר לשחזר את הכספת.
- רמה 2: תבנית וביטוי שחזור כתוב על נייר. אפשר לחזור פנימה אם שוכחים את התבנית, אבל מי שמוצא את הנייר יכול גם הוא לפתוח את הכספת.
- רמה 3: תבנית וטביעת אצבע. הכי נוח, אבל מישהו יכול להצמיד בכוח את האצבע שלך לחיישן. טביעת אצבע עובדת לכספת אחת בלבד.
איך הקבצים מוצפנים
- לכל כספת יש מפתח ראשי אקראי של 256 ביט. מפתח התבנית ומפתח השחזור רק "עוטפים" (מצפינים) את המפתח הראשי הזה.
- הקבצים, התמונות הממוזערות ורשימת הפריטים שלך (שמות הקבצים המקוריים, תאריכים, גדלים) מוצפנים ב-AES-256-GCM, בעזרת ההצפנה המובנית של Android. GCM גם מזהה אם קובץ שונה או הוחלף.
- לקבצים בתוך האפליקציה יש שמות אקראיים. קבצים גדולים מוצפנים בחלקים של 1 MiB, כך שסרטונים מתנגנים בלי שעותק לא מוצפן ייכתב אי פעם לאחסון.
- בתמונות JPEG, הפרטים הנסתרים (EXIF, כמו המצלמה והתאריך) נשמרים בנפרד, גם הם מוצפנים.
- כשהאפליקציה ננעלת, היא דורסת באפסים את המפתחות שהיא מחזיקה בזיכרון.
ביטוי שחזור
- ביטוי שחזור הוא אופציונלי. כספת מקבלת ביטוי רק כשבוחרים ברמה 2, והוא נשמר אחרי שעוברים בוחן קצר.
- מחולל המספרים האקראיים המאובטח של הטלפון בוחר 9 מילים באנגלית. הן נלקחות משתי רשימות של 1,024 מילים נפוצות, באחד מתוך 4 סדרים קבועים. זה 92 ביט של אקראיות. המילים באנגלית בכל השפות של האפליקציה.
- הביטוי עובר באותן הגדרות Argon2id ופותח את המפתח הראשי בעצמו. הוא לא צריך את מלח המכשיר, ולכן הוא עובד גם כשהתבנית כבר לא עובדת.
- עותק של הביטוי ועותק של התבנית של הכספת (ושל ה-PIN) שמורים בטלפון, כל אחד מוצפן פעמיים: פעם במפתח הראשי ופעם במפתח של Android Keystore. כשהביטוי פותח את הכספת, האפליקציה מציגה את התבנית פעם אחת. היא נשכחת כשהאפליקציה ננעלת.
- הביטוי נשאר אותו דבר כשמשנים את התבנית. לכספת בלי ביטוי אין דרך חזרה אם התבנית נשכחת.
טביעת אצבע
פתיחה בטביעת אצבע היא אופציונלית ועובדת לכספת אחת. Android בודקת את טביעת האצבע, לא LifeVeil; האפליקציה אף פעם לא מקבלת את טביעת האצבע שלך. מפתח ב-Android Keystore שעובד רק מיד אחרי בדיקה ביומטרית חזקה פותח את המפתח הראשי. אם מישהו מוסיף טביעת אצבע חדשה לטלפון, המפתח הזה מפסיק לעבוד וצריך להשתמש שוב בתבנית.
קובץ גיבוי
- גיבוי הוא קובץ
.lvbאחד. הוא מכיל את הפריטים שלך בדיוק כפי שהם כבר מוצפנים, ועוד עותקים עטופים של המפתח הראשי: אחד לתבנית שציירת כשיצרת את הגיבוי, ואחד לביטוי השחזור, אם היה לכספת. - העותק של התבנית משתמש במלח אקראי חדש לכל גיבוי, ולא במלח המכשיר. זה מה שמאפשר לפתוח את הגיבוי בטלפון חדש.
- הכותרת של הקובץ מוגנת, כך ששינויים או חלקים שהוחלפו מתגלים.
- בוחרים איפה לשמור אותו במסך השמירה של Android עצמה. הוא אף פעם לא עובר דרכנו.
- כדי לשחזר, פותחים את הקובץ בתבנית שלו או בביטוי שלו. אחר כך מציירים תבנית חדשה. הכספת המשוחזרת מתחילה בלי ביטוי שחזור.
הגנות נוספות באפליקציה
- צילומי מסך, הקלטת מסך והתצוגה המקדימה ברשימת האפליקציות האחרונות חסומים בכל המסכים.
- כברירת מחדל, האפליקציה ננעלת ברגע שיוצאים ממנה. אפשר לבחור במקום זאת 30 שניות או דקה 1.
- גיבוי הענן המובנה של Android וההעברה מטלפון לטלפון לא כוללים את הנתונים של LifeVeil. יש להשתמש בקובץ הגיבוי במקום זאת.
- האפליקציה לא מבקשת גישה למיקום, לאנשי הקשר או ל"כל הקבצים".
- כספת ריקה לכל תבנית חדשה. כספת בלי קבצים נראית אותו דבר בין אם נשמרה ובין אם לא, כך שמי שמכריח אותך לפתוח את האפליקציה לא יכול לדעת מה עוד יש בה. אפשר לכבות את זה בהגדרות > אבטחה, ואז תבנית שלא פותחת כלום מציגה שגיאה.
האטת ניחושים
מכיוון שכל תבנית פותחת כספת, ניחוש נראה כמו פתיחה של הרבה כספות ריקות. LifeVeil מאטה את זה בלי לומר זאת על המסך, וההמתנה זהה לכל תבנית, כולל הנכונה.
- בתוך 24 שעות, 10 פתיחות של כספות בלי קבצים מוסיפות 10 שניות לכל פתיחה, 20 מוסיפות 60 שניות, ו-30 מוסיפות 5 דקות, המקסימום.
- סימנים לאוטומציה מובילים ישר למקסימום: תבניות שהושלמו בהפרש של פחות מ-2 שניות שלוש פעמים ברצף, או נגיעות שמגיעות משירותי נגישות או מקלט מוזרק במקום מאצבע.
- כל 24 שעות בלי פתיחה של כספת ריקה מקלות אותה בשלב אחד. החזרת השעון של הטלפון לאחור לא מקצרת אותה.
- זה עובד רק בתוך האפליקציה. זה לא מאט ניחוש במחשב עם קובץ מועתק (ראו את המגבלות בהמשך).
בינה מלאכותית וניחוש תבניות
- בינה מלאכותית לא יכולה לדלג על החישוב. כל ניחוש עדיין צריך להריץ Argon2id עם 64 MiB זיכרון. בינה מלאכותית לא שוברת את Argon2id או את AES, ולכן אף ניחוש לא נעשה זול יותר.
- מה שבינה מלאכותית משנה הוא סדר הניחושים. היא יכולה ללמוד אילו צורות אנשים אוהבים (אותיות, ריבועים, פינות התחלה מועדפות) ולנסות אותן קודם. היא גם יכולה לעזור לקרוא תבנית מסרטון שצולם מעבר לכתף שלך, או מכתמים על המסך.
- לכן ההגנות נוגעות לתבנית, לא לחישוב. האפליקציה מזהירה מפני צורות נפוצות. רמת האבטחה העליונה מוסיפה PIN בן 6 עד 8 ספרות, כך שתבנית שנראתה בסרטון לא מספיקה. הסתרת קו התבנית לא משאירה קו שאפשר לצלם. מלח המכשיר ב-Android Keystore מונע ניחוש מחוץ לטלפון.
מגבלות שכדאי להכיר
אף אפליקציה לא יכולה להגן מפני הכול. אלה המגבלות האמיתיות של LifeVeil.
אפשר לנחש תבניות פשוטות
צורות קצרות או נפוצות (L, Z, קו ישר) אפשר לנחש מצפייה בך, מכתמים על המסך או בכמה ניסיונות. תבניות אמיתיות קלות לניחוש הרבה יותר ממה שמספר התבניות האפשריות מרמז. כדאי להשתמש ביותר נקודות וביותר פניות. האפליקציה מזהירה מפני תבניות פשוטות מאוד, וגם לפני שהיא שומרת כספת שהתבנית שלה כוללת פחות מ-6 נקודות.
כמה זמן ניחוש יכול לקחת
בתוך האפליקציה, כל ניסיון לוקח בערך שנייה, וניחוש חוזר מאט כל פתיחה, עד 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 שנים |
אלה הערכות, לא מדידות. מספרי התבניות הם גבול עליון; תבניות אמיתיות מעטות הרבה יותר. חומרה רבה יותר או מהירה יותר מאיצה את הניחוש באופן יחסי. PIN ברמה העליונה מכפיל את המספרים האלה עד פי 108.
שמרו את קובץ הגיבוי במקום פרטי
קובץ הגיבוי לא מכיל את מלח המכשיר, ולכן כל מי שמשיג אותו יכול לנסות תבניות במצב לא מקוון, כמו שמוצג למעלה. כדאי לשמור אותו רק במקום שרק לך יש גישה אליו, כמו חשבון הענן שלך, ולהשתמש בתבנית ארוכה יותר.
ביטוי השחזור מראה גם את התבנית
מי שיש לו את ביטוי השחזור של כספת יכול לפתוח אותה, ואז האפליקציה מציגה לו את התבנית ואת ה-PIN שלה. אם אותה תבנית משמשת אותך גם במקום אחר, למשל בנעילת המסך של הטלפון, הוא ילמד גם אותה. כדאי לשמור על הנייר כמו על הקבצים עצמם.
טלפונים שעברו רוט או נדבקו
אם מישהו יכול להריץ קוד עם ההרשאות של האפליקציה (למשל בטלפון שעבר רוט, או עם תוכנה זדונית שיש לה שליטה מלאה), הוא יכול לפתוח את מלח המכשיר ולנחש במצב לא מקוון. כשהכספת פתוחה, המפתחות נמצאים בזיכרון ואפשר לקרוא אותם עם גישת רוט או עם מנפה באגים. חלק מהעותקים שנוצרים בתוך Android ו-Flutter, ותמונות שמוצגות על המסך, אי אפשר למחוק מהזיכרון מיד.
חלק מהמידע גלוי
מספר הקבצים המוצפנים באחסון של האפליקציה, הגדלים המשוערים שלהם ומתי הם נוצרו או שונו לא מוסתרים. וגם לא העובדה ש-LifeVeil מותקנת.
הכספת הריקה מטעה רק את המסך
מי שיכול לקרוא את קובצי האפליקציה (למשל בטלפון עם הרשאות root) יכול לספור את תיקיות הכספות ולראות שההגדרה הזו מופעלת. ההאטה סופרת באותו אופן כספות ריקות שנשמרו ושלא נשמרו, כך שההמתנה עצמה לא מבדילה ביניהן.
ההסוואה משנה רק את מסך הבית
- רק הסמל והשם במסך הבית משתנים. הרשימה הגדרות > אפליקציות של הטלפון, פרטי האפליקציה ומסכי האחסון עדיין מציגים LifeVeil.
- קוראי מסך עדיין עשויים לומר "LifeVeil". למשל, מסך הבית של Samsung One UI מעביר ל-TalkBack את השם האמיתי של האפליקציה, והאפליקציה לא יכולה לשנות את זה.
- תפריט השיתוף של Android תמיד מציג את השם האמיתי של האפליקציה, ולכן LifeVeil יוצאת ממנו כשמחליפים את הסמל. אפשר להחזיר אותה.
- בקשות הרשאה של Android מציגות את השם האמיתי, ולכן האפליקציה מבקשת הרשאות לפני שמחליפים את הסמל.
- כל עוד הסמל מוחלף, האפליקציה לא שולחת התראות.
- קוד ההסוואה (4 עד 8 ספרות) רק מציג את מסך הנעילה. הוא לא פותח את הקבצים שלך. הוא נשמר כגיבוב עם מלח, אבל עם כל כך מעט אפשרויות קל למצוא אותו אם מישהו משיג את הקובץ.
טביעת אצבע היא דרך חלשה יותר
פתיחה בטביעת אצבע מדלגת על Argon2id. החוזק שלה תלוי בחיישן טביעות האצבע של הטלפון שלך וב-Android Keystore. אפשר לכבות אותה בהגדרות בכל עת.
פרטי תמונות
- בתמונות HEIC, PNG ו-WebP, הפרטים הנסתרים (EXIF) נשארים בתוך הקובץ. הקובץ כולו עדיין מוצפן.
- ב-Android 10 ומעלה, Android מסירה את מיקום ה-GPS מתמונות ש-LifeVeil קוראת, כי האפליקציה לא מבקשת גישה למיקום. כשהמקור נמחק מהגלריה, המיקום הזה נעלם.
- תמונות שנוספות דרך בורר התמונות של Android מקבלות שמות חדשים לפי התאריך, כי הבורר לא מוסר את השם המקורי.
הנעילה מושהית בזמן מסכי מערכת
כל עוד מסך מערכת פתוח (בקשת הרשאה, אישור מחיקה, בורר תמונות או קבצים, בקשת טביעת אצבע) וכל עוד מתבצע ייבוא או ייצוא, האפליקציה ממתינה עם הנעילה. אם יצאת מהאפליקציה, היא ננעלת 2 שניות אחרי שזה מסתיים.
כל הכספות משתפות מלח מכשיר אחד
כל הכספות בטלפון משתמשות באותו מלח מכשיר. אם המלח הזה אצל מישהו, ניחוש אחד בודק את כל הכספות בבת אחת. העלות של תקיפת כספת יחידה נשארת זהה.
דברים שאף אפליקציה לא יכולה למנוע
מישהו שמסתכל עליך בזמן שהתבנית מצוירת, או מצלמה שמצלמת את המסך שלך.
בלי ביטוי, אף אחד לא יכול לעזור
אם שכחת את התבנית של כספת שאין לה ביטוי שחזור, או איבדת גם את התבנית וגם את הביטוי, אף אחד לא יוכל לשחזר את הקבצים שלה. גם לא אנחנו.