ট্রাস্ট টোকেন দিয়ে শুরু করা

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



সারসংক্ষেপ

ট্রাস্ট টোকেন একটি অরিজিনকে এটি বিশ্বাস করে এমন ব্যবহারকারীকে ক্রিপ্টোগ্রাফিক টোকেন ইস্যু করতে সক্ষম করে। টোকেন ব্যবহারকারীর ব্রাউজার দ্বারা সংরক্ষণ করা হয়. ব্রাউজার তখন ব্যবহারকারীর সত্যতা মূল্যায়ন করতে অন্যান্য প্রসঙ্গে টোকেন ব্যবহার করতে পারে।

ট্রাস্ট টোকেন এপিআই ব্যবহারকারীকে শনাক্ত না করে বা দুটি পরিচয়কে লিঙ্ক না করেই একটি প্রেক্ষাপটে ব্যবহারকারীর বিশ্বাসকে অন্য প্রসঙ্গে পৌঁছে দিতে সক্ষম করে।

আপনি আমাদের ডেমো দিয়ে API ব্যবহার করে দেখতে পারেন, এবং Chrome DevTools নেটওয়ার্ক এবং অ্যাপ্লিকেশন ট্যাবে টোকেনগুলি পরীক্ষা করতে পারেন৷

Chrome DevTools নেটওয়ার্ক ট্যাবে ট্রাস্ট টোকেন দেখানো স্ক্রিনশট।
Chrome DevTools নেটওয়ার্ক ট্যাবে টোকেন বিশ্বাস করুন।
Chrome DevTools অ্যাপ্লিকেশন ট্যাবে ট্রাস্ট টোকেন দেখানো স্ক্রিনশট।
Chrome DevTools অ্যাপ্লিকেশন ট্যাবে বিশ্বাস টোকেন।

কেন আমাদের ট্রাস্ট টোকেন দরকার?

ওয়েবে বিশ্বাসের সংকেত স্থাপনের উপায় প্রয়োজন যা দেখায় যে একজন ব্যবহারকারী সে যাকে তারা বলে, এবং একজন মানুষ হওয়ার ভান করে এমন কোনও বট নয়, বা কোনও প্রকৃত ব্যক্তি বা পরিষেবাকে প্রতারণা করে এমন কোনও দূষিত তৃতীয় পক্ষ নয়৷ জালিয়াতি সুরক্ষা বিজ্ঞাপনদাতা, বিজ্ঞাপন প্রদানকারী এবং CDN-এর জন্য বিশেষভাবে গুরুত্বপূর্ণ।

দুর্ভাগ্যবশত, বিশ্বাসযোগ্যতা পরিমাপ করার এবং প্রচার করার জন্য বিদ্যমান অনেকগুলি প্রক্রিয়া—যেমন কোনো সাইটের সাথে কোনো মিথস্ক্রিয়া একজন প্রকৃত মানুষের কাছ থেকে হয় কিনা তা খুঁজে বের করার জন্য, উদাহরণস্বরূপ—আঙ্গুলের ছাপের জন্যও ব্যবহার করা যেতে পারে এমন কৌশলগুলির সুবিধা নিন।

API-কে অবশ্যই গোপনীয়তা রক্ষা করতে হবে, ব্যক্তিগত ব্যবহারকারীর ট্র্যাকিং ছাড়াই সমস্ত সাইট জুড়ে বিশ্বাস প্রচার করতে সক্ষম করে৷

ট্রাস্ট টোকেন প্রস্তাবে কি আছে?

জালিয়াতি এবং স্প্যামিং শনাক্ত করতে ওয়েব বিশ্বাসের সংকেত তৈরির উপর নির্ভর করে। এটি করার একটি উপায় হল গ্লোবাল, ক্রস-সাইট প্রতি ব্যবহারকারী শনাক্তকারীর সাথে ব্রাউজিং ট্র্যাক করা। একটি গোপনীয়তা-সংরক্ষণকারী API-এর জন্য, এটি গ্রহণযোগ্য নয়।

প্রস্তাব ব্যাখ্যাকারী থেকে:

এই API "প্রাইভেসি পাস" স্টাইলের ক্রিপ্টোগ্রাফিক টোকেনগুলির জন্য একটি নতুন প্রতি-অরিজিন স্টোরেজ এলাকা প্রস্তাব করে, যা তৃতীয় পক্ষের প্রসঙ্গে অ্যাক্সেসযোগ্য। এই টোকেনগুলি ব্যক্তিগতকৃত নয় এবং ব্যবহারকারীদের ট্র্যাক করতে ব্যবহার করা যাবে না, তবে ক্রিপ্টোগ্রাফিকভাবে স্বাক্ষরিত তাই সেগুলি জাল করা যাবে না৷

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

আমরা ব্রাউজারকে একটি নির্দিষ্ট টোকেন রিডেম্পশনে আবদ্ধ কীগুলির সাহায্যে বহির্গামী অনুরোধগুলি সাইন করার জন্য একটি এক্সটেনশন পদ্ধতির প্রস্তাব করি৷

নমুনা API ব্যবহার

নিম্নলিখিতটি API ব্যাখ্যাকারীর নমুনা কোড থেকে অভিযোজিত হয়েছে।

কল্পনা করুন যে একজন ব্যবহারকারী একটি নিউজ ওয়েবসাইট ( publisher.example ) পরিদর্শন করেন যা একটি তৃতীয় পক্ষের বিজ্ঞাপন নেটওয়ার্ক ( foo.example ) থেকে বিজ্ঞাপন এম্বেড করে। ব্যবহারকারী আগে একটি সোশ্যাল মিডিয়া সাইট ব্যবহার করেছেন যা বিশ্বাস টোকেন ইস্যু করে ( issuer.example )।

নিচের ক্রমটি দেখায় কিভাবে বিশ্বাস টোকেন কাজ করে।

1. ব্যবহারকারী issuer.example পরিদর্শন করে এবং এমন কাজ করে যা সাইটটিকে বিশ্বাস করে যে তারা একজন প্রকৃত মানুষ, যেমন অ্যাকাউন্ট কার্যকলাপ, বা ক্যাপচা চ্যালেঞ্জ পাস করা।

2. issuer.example ব্যবহারকারীকে একজন মানুষ যাচাই করে এবং ব্যবহারকারীর ব্রাউজারে একটি ট্রাস্ট টোকেন ইস্যু করতে নিম্নলিখিত জাভাস্ক্রিপ্ট চালায়:

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. ননসেস নামে পরিচিত সিউডো-র্যান্ডম সংখ্যার একটি সেট তৈরি করুন।

  2. ননসেসকে অন্ধ করুন (এগুলিকে এনকোড করুন যাতে ইস্যুকারী তাদের বিষয়বস্তু দেখতে না পারে) এবং Sec-Trust-Token হেডারে অনুরোধের সাথে সংযুক্ত করুন।

  3. প্রদত্ত এন্ডপয়েন্টে একটি POST অনুরোধ পাঠান।

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

ট্রাস্ট টোকেন রিডেমশন

একটি প্রকাশক সাইট (উপরের উদাহরণে যেমন 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() এর বাইরে রিডেম্পশন রেকর্ড পাঠানোর অনুমতি দেওয়া সম্ভব হতে পারে, উদাহরণস্বরূপ নেভিগেশন অনুরোধের সাথে। পৃষ্ঠা লোড করার সমান্তরালে টোকেন রিডেম্পশন সক্ষম করতে সাইটগুলি HTTP প্রতিক্রিয়া শিরোনামে ইস্যুকারী ডেটা অন্তর্ভুক্ত করতে সক্ষম হতে পারে।

পুনরাবৃত্তি: এই প্রস্তাব আপনার মতামত প্রয়োজন! আপনার যদি মন্তব্য থাকে, অনুগ্রহ করে ট্রাস্ট টোকেন ব্যাখ্যাকারী সংগ্রহস্থলে একটি সমস্যা তৈরি করুন

আরও খোঁজ


যারা এই পোস্টটি লিখতে এবং পর্যালোচনা করতে সাহায্য করেছেন তাদের সকলকে ধন্যবাদ।

আনস্প্ল্যাশে ZSun Fu এর ছবি।