শব্দকোষ

প্রাইভেসি আর এনক্রিপশন

অ্যাপের বর্ণনায় এই শব্দগুলো ঢিলেভাবে ব্যবহার হয়, আর এগুলোর মধ্যে পার্থক্যই ঠিক যেখানে মূল্যটা থাকে। লুকানো মানে লক করা না। লক করা মানে এনক্রিপ্ট করা না। আর অন্য কেউ ধরে রাখা একটা চাবি আসলে তোমার না।

Hidden vs encrypted

Hidden মানে একটা অ্যাপ কিছু না দেখাতে সম্মত হয়। Encrypted মানে ডিস্কের বাইটগুলো একটা চাবি ছাড়া পড়া যায় না। প্রথমটা একটা প্রতিশ্রুতি; দ্বিতীয়টা গণিত।

একটা লুকানো ফোল্ডার এখনো একটা সাধারণ ফোল্ডার। যা কিছু সরাসরি ডিস্ক পড়ে — একটা ব্যাকআপ, একটা ফাইল ম্যানেজার, একটা ফরেনসিক টুল, সঠিক অনুমতিসহ আরেকটা অ্যাপ — এতে ঠিক কী আছে তা দেখে, কারণ ফাইলটা নিয়ে কিছুই বদলায়নি।

এনক্রিপশন ফাইলটা বদলে দেয়। ডিস্কে যা বসে থাকে তা জঞ্জাল, আর চাবি ছাড়া যেকারো জন্য এটা জঞ্জালই থাকে, অ্যাপটা যে লিখেছিল সে-ও বাদ যায় না। পার্থক্যটা শুধু সেই দিন দৃশ্যমান হয় যখন এটা গুরুত্বপূর্ণ, যে কারণে এর আগে এটা জানা মূল্যবান।

আরও দেখো: At rest vs in transitChaCha20-Poly1305

ChaCha20-Poly1305

একটা আধুনিক এনক্রিপশন অ্যালগরিদম যা ডেটা লুকায় আর এতে কারচুপি শনাক্তও করে। ফোনে দ্রুত, যাদের সবসময় পুরনো বিকল্পের জন্য হার্ডওয়্যার অ্যাক্সিলারেশন থাকে না।

ChaCha20 এনক্রিপশনটা করে; Poly1305 একটা ট্যাগ তৈরি করে যা যাচাই করে ডেটাটা বদলানো হয়নি। একসাথে এগুলোকে authenticated encryption বলা হয় — ডিক্রিপশন একটা বদলানো ফাইলে জোরে ব্যর্থ হয় বরং যুক্তিসঙ্গত জঞ্জাল তৈরি করার বদলে।

এটা TLS-এ আর আধুনিক সুরক্ষিত মেসেজিংয়ে ব্যবহৃত একই গঠন। AES অ্যাক্সিলারেশন ছাড়া হার্ডওয়্যারে এটা AES-এর চেয়ে অর্থপূর্ণভাবে দ্রুত, যে কারণে ফোনগুলো এটাকেই পছন্দ করে।

আরও দেখো: At rest vs in transitKey wrapping

Key wrapping

envelope encryption

একটা চাবি দিয়ে ফাইলগুলো এনক্রিপ্ট করা, আর তারপর ভেতরে ঢোকার প্রতিটা উপায় দিয়ে সেই চাবিটা আলাদাভাবে এনক্রিপ্ট করা। একটা পাসকোড বদলানো সবকিছু আবার এনক্রিপ্ট করার বদলে একটা ছোট চাবি আবার wrap করে।

ফাইলগুলো একবার এনক্রিপ্ট হয়, ডিভাইসে তৈরি একটা চাবি দিয়ে। সেই চাবিটা তারপর wrap করা হয় — এনক্রিপ্ট করা হয় — পাসকোড দিয়ে, আর আবার wrap করা হয় রিকভারি কোড দিয়ে। দুটো খাম, প্রতিটার ভেতরে একটা চাবি।

ফলাফলগুলো সবই ব্যবহারিক। একটা পাসকোড বদল একশো গিগাবাইটের বদলে কয়েকশো বাইট আবার লেখে। বায়োমেট্রিক আনলক একটা দ্বিতীয় সিকিউরিটি মডেলের বদলে আরেকটা wrap করা কপি। আর প্রতিটা wrapper হারানো মানে চাবিটা হারানো, কারণ চাবিটা আর কোথাও নেই।

আরও দেখো: Recovery codeChaCha20-Poly1305

Recovery code

একটা একবার-ব্যবহারযোগ্য স্ট্রিং যা পাসকোড ভুলে গেলে মাস্টার চাবিটা আনরাপ করতে পারে। কেউ এটা আবার ইস্যু করতে পারে না, কারণ আর কারো কাছে এটা কখনো ছিল না — অ্যাপ লেখা মানুষগুলোও না।

এটা একবার দেখানো হয়, সেটআপের সময়, আর এটা দুটো দরজার দ্বিতীয়টা। ডিভাইসের বাইরে অন্য কোথাও লিখে রাখা, এটা একটা ভুলে যাওয়া পাসকোডকে একটা অসুবিধায় পরিণত করে।

পাসকোড ভুলে গেলে আর রিকভারি কোড হারিয়ে গেলে, ফাইলগুলো কেউ ডিক্রিপ্ট করতে পারে না। এটা তর্ক করার মতো একটা সাপোর্ট পলিসি না; এটাই মানে চাবির কোনো কপি না থাকা। ফাইলগুলো যতটা যত্ন প্রাপ্য ততটা যত্নে এটা সংরক্ষণ করো।

আরও দেখো: Key wrappingZero-knowledge

Decoy vault

plausible deniability

একটা দ্বিতীয় পাসকোড যা একটা ভিন্ন, নির্দোষ vault খোলে। অ্যাপ আনলক করতে বাধ্য করা কাউকে এটা করতে দেওয়া যায়, আর যা খোলে তা সে যা খুঁজছিল তা না।

দুটো পাসকোডই আসল আর দুটোই একটা আসল vault খোলে। স্ক্রিনে কিছুই আরেকটার অস্তিত্ব নির্দেশ করে না, আর অ্যাপটাকে জিজ্ঞেস করা যায় না এটা কোনটা দেখাচ্ছে।

এটা সেই পরিস্থিতির জন্য বিদ্যমান যেখানে আনলক করতে অস্বীকার করা একটা অপশন না — একটা সীমান্ত, একটা দাবি, কেউ তোমার ওপর দাঁড়িয়ে। শুধু এনক্রিপশন সেখানে সাহায্য করে না, কারণ সমস্যাটা চাবি না, এটা ব্যবহার করতে বাধ্য হওয়া।

আরও দেখো: Recovery codeHidden vs encrypted

Keychain

ছোট সিক্রেটের জন্য সিস্টেমের সুরক্ষিত ভাণ্ডার, ডিভাইসের সিকিউরিটি হার্ডওয়্যার দ্বারা সমর্থিত। এটাই যেখানে চাবি আর টোকেন থাকা উচিত, আর যেখানে কোনো বড় কিছু যাওয়া উচিত না।

এতে থাকা জিনিসগুলো শর্ত বহন করতে পারে: ডিভাইস আনলক থাকলেই শুধু পড়া যায়, শুধু এই ডিভাইসে, শুধু বায়োমেট্রিক বা পাসকোড নিশ্চিতকরণের পরে। সেই শর্তগুলো অ্যাপ ভদ্রভাবে জিজ্ঞেস করার বদলে হার্ডওয়্যার দিয়ে প্রয়োগ করা।

এটা সিক্রেট সংরক্ষণ করে, ডেটা না। চাবি, টোকেন আর wrap করা উপাদান সেখানে যায়; এনক্রিপ্ট করা ফাইলগুলো নিজেরাই ডিস্কে থাকে, যেখানে আকার কোনো সমস্যা না।

আরও দেখো: Key wrappingAt rest vs in transit

At rest vs in transit

At rest এনক্রিপ্ট করা মানে ডিস্কে পড়া যায় না। In transit এনক্রিপ্ট করা মানে নেটওয়ার্কে পড়া যায় না। এগুলো আলাদা সুরক্ষা, আর একটা পণ্য সততার সাথে একটা দাবি করতে পারে আরেকটা না করেই।

HTTPS হলো in transit এনক্রিপশন: নেটওয়ার্ক দেখছে এমন যেকারো থেকে নিরাপদ, আর একবার পৌঁছালে অন্য প্রান্তের সার্ভার দিয়ে সম্পূর্ণভাবে পড়া যায়। At rest এনক্রিপশন সংরক্ষিত কপিটা নিয়ে, যা গুরুত্বপূর্ণ যদি একটা ডিভাইস হারিয়ে যায় বা একটা ডিস্ক ইমেজ করা হয়।

একটা প্রাইভেসি দাবি মনোযোগ দিয়ে পড়া মানে সাধারণত বের করা এটা এই দুটোর কোনটা নিয়ে। কোনো শব্দ ছাড়া "তোমার ডেটা এনক্রিপ্ট করা" একটা বাক্য যা না বলার জন্যই বেছে নেওয়া হয়েছে।

আরও দেখো: ChaCha20-Poly1305Zero-knowledge

Zero-knowledge

একটা ডিজাইন যেখানে অপারেটর এটা যা সংরক্ষণ করে তা পড়তে পারে না, কারণ চাবিগুলো কখনো ব্যবহারকারীর ডিভাইস ছেড়ে যায় না। পরীক্ষাটা সহজ: তারা কি তোমার পাসওয়ার্ড রিসেট করতে পারে আর তবুও তোমাকে তোমার ডেটা দিতে পারে?

তুমি সবকিছু ভুলে গেলে একটা সার্ভিস যদি অ্যাক্সেস পুনরুদ্ধার করতে পারে, তবে এটা এমন কিছু ধরে রাখে যা তোমার ডেটা আনলক করতে পারে — মানে এটা ব্যবহার করতে বাধ্য করা যায়, আর যে কেউ সার্ভিসটা ভাঙে সে একই ক্ষমতা পায়।

ট্রেডটা সত্যি আর এটা বিশুদ্ধ সুবিধা হিসেবে বিক্রি করার বদলে সরাসরি বলা উচিত: আসল zero-knowledge মানে শেষ চাবিটা হারালে সত্যিকারভাবে অ্যাক্সেস হারানো। এমন কোনো তৃতীয় বিকল্প নেই যেখানে অপারেটর তোমাকে বাঁচাতে পারে কিন্তু আর কেউ পারে না।

আরও দেখো: Recovery codeAt rest vs in transit

Biometrics

Face ID, Touch ID

অ্যাপ না, ডিভাইসটাই নিশ্চিত করে এটা তুমি; অ্যাপটাকে হ্যাঁ বা না বলা হয়। কোনো ফিঙ্গারপ্রিন্ট বা ফেস ডেটা কখনো একটা অ্যাপে পৌঁছায় না, আর এর কোনোটাই একটা পাসওয়ার্ড না।

বায়োমেট্রিক আনলক একটা সিক্রেটের চারপাশে জড়ানো একটা সুবিধা, এটার বদলি না। এটা যা সুরক্ষা করে তা একটা সংরক্ষিত চাবি, যে কারণে এর পেছনে সবসময় একটা পাসকোড থাকে — বায়োমেট্রিক ব্যর্থ হতে পারে, আর ফলব্যাকটা এমন কিছু হতে হয় যা তুমি জানো।

তুলনাটা নির্দিষ্ট হার্ডওয়্যারের ভেতরে ঘটে আর টেমপ্লেটগুলো কখনো এটা ছেড়ে যায় না। Face ID দেওয়া একটা অ্যাপ সিস্টেমকে একটা প্রশ্ন জিজ্ঞেস করছে, কিছু সংগ্রহ করছে না।

আরও দেখো: KeychainKey wrapping

Anonymous analytics

কে করেছে তা রেকর্ড না করে ঘটনা গোনা। দাবিটার মূল্য পুরোপুরি নির্ভর করে প্রতিটা ঘটনার সাথে কী যুক্ত আছে তার ওপর — আর ফাইলের নাম, পথ আর URL হলো যেখানে এমন প্রতিশ্রুতি সাধারণত ভেঙে যায়।

একটা স্ক্রিন খোলা হয়েছিল জানা একটা গণনা। কোন ফাইলটা চালানো হয়েছিল জানা একজন মানুষের একটা বর্ণনা। দুটোর মধ্যে রেখাটা "anonymous" শব্দটা না; এটা ঘটনাটা কোন ফিল্ড বহন করে তা।

বিশ্বাস করার মতো একটা দাবি কী *পাঠানো হয় না* তা কী পাঠানো হয় তার মতোই নির্দিষ্টভাবে বলে: কোনো ফাইলের নাম না, কোনো পথ না, কোনো URL না, কোনো ক্রেডেনশিয়াল না, সেশন জুড়ে টিকে থাকা কোনো শনাক্তকারী না — আর পুরো জিনিসটা বন্ধ করার একটা উপায় দেয়।

আরও দেখো: At rest vs in transit

অন্য বিষয়গুলো