সার্টিফিকেট পিনিং এর মাধ্যমে সুরক্ষিত যোগাযোগ

  • সার্টিফিকেট পিনিং নির্দিষ্ট সার্টিফিকেটের উপর বিশ্বাসযোগ্যতা সীমাবদ্ধ করার মাধ্যমে ম্যান-ইন-দ্য-মিডল আক্রমণের বিরুদ্ধে একটি প্রতিবন্ধক হিসেবে কাজ করে।
  • দুটি প্রধান পদ্ধতি রয়েছে: সম্পূর্ণ সার্টিফিকেট অ্যাঙ্করিং করা এবং পাবলিক কী ফিক্স করা।
  • প্ল্যাটফর্ম ভেদে এর বাস্তবায়ন ভিন্ন হয় এবং অ্যান্ড্রয়েড, আইওএস ও ক্যাপাসিটরের মতো হাইব্রিড ফ্রেমওয়ার্কগুলোতে নেটিভ কনফিগারেশনের প্রয়োজন হয়।
  • পিনের মেয়াদ শেষ হয়ে গেলে অ্যাপ্লিকেশনগুলো যাতে অকার্যকর না হয়ে পড়ে, তা প্রতিরোধ করার জন্য সার্টিফিকেট আবর্তন ব্যবস্থাপনা অত্যন্ত গুরুত্বপূর্ণ।

সার্টিফিকেট পিনিং এর মাধ্যমে সুরক্ষিত যোগাযোগ

আপনি সম্ভবত HTTPS-এর কথা শুনেছেন এবং আপনার ব্রাউজারের সবুজ তালা চিহ্নটি যে আমাদের মানসিক শান্তি দেয়, সে সম্পর্কেও জানেন। তবে, অ্যাপ ডেভেলপমেন্টের জগতে, সার্টিফিকেটটি বৈধ—শুধু এটুকু অন্ধভাবে বিশ্বাস করাই সবসময় যথেষ্ট নয়। এখানে একটি সুপ্ত ঝুঁকি রয়েছে, যেখানে একটি এনক্রিপ্টেড সংযোগ থাকা সত্ত্বেও, কেউ গোপনে আপনার ডিভাইস এবং সার্ভারের মধ্যে কী ঘটছে তা শুনতে পারে।

এই নিরাপত্তা দুর্বলতা মোকাবেলার জন্য, সার্টিফিকেট পিনিং (Certificate Pinning) নামক একটি কৌশল আবির্ভূত হয়েছে । মূলত, এটি আমাদের অ্যাপ্লিকেশনকে বলে: "যেকোনো সার্টিফিকেট অথরিটিকে বিশ্বাস করবেন না; সার্ভার যদি এই নির্দিষ্ট সার্টিফিকেট বা পাবলিক কী উপস্থাপন করে, তবেই কেবল সংযোগটি গ্রহণ করুন।" এটি অনেকটা আমাদের যোগাযোগের দরজায় একজন অত্যন্ত কড়া দ্বাররক্ষী রাখার মতো।

এসএসএল পিনিং আসলে কী এবং কেন আমাদের এটি প্রয়োজন?

এটি সঠিকভাবে বোঝার জন্য, আমাদের প্রথমে মনে রাখতে হবে যে স্ট্যান্ডার্ড HTTPS একটি বিশ্বাসের শৃঙ্খলের উপর ভিত্তি করে গঠিত । আপনি যখন কোনো সার্ভারের সাথে সংযোগ স্থাপন করেন, তখন সেটি আপনাকে তার ডিজিটাল সার্টিফিকেট পাঠায়। আপনার মোবাইল ডিভাইসটি যাচাই করে দেখে যে এই ডকুমেন্টটি অপারেটিং সিস্টেম দ্বারা বিশ্বস্ত কোনো সার্টিফিকেট অথরিটি (CA) দ্বারা স্বাক্ষরিত হয়েছে কি না। যদি স্বাক্ষরটি বৈধ হয় এবং সার্টিফিকেটের মেয়াদ শেষ না হয়ে থাকে, তবে সংযোগটি স্থাপিত হয়।

সমস্যাটি তখনই দেখা দেয় যখন কোনো আক্রমণকারী সংযোগটি মাঝপথে অনুপ্রবেশ করতে সক্ষম হয়, যা কুখ্যাত ম্যান-ইন-দ্য-মিডল (MITM) আক্রমণ নামে পরিচিত । যদি হ্যাকার কোনো সার্টিফিকেট অথরিটি (CA)-কে দিয়ে একটি জাল কিন্তু বৈধ সার্টিফিকেট ইস্যু করাতে পারে, অথবা যদি তারা ভুক্তভোগীর ডিভাইসে একটি ক্ষতিকারক রুট সার্টিফিকেট ইনস্টল করতে সক্ষম হয়, তাহলে অপারেটিং সিস্টেম সংযোগটি অনুমোদন করে দেবে। সেই মুহূর্তে, ব্যবহারকারীর কোনো অস্বাভাবিকতা টের পাওয়ার আগেই আক্রমণকারী ব্যাঙ্কের বিবরণ বা পাসওয়ার্ডের মতো সংবেদনশীল তথ্য হাতিয়ে নিতে এবং পরিবর্তন করতে পারে।

এইখানেই পিনিং-এর ভূমিকা আসে। যেকোনো স্বীকৃত CA-কে বিশ্বাস করার পরিবর্তে, অ্যাপটি সার্ভারের সার্টিফিকেট বা পাবলিক কী হ্যাশের একটি কপি সংরক্ষণ করে। হ্যান্ডশেকের সময়, অ্যাপটি প্রাপ্ত সার্টিফিকেটটিকে তার নিজের সংরক্ষিত সার্টিফিকেটের সাথে তুলনা করে। যদি দুটি বিট-বাই-বিট না মেলে, তবে সংযোগটি সঙ্গে সঙ্গে বিচ্ছিন্ন করে দেওয়া হয়, যা সার্ভার স্পুফিং প্রতিরোধ করে ।

মবসফ
সম্পর্কিত নিবন্ধ:
MobSF ফ্রেমওয়ার্ক: অ্যান্ড্রয়েড, iOS এবং উইন্ডোজ মোবাইল অ্যাপ্লিকেশনের জন্য ব্যাপক নিরাপত্তা বিশ্লেষণ

অ্যাঙ্করিং-এর প্রকারভেদ: সার্টিফিকেট বনাম পাবলিক কী

সব পিনিং একই পদ্ধতিতে করা হয় না। আমরা কী "পিন" করতে চাই তার উপর নির্ভর করে, দুটি প্রধান পদ্ধতি রয়েছে। প্রথমটি হলো সার্টিফিকেট পিনিং , যেখানে আমরা সম্পূর্ণ সার্টিফিকেট ফাইলটি (.pem বা .der) সংরক্ষণ করি। এটি বাস্তবায়নের জন্য সবচেয়ে সহজ বিকল্প, কিন্তু রক্ষণাবেক্ষণের জন্য সবচেয়ে কষ্টসাধ্য, কারণ প্রতিবার সার্ভার সার্টিফিকেটের মেয়াদ শেষ হয়ে গেলে এবং এটি নবায়ন করা হলে, আমাদের স্টোরে থাকা অ্যাপ্লিকেশনটি আপডেট করতে হয় , নতুবা ব্যবহারকারীরা পরিষেবা থেকে বঞ্চিত হবেন।

দ্বিতীয় বিকল্পটি হলো পাবলিক কী পিনিং । এক্ষেত্রে, আমরা শুধুমাত্র সার্টিফিকেটের পাবলিক কী-এর হ্যাশ (সাধারণত SHA-256) সংরক্ষণ করি। এর প্রধান সুবিধা হলো, সার্টিফিকেট নবায়ন করা হলেও পাবলিক কী অক্ষত থাকতে পারে, যা আমাদের সার্টিফিকেটের ক্ষেত্রে অধিক নমনীয়তা দেয় এবং বাধ্যতামূলক অ্যাপ আপডেটের হার কমায়। এছাড়াও, শুধুমাত্র হ্যাশ সংরক্ষণ করার ফলে কোডটি আরও পরিচ্ছন্ন হয় এবং রিভার্স ইঞ্জিনিয়ারিংয়ের চেষ্টাকারী কারও পক্ষে এটি বের করা আরও কঠিন হয়ে পড়ে।

বিভিন্ন প্ল্যাটফর্মে প্রযুক্তিগত বাস্তবায়ন

পিনিং বাস্তবায়ন

যদি আমরা কাজ করি অ্যান্ড্রয়েডসবচেয়ে আধুনিক উপায় হলো ফাইলটি ব্যবহার করা। network_security_config.xmlএই XML ফাইলে আমরা যে সার্টিফিকেটগুলো (পিন) অনুমোদন করতে চাই, সেগুলোর ডোমেইন এবং হ্যাশ নির্ধারণ করি, যা আমাদেরকে নিম্নলিখিত কাজগুলো করতে সক্ষম করে: অ্যান্ড্রয়েডে প্রয়োজনীয় নিরাপত্তা সেটিংস সক্রিয় করুন স্বাভাবিকভাবেই। তারপর, আমরা কেবল এই ফাইলটি লিঙ্ক করি। AndroidManifest.xmlঅতীতে, ক্লাসটি ওভাররাইট করে আরও জটিল কাজ করা হতো। DefaultHttpClient এবং এর মাধ্যমে জাভা সার্টিফিকেট স্টোর পরিচালনা করা keytoolতবে, এক্সএমএল-ভিত্তিক কনফিগারেশন অনেক বেশি কার্যকর।

এর বাস্তুতন্ত্রে আইওএসবিষয়টা কিছুটা বদলে যায়। ফাইলটি কনফিগার করার মাধ্যমে আমরা অ্যাপ ট্রান্সপোর্ট সিকিউরিটি (ATS)-এর সুবিধা নিতে পারি। Info.plist অ্যাঙ্কর করা ডোমেনগুলি সংজ্ঞায়িত করতে। তবে, সম্পূর্ণ নিয়ন্ত্রণের জন্য, রানটাইম ভ্যালিডেশন প্রয়োগ করা সাধারণ। URLSessionDelegateপ্রমাণীকরণ চ্যালেঞ্জ পদ্ধতিতে, আমরা সার্ভার থেকে সার্টিফিকেটটি বের করে সেটির সাথে তুলনা করি। স্থানীয়ভাবে সংরক্ষিত সার্টিফিকেট অ্যাপ্লিকেশন বান্ডেলে।

অ্যান্ড্রয়েড সিস্টেম কী ভেরিফায়ার-৫ কী?
সম্পর্কিত নিবন্ধ:
অ্যান্ড্রয়েড সিস্টেম কী ভেরিফায়ার: এটি কী, এটি কী করে এবং এটি আপনার অ্যান্ড্রয়েড নিরাপত্তাকে কীভাবে প্রভাবিত করে।

যারা ব্যবহার করেন তাদের জন্য ক্যাপাসিটর বা হাইব্রিড ফ্রেমওয়ার্কপ্লাগইন আছে যেমন @capgo/capacitor-ssl-pinning যা প্রক্রিয়াটিকে একীভূত করে। এই ক্ষেত্রে, কনফিগারেশনটি সাধারণত অ্যাপের কনফিগারেশন ফাইলে করা হয়, যেখানে সার্টিফিকেট তালিকা নির্দিষ্ট করা হয় এবং ভ্যালিডেশন সক্রিয় করা হয়। এই বাস্তবায়নগুলিকে বিভিন্ন টুলের সাহায্যে পরীক্ষা করা অত্যাবশ্যক, যেমন— চার্লস প্রক্সিএকটি MITM আক্রমণের অনুকরণ করে এটি নিশ্চিত করা হয় যে, সার্টিফিকেটটি প্রত্যাশিত না হলে অ্যাপ্লিকেশনটি কার্যকরভাবে সংযোগটি প্রত্যাখ্যান করে।

ঝুঁকি, সীমাবদ্ধতা এবং রক্ষণাবেক্ষণ

পিনিং সবসময় সুবিধাজনক নয়। এর সবচেয়ে বড় বিপদ হলো এক্সপিরেশন লকআউট । যদি সার্ভার সার্টিফিকেটের মেয়াদ শেষ হয়ে যায় এবং আপনি নতুন পিন দিয়ে অ্যাপটি আপডেট না করেন, তাহলে আপনার সমস্ত ব্যবহারকারী কানেকশন এরর দেখতে পাবে। এই বিপর্যয় এড়ানোর জন্য, ব্যাকআপ পিন ব্যবহার করাই সর্বোত্তম উপায় । আমরা একটি সেকেন্ডারি পাবলিক কী-এর হ্যাশ সংরক্ষণ করি, যা শুধুমাত্র জরুরি অবস্থা বা অপ্রত্যাশিত রোটেশনের ক্ষেত্রে ব্যবহার করা হয়।

অন্যদিকে, যে সকল ডেভেলপারদের তাদের কমিউনিকেশন ডিবাগ করতে হয়, তাদের জন্য পিনিং একটি মাথাব্যথার কারণ হতে পারে। মনিটরিং টুলগুলো ঠিকমতো কাজ করার জন্য, কখনও কখনও ডেভেলপমেন্ট এনভায়রনমেন্টে পিনিং নিষ্ক্রিয় করা বা নির্দিষ্ট ডিবাগ ভার্সন তৈরি করা প্রয়োজন হয় এবং সবসময় এটা নিশ্চিত করতে হয় যে, শেষ ব্যবহারকারীর কাছে পৌঁছানো প্রোডাকশন ভার্সনে এই কার্যকারিতাটি সক্রিয় থাকে।

ওয়েবের ক্ষেত্রে, একই ধরনের ধারণা বাস্তবায়নে ক্রোম অগ্রণী ভূমিকা পালন করেছিল। এটি HTTPS-এর ব্যবহার বাধ্যতামূলক করতে HSTS (HTTP Strict Transport Security) ব্যবহার করে এবং ফার্স্ট-কন্টাক্ট ভালনারেবিলিটি প্রতিরোধ করার জন্য 'প্রিলোডেড' সাইটগুলোর একটি তালিকা বজায় রাখে। যদিও ওয়েবের জন্য HPKP স্ট্যান্ডার্ডটি বিদ্যমান ছিল, কিন্তু এটি অত্যন্ত ঝুঁকিপূর্ণ হওয়ায় এবং কনফিগারেশনে কোনো ত্রুটি ঘটলে ওয়েবসাইটগুলোকে অ্যাক্সেস-অযোগ্য করে তুলতে পারায় অবশেষে এর ব্যবহার বন্ধ হয়ে যায়।

সার্টিফিকেট পিনিং বাস্তবায়ন করা একটি কৌশলগত সিদ্ধান্ত, যা সর্বোচ্চ নিরাপত্তা এবং পরিষেবার কার্যকারিতার মধ্যে ভারসাম্য রক্ষা করে। নির্দিষ্ট কিছু সত্তার উপর আস্থা সীমাবদ্ধ করার মাধ্যমে আমরা যোগাযোগ ব্যবস্থাকে অত্যাধুনিক আক্রমণ থেকে সুরক্ষিত রাখি। তবে, গ্রাহকদের প্রবেশাধিকার থেকে বঞ্চিত হওয়া এড়ানোর জন্য আমরা আমাদের কী এবং সার্টিফিকেটের জীবনচক্রের উপর কঠোর নিয়ন্ত্রণ বজায় রাখি।

5জি এবং নিরাপত্তা
সম্পর্কিত নিবন্ধ:
নিরাপত্তায় ৫জি-র ভূমিকা: অগ্রগতি, চ্যালেঞ্জ এবং ব্যাপক সমাধান

Google-এ পছন্দের উৎস হিসেবে যোগ করুন