VPN-এ সিমেট্রিক বনাম পাবলিক-কি এনক্রিপশন: প্রত্যেকটি কী করে
একটি VPN পাবলিক কি দিয়ে পিয়ার যাচাই করে, তারপর উৎভূত সেশন কি দিয়ে প্যাকেট এনক্রিপ্ট করে। সার্টিফিকেট ও ট্র্যাফিক কি-কে আলাদা বস্তু হিসেবে দেখুন।
মানুষ VPN-কে „পাবলিক-কি এনক্রিপশন ব্যবহার করে“ বলে বর্ণনা করে, তারপর কল্পনা করে প্রতিটি প্যাকেট সার্ভারের সার্টিফিকেটে তালাবদ্ধ। এই চিত্রটি এমনভাবে ভুল যা গুরুত্বপূর্ণ যখন আপনি একটি কনফিগ ফাইল বা প্যাকেট ক্যাপচার পড়েন। VPN-এর পাবলিক-কি অর্ধটি হলো পিয়ার কে তা প্রমাণ করা এবং গোপন উপাদান নিয়ে সম্মত হওয়া; সিমেট্রিক অর্ধটি হলো যা প্রকৃতপক্ষে ট্র্যাফিক রক্ষা করে, প্যাকেটের পর প্যাকেট, সেশনের পুরো আয়ু জুড়ে।
দুই অর্ধের আয়ু, ব্যর্থতার ধরন এবং নিরাপদভাবে প্রকাশ করার মতো জিনিস আলাদা। একবার আপনি সেগুলো আলাদা করলে, „RSA 2048 কি AES-128-এর চেয়ে দুর্বল“-এর মতো প্রশ্ন বিভ্রান্তিকর হওয়া বন্ধ করে, কারণ সেগুলো কথনোই তুলনাযোগ্য ছিল না।
একসাথে মেশানো তিনটি কাজ
পাবলিক-কি ক্রিপ্টোগ্রাফি অন্তত তিনটি স্বতন্ত্র কাজের একটি ছাতাবালি। একটি স্বাক্ষর প্রমাণ করে যে একটি প্রাইভেট কি-এর ধারক একটি নির্দিষ্ট বার্তা অনুমোদন করেছে। কি চুক্তি দুই পিয়ারকে প্রকাশ্যভাবে বিনিময় করা মান থেকে একটি ভাগ করা গোপনীয়তা উৎভাবন করতে দেয়। পাবলিক-কি এনক্রিপশন আরকের পাবলিক কি-এর অধীনে ডেটা লুকায় যাতে কেবল প্রাইভেট কি তা খুলতে পারে।
VPN হ্যান্ডশেক বেশিরভাগ প্রথম দুটি ব্যবহার করে। সার্টিফিকেট এনক্রিপশন কি নয়; এটি একটি স্বাক্ষরিত বিবৃতি যা একটি নামকে পাবলিক কি-এর সাথে বাঁধে, যা অপর পক্ষকে সদ্য পাওয়া কি-তে ভরসা করবে কিনা তা সিদ্ধান্ত নিতে দেয়। উদাহরণস্বরূপ, TLS 1.3 কি প্রতিষ্ঠা (EC)DHE কি চুক্তি ও সার্টিফিকেট স্বাক্ষরের উপর তৈরি, সার্ভারের পাবলিক কি-তে সেশন এনক্রিপ্ট করার উপর নয়।
হ্যান্ডশেক আসলে কী তৈরি করে
আধুনিক হ্যান্ডশেকে প্রতিটি পক্ষ একটি ক্ষণস্থায়ী কি জোড়া তৈরি করে, পাবলিক অর্ধগুলো বিনিময় করে এবং একটি ভাগ করা গোপনীয়তা গণনা করে যা কখনোই তারের উপর দিয়ে যায় না। সেই গোপনীয়তা তারপর একটি কি-উৎভবন ফাংশনের মধ্য দিয়ে চালানো হয় যাতে প্রতিটি দিকের জন্য আলাদা কি, সাথে রেকর্ড স্তরের প্রয়োজনীয় নন্স ও IV উপাদান তৈরি হয়। WireGuard এটি করে তার Noise-ভিত্তিক গঠনে; TLS 1.3 এটি করে হ্যান্ডশেক ট্র্যানস্ক্রিপ্টের উপর HKDF দিয়ে।
দীর্ঘমেয়াদি প্রমাণপত্র — সার্টিফিকেট ও প্রাইভেট কি, বা একটি স্থির WireGuard কি — সেই বিনিময়কে প্রমাণিত করে। এটি ট্র্যানস্ক্রিপ্টে স্বাক্ষর করে বা মিশে যায় যাতে অপরিচিত কেউ পিয়ারের জায়গায় হ্যান্ডশেক সম্পূর্ণ করতে না পারে। এরপর প্রমাণপত্রটি প্রতি-প্যাকেট কাজ করে না। করলে, প্রতিটি প্যাকেটে প্রাইভেট-কি অপারেশন লাগত, এবং ব্যস্ত ট্যানেল স্ট্যাকের সবচেয়ে ধীর অপারেশন দ্বারা সীমাবদ্ধ হত।
এর দুটি পার্শ্বপ্রতিক্রিয়া অনুসরণ করে। প্রথমত, সেশন কি প্রতিবার নতুন, তাই যে আক্রমণকারী পরে দীর্ঘমেয়াদি কি চুরি করে সে আগে রেকর্ড করা সেশন ডিক্রিপ্ট করতে পারে না, যদি চুক্তিটি ক্ষণস্থায়ী হয়। দ্বিতয়ত, ফেঁস হওয়া সেশন কি একটি সেশনকে আপস্তিত করে, পরিচয় নয়।
কেন বাল্ক ডেটা সিমেট্রিক কি ব্যবহার করে
সিমেট্রিক সাইফার আয়তন ভালোভাবে সম্বহন করে: AES-GCM বা ChaCha20-Poly1305 প্রতিটি প্যাকেট ইতিমধ্যে মেমোরিতে থাকা কি দিয়ে প্রশ্বন করে, হেডার প্রমাণিত করে এবং একটি কাউন্টার বাড়ায়। গ্রহণকারী পক্ষ নন্স ও প্রমাণায়ন ট্যাগ যাঞ্চ করে এবং ব্যর্থ বা পুনরায় প্রেরিত সবকিছু বাদ দেয়। এটি সাধারণ হার্ডওয়্যারে লাইন হারে চালানোর জন্য যথেষ্ট সস্তা, এবং একই গঠন এক পাসে গোপনীয়তা ও অখণ্ডতা দেয়।
গঠনটি আরও সেইখানে যেখানে বেশিরভাগ বাস্তবায়ন বাগ বাস করে। GCM-এ পুনরাবৃত্ত নন্স একসাথে গোপনীয়তা ও প্রামাণিকতা ভাঙ্গ করে, তাই প্রোটোকল প্রতিটি দিকের জন্য কি উৎভাবন করে এবং একটি স্পষ্ট কাউন্টার বা যুগ বজায় রাখে। যদি আপনি প্যাকেট ক্যাপচার পড়েন এবং সাইফারটেক্সটের দৈর্ঘ্য প্লেইনটেক্সট ও একটি নির্দিষ্ট অতিরিক্তের সাথে মিলে, তা সিমেট্রিক স্তর কাজ করছে, প্রতিটি প্যাকেটে ঘটা পাবলিক-কি অপারেশন নয়।
আয়ু, কি পুনর্নবীকরণ এবং ফরোয়ার্ড সিক্রেসি
সেশন কি মেয়াদ শেষ হওয়ার জন্য। TLS 1.3 একটি KeyUpdate বার্তাকে ট্র্যাফিক কি ঘুরাতে দেয়; WireGuard কনফিগার করা সময় বা বার্তা সংখ্যার পরে সেশন পুনর্নবীকরণ করে এবং পথে থাকা প্যাকেটের জন্য পুরোনটি অল্পকাল রাখে। OpenVPN তার ডেটা-চ্যানেল কি সময়সূচী অনুয়ায়ী পুনরায় বিনিময় করে, reneg-sec ব্যবধান নিয়ন্ত্রণ করে।
সেই ঘুরানোর কোনটিই সার্টিফিকেট নবায়নের সমান নয়। একটি সার্টিফিকেট এক বছর বৈধ থাকতে পারে, অথচ সেশন কি প্রতি কয়েক মিনিটে বদলায়, এবং সার্টিফিকেট চলমান ট্যানেলের কি স্পর্শ না করেই প্রতিস্থাপিত করা যায়। যখন আপনি মেয়াদ শেষের পরিকল্পনা করেন, জিজ্ঞাস করুন কোন বস্তু আপনি ঘুরাছেন; উত্তরটি সিদ্ধান্ত করে ক্লায়েন্টরা আবার সংযুক্ত হবে নাকি শুধু কি বদলাবে।
বস্তু মেশানো ছাড়া কনফিগ ও ডায়াগনস্টিক্স পড়া
বাস্তবে, আপনি একটি সম্পূর্ণ প্রোটোকল এবং তার সমর্থিত প্রিমিটিভ বেছে নেন, নিজেরটি জোড়া লাগাচ্ছেন না। OpenVPN-এর --tls-crypt কি নিয়ন্ত্রণ চ্যানেল রক্ষা করে; ডেটা চ্যানেল বিনিময়কৃত সিমেট্রিক সাইফার ব্যবহার করে। WireGuard-এর PrivateKey ও PublicKey এন্ট্রি পরিচয় উপাদান, অথচ তার ট্রান্সপোর্ট কি অভ্যন্তরে উৎভাবিত হয়। ঐ ক্ষেত্রগুলোকে একই ধরনের গোপনীয়তা হিসেবে পড়া ভুলের দিকে নিয়ে যায়, যেমন পাবলিক কি সেখানে পেস্ট করা যেখানে প্রাইভেটটির স্থান।
পাবলিক উপাদান প্রাইভেট থেকে আলাদা রাখুন। একটি সার্টিফিকেট, একটি WireGuard পাবলিক কি এবং একটি ফিঙ্গারপ্রিন্ট টিকেটে ভাগ করা নিরাপদ। একটি প্রাইভেট কি, একটি পূর্ব-ভাগ করা কি এবং একটি রপ্তানি করা সেশন কি নয়। যখন শক্তি তুলনা করেন, একই ধরনের মধ্যে তুলনা করুন: একটি উপবৃত্তীয়-বক্ররেখা শনাক্তকারী, একটি RSA মডুলাস আকার এবং একটি AES কি আকার ভিন্ন অনুমানে ভিন্ন জিনিস মাপে। TLS 1.3 স্পেসিফিকেশন দুটি স্তর কীভাবে একত্র ফিট করে তার জন্য একটি দরকারি রেফারেন্স, ঐটা আপনার ট্যানেল TLS না হলেও।