HPKP রিপোর্টিংয়ের সাথে পাবলিক কী পিনিং রোল আউট করা হচ্ছে

আপনার সাইটে SSL ব্যবহার করা আপনার ব্যবহারকারীদের জন্য নিরাপত্তা এবং গোপনীয়তা রক্ষা করার একটি গুরুত্বপূর্ণ উপায়। কিন্তু SSL সক্ষম করা গল্পের শেষ নয়: আপনার সাইট যে নিরাপত্তা প্রদান করে তা আরও বাড়ানোর জন্য আপনি অনেক পদক্ষেপ নিতে পারেন, আপনার কুকিতে সিকিউর অ্যাট্রিবিউট সেট করা থেকে শুরু করে HTTP স্ট্রিক্ট ট্রান্সপোর্ট সিকিউরিটি চালু করা থেকে কনটেন্ট সিকিউরিটি পলিসি ব্যবহার করা পর্যন্ত আপনার সাইটের বিশেষাধিকার লক ডাউন. যদিও এই শক্তিশালী বৈশিষ্ট্যগুলি স্থাপন করা কখনও কখনও চতুর হতে পারে। আপনাকে SSL এর একটি কঠোর ফর্ম রোল আউট করতে সাহায্য করার জন্য, Chrome 46 HPKP রিপোর্টিং নামে একটি বৈশিষ্ট্য সহ প্রেরণ করে৷

এই সব আদ্যক্ষরা মানে কি?

ওয়েবে নিরাপত্তা আজ SSL শংসাপত্রের উপর নির্ভর করে: ক্রিপ্টোগ্রাফিক স্বাক্ষর প্রমাণ করে যে একটি ওয়েবসাইট কে তা বলে। যখন আপনার ব্রাউজার https://developers.google.com- এর মতো URL-এ একটি অনুরোধ পাঠায়, সার্ভার একটি SSL শংসাপত্র প্রদান করে এবং শংসাপত্রটি বৈধ হলে, ব্রাউজার অনুরোধটিকে এগিয়ে যাওয়ার অনুমতি দেয় এবং সবুজ রঙের সাথে ওয়েবসাইট URL দেখায় ঠিকানা বারে তালা।

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

HTTP পাবলিক কী পিনিং, বা HPKP লিখুন। এই স্ট্যান্ডার্ড ওয়েবসাইটগুলিকে একটি HTTP শিরোনাম পাঠাতে ব্রাউজারকে তার SSL সার্টিফিকেট চেইনের কিছু অংশ মনে রাখার (বা "পিন") নির্দেশ দেয়। ব্রাউজারটি পরবর্তী সংযোগগুলিকে প্রত্যাখ্যান করবে যা পূর্বে প্রাপ্ত পিনের সাথে মেলে না। এখানে একটি HPKP হেডারের একটি উদাহরণ:

Public-Key-Pins:  
       pin-sha256="d6qzRu9zOECb90Uez27xWltNsj0e1Md7GkYYkVoZWmM=";  
       pin-sha256="LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ=";  
       max-age=259200

এই হেডার পিন হিসাবে দুটি শংসাপত্র হ্যাশ নির্দিষ্ট করে। একটি হল সাইটের শংসাপত্রের শৃঙ্খলে একটি শংসাপত্রের একটি হ্যাশ, এবং অন্যটি হল একটি ব্যাকআপ পিন, বা একটি শংসাপত্রের একটি হ্যাশ যা সাইটটি তার শংসাপত্রটি ঘোরানোর প্রয়োজনে ব্যবহার করতে পারে৷ শিরোনামে একটি max-age মানও অন্তর্ভুক্ত রয়েছে। সেকেন্ডের সেই সংখ্যার পরে, ব্রাউজার পিনটি ভুলে যাবে।

সাধারণভাবে HPKP সম্পর্কে আরও জানতে, স্পেকটি দেখুন বা সহ ক্রোম বিকাশকারী ক্রিস পামারের চমৎকার ব্লগ পোস্টটি দেখুন।

আমার কি এখনই HPKP চালু করা উচিত?

অগত্যা নয়। আপনি যখন HPKP স্থাপন করেন, তখন ভুল করা এবং ঘটনাক্রমে আপনার সাইটটি DoS করা বেশ সহজ। আপনি যদি আপনার সাইটটিকে শংসাপত্রের একটি সেটে পিন করেন এবং তারপরে একটি নতুন স্থাপন করতে হয়, যে ব্যবহারকারীরা পিনটি দেখেছেন তারা পিনের মেয়াদ শেষ না হওয়া পর্যন্ত আপনার সাইটে অ্যাক্সেস করতে পারবেন না (হেডারে max-age মানের উপর ভিত্তি করে)।

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

HPKP রিপোর্টিং কি এবং এটি কিভাবে সাহায্য করে?

HPKP রিপোর্টিং, Chrome 46-এ শিপিং, এমন একটি বৈশিষ্ট্য যা আপনি HPKP রোল আউট করার সময় ভুল কনফিগারেশন সনাক্ত করতে ব্যবহার করতে পারেন৷

প্রথমে, আপনি Public-Key-Pins-Report-Only হেডার পাঠিয়ে শুরু করতে পারেন:

Public-Key-Pins-Report-Only: 
       max-age=2592000;  
       pin-sha256="E9CZ9INDbd+2eRQozYqqbQ2yXLVKB9+xcprMF+44U1g=";  
       pin-sha256="LPJNul+wow4m6DsqxbninhsWHlwfp0JecwQzYpOLmCQ=";  
report-uri="https://example.net/pkp-report"

যখন আপনার সাইট এই ধরনের একটি শিরোনাম পাঠায়, Chrome বর্তমান সংযোগটি পিনের সাথে মেলে কিনা তা যাচাই করবে এবং না হলে report-uri একটি প্রতিবেদন পাঠাবে। ক্রোম কখনই শুধুমাত্র রিপোর্ট হেডারে থাকা পিনের উপর ভিত্তি করে অনুরোধগুলিকে ব্লক করবে না, তাই এটি HPKP ব্যবহার করে দেখার একটি নিরাপদ উপায় এবং এটি আপনার সাইটের DoSing এর ঝুঁকি না চালিয়ে আপনার ব্যবহারকারীদের জন্য সমস্যা সৃষ্টি করে কিনা তা দেখুন৷

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

যখন আপনি আপনার পিনগুলি কার্যকর করা শুরু করতে প্রকৃত Public-Key-Pins শিরোনামটি রোল আউট করেন, তখন আপনি সেই শিরোলেখটিতে একটি প্রতিবেদন-উরি মানও অন্তর্ভুক্ত করতে পারেন, যাতে কোনো সমস্যা দেখা দিলে আপনি প্রতিবেদনগুলি পেতে থাকবেন।

একটি HPKP লঙ্ঘন রিপোর্টে কি যায়?

একটি HPKP লঙ্ঘন প্রতিবেদন হল একটি JSON বার্তা যা আপনার কনফিগার করা report-uri একটি HTTP POST অনুরোধে পাঠানো হয়। ক্ষেত্রগুলির তালিকাটি স্পেসে পাওয়া যেতে পারে, তবে আমি এখানে তাদের দুটি হাইলাইট করব: served-certificate-chain এবং validated-certificate-chainserved-certificate-chain হল সেই সার্টিফিকেট যা অনুরোধের জন্য SSL সংযোগ সেট আপ করার সময় Chrome এটি পেয়েছিল। অন্য দিকে, validated-certificate-chain হল সেই চেইন যা Chrome সার্ভারের শংসাপত্র যাচাই করার চেষ্টা করার সময় পুনর্নির্মাণ করে, যা আশ্চর্যজনকভাবে, served-certificate-chain থেকে আলাদা হতে পারে। বিভিন্ন ক্লায়েন্ট বিভিন্ন উপায়ে শংসাপত্রের বৈধতা সম্পাদন করে এবং এটি HPKP ভুল কনফিগারেশনের একটি সাধারণ কারণ হতে পারে। আপনি যদি অপ্রত্যাশিত রিপোর্ট পান তবে এই ক্ষেত্রটি পরীক্ষা করতে ভুলবেন না।

একটি শেষ "গ্রেচ্ছা"

আপনি যদি HPKP রিপোর্টিং স্থাপন করে থাকেন, মনে রাখবেন যে Chrome সমস্ত অনুরোধের জন্য পিন বৈধতা দেয়—প্রতিবেদন পাঠানোর অনুরোধ সহ। তাই আপনি যদি আপনার সাইটের জন্য HPKP স্থাপন করে থাকেন, তাহলে আপনি সম্ভবত HPKP রিপোর্টগুলিকে একটি ভিন্ন ডোমেনে পাঠাতে চান যা আপনি পিন করেননি। অন্যথায়, আপনার সাইটে একটি পিন লঙ্ঘন একই ডোমেনে একটি প্রতিবেদন ট্রিগার করবে, যা পিন লঙ্ঘনকেও ব্যর্থ করবে এবং এইভাবে আপনি প্রতিবেদনটি পাবেন না।

আপনার কাছে অন্য ডোমেন সহজে না থাকলে, আপনি পরিবর্তে একটি পরিষেবা ব্যবহার করে দেখতে পারেন যেমন report-uri.io, যা আপনার জন্য লঙ্ঘনের প্রতিবেদন পরিচালনা করে।