LifeVeil आपकी फ़ाइलों को कैसे सुरक्षित रखता है
यह पेज आसान शब्दों में बताता है कि LifeVeil क्या करता है, और यह भी कि वह क्या नहीं कर सकता। हम चाहते हैं कि आप किसी बहुत बड़े वादे पर भरोसा करने के बजाय इसकी सीमाएं जानें।
संक्षेप में
- सारा एन्क्रिप्शन आपके फ़ोन पर होता है। न कोई LifeVeil सर्वर है, न कोई खाता।
- आपकी फ़ाइलें एक रैंडम कुंजी से एन्क्रिप्ट होती हैं। उस कुंजी को सिर्फ़ आपका पैटर्न, आपका रिकवरी फ़्रेज़ या आपका फ़िंगरप्रिंट ही अनलॉक कर सकता है।
- हम, यानी डेवलपर, के पास कभी आपका पैटर्न, फ़्रेज़ या कुंजियां नहीं होतीं। हम आपकी फ़ाइलें नहीं खोल सकते, और आपका पैटर्न रीसेट नहीं कर सकते।
- हम Android में पहले से मौजूद एन्क्रिप्शन और जानी-मानी libsodium लाइब्रेरी का इस्तेमाल करते हैं। हमने अपना खुद का एन्क्रिप्शन नहीं लिखा।
- LifeVeil का अभी तक कोई स्वतंत्र सुरक्षा ऑडिट नहीं हुआ है।
आपके पैटर्न से कुंजी तक
आप 5×5 ग्रिड पर कम से कम 6 बिंदुओं से पैटर्न बनाते हैं, और कोई बिंदु दो बार नहीं आता। LifeVeil इस पैटर्न को libsodium (Android पर वर्शन 1.0.20) के Argon2id से एक कुंजी में बदलता है।
- सेटिंग: 64 MiB मेमोरी, 3 पास, 1 लेन, 256-बिट कुंजी।
- Argon2id जानबूझकर धीमा है और हर अनुमान के लिए बहुत मेमोरी मांगता है। इससे ग्राफ़िक्स कार्ड से अनुमान लगाना बहुत महंगा हो जाता है।
- हमारे टेस्ट फ़ोन पर एक बार अनलॉक करने में करीब 0.6 से 0.9 सेकंड लगते हैं।
- पैटर्न को एक रैंडम 16-बाइट डिवाइस सॉल्ट के साथ मिलाया जाता है। यह सॉल्ट ऐप में रखा जाता है, और Android Keystore में रखी एक कुंजी से एन्क्रिप्ट होता है, जिसे फ़ोन से बाहर कॉपी नहीं किया जा सकता।
- पैटर्न की कोई कॉपी नहीं रखी जाती। ऐप कुंजी को अनलॉक करने की कोशिश करके पैटर्न जांचता है।
- लगातार 5 गलत पैटर्न के बाद आपको 30 सेकंड इंतज़ार करना होगा। हर अगली गलती के बाद इंतज़ार दोगुना होता जाता है, ज़्यादा से ज़्यादा 16 मिनट तक।
फ़ाइलें कैसे एन्क्रिप्ट होती हैं
- हर वॉल्ट की एक रैंडम 256-बिट मास्टर कुंजी होती है। आपके पैटर्न की कुंजी और रिकवरी कुंजी सिर्फ़ इस मास्टर कुंजी को "लपेटती" (एन्क्रिप्ट करती) हैं।
- फ़ाइलें, थंबनेल और आपके आइटम की सूची (मूल फ़ाइल नाम, तारीखें, साइज़) Android के बिल्ट-इन एन्क्रिप्शन का इस्तेमाल करके AES-256-GCM से एन्क्रिप्ट होती हैं। 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 गणित को छोड़कर आगे नहीं बढ़ सकता। हर अनुमान को अब भी 64 MiB मेमोरी के साथ Argon2id से गुज़रना पड़ता है। AI न Argon2id को तोड़ता है न AES को, इसलिए कोई भी एक अनुमान सस्ता नहीं होता।
- AI जो बदलता है, वह अनुमानों का क्रम है। यह सीख सकता है कि लोगों को कौन-से आकार पसंद हैं (अक्षर, चौकोर, शुरू करने के पसंदीदा कोने) और उन्हें पहले आज़मा सकता है। यह आपके कंधे के ऊपर से बनाए गए वीडियो से, या स्क्रीन पर उंगलियों के निशान से पैटर्न पढ़ने में भी मदद कर सकता है।
- इसलिए बचाव पैटर्न से जुड़ा है, गणित से नहीं। मज़बूती मीटर आम आकारों के बारे में चेतावनी देता है। पैटर्न + PIN एक 4–6 अंकों का PIN जोड़ता है, ताकि वीडियो में देखा गया पैटर्न काफ़ी न हो। पैटर्न लाइन छिपाएं से कोई लाइन नहीं दिखती जिसे फ़िल्माया जा सके। 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 और उसके बाद के वर्शन पर, LifeVeil जो फ़ोटो पढ़ता है उनसे Android GPS जगह की जानकारी हटा देता है, क्योंकि ऐप जगह की जानकारी का ऐक्सेस नहीं मांगता। गैलरी से मूल फ़ाइल हटाने पर वह जगह की जानकारी भी चली जाती है।
- Android के फ़ोटो पिकर से जोड़ी गई फ़ोटो को तारीख के आधार पर नए नाम मिलते हैं, क्योंकि पिकर मूल नाम नहीं देता।
सिस्टम स्क्रीन के दौरान लॉक होना रुका रहता है
जब कोई सिस्टम स्क्रीन खुली हो (अनुमति अनुरोध, हटाने की पुष्टि, फ़ोटो या फ़ाइल पिकर, फ़िंगरप्रिंट प्रॉम्प्ट) और जब कोई इंपोर्ट या एक्सपोर्ट चल रहा हो, तब ऐप लॉक होने का इंतज़ार करता है। अगर आप ऐप से बाहर जा चुके हैं, तो वह काम खत्म होने के 2 सेकंड बाद ऐप लॉक हो जाता है।
सभी वॉल्ट एक ही डिवाइस सॉल्ट इस्तेमाल करते हैं
फ़ोन के सभी वॉल्ट एक ही डिवाइस सॉल्ट इस्तेमाल करते हैं। अगर किसी के पास वह सॉल्ट है, तो एक अनुमान से सभी वॉल्ट एक साथ जांचे जाते हैं। किसी एक वॉल्ट पर हमला करने की लागत उतनी ही रहती है।
जिन चीज़ों को कोई ऐप नहीं रोक सकता
कोई आपको पैटर्न बनाते हुए देख रहा हो, या कोई कैमरा आपकी स्क्रीन फ़िल्मा रहा हो।
अगर दोनों खो जाएं, तो कोई मदद नहीं कर सकता
अगर आपका पैटर्न और रिकवरी फ़्रेज़ दोनों खो जाएं, तो कोई भी आपकी फ़ाइलें वापस नहीं ला सकता। हम भी नहीं।