TLS কী শেয়ার বনাম ক্লায়েন্ট সার্টিফিকেট: কোনটি লগইন করায়?
কী সমঝোতাকে ক্লায়েন্ট প্রমাণীকরণ ও অ্যাপ্লিকেশন পরিচয় থেকে আলাদা করুন, এবং হ্যান্ডশেক বার্তাগুলো পড়ুন যেগুলো দেখায় সংযোগটি আসলে কোনটি ব্যবহার করেছে।
হ্যান্ডশেকে একটি পাবলিক কী-বিনিময় মান বহন করা আর ক্লায়েন্টের লগইন করা একই ঘটনা নয়। একটি সংযোগের জন্য ক্রিপ্টোগ্রাফিক অবস্থা তৈরি করে; অন্যটি বলে ক্লায়েন্ট কে, এবং এটি কেবল তখনই ঘটে যখন সার্ভার তা চায় ও বিনিময় তা সমর্থন করে। প্রথমটিকে দ্বিতীয়টি হিসেবে ধরা VPN কী লুকায় ও কী লুকায় না সে সম্পর্কে ভুল সিদ্ধান্তে নিয়ে যায়। বার্তাগুলো পড়ুন, তারপর ঠিক করুন চারটি বৈশিষ্ট্যের মধ্যে কোনটি আপনি সত্যিই পর্যবেক্ষণ করেছেন।
ক্যাপচারে একই রকম দেখায় এমন দুটি বস্তু
একটি TLS 1.3 ক্লায়েন্ট কোনো সার্টিফিকেট না দিয়েই তার প্রথম ফ্লাইটে কী-বিনিময় উপাদান দিতে পারে। এই অবদান নকশাগতভাবেই পাবলিক, কারণ শেয়ার্ড সিক্রেট বের করতে সার্ভারের এটি দরকার। ক্লায়েন্ট সার্টিফিকেট আলাদা বার্তা, কেবল সার্ভার একটি চাওয়ার পরেই পাঠানো হয়। এটি একটি পরিচয় বহন করে যা সার্ভার পরে যাচাই করে, আর পারস্পরিক প্রমাণীকরণ সার্ভারের সিদ্ধান্ত, সাইফার স্যুটের অনিবার্য বৈশিষ্ট্য নয়। অ্যাপ্লিকেশন পরিচয় সম্পূর্ণ তৃতীয় জিনিস: লগইন ফর্ম, বেয়ারার টোকেন, কুকি। এর কোনোটিই হ্যান্ডশেকে দেখা যায় না, এবং সবগুলোই নেটওয়ার্ক পথ বদলালেও টিকে থাকে।
| Object in play | What it establishes |
|---|---|
| Key-exchange share | Cryptographic state for this connection |
| Server certificate | Which server the client reached |
| Client certificate | Client authentication, when requested |
| Application session | Account identity inside the application |
চারটি সারি স্বাধীন। একটি সংযোগে প্রথম ও দ্বিতীয় সারি থাকতে পারে, তৃতীয়টি বাদ দিতে পারে, তবুও কুকি হেডারে চতুর্থটি বহন করতে পারে।
ধরা পড়া হ্যান্ডশেক কী প্রমাণ করতে পারে তা ঠিক করুন
কেবল হ্যান্ডশেক থেকে পর্যবেক্ষক সমঝোতাকৃত সংস্করণ, সাইফার স্যুট, সার্ভারের সার্টিফিকেট ও পাবলিক কী-বিনিময় মান জানতে পারে। এটি একটি ক্লায়েন্ট বাস্তবায়নের ফিঙ্গারপ্রিন্ট নিতে এবং কোন সার্ভারে যোগাযোগ হয়েছে তা দেখতে যথেষ্ট। যা এটি দেয় না তা হল সংযোগ ডিক্রিপ্ট করতে প্রয়োজনীয় প্রাইভেট অবস্থা, যার গোপনীয়তা পাবলিক শেয়ারের বদলে ক্ষণস্থায়ী বিনিময়ের উপর নির্ভর করে। এটি অ্যাকাউন্ট পরিচয়ও দেয় না, যা শুরুতেই হ্যান্ডশেকে ছিল না।
তাই সৎ সিদ্ধান্ত সংকীর্ণ: এই বিনিময়ে কোনো ক্লায়েন্ট সার্টিফিকেট উপস্থাপন করা হয়নি। কথা হলো না যে ক্লায়েন্ট লিঙ্কযোগ্য কিছু পাঠায়নি, আর অবশ্যই না যে সেশনটি কোনো শনাক্তকারী বহন করেনি।
সাইফারের নাম নয়, বার্তাগুলো পড়ুন
সাইফার স্যুট থেকে অনুমান না করে সার্ভারকে জিজ্ঞাসা করুন সে কী চায়। সার্টিফিকেট অনুরোধসহ একটি TLS 1.3 হ্যান্ডশেক ট্রান্সক্রিপ্টে দৃশ্যমান, আর তার অনুপস্থিতিও সমানভাবে দৃশ্যমান।
openssl s_client -connect app.example.net:443 -tls1_3 -msg < /dev/null 2>&1 | grep -i -E 'key_share|CertificateRequest'
তারপর ক্লায়েন্ট সার্টিফিকেট কনফিগার করে পুনরাবৃত্তি করুন ও তুলনা করুন। দ্বিতীয় রানে সার্টিফিকেট পাঠানো ও গৃহীত হওয়া দেখা উচিত; প্রথমটিতে কিছুই দেখা উচিত নয়, এবং এই বাস্তব পার্থক্যটাই বিতর্কের বিষয়।
openssl s_client -connect app.example.net:443 -tls1_3 -cert client.pem -key client.key -quiet
যদি কেবল সাধারণ ব্রাউজিং কেস দরকার হয়, বিস্তারিত ক্লায়েন্ট আউটপুটই প্রোটোকল সংস্করণ, যাচাইয়ের ফলাফল এবং ক্লায়েন্ট সার্টিফিকেট দেওয়া হয়েছে কি না দেখার জন্য যথেষ্ট। যে সার্ভার কখনো সার্টিফিকেট অনুরোধ পাঠায় না, সে একটি পেতেই পারে না।
কোথায় পুনঃসূচনা উত্তর বদলে দেয়
TLS 1.3 পুনঃসূচনা গোপন অবস্থার সঙ্গে যুক্ত টিকিট ব্যবহার করে, তাই পরের সংযোগটি পূর্ণ সার্টিফিকেট বিনিময় ছাড়াই সম্পন্ন হতে পারে। এটি পর্যবেক্ষক যা দেখে তা কমায় এবং ট্রান্সক্রিপ্ট যা প্রমাণ করে তা বদলায়। যেখানে পরিচয় ছিল না সেখানে এটি পরিচয় তৈরি করে না। পুনঃসূচিত সেশনটি এখনও একই অ্যাপ্লিকেশন সেশনের অন্তর্গত, আর সেই সেশনের যেকোনো কুকি বা টোকেনই গুরুত্বপূর্ণ শনাক্তকারী হয়ে থাকে।
এই কারণে "কোনো ক্লায়েন্ট সার্টিফিকেট নেই"-তে থেমে যাওয়া গোপনীয়তা পর্যালোচনা আকর্ষণীয় অংশটি মিস করে। যে প্রশ্নটি করতে হবে তা হল কোন পক্ষ স্থিতিশীল শনাক্তকারী ধরে আছে, একটি হ্যান্ডশেক থেকে কোন বার্তা অনুপস্থিত ছিল তা নয়।
একটি রায় নয়, চারটি বৈশিষ্ট্য লিখুন
কী সমঝোতা, সার্ভার যাচাই, ক্লায়েন্ট প্রমাণীকরণ ও অ্যাপ্লিকেশন পরিচয়—প্রত্যেকটির প্রমাণসহ—চারটি আলাদা লাইনে লিখুন। এই তালিকা প্রোটোকল সংস্করণ বদলালেও টিকে থাকে এবং গোপনীয়তা সম্পর্কিত যুক্তিকে অন্য কারও যাচাইযোগ্য করে তোলে। তারপর নেটওয়ার্ক পথ কী যোগ করে তা যোগ করুন। VPN একটি সেবা যে উৎস ঠিকানা দেখে তা বদলায়; এটি অ্যাপ্লিকেশন যে লগইন, কুকি বা ডিভাইস ফিঙ্গারপ্রিন্ট ইতিমধ্যেই ধরে আছে তা সরায় না।
সংযোগের সমঝোতাকৃত সংস্করণ ও সার্টিফিকেট অনুরোধের ফলাফল একসাথে লিখুন, কারণ পর্যালোচকের নিজের ক্যাপচার ছাড়া আপনার সিদ্ধান্ত পুনরুৎপাদন করতে ঠিক এই জোড়টিই দরকার।