ट्रस्ट टोकन का इस्तेमाल शुरू करना

Trust Tokens एक नया एपीआई है. इसकी मदद से, वेबसाइट एक ब्राउज़िंग कॉन्टेक्स्ट से दूसरे प्लैटफ़ॉर्म पर सीमित जानकारी दिखा सकती है. जैसे, सभी साइटों पर. यह सुविधा, पैसिव ट्रैकिंग के बिना, धोखाधड़ी से निपटने में मदद करती है.



खास जानकारी

ट्रस्ट टोकन, ऑरिजिन को ऐसे उपयोगकर्ता के लिए क्रिप्टोग्राफ़िक टोकन जारी करने की सुविधा देता है जिस पर वह भरोसा करता है. टोकन, उपयोगकर्ता के ब्राउज़र में सेव किए जाते हैं. इसके बाद, उपयोगकर्ता की प्रामाणिकता की जांच करने के लिए ब्राउज़र, अन्य कॉन्टेक्स्ट में टोकन का इस्तेमाल कर सकता है.

Trust Token API की मदद से, एक कॉन्टेक्स्ट में उपयोगकर्ता पर भरोसा किया जा सकता है. साथ ही, उस व्यक्ति की पहचान या दोनों पहचान को लिंक किए बिना उसे दूसरी जानकारी पर पहुंचाया जा सकता है.

हमारे डेमो की मदद से एपीआई को आज़माया जा सकता है. साथ ही, Chrome DevTools नेटवर्क और ऐप्लिकेशन टैब में इन टोकन की जांच की जा सकती है.

Chrome DevTools Network टैब में ट्रस्ट टोकन दिखाने वाला स्क्रीनशॉट.
Chrome DevTools नेटवर्क टैब में मौजूद ट्रस्ट टोकन.
Chrome DevTools ऐप्लिकेशन टैब में ट्रस्ट टोकन दिखाने वाला स्क्रीनशॉट.
Chrome DevTools ऐप्लिकेशन टैब में ट्रस्ट टोकन.

हमें ट्रस्ट टोकन की ज़रूरत क्यों है?

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

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

एपीआई को निजता को बनाए रखना चाहिए, ताकि अलग-अलग उपयोगकर्ता को ट्रैक किए बिना सभी साइटों पर भरोसा किया जा सके.

ट्रस्ट टोकन प्रस्ताव में क्या है?

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

प्रस्ताव में दिए गए जानकारी देने वाले दस्तावेज़ से:

यह एपीआई, "प्राइवसी पास" स्टाइल के क्रिप्टोग्राफ़िक टोकन के लिए, हर ऑरिजिन के लिए एक नया स्टोरेज एरिया उपलब्ध कराता है. इनका इस्तेमाल तीसरे पक्ष के कॉन्टेक्स्ट में किया जा सकता है. ये टोकन, लोगों के हिसाब से नहीं बनाए जाते हैं. इनका इस्तेमाल लोगों को ट्रैक करने के लिए नहीं किया जा सकता. हालांकि, इन्हें एन्क्रिप्ट करने के तरीके के बारे में बताया जाता है, ताकि इनकी नकल न की जा सके.

जब ऑरिजिन किसी ऐसे कॉन्टेक्स्ट में होता है जहां वे उपयोगकर्ता पर भरोसा करते हैं, तो वे ब्राउज़र को टोकन का बैच जारी कर सकते हैं. ये टोकन बाद में किसी ऐसे कॉन्टेक्स्ट में "खर्च" किए जा सकते हैं जिससे उपयोगकर्ता को पता नहीं होता या उस पर कम भरोसा होता है. टोकन एक-दूसरे से अलग होते हैं. इस वजह से, वेबसाइटें उनके ज़रिए उपयोगकर्ताओं को ट्रैक नहीं कर पाती हैं.

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

एपीआई के इस्तेमाल का उदाहरण

इसे एपीआई के बारे में जानकारी देने वाले प्रोग्राम में दिए गए सैंपल कोड से लिया गया है.

मान लें कि कोई उपयोगकर्ता किसी ऐसी समाचार वेबसाइट (publisher.example) पर जाता है जिस पर तीसरे पक्ष की विज्ञापन नेटवर्क कंपनी (foo.example) का विज्ञापन एम्बेड किया गया है. उपयोगकर्ता ने पहले किसी ऐसी सोशल मीडिया साइट का इस्तेमाल किया है जो भरोसेमंद टोकन (issuer.example) जनरेट करती है.

नीचे दिया गया क्रम दिखाता है कि ट्रस्ट टोकन कैसे काम करते हैं.

1.उपयोगकर्ता issuer.example पर जाकर ऐसी कार्रवाइयां करता है जिनसे साइट पर लोगों को लगता है कि वह असली इंसान है. जैसे, खाते से जुड़ी गतिविधि या कैप्चा वाला चैलेंज पास करना.

2.issuer.example यह पुष्टि करता है कि उपयोगकर्ता एक इंसान है और उपयोगकर्ता के ब्राउज़र को ट्रस्ट टोकन जारी करने के लिए, यहां दिया गया JavaScript चलाता है:

fetch('https://issuer.example/trust-token', {
  trustToken: {
    type: 'token-request',
    issuer: 'https://issuer.example'
  }
}).then(...)

3.उपयोगकर्ता का ब्राउज़र, ट्रस्ट टोकन को सेव करता है. यह टोकन issuer.example से जुड़ा होता है.

4.कुछ समय बाद, उपयोगकर्ता publisher.example पर जाता है.

5.publisher.example को यह जानने की अनुमति चाहिए कि उपयोगकर्ता असल में इंसान है या नहीं. publisher.example, issuer.example पर भरोसा करता है, इसलिए वह जांच करता है कि उपयोगकर्ता के ब्राउज़र में उस ऑरिजिन के मान्य टोकन मौजूद हैं या नहीं:

document.hasTrustToken('https://issuer.example');

6.अगर इससे ऐसा प्रॉमिस दिखता है जो true में बदल जाता है, तो इसका मतलब है कि उपयोगकर्ता के पास issuer.example का टोकन है. इसलिए, publisher.example किसी टोकन को रिडीम करने की कोशिश कर सकता है:

fetch('https://issuer.example/trust-token', {
trustToken: {
  type: 'token-redemption',
  issuer: 'https://issuer.example',
  refreshPolicy: {none, refresh}
}
}).then(...)

इस कोड का इस्तेमाल करके:

  1. रिडीम करने वाला व्यक्ति, publisher.example ऑफ़र रिडीम करने का अनुरोध करता है.
  2. अगर रिडीम हो जाता है, तो issuer.example जारी करने वाला, रिडेंप्शन रिकॉर्ड दिखाता है. इससे पता चलता है कि किसी समय उन्होंने इस ब्राउज़र को मान्य टोकन जारी किया था.

    7.fetch() से मिली प्रॉमिस रिज़ॉल्व होने पर, रिडेंप्शन रिकॉर्ड का इस्तेमाल, आने वाले संसाधन अनुरोधों में किया जा सकता है:

fetch('https://foo.example/get-content', {
  trustToken: {
    type: 'send-redemption-record',
    issuers: ['https://issuer.example', ...]
  }
});

इस कोड का इस्तेमाल करके:

  1. रिडेंप्शन रिकॉर्ड, अनुरोध के हेडर Sec-Redemption-Record के तौर पर शामिल होते हैं.
  2. foo.example को रिडेंप्शन रिकॉर्ड मिलता है. हालांकि, वह इस रिकॉर्ड को पार्स कर सकता है, ताकि यह पता लगाया जा सके कि issuer.example ने यह उपयोगकर्ता माना है या नहीं.
  3. foo.example उसी हिसाब से जवाब देगा.
कोई वेबसाइट आप पर भरोसा करे या नहीं, यह कैसे तय किया जा सकता है?

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

ट्रस्ट टोकन जारी करना

अगर उपयोगकर्ता को issuer.example जैसे ट्रस्ट टोकन जारी करने वाला भरोसेमंद मानता है, तो वह trustToken पैरामीटर की मदद से fetch() का अनुरोध करके, उपयोगकर्ता के लिए ट्रस्ट टोकन फ़ेच कर सकता है:

fetch('issuer.example/trust-token', {
  trustToken: {
    type: 'token-request'
  }
}).then(...)

ऐसा करने पर, प्राइवसी पास जारी करने के प्रोटोकॉल का एक एक्सटेंशन शुरू होता है. इसके लिए, नए क्रिप्टोग्राफ़िक प्रिमिटिव का इस्तेमाल किया जाता है:

  1. सूडो-रैंडम नंबरों का सेट जनरेट करना, जिसे nonces कहा जाता है.

  2. नॉन्स को ब्लाइंड करें (उन्हें कोड में बदलें, ताकि जारी करने वाला उनके कॉन्टेंट को न देख सके) और उन्हें Sec-Trust-Token हेडर में अनुरोध में अटैच करें.

  3. दिए गए एंडपॉइंट पर पोस्ट अनुरोध भेजें.

एंडपॉइंट ब्लाइंड टोकन (ब्लाइंड नॉन्स पर हस्ताक्षर) के साथ रिस्पॉन्स देता है. इसके बाद, टोकन अनब्लाइंड कर दिए जाते हैं और ब्राउज़र से उनसे जुड़े नॉन्स के साथ ट्रस्ट टोकन के तौर पर, टोकन के साथ स्टोर किए जाते हैं.

ट्रस्ट टोकन रिडीम करना

प्रकाशक साइट (जैसे कि ऊपर दिए गए उदाहरण में publisher.example) यह जांच कर सकती है कि उपयोगकर्ता के लिए ट्रस्ट टोकन उपलब्ध हैं या नहीं:

const userHasTokens = await document.hasTrustToken('issuer.example/trust-token');

अगर टोकन उपलब्ध हैं, तो उन्हें रिडीम करने का रिकॉर्ड पाने के लिए, पब्लिशर साइट उन्हें रिडीम कर सकती है:

fetch('issuer.example/trust-token', {
  ...
  trustToken: {
    type: 'token-redemption',
    refreshPolicy: 'none'
  }
  ...
}).then(...)

पब्लिशर, रिडेंप्शन रिकॉर्ड को ऐसे अनुरोधों में शामिल कर सकता है जिनके लिए ट्रस्ट टोकन की ज़रूरत होती है. जैसे: टिप्पणी पोस्ट करना, किसी पेज को पसंद करना या पोल में वोट देना. इसके लिए, इस तरह के fetch() कॉल का इस्तेमाल किया जा सकता है:

fetch('https://foo.example/post-comment', {
  ...
  trustToken: {
    type: 'send-redemption-record',
    issuers: ['issuer.example/trust-token', ...]
  }
  ...
}).then(...);

रिडेंप्शन रिकॉर्ड, Sec-Redemption-Record अनुरोध के हेडर के तौर पर शामिल होते हैं.

निजता से जुड़ी ज़रूरी बातें

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

सुरक्षा से जुड़ी बातें

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

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

अनुरोध करने के तरीके

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

दोहराने के लिए: इस प्रस्ताव के लिए आपकी राय, शिकायत या सुझाव ज़रूरी है! अगर आपको कोई टिप्पणी करनी है, तो कृपया ट्रस्ट टोकन एक्सप्लेनर डेटा स्टोर करने की जगह पर कोई समस्या बताएं.

ज़्यादा जानें


इस पोस्ट को लिखने और इसकी समीक्षा करने में मदद करने वाले सभी लोगों का धन्यवाद.

Unस्प्लैश पर ज़ॉन फ़ू की फ़ोटो.