بدء استخدام الرموز المميّزة للثقة

Trust Tokens هي واجهة برمجة تطبيقات جديدة تتيح للمواقع الإلكترونية نقل كمية محدودة من المعلومات من سياق تصفّح إلى آخر (على سبيل المثال، في مختلف المواقع الإلكترونية) للمساعدة في مكافحة الاحتيال بدون التتبّع السلبي.



ملخّص

تتيح الرموز المميّزة للثقة للمصدر إصدار رموز مميّزة للتشفير لمستخدم يثق به. يتم تخزين الرموز الرئيسية بواسطة متصفح المستخدم. ويمكن للمتصفح بعد ذلك استخدام الرموز المميزة في سياقات أخرى لتقييم مصداقية المستخدم.

تتيح واجهة برمجة التطبيقات Trust Token API نقل ثقة المستخدِم في سياق معيّن إلى سياق آخر بدون تحديد هوية المستخدم أو ربط هويتيهما.

يمكنك تجربة واجهة برمجة التطبيقات من خلال الإصدار التجريبي والرموز المميّزة لفحصها في علامتَي التبويب الشبكة والتطبيق ضمن "أدوات مطوري البرامج في Chrome".

لقطة شاشة تعرض الرموز المميّزة Trust Token في علامة التبويب "شبكة أدوات مطوّري البرامج في Chrome"
الرموز المميّزة Trust Tokens في علامة التبويب الشبكة ضمن "أدوات مطوري البرامج في Chrome"
لقطة شاشة تعرض الرموز المميّزة Trust Token في علامة التبويب "تطبيق Chrome DevTools".
الرموز المميّزة الموثوق بها في علامة التبويب التطبيق ضمن "أدوات مطوري البرامج في Chrome".

لماذا نحتاج إلى رموز Trust Tokens؟

يحتاج الويب إلى طرق لإنشاء إشارات الثقة التي توضح أنّ المستخدم هو نفسه الذي يعبّر عنه، ولا يدّعي برنامج تتبُّع بأنّه إنسان أو جهة خارجية ضارة تخدع شخصًا أو خدمة حقيقية. تكون الحماية من الاحتيال مهمة بصفةٍ خاصة للمعلِنين ومزوّدي الإعلانات وشبكات توصيل المحتوى (CDN).

للأسف، هناك العديد من الآليات الحالية لقياس ونشر موثوقية الموقع - لمعرفة ما إذا كان التفاعل مع الموقع من أشخاص حقيقيين - على سبيل المثال - يمكنك الاستفادة من الأساليب التي يمكن استخدامها أيضًا في البصمات الرقمية.

ويجب أن تحافظ واجهة برمجة التطبيقات على الخصوصية، ما يتيح نشر الثقة على المواقع الإلكترونية بدون تتبُّع كل مستخدم على حدة.

ماذا يتضمّن اقتراح الرموز المميّزة Trust Tokens؟

يعتمد الويب على بناء إشارات الثقة لرصد عمليات الاحتيال والرسائل غير المرغوب فيها. وتتمثل إحدى الطرق لإجراء ذلك في تتبُّع التصفُّح باستخدام معرّفات عالمية عبر المواقع الإلكترونية لكل مستخدم. وهذا إجراء غير مقبول بالنسبة إلى واجهة برمجة التطبيقات الخاصة بالحفاظ على الخصوصية.

من موضّح الاقتراح:

تقترح واجهة برمجة التطبيقات هذه مساحة تخزين جديدة حسب المصدر للرموز المميّزة المشفّرة لنمط "Privacy Pass"، والتي يمكن الوصول إليها في سياقات تابعة لجهات خارجية. وهذه الرموز المميّزة غير مخصّصة ولا يمكن استخدامها لتتبُّع المستخدمين، بل يتم توقيعها بشكل مشفّر ولذلك لا يمكن تزييفها.

وعندما يكون المصدر في سياق يثق فيه المستخدم، يمكنه إصدار مجموعة من الرموز المميّزة إلى المتصفّح، والتي يمكن "إنفاقها" في وقت لاحق في سياق يكون فيه المستخدم غير معروف أو أقل موثوقية فيه. والأهم من ذلك أن الرموز المميزة لا يمكن تمييزها عن بعضها البعض، مما يمنع مواقع الويب من تتبع المستخدمين من خلالها.

نقترح أيضًا آلية إضافة تتيح للمتصفّح إمكانية توقيع الطلبات الصادرة باستخدام المفاتيح المرتبطة بعملية تحصيل قيمة رمز مميّز معيّن.

نموذج لاستخدام واجهة برمجة التطبيقات

تم اقتباس ما يلي من نموذج رمز في الشرح المتعلق بواجهة برمجة التطبيقات.

لنفترض أنّ مستخدمًا يزور موقعًا إلكترونيًا إخباريًا (publisher.example) يتضمّن إعلانات من شبكة إعلانات خارجية (foo.example). سبق أن استخدم هذا المستخدم موقعًا إلكترونيًا على وسائل التواصل الاجتماعي يُصدر رموزًا مميّزة للثقة (issuer.example).

ويوضّح التسلسل أدناه طريقة عمل رموز الثقة المميّزة.

1.يزور المستخدم issuer.example وينفّذ إجراءات تجعل الموقع الإلكتروني يعتقد أنه شخص حقيقي، مثل نشاط الحساب أو اجتياز تحدي CAPTCHA.

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 وفقًا لذلك.
كيف يمكن لموقع إلكتروني أن يحدّد ما إذا كان سيثق بك؟

قد يكون لديك سجلّ تسوّق مع موقع إلكتروني للتجارة الإلكترونية أو عمليات تسجيل وصول على منصة للمواقع الجغرافية أو سجلّ حساب في أحد المصارف. قد تراعي جهات الإصدار أيضًا عوامل أخرى، مثل مدة امتلاك الحساب، أو تفاعلات أخرى (مثل اختبارات CAPTCHA أو إرسال نموذج) تزيد من ثقة جهة الإصدار في احتمال أنّك شخص حقيقي.

إصدار الرموز المميّزة الموثوق بها

إذا اعتبرت جهة إصدار الرموز المميّزة للثقة، مثل issuer.example أنّ المستخدم جديرًا بالثقة، يمكن لجهة الإصدار جلب رموز الثقة المميّزة للمستخدم من خلال تقديم طلب fetch() باستخدام مَعلمة trustToken:

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

ويستدعي ذلك امتداد بروتوكول إصدار بطاقة الخصوصية باستخدام بروتوكول تشفير جديد:

  1. أنشئ مجموعة من الأرقام العشوائية الزائفة المعروفة باسم nonces.

  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 على Unقلاط.