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 এটিকে ধীর করে, কিন্তু একটি লম্বা পাসওয়ার্ডের তুলনায় প্যাটার্নের সম্ভাবনা অনেক কম। প্রতি সেকেন্ডে প্রায় 1,000টি অনুমান করতে পারা একটি উচ্চমানের গ্রাফিক্স কার্ডের (RTX 4090 শ্রেণির) জন্য মোটামুটি হিসাব:
| কী অনুমান করা হচ্ছে | সম্ভাবনা | সময়, একটি গ্রাফিক্স কার্ড |
|---|---|---|
| সবচেয়ে সাধারণ 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 সেকেন্ড পরে অ্যাপ লক হয়।
সব ভল্ট একই ডিভাইস সল্ট ব্যবহার করে
একটি ফোনের সব ভল্ট একই ডিভাইস সল্ট ব্যবহার করে। কারও কাছে সেই সল্ট থাকলে একটি অনুমানেই একসঙ্গে সব ভল্ট পরীক্ষা হয়ে যায়। একটি ভল্টে আক্রমণের খরচ একই থাকে।
যা কোনো অ্যাপই আটকাতে পারে না
কেউ আপনাকে প্যাটার্ন আঁকতে দেখছে, বা কোনো ক্যামেরা আপনার স্ক্রিন ভিডিও করছে।
দুটোই হারালে কেউ সাহায্য করতে পারবে না
প্যাটার্ন আর রিকভারি ফ্রেজ দুটোই হারালে কেউই আপনার ফাইল ফিরিয়ে আনতে পারবে না। আমরাও না।