डिवाइस बाउंड सेशन क्रेडेंशियल (डीबीएससी)

डिवाइस बाउंड सेशन क्रेडेंशियल (डीबीएससी), हार्डवेयर की मदद से सेशन को सुरक्षित करके पुष्टि करने की प्रोसेस को मज़बूत बनाते हैं.

परिचय

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

यह गाइड उन डेवलपर के लिए है जो वेब ऐप्लिकेशन में पुष्टि करने की प्रोसेस को मैनेज करते हैं. इसमें बताया गया है कि डीबीएससी कैसे काम करता है और इसे अपनी साइट में कैसे इंटिग्रेट किया जा सकता है.

डीबीएससी कैसे काम करता है

डीबीएससी, उपयोगकर्ता के डिवाइस से जुड़े क्रिप्टोग्राफ़िक कुंजी जोड़े को पेश करता है. Chrome, लॉगिन के दौरान इस कुंजी के जोड़े को जनरेट करता है. साथ ही, निजी कुंजी को सुरक्षित हार्डवेयर में सेव करता है. जैसे, ट्रस्टेड प्लैटफ़ॉर्म मॉड्यूल (टीपीएम). हालांकि, ऐसा तब होता है, जब यह उपलब्ध हो. सेशन में कम समय तक काम करने वाली कुकी का इस्तेमाल किया जाता है. इन कुकी में से किसी एक की समयसीमा खत्म होने पर, Chrome उन्हें रीफ़्रेश करने से पहले यह पुष्टि करता है कि उसके पास निजी कुंजी है. इस प्रोसेस से, सेशन को जारी रखने की सुविधा को ओरिजनल डिवाइस से लिंक किया जाता है.

अगर किसी उपयोगकर्ता का डिवाइस, सुरक्षित तरीके से कुंजी सेव करने की सुविधा के साथ काम नहीं करता है, तो डीबीएससी, पुष्टि करने की प्रोसेस को बाधित किए बिना, सामान्य तरीके से काम करता है.

लागू करने के बारे में खास जानकारी

अपने ऐप्लिकेशन में DBSC को इंटिग्रेट करने के लिए, आपको ये बदलाव करने होंगे:

  • अपने लॉगिन फ़्लो में बदलाव करके, Secure-Session-Registration हेडर शामिल करें.
  • सेशन रजिस्ट्रेशन एंडपॉइंट जोड़ें, जो:
    • यह कुकी, उपयोगकर्ता के सेशन के साथ सार्वजनिक कुंजी को जोड़ती है.
    • यह कुकी, सेशन कॉन्फ़िगरेशन को मैनेज करती है.
    • यह कुकी, कम समय तक काम करने वाली कुकी में बदल जाती है.
  • कुकी को रिन्यू करने और कुंजी के मालिकाना हक की पुष्टि करने के लिए, रीफ़्रेश एंडपॉइंट जोड़ें.

आपके ज़्यादातर मौजूदा एंडपॉइंट में कोई बदलाव करने की ज़रूरत नहीं है. DBSC को इस तरह डिज़ाइन किया गया है कि यह ऐडिटिव हो और इससे कोई रुकावट न आए.

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

लागू करने का तरीका

इस सेक्शन में, पुष्टि करने वाले सिस्टम में ज़रूरी बदलावों के बारे में बताया गया है. इसमें, लॉगिन फ़्लो में बदलाव करने, सेशन रजिस्ट्रेशन को मैनेज करने, और कम समय के लिए इस्तेमाल होने वाली कुकी को रीफ़्रेश करने का तरीका शामिल है. हर चरण को इस तरह से डिज़ाइन किया गया है कि यह आपके मौजूदा इन्फ़्रास्ट्रक्चर के साथ आसानी से इंटिग्रेट हो जाए.

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

डीबीएससी फ़्लो दिखाने वाला डायग्राम

1. लॉगिन फ़्लो में बदलाव करना

उपयोगकर्ता के लॉग इन करने के बाद, लंबे समय तक इस्तेमाल की जा सकने वाली कुकी और Secure-Session-Registration हेडर का इस्तेमाल करके जवाब दें. उदाहरण के लिए:

सत्र के रजिस्ट्रेशन के बाद, यह एचटीटीपी रिस्पॉन्स हेडर मिलता है:

HTTP/1.1 200 OK
Secure-Session-Registration: (ES256 RS256); path="/StartSession"
Set-Cookie: auth_cookie=session_id; max-age=2592000; Domain=example.com; Secure; SameSite=Lax

अगर डिवाइस पर सुरक्षित तरीके से कुंजी सेव करने की सुविधा काम करती है, तो Chrome, /StartSession एंडपॉइंट से संपर्क करता है. इसके लिए, JSON वेब टोकन (JWT) में मौजूद सार्वजनिक कुंजी का इस्तेमाल किया जाता है.

इस उदाहरण में, auth_cookie आपके सेशन टोकन को दिखाता है. इस कुकी को अपनी पसंद का कोई भी नाम दिया जा सकता है. हालांकि, यह ज़रूरी है कि यह नाम आपके सेशन कॉन्फ़िगरेशन में मौजूद name फ़ील्ड से मेल खाता हो. साथ ही, इसका इस्तेमाल आपके पूरे ऐप्लिकेशन में एक जैसा किया गया हो.

2. सेशन रजिस्ट्रेशन एंडपॉइंट लागू करना

/StartSession पर, आपके सर्वर में ये चीज़ें होनी चाहिए:

  • मिली हुई सार्वजनिक कुंजी को उपयोगकर्ता के सेशन से जोड़ें.
  • सेशन कॉन्फ़िगरेशन के साथ जवाब दें.
  • लंबे समय तक चलने वाली कुकी को कम समय तक चलने वाली कुकी से बदलें.

यहां दिए गए उदाहरण में, कम समय तक काम करने वाली कुकी को 10 मिनट बाद खत्म होने के लिए कॉन्फ़िगर किया गया है:

HTTP/1.1 200 OK
Set-Cookie: auth_cookie=short_lived_grant; Max-Age=600; # Expires after 10 minutesSet-Cookie: Domain=example.com; Secure; SameSite=Lax

{
  "session_identifier": "session_id",
  "refresh_url": "/RefreshEndpoint",
  "scope": {
    "origin": "https://example.com",
    "include_site": true,
    "scope_specification": [
      { "type": "exclude", "domain": "*.example.com", "path": "/static" }
    ]
  },
  "credentials": [{
    "type": "cookie",
    "name": "auth_cookie",
    "attributes": "Domain=example.com; Secure; SameSite=Lax"
  }]
}

3. रीफ़्रेश एंडपॉइंट लागू करना

जब कुछ समय तक इस्तेमाल की जा सकने वाली कुकी की समयसीमा खत्म हो जाती है, तब Chrome, रीफ़्रेश फ़्लो शुरू करता है. इससे यह साबित किया जा सकता है कि आपके पास निजी कुंजी है. इस प्रोसेस में, Chrome और आपके सर्वर, दोनों को मिलकर काम करना होता है:

  1. Chrome, उपयोगकर्ता के अनुरोध को आपके ऐप्लिकेशन पर भेजता है और /RefreshEndpoint को रीफ़्रेश करने का अनुरोध भेजता है:

    POST /RefreshEndpoint HTTP/1.1
    Sec-Secure-Session-Id: session_id
    
  2. आपका सर्वर एक चैलेंज भेजता है:

    HTTP/1.1 403 Forbidden
    Secure-Session-Challenge: "challenge_value"
    
  3. Chrome, सेव की गई निजी कुंजी का इस्तेमाल करके चुनौती पर हस्ताक्षर करता है और अनुरोध को फिर से भेजता है:

    POST /RefreshEndpoint HTTP/1.1
    Sec-Secure-Session-Id: session_id
    Secure-Session-Response: <JWT proof>
    
  4. आपका सर्वर, हस्ताक्षर किए गए सबूत की पुष्टि करता है और कम समय के लिए मान्य नई कुकी जारी करता है:

    HTTP/1.1 200 OK
    
    Set-Cookie: auth_cookie=short_lived_grant; Max-Age=600; Domain=example.com; Secure; SameSite=Lax
    
  5. Chrome को नई कुकी मिलती है और वह मूल अनुरोध को फिर से शुरू करता है.

इंटिग्रेशन का वैकल्पिक पैटर्न

ज़्यादा समय तक काम करने के लिए, साइटें कम समय तक काम करने वाली कुकी के साथ-साथ, दूसरी नॉन-डीबीएससी कुकी भी जोड़ सकती हैं. इस कुकी का इस्तेमाल सिर्फ़ नए कम समय के टोकन जारी करने के लिए किया जाता है. साथ ही, इससे यह पता लगाने में मदद मिलती है कि अनुरोधों की पुष्टि नहीं हुई है या डीबीएससी कुछ समय के लिए काम नहीं कर रहा है.

  • लंबे समय तक चलने वाली कुकी, DBSC के काम न करने पर भी बनी रहती है.
  • इस कुकी को इस्तेमाल करने की समयसीमा कुछ समय तक ही होती है. इसे DBSC का इस्तेमाल करके रीफ़्रेश किया जाता है. साथ ही, संवेदनशील कार्रवाइयों के लिए यह ज़रूरी है.

इस पैटर्न से, साइटों को यह तय करने का ज़्यादा कंट्रोल मिलता है कि उन्हें मुश्किल मामलों को कैसे हैंडल करना है.

चेतावनी और फ़ॉलबैक का तरीका

इन स्थितियों में, Chrome, डीबीएससी के ऑपरेशन को स्किप कर सकता है और डीबीएससी मैनेज की गई कम समय के लिए इस्तेमाल होने वाली कुकी के बिना अनुरोध भेज सकता है:

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

इन स्थितियों में, अगर लंबे समय तक चलने वाली कुकी मौजूद है, तो Chrome उसका इस्तेमाल करता है. यह फ़ॉलबैक, सिर्फ़ तब काम करता है, जब आपने लंबे समय तक चलने वाली और कम समय तक चलने वाली, दोनों कुकी लागू की हों. अगर ऐसा नहीं है, तो Chrome कुकी के बिना अनुरोध भेजता है.

खास जानकारी

डिवाइस बाउंड सेशन क्रेडेंशियल की मदद से, आपके ऐप्लिकेशन में कम से कम बदलाव करके सेशन की सुरक्षा को बेहतर बनाया जा सकता है. ये सेशन को किसी खास डिवाइस से जोड़कर, सेशन हाइजैकिंग से बेहतर सुरक्षा देते हैं. ज़्यादातर उपयोगकर्ताओं को बिना किसी रुकावट के फ़ायदा मिलता है. साथ ही, डीबीएससी ऐसे हार्डवेयर पर आसानी से काम करता है जिस पर यह काम नहीं करता.

ज़्यादा जानकारी के लिए, डीबीएससी की खास बातें देखें.