Android VPN বনাম অ্যাপ অনুমতি: সতর্কবার্তাটির আসলে অর্থ কী
Android-এর VPN সম্মতি ডায়ালগ আপনাকে প্যাকেট-স্তরের একটি অবস্থান দেয়, আপনার ইমেল, ছবি বা পরিচিতিতে প্রবেশাধিকার নয়। সেই সীমারেখাটি আসলে কোথায়, তা এখানে বলা হয়েছে।
Android-এ দুটি ডায়ালগ বারবার একসাথে মিশিয়ে ফেলা হয়: VPN সম্মতির প্রম্পট এবং কোনো অ্যাপ আপনার তথ্যের জন্য যে অনুমতিগুলো চায়। প্রথমটি একটি নেটওয়ার্ক অবস্থান হস্তান্তর করে, যে বিন্দুতে প্যাকেট পড়া ও পুনর্লিখন করা যায়। দ্বিতীয়টি সংরক্ষিত কনটেন্ট হস্তান্তর করে, যা Android অ্যাপ প্রতি আলাদাভাবে পাহারা দেয়। এ দুটিকে এক বিষয় ভাবলে হয় টানেল কী দেখতে পারে তা অতিরঞ্জিত হয়, নয়তো কোনো একগুঁয়ে অ্যাপ পরের ধাপে কী চাইবে তা মারাত্মকভাবে কমআঁকা হয়।
সম্মতি ডায়ালগ আসলে কী হস্তান্তর করে
যে অ্যাপ VpnService বাস্তবায়ন করে এবং BIND_VPN_SERVICE ঘোষণা করে, সে সিস্টেমের কাছে ডিভাইসের VPN হওয়ার অনুরোধ জানায়। অনুমোদনের পর ফ্রেমওয়ার্ক একটি tun ইন্টারফেস তৈরি করে এবং অ্যাপকে তার জন্য একটি ফাইল ডেসক্রিপ্টর দেয়। এরপর অ্যাপ যা কিছু করে, সব ওই ডেসক্রিপ্টর দিয়েই প্রবাহিত হয়: সে সেখান থেকে IP প্যাকেট পড়ে, সেগুলো নিয়ে কী করবে ঠিক করে, আর প্যাকেট আবার ভেতরে লেখে।
ওই ইন্টারফেসের পরিধি স্পষ্টভাবে নির্ধারিত। রুট নির্ধারণ করে কোন গন্তব্যগুলো ধরা হবে, আর addAllowedApplication বা addDisallowedApplication নির্ধারণ করে কোন অ্যাপগুলো এতে তথ্য দেবে। দুটি অ্যাপ তালিকাভুক্ত করা একটি প্রতি-অ্যাপ VPN ডিভাইসের বাকি অংশ দেখে না।
এটি প্যাকেট-স্তরের অনুমতি, তথ্য-স্তরের নয়। সার্ভিসটি দেখে অ্যাপ নেটওয়ার্ক স্ট্যাককে যে বাইটগুলো দেয়, যা কোনো একটি গন্তব্যের উদ্দেশ্যে ঠিকানা করা। এটি প্রেরক অ্যাপের ব্যক্তিগত স্টোরেজ, তার ডেটাবেস ফাইল বা তার ডিক্রিপ্ট করা মেমোরিতে কোনো হাতল পায় না। অ্যাপ নিজের স্যান্ডবক্সে যে ফাইল সংরক্ষণ করেছে, তা আগের মতোই সমান কঠিন পাঠ্য থাকে।
প্যাকেট-দৃশ্য যেখানে থেমে যায়
TLS এখনও টানেলের ভেতরে নিজের কাজ করে, কারণ হ্যান্ডশেক অ্যাপ ও VPN-এর মধ্যে নয়, বরং অ্যাপ ও সার্ভারের মধ্যে চলে। VPN এমন সাইফারটেক্সট এগিয়ে পাঠায় যা সেশন কি ছাড়া সে ডিক্রিপ্ট করতে পারে না। এজন্যই কেবল একটি টানেল HTTPS পাতার বা সুরক্ষিত মেইল সেশনের কনটেন্ট প্রকাশ করে না।
সাইফারটেক্সটের আশপাশের মেটাডেটা ভিন্ন গল্প, আর এখানেই বেশিরভাগ আত্মবিশ্বাসী দাবি ভেঙে পড়ে। গন্তব্যের IP, পোর্ট, প্যাকেটের আকার এবং সময়—সবই দৃশ্যমান, সঙ্গে TLS ClientHello-তে থাকা সার্ভারের নাম, যা সাধারণত TLS 1.3-এর মধ্যেও খোলাখুলিই পাঠানো হয়। Encrypted Client Hello এটি বদলে দেয়, তবে তা সর্বজনীন নয়। সাধারণ DNS-ও নাম একই সহজে ফাঁস করে, যখন কোয়েরি এনক্রিপশন ছাড়া বাইরে যায়।
পুরোনো বা ভুল কনফিগার করা প্রোটোকল আরও বেশি হস্তান্তর করে। সাধারণ HTTP, TLS ছাড়া IMAP এবং বেশ কিছু গেম ও IoT প্রোটোকল তাদের পেলোড tun ডেসক্রিপ্টরধারী যেকোনো কিছুর কাছে উন্মুক্ত করে।
যে অনুমতিগুলো কখনও এর সঙ্গে আসে না
VPN অনুমোদন করলে পরিচিতি, SMS, ছবি বা মিডিয়া স্টোর অনুমোদিত হয় না। এগুলো আলাদা রানটাইম অনুমতি, প্রতিটির নিজস্ব ডায়ালগ এবং অ্যাপ সেটিংস পাতায় নিজস্ব প্রত্যাহার পথ আছে। যে VPN ক্লায়েন্ট আপনার কল লগ চায়, তাকে অন্য যেকোনো অ্যাপের মতোই তা চাইতে হবে, আর আপনি টানেল রেখেই তা অস্বীকার করতে পারেন।
সার্টিফিকেট ইনস্টলেশনই হলো নজর রাখার জিনিস, কারণ এটি VPN সেটআপের অংশ বলে মনে হয়, কিন্তু নয়। ক্রেডেনশিয়াল স্টোরে ব্যবহারকারী CA ইনস্টল করলে Android কোন সার্টিফিকেট গ্রহণ করবে তা বদলে যায়, আর Android 7.0 থেকে API 24 বা তার পরের ভার্সন লক্ষ্য করা অ্যাপ ব্যবহারকারীর যোগ করা CA উপেক্ষা করে, যদি না তার নেটওয়ার্ক সিকিউরিটি কনফিগ ব্যবহারকারীর ট্রাস্ট অ্যাঙ্কর দিয়ে স্বীকৃত হয়। যে ক্লায়েন্ট CA-তে জোর দেয়, সে বৈধ এন্টারপ্রাইজ ইন্টারসেপশন করতে পারে, আবার এমন কিছু চাইতে পারে যা VPN ডায়ালগ কখনও উল্লেখ করেনি।
অ্যাক্সেসিবিলিটি অ্যাক্সেস আরও দূরে অবস্থান করে। অ্যাক্সেসিবিলিটি চালু থাকা একটি সার্ভিস অন্য অ্যাপের স্ক্রিন কনটেন্ট পড়তে পারে, যা কোনো প্যাকেট-স্তরের অবস্থান দেয় না।
স্থানীয় ফিল্টার নাকি দূরবর্তী গেটওয়ে
একই API এমন দুটি পণ্য কভার করে যারা ভিন্ন মাত্রার আস্থার যোগ্য। ডিভাইসে থাকা ফায়ারওয়াল বা বিজ্ঞাপন ব্লকার tun ডেসক্রিপ্টর নিয়ে ট্রাফিকের উত্তর স্থানীয়ভাবে দেয়, কখনও তা নিজের পরিচালিত সার্ভারে পাঠায় না। সত্যিকারের টানেল ওই প্যাকেটগুলো অন্য কোথাও থাকা গেটওয়েতে পাঠায়, আর ওই অপারেটর অপর প্রান্ত থেকে একই মেটাডেটা দেখে, পাশাপাশি কী ফিরে আসবে তাও ঠিক করে।
এদের আলাদা করার ব্যবহারিক উপায় হলো VPN চালু ও বন্ধ অবস্থায় আপনার পাবলিক ঠিকানা পরীক্ষা করা, এবং দেখতে হবে নোটিফিকেশন কোনো দূরবর্তী এন্ডপয়েন্টের নাম বলে কি না। ঠিকানা যদি কখনও না বদলায়, তাহলে ট্রাফিক সম্ভবত ডিভাইসেই ফিরছে।
দুটি ক্ষেত্রেই এটি প্যাকেট অবস্থান। পার্থক্য হলো প্রস্থানে আর কে দাঁড়িয়ে আছে।
আপনি কী অনুমোদন করেছেন তা অডিট করুন
Settings খুলুন, তারপর Network and internet, তারপর VPN, এবং স্ট্যাটাস বারের আইকন নয়, এন্ট্রিটিই পড়ুন। Always-on VPN এবং Block connections without VPN হলো ডিভাইস সেটিংস যা ইন্টারফেস সচল রাখে ও লিক কাটে; তারা কিছুই প্রশস্ত করে না। একই স্ক্রিন থেকে আপনি প্রোফাইল ভুলে যেতে এবং অনুমতি প্রত্যাহার করতে পারেন।
তারপর বাকি অনুমতিগুলো ঘুরে দেখুন। App info দেখায় ক্লায়েন্টের কাছে কোন রানটাইম অনুমতি আছে, আর Security সেটিংস দেখায় একই সময়ে কোনো ব্যবহারকারী সার্টিফিকেট ইনস্টল হয়েছিল কি না। দুটির যেকোনোটি আলাদাভাবে সরানো যায়।
উত্তর দেওয়ার যোগ্য প্রশ্নটি সংকীর্ণ: কোন প্যাকেট এই সার্ভিসে ঢোকে, সেগুলো কোথায় যায়, এবং বাস্তবায়ন কী রাখে। ডায়ালগের বাকি সবই শব্দ। VpnService রেফারেন্স হলো ইন্টারফেস কী প্রকাশ করে তার প্রামাণ্য তালিকা।