Real Time Mode

عندما يختار العملاء استخدام الإصدار 5 من "التصفّح الآمن" من Google في وضع الوقت الفعلي، سيحتفظ العملاء في قاعدة البيانات المحلية بما يلي: (1) ذاكرة تخزين مؤقت عالمية للمواقع الإلكترونية التي يُرجّح أن تكون غير ضارة، منسَّقة كتجزئات SHA256 لتعبيرات عناوين URL الخاصة باللاحقة المضيفة/البادئة المسارية، (2) مجموعة من قوائم التهديدات، منسَّقة كبادئات تجزئة SHA256 لتعبيرات عناوين URL الخاصة باللاحقة المضيفة/البادئة المسارية. الفكرة الأساسية هي أنّه عندما يريد العميل التحقّق من عنوان URL معيّن، يتم إجراء عملية تحقّق محلية باستخدام "ذاكرة التخزين المؤقت العالمية" للمواقع الإلكترونية التي يُرجّح أنّها غير ضارة. في حال العثور على تطابق، يتم إجراء عملية تحقّق من قوائم التهديدات المحلية (باستخدام الإجراء الموضّح بالتفصيل في وضع القائمة المحلية). في حال عدم العثور على تطابق، يواصل العميل عملية التحقّق من التجزئة في الوقت الفعلي كما هو موضّح أدناه.

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

يمكنك الاطّلاع أدناه على مواصفات تفصيلية للإجراء.

إجراء التحقّق من عنوان URL في الوقت الفعلي

يأخذ هذا الإجراء عنوان URL واحدًا u ويعرض SAFE أو UNSAFE أو UNSURE. إذا عرضت SAFE، يعني ذلك أنّ ميزة "التصفّح الآمن من Google" تعتبر عنوان URL آمنًا. إذا عرضت UNSAFE، يعني ذلك أنّ خدمة "التصفّح الآمن" من Google تعتبر عنوان URL غير آمن على الأرجح، ويجب اتّخاذ الإجراء المناسب، مثل عرض تحذير للمستخدم النهائي أو نقل رسالة تم تلقّيها إلى مجلد الرسائل غير المرغوب فيها أو طلب تأكيد إضافي من المستخدم قبل المتابعة. إذا تم عرض UNSURE، يجب استخدام إجراء وضع القائمة المحلية بعد ذلك.

  1. لنفترض أنّ expressions هي قائمة بتعبيرات اللاحقة/البادئة التي تم إنشاؤها بواسطة عنوان URL u.
  2. لنفترض أنّ expressionHashes هي قائمة، حيث تكون العناصر عبارة عن تجزئات SHA256 لكل تعبير في expressions.
  3. لكل hash من expressionHashes:
    1. إذا كان يمكن العثور على hash في ذاكرة التخزين المؤقت العامة، يجب عرض UNSURE.
  4. لنفترض أنّ expressionHashPrefixes هي قائمة، حيث تكون العناصر هي أول 4 بايتات من كل قيمة تجزئة في expressionHashes.
  5. لكل expressionHashPrefix من expressionHashPrefixes:
    1. ابحث عن expressionHashPrefix في ذاكرة التخزين المؤقت المحلية.
    2. في حال العثور على الإدخال المخزّن مؤقتًا:
      1. تحديد ما إذا كان الوقت الحالي أكبر من وقت انتهاء الصلاحية
      2. إذا كانت القيمة أكبر:
        1. أزِل الإدخال الذي تم العثور عليه في ذاكرة التخزين المؤقت من ذاكرة التخزين المؤقت المحلية.
        2. مواصلة التكرار الحلقي
      3. إذا لم يكن أكبر:
        1. إزالة expressionHashPrefix المحدّدة من expressionHashPrefixes
        2. تحقَّق ممّا إذا كان التجزئة الكاملة المقابلة ضمن expressionHashes متوفّرة في الإدخال المخزّن مؤقتًا.
        3. في حال العثور على تطابق، أرجِع القيمة UNSAFE.
        4. إذا لم يتم العثور على السمة، استمر في التكرار.
    3. إذا لم يتم العثور على الإدخال المخزّن مؤقتًا، استمر في التكرار.
  6. أرسِل expressionHashPrefixes إلى خادم الإصدار 5 من ميزة "التصفّح الآمن من Google" باستخدام RPC SearchHashes أو طريقة REST hashes.search. في حال حدوث خطأ (بما في ذلك أخطاء الشبكة وأخطاء HTTP وما إلى ذلك)، يجب عرض UNSURE. بخلاف ذلك، يجب أن تكون الاستجابة هي response التي تم تلقّيها من خادم "التصفّح الآمن"، وهي عبارة عن قائمة من التجزئات الكاملة بالإضافة إلى بعض المعلومات المساعدة التي تحدّد طبيعة التهديد (الهندسة الاجتماعية، والبرامج الضارة، وما إلى ذلك)، بالإضافة إلى وقت انتهاء صلاحية ذاكرة التخزين المؤقت expiration.
  7. لكل fullHash من response:
    1. أدرِج fullHash في ذاكرة التخزين المؤقت المحلية، بالإضافة إلى expiration.
  8. لكل fullHash من response:
    1. لنفترض أنّ isFound هي نتيجة العثور على fullHash في expressionHashes.
    2. إذا كانت قيمة isFound هي False، استمر في التكرار.
    3. إذا كانت isFound صحيحة، يتم عرض UNSAFE.
  9. العودة SAFE

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