openssl dhparam -check কী যাচাই করে এবং কী বাদ পড়ে
প্যারামিটার পরীক্ষা পাস হওয়া কোনো নিরাপত্তা পর্যালোচনা নয়। আপনার DH ফাইল সম্পর্কে এটি কী প্রমাণ করে, গ্রুপের আকার কীভাবে পড়বেন এবং পুনরায় তৈরি এড়াবেন তা দেখুন।
dhparam -check পাস করা আপনার VPN-এর Diffie-Hellman সেটআপের উপর একটি রায়ের মতো মনে হয়। তা নয়। কমান্ডটি একটি প্যারামিটার ফাইলকে তার দাবি করা পাটিগণিতের সঙ্গে তুলনা করে, এবং গ্রুপের আকার আপনার নীতির সঙ্গে মেলে কি না বা টানেলটি ওই ফাইল লোড করে কি না সে সম্পর্কে কিছুই বলে না। এটিকে নিরাপত্তা পর্যালোচনা হিসেবে পড়া হলো সেই ধারণা যেটি প্রথমে সংশোধন করা উচিত।
একটি প্যারামিটার ফাইলে একটি মৌলিক সংখ্যা ও একটি জেনারেটর থাকে। বৈধতা ওই সংখ্যাগুলোর একটি বৈশিষ্ট্য, আর শক্তি হলো আপনার হুমকি মডেল ও আপনার সহকর্মীদের নিয়ে একটি বিচার, এবং দুটো বিনিময়যোগ্য নয়।
বৈধতা পরীক্ষা আসলে কী নিশ্চিত করে
আপনার কাছে থাকা ফাইলের উপর পরীক্ষাটি চালান এবং উত্তরটি পড়ুন। openssl dhparam -in dh.pem -check -noout প্যারামিটার পরীক্ষাগুলো করে এবং এনকোড করা আউটপুট চেপে দেয়। প্যারামিটারগুলো ঠিক আছে বলে বার্তার অর্থ হলো মানগুলো গঠনগতভাবে সামঞ্জস্যপূর্ণ; এর অর্থ এই নয় যে একটি ছোট গ্রুপ আপনার পরিবেশে গ্রহণযোগ্য।
-dsaparam ছাড়া তৈরি করলে নিরাপদ মৌলিক সংখ্যা পাওয়া যায়, যেখানে (p-1)/2-ও মৌলিক, তাই এত সময় লাগে। DSA-ধাঁচের পথটি দ্রুত প্যারামিটার গড়ে এবং সেগুলোকে DH আকারে রূপান্তর করে, আর OpenSSL ম্যানুয়াল সেগুলো ব্যবহারে অতিরিক্ত নতুন-কী শর্ত যুক্ত করে। কোনোটিই সেশন গোপন নয়: ফাইলটি প্রকাশ্য কনফিগারেশন উপাদান, সার্টিফিকেটের ব্যক্তিগত কী নয় এবং নিয়ন্ত্রণ-চ্যানেলের যৌথ গোপনও নয়।
ফাইল বিচার করার আগে আকার ও জেনারেটর পড়ুন
বৈধতার ফলাফল বেশি অর্থ বহন করে যখন আপনি জানেন কী যাচাই হয়েছে। openssl dhparam -in dh.pem -text -noout দিয়ে প্যারামিটারগুলো ছাপুন, তারপর মৌলিক সংখ্যার দৈর্ঘ্য ও জেনারেটরের মান লিখে রাখুন।
এই দৈর্ঘ্যকে অভ্যাসের সঙ্গে নয়, লিখিত নীতির সঙ্গে তুলনা করুন। আপনার চাহিদা যদি আধুনিক TLS স্ট্যাকের অনুমোদিত নামযুক্ত গ্রুপ হয়, তবে হাতে তৈরি ফাইল সম্পূর্ণ ভুল উপাদান হতে পারে। দুই সংখ্যাই পরিবর্তন-রেকর্ডে লিখুন যাতে পরের পর্যালোচককে সেগুলো আবার বের করতে না হয়।
পরীক্ষাকে পুনরায় তৈরি-তে পরিণত করবেন না
এখানে ব্যর্থতার ধরনটি এমন একটি কমান্ড যা দেখতে পরীক্ষার মতো কিন্তু আচরণে জেনারেটরের মতো। বিট দৈর্ঘ্য যোগ করলে, যেমন openssl dhparam -check 2048, নতুন প্যারামিটার চাওয়া হয় এবং ইনপুট ফাইল উপেক্ষিত হয়। জেনারেটর অপশনও একই কাজ করতে পারে। আপনি যদি কেবল দেখতে চান, -in ও -check দিন এবং আকার বর্ণনা করে এমন কিছু দেবেন না।
মূল পথের উপর আউটপুট লেখা একই সন্দেহের যোগ্য, কারণ ম্যানুয়াল সতর্ক করে যে ফাইল আউটপুট পরমাণু নয়। লেখার মাঝে ক্র্যাশ ছেঁটে যাওয়া প্যারামিটার ফাইল আর চালু না হওয়া সেবা রেখে যায়।
গ্রুপকে প্রবণতার নয়, প্রোটোকলের সঙ্গে মেলান
আকার নীতি এমন একটি সিদ্ধান্ত যা টুল আপনার হয়ে পড়তে পারে না। 2048 বিটের সসীম-ক্ষেত্র গ্রুপ একটি প্রচলিত নিম্নসীমা এবং বড় গ্রুপ হ্যান্ডশেকের সময় খরচ করে, তাই আপনার নিজের বেসলাইন যে সংখ্যা বলে সেটিই বেছে নিন ও লিখে রাখুন। বহুল ব্যবহৃত গ্রুপ প্রকাশ্য হওয়ার কারণে দুর্বল নয়; এখানে অস্পষ্টতা কিছু যোগ করে না।
যেখানে স্ট্যাক অনুমোদিত নামযুক্ত গ্রুপ সমর্থন করে, সেখানে অনন্য দেখাতে অস্বাভাবিক প্যারামিটার তৈরি না করে ওই নথিভুক্ত বিন্যাস অনুসরণ করুন। নামযুক্ত গ্রুপ এমন কিছু যা সহকর্মী চিনতে পারে এবং পর্যালোচক খুঁজে পেতে পারে, যা এমন এক ফাইলের চেয়ে বেশি মূল্যবান যা কেউ শ্রেণিবদ্ধ করতে পারে না।
VPN আদৌ ফাইলটি লোড করে কি না নিশ্চিত করুন
কোনো প্রক্রিয়া না পড়া সঠিক প্যারামিটার ফাইল কিছুই বদলায় না। OpenVPN-এ সার্ভার নির্দেশ হলো পথসহ dh, এবং ECDH বা TLS 1.3 কী বিনিময়ের উপর নির্ভর করা ডিপ্লয়মেন্টগুলি এর বদলে dh none সেট করতে পারে। টেমপ্লেট নয়, চলমান কনফিগারেশন পরীক্ষা করুন, তারপর নিশ্চিত করুন যে ক্লায়েন্ট ও সহকর্মীরা একই নির্মাণে সম্মত হচ্ছে।
আপনার সত্যিই প্রয়োজনীয় প্রমাণ দিয়ে চক্রটি বন্ধ করুন: টানেল যে গ্রুপে সম্মত হয়েছে, ফাইলে প্যারামিটারের দৈর্ঘ্য, এবং যে নীতির লাইনটি ওই দৈর্ঘ্য পূরণ করে। পাস হওয়া পরীক্ষা সেই তালিকায় একটি একক বিন্দু। এটিকে সম্পূর্ণ উত্তর ভাবাই হলো সেই উপায় যেখানে একটি ছোট গ্রুপ এমন নিরীক্ষা থেকে বেঁচে যায় যা তাকে ধরার কথা ছিল।