ওপেন সোর্স VPN ক্লায়েন্ট: কোড কী প্রমাণ করে আর কী পারে না
একটি প্রকাশ্য রিপোজিটরি সোর্স কোড সম্পর্কে প্রমাণ, আপনি যে বিল্ড ইনস্টল করেছেন বা তার পেছনের সার্ভার সম্পর্কে নয়। রিলিজটি মিলিয়ে নিন, তারপর পর্যালোচনার পরিধি বাড়ান।
সোর্স প্রকাশিত, লাইসেন্স পরিষ্কার, তবু সংযোগটি এখনও শুরু থেকে শেষ পর্যন্ত যাচাই করা যায় না। এই ফাঁকটি স্বাভাবিক, আর এটি কোনো কেলেঙ্কারি নয়। কোড প্রকাশ করা একটি উপাদানকে এমন মানুষের কাছে পরিদর্শনযোগ্য করে তোলে যাদের আমন্ত্রণ জানানো হয়নি, এবং এটি একটি বাস্তব ও অস্বাভাবিক বৈশিষ্ট্য। এটি থেকে এই সিদ্ধান্ত আসে না যে আপনি যে বাইনারি ইনস্টল করেছেন তা ওই কোড থেকেই এসেছে, বা প্রোভাইডার অন্য প্রান্তে যা কিছু চালায় তার কোনো কিছুই আদৌ পর্যালোচনা করা হয়েছে।
উপাদানকে পণ্য থেকে আলাদা করুন
চারটি জিনিস ওপেন সোর্স তকমা বহন করতে পারে, এবং সেগুলো খুব কমই সবগুলো খোলা থাকে। ক্লায়েন্ট অ্যাপ্লিকেশনটিই মানুষ বোঝায়। তার নিচের প্রোটোকল বাস্তবায়ন আরেকটি নিদর্শন, কখনও লাইব্রেরি আবার কখনও ট্রি-এর ভেতরের কোড। সার্ভার সফটওয়্যার তৃতীয়, আর প্রোভাইডারের নিজস্ব অবকাঠামো, অ্যাকাউন্ট পোর্টাল ও সহায়তা সরঞ্জাম চতুর্থ। প্রত্যেকটি স্বতন্ত্রভাবে খোলা বা বন্ধ হতে পারে।
তাই "আমাদের অ্যাপ ওপেন সোর্স" ধরনের বাক্য প্রথম বিষয়টির বর্ণনা দেয় এবং বাকিটা অনুল্লিখিত রাখে, যা অসততা নয় বরং শ্রেণিগত ত্রুটি। কাজের প্রশ্নটি হলো কোন রিপোজিটরি, কোন ট্যাগে, আপনি যে উপাদানটির উপর নির্ভর করছেন তার সঙ্গে মেলে।
এই পার্থক্যটিই ব্যাখ্যা করে কেন অভিন্ন ওপেন ক্লায়েন্টযুক্ত দুইটি পণ্য খুব ভিন্ন নিশ্চয়তা দিতে পারে। ক্লায়েন্ট হলো যে অংশটি আপনি যাচাই করতে পারেন; অপারেটরের আচরণ হলো যে অংশটি অন্য উপায়ে বিচার করতে হয়।
ইনস্টল করা বিল্ড প্রকাশিত ট্যাগের সঙ্গে মিলিয়ে নিন
রিপোজিটরি হলো উদ্দেশ্যের নথি; আপনার ডিস্কের বাইনারিই সেই জিনিস যা চলে। এই ফাঁক বন্ধ করা একটি যান্ত্রিক কাজ, এবং এটি শুরু হয় ঠিক কী ইনস্টল হয়েছে তা চিহ্নিত করে, ডাউনলোড পাতায় যা বিজ্ঞাপিত ছিল তা নয়।
| Component | What inspection can show | What it leaves untouched |
|---|---|---|
| Client source | How profiles, packets and optional telemetry are handled | Whether the shipped binary matches that source |
| Build output | Whether a declared build reproduces a matching artefact | Whether the source is correct or the toolchain is clean |
| Server software | What the implementation is capable of logging | What the operator actually configures and retains |
| Account and support systems | Almost nothing, unless they are separately published | Everything about how those systems treat your data |
প্যাকেজ মেটাডেটা আপনাকে সংস্করণ ও উৎস জানায়, যা বাসি বা প্রতিস্থাপিত প্যাকেজের সহজ ঘটনাটি বাদ দেয়। এটি আপনাকে জানায় না প্যাকেজটি কীভাবে কম্পাইল হয়েছিল, আর ঠিক সেই প্রশ্নের উত্তর দিতেই পুনরুৎপাদনযোগ্য বিল্ডের অস্তিত্ব। পুনরুৎপাদনযোগ্য বিল্ড একটি স্বতন্ত্র পক্ষকে একই সোর্স থেকে পুনরায় বিল্ড করতে ও ফলাফল বাইটে বাইটে তুলনা করতে দেয়, ফলে অমিল সন্দেহের বদলে প্রমাণ হয়ে ওঠে।
এমনকি নিখুঁত মিলও মানুষের আশার চেয়ে কম প্রমাণ করে। এটি দেখায় নিদর্শনটি সোর্স ও বিল্ড রেসিপির সঙ্গে মেলে, কিন্তু সোর্স ত্রুটিমুক্ত তা নয়, আর ব্যবহৃত টুলচেইন নির্ভরযোগ্য ছিল তাও নয়। দুটোই জানার যোগ্য, তবে এগুলো ভিন্ন দাবি।
dpkg -S /usr/bin/wg
apt-cache policy wireguard-tools
sha256sum /usr/bin/wgলক্ষণ সাধারণত কোথা থেকে শুরু হয়
এই পাঠের কারণ হওয়া অভিযোগ খুব কমই "কোডটি বন্ধ"। সাধারণত এটি একটি নির্দিষ্ট পর্যবেক্ষণ: এমন ক্লায়েন্ট যা অপ্রত্যাশিত কোথাও ফোন করে, রিলিজ নোটের সঙ্গে ভিন্ন সংস্করণ, বা এমন সহায়তা প্রক্রিয়া যা টানেলের প্রয়োজন হওয়ার চেয়ে বেশি চায়। এর প্রত্যেকটি ভিন্ন উপাদানের দিকে ইঙ্গিত করে।
ক্লায়েন্ট থেকে অপ্রত্যাশিত নেটওয়ার্ক ট্রাফিক ক্লায়েন্ট-সোর্সের প্রশ্ন, এবং সংযোগ খোলার কোড পথ পড়ে তার উত্তর দেওয়া যায়। সংস্করণের অমিল প্যাকেজিংয়ের প্রশ্ন। পরিচয়পত্র চাওয়া সহায়তা প্রক্রিয়া অ্যাকাউন্ট-সিস্টেমের প্রশ্ন, এবং কোনো ক্লায়েন্ট অডিটই তা সমাধান করবে না।
উপাদানটির নাম দেওয়া অস্পষ্ট অবিশ্বাসকে নির্দিষ্ট যাচাইয়ে বদলে দেয়। নির্দিষ্ট যাচাইয়ের উত্তর দেওয়া যায়, তার সঙ্গে তর্ক করা যায় বা তা বন্ধ করা যায়। বিকল্প হলো পরবর্তী ধাপহীন চিরস্থায়ী সন্দেহ।
পর্যালোচনা যা পৌঁছাতে পারে না, আর তার বদলে কী করা উচিত
প্রোভাইডারের সার্ভারে সংরক্ষণ ক্লায়েন্টের নাগালের বাইরে। বিলিং পোর্টাল, প্রতারণা-যাচাইকারী ভেন্ডর বা সংযুক্তি রাখা সহায়তা ডেস্কের আচরণও তাই। "আমরা সেবাটি অডিট করেছি" পর্যন্ত টানা ক্লায়েন্ট পর্যালোচনা এমন দাবি করে যা প্রমাণ সমর্থন করে না।
অপারেটর সংরক্ষণ ও অনুরোধ সম্পর্কে যা প্রকাশ করে তা পড়ুন, তারিখটি টুকে রাখুন, এবং এটি পরিমাপ নয় বরং স্বার্থযুক্ত পক্ষের বিবৃতি হিসেবে ধরুন। এটি প্রমাণের দুর্বলতর রূপ, আর পার্থক্যটি স্পষ্ট বলা পুনরায় বলার সময় এটিকে উন্নীত করার চেয়ে বেশি কাজে দেয়।
তারপর যা আছে তা কয়েকটি ইনপুটের একটি হিসেবে ব্যবহার করুন: ইনস্টল করা রিলিজের পরিচয়, সফটওয়্যারটি রক্ষণাবেক্ষণ করা হচ্ছে কি না, ক্লায়েন্ট কীভাবে কনফিগার করা, এবং অপারেটর তার নিজের সিস্টেম সম্পর্কে কী বলে। ওপেন কোড একটি জায়গায় সেই মূল্যায়নকে শক্তিশালী করে। এটি বাকিটির বিকল্প নয়।
অডিটের দাবিতে সর্বদা তার উপাদান ও সংস্করণের নাম থাকা উচিত। কোনো প্রতিবেদন যদি বলতে না পারে সে কোন রিপোজিটরি ও কোন বিল্ড পরীক্ষা করেছে, তবে তা পণ্য নয়, উদ্দেশ্যের বর্ণনা দিচ্ছে।