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

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



खास जानकारी

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

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

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

Chrome DevTools नेटवर्क टैब में ट्रस्ट टोकन दिखाने वाला स्क्रीनशॉट.
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. बदली हुई रैंडम नंबरों का सेट जनरेट करें, जिन्हें nonnes के नाम से जाना जाता है.

  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 अनुरोध के हेडर के तौर पर शामिल होते हैं.

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

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

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

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

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

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

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

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

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


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

Unsplash पर ZSun Fu ने फ़ोटो ली है.