HPKP रिपोर्टिंग की मदद से, सार्वजनिक कुंजी को पिन करने की सुविधा रोल आउट की जा रही है

अपनी साइट पर एसएसएल का इस्तेमाल करना, उपयोगकर्ताओं की सुरक्षा और निजता को बनाए रखने का एक अहम तरीका है. हालांकि, एसएसएल चालू करने के बाद भी, अपनी साइट की सुरक्षा को बेहतर बनाने के लिए कई कदम उठाए जा सकते हैं. जैसे, अपनी कुकी पर Secure एट्रिब्यूट सेट करना, एचटीटीपी स्ट्रिक्ट ट्रांसपोर्ट सिक्योरिटी चालू करना, कॉन्टेंट सिक्योरिटी नीति का इस्तेमाल करना, और अपनी साइट के ऐक्सेस लेवल को लॉक करना. हालांकि, इन बेहतरीन सुविधाओं को डिप्लॉय करना कभी-कभी मुश्किल हो सकता है. एसएसएल के सख्त वर्शन को रोल आउट करने में आपकी मदद करने के लिए, Chrome 46 में एचपीकेपी रिपोर्टिंग नाम की सुविधा उपलब्ध है.

इन सभी संक्षिप्त नामों का क्या मतलब है?

फ़िलहाल, वेब पर सुरक्षा की सुविधा एसएसएल सर्टिफ़िकेट पर निर्भर करती है: क्रिप्टोग्राफ़िक हस्ताक्षर, यह साबित करते हैं कि वेबसाइट वही है जो वह दावा करती है. जब आपका ब्राउज़र https://developers.google.com जैसे किसी यूआरएल का अनुरोध भेजता है, तो सर्वर एक एसएसएल सर्टिफ़िकेट उपलब्ध कराता है. अगर सर्टिफ़िकेट मान्य है, तो ब्राउज़र अनुरोध को आगे बढ़ने की अनुमति देता है और पता बार में हरे रंग के पैडलॉक के साथ वेबसाइट का यूआरएल दिखाता है.

हालांकि, मान्य सर्टिफ़िकेट क्या होता है? किसी सर्टिफ़िकेट को मान्य माना जा सके, इसके लिए ज़रूरी है कि उस पर सर्टिफ़िकेट अथॉरिटी (सीए) का हस्ताक्षर हो. इसके अलावा, उस पर किसी ऐसे दूसरे सर्टिफ़िकेट का हस्ताक्षर भी हो सकता है जिस पर सीए का हस्ताक्षर हो. इस तरह के सर्टिफ़िकेट को इंटरमीडियरी सीए कहा जाता है. ब्राउज़र और ऑपरेटिंग सिस्टम में, ऐसे कई सौ CAs की सूची होती है जिन पर सर्टिफ़िकेट जारी करने का भरोसा किया जाता है. हालांकि, समस्या यह है कि डिफ़ॉल्ट रूप से, इनमें से कोई भी सीए किसी भी वेबसाइट के लिए सर्टिफ़िकेट जारी कर सकता है. अगर इनमें से किसी एक को हैक किया जाता है या वह गलत तरीके से काम करता है, तो इससे पूरे वेब पर असर पड़ सकता है.

एचटीटीपी सार्वजनिक कुंजी पिनिंग या एचपीकेपी डालें. इस स्टैंडर्ड की मदद से, वेबसाइटें एचटीटीपी हेडर भेज सकती हैं. इससे ब्राउज़र को एसएसएल सर्टिफ़िकेट चेन के कुछ हिस्सों को याद रखने (या "पिन" करने) का निर्देश मिलता है. इसके बाद, ब्राउज़र उन कनेक्शन को स्वीकार नहीं करेगा जो पहले मिले पिन से मेल नहीं खाते. यहां एचपीकेपी हेडर का एक उदाहरण दिया गया है:

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

इस हेडर में, दो सर्टिफ़िकेट हैश को पिन के तौर पर दिखाया गया है. पहला, साइट की सर्टिफ़िकेट चेन में मौजूद सर्टिफ़िकेट का हैश है. दूसरा, बैकअप पिन या किसी ऐसे सर्टिफ़िकेट का हैश है जिसका इस्तेमाल साइट तब कर सकती है, जब उसे अपना सर्टिफ़िकेट रोटेट करना हो. हेडर में max-age वैल्यू भी शामिल होती है. तय समय बीत जाने के बाद, ब्राउज़र पिन को मिटा देगा.

एचपीकेपी के बारे में ज़्यादा जानने के लिए, स्पेसिफ़िकेशन देखें या Chrome के डेवलपर क्रिस पामर का शानदार ब्लॉग पोस्ट पढ़ें.

क्या मुझे अभी एचपीकेपी चालू करना चाहिए?

ऐसा ज़रूरी नहीं है. एचपीकेपी लागू करते समय, गलती करना और गलती से अपनी साइट को डीओएस करना बहुत आसान है. अगर आपने अपनी साइट को सर्टिफ़िकेट के एक सेट पर पिन किया है और फिर आपको एक नया सेट डिप्लॉय करना है, तो पिन को देखने वाले उपयोगकर्ता तब तक आपकी साइट को ऐक्सेस नहीं कर पाएंगे, जब तक पिन की समयसीमा खत्म नहीं हो जाती. यह समयसीमा, हेडर में मौजूद max-age वैल्यू के आधार पर तय होती है.

एचपीकेपी को सही तरीके से लागू करना मुश्किल है. इसलिए, फ़िलहाल इसका इस्तेमाल ज़्यादातर हाई-प्रोफ़ाइल और सुरक्षा के लिहाज़ से संवेदनशील साइटें करती हैं. अगर आपको एचपीकेपी चालू करना है, तो आपको सबसे ज़्यादा चलने की अवधि की बहुत कम वैल्यू से शुरू करना चाहिए. अगर आपको कोई समस्या नहीं होती है, तो धीरे-धीरे इस अवधि को बढ़ाएं.

एचपीकेपी रिपोर्टिंग क्या है और इससे क्या मदद मिलती है?

एचपीकेपी रिपोर्टिंग की सुविधा, Chrome 46 में उपलब्ध है. इसका इस्तेमाल, एचपीकेपी को रोल आउट करते समय गलत कॉन्फ़िगरेशन का पता लगाने के लिए किया जा सकता है.

सबसे पहले, Public-Key-Pins हेडर के बजाय 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 को रिपोर्ट भेजेगा. Chrome, सिर्फ़ रिपोर्ट वाले हेडर में पिन के आधार पर अनुरोधों को कभी ब्लॉक नहीं करेगा. इसलिए, यह एचपीकेपी को आज़माने का एक सुरक्षित तरीका है. इससे यह पता चलता है कि आपकी साइट को डॉस करने के जोखिम के बिना, यह आपके उपयोगकर्ताओं के लिए समस्याएं पैदा करता है या नहीं.

ध्यान दें कि सिर्फ़ शिकायत वाला हेडर, सिर्फ़ उस अनुरोध पर लागू होता है जिस पर इसे स्वीकार किया गया है. ब्राउज़र, सिर्फ़ रिपोर्ट के लिए इस्तेमाल होने वाले पिन को वैसे नहीं याद रखता है जैसे कि असली पिन को याद रखता है. इससे, उपयोगकर्ताओं के ब्राउज़र में गलत वैल्यू को कैश मेमोरी में सेव किए बिना, अपने कॉन्फ़िगरेशन की जांच की जा सकती है. साथ ही, अपने सर्वर को रिपोर्ट से भरने से बचाने के लिए, धीरे-धीरे रोल आउट किया जा सकता है. उदाहरण के लिए, सिर्फ़ एक संसाधन पर.

पिन लागू करने के लिए, असल Public-Key-Pins हेडर को रोल आउट करते समय, उस हेडर में report-uri वैल्यू भी शामिल की जा सकती है. इससे, किसी भी समस्या के होने पर आपको रिपोर्ट मिलती रहेंगी.

एचपीकेपी के उल्लंघन की रिपोर्ट में क्या शामिल होता है?

एचपीकेपी के उल्लंघन की रिपोर्ट, एक JSON मैसेज होता है. इसे एचटीटीपी पोस्ट अनुरोध के ज़रिए, कॉन्फ़िगर किए गए report-uri पर भेजा जाता है. फ़ील्ड की सूची, स्पेसिफ़िकेशन में देखी जा सकती है. हालांकि, हम यहां उनमें से दो फ़ील्ड को हाइलाइट करेंगे: served-certificate-chain और validated-certificate-chain. served-certificate-chain वही सर्टिफ़िकेट है जो Chrome को अनुरोध के लिए एसएसएल कनेक्शन सेट अप करते समय मिला था. दूसरी ओर, validated-certificate-chain वह चेन है जिसे Chrome ने सर्वर के सर्टिफ़िकेट की पुष्टि करते समय फिर से बनाया था. यह चेन, served-certificate-chain से अलग हो सकती है. अलग-अलग क्लाइंट, सर्टिफ़िकेट की पुष्टि अलग-अलग तरीकों से करते हैं. यह HPKP के गलत कॉन्फ़िगरेशन की सामान्य वजह हो सकती है. अगर आपको अनचाही रिपोर्ट मिल रही हैं, तो इस फ़ील्ड को ज़रूर देखें.

आखिरी "अहम जानकारी"

अगर एचपीकेपी रिपोर्टिंग को डिप्लॉय किया जा रहा है, तो याद रखें कि Chrome सभी अनुरोधों के लिए पिन की पुष्टि करता है. इनमें रिपोर्ट भेजने के अनुरोध भी शामिल हैं. इसलिए, अगर आपने अपनी साइट के लिए एचपीकेपी को डिप्लॉय किया है, तो हो सकता है कि आप एचपीकेपी रिपोर्ट को किसी ऐसे डोमेन पर भेजना चाहें जिसे आपने पिन नहीं किया है. ऐसा न करने पर, आपकी साइट पर पिन से जुड़ी नीति का उल्लंघन होने पर, उसी डोमेन के लिए एक रिपोर्ट ट्रिगर हो जाएगी. इस रिपोर्ट में भी पिन से जुड़ी नीति का उल्लंघन होगा और आपको रिपोर्ट नहीं मिलेगी.

अगर आपके पास कोई दूसरा डोमेन नहीं है, तो report-uri.io जैसी किसी सेवा का इस्तेमाल करें. यह सेवा, नीति के उल्लंघन की शिकायतों को मैनेज करती है.