Real Time Mode

כשלקוחות בוחרים להשתמש בגרסה 5 של הגלישה הבטוחה של Google במצב זמן אמת, הם שומרים במסד הנתונים המקומי שלהם: (i) מטמון גלובלי של אתרים שסביר להניח שהם לא מזיקים, בפורמט של גיבובי SHA256 של ביטויי כתובות URL של סיומת מארח או קידומת נתיב, (ii) קבוצה של רשימות איומים, בפורמט של קידומות גיבוב SHA256 של ביטויי כתובות URL של סיומת מארח או קידומת נתיב. הרעיון המרכזי הוא שבכל פעם שהלקוח רוצה לבדוק כתובת URL מסוימת, מתבצעת בדיקה מקומית באמצעות המטמון הגלובלי של אתרים שסביר להניח שהם לא מזיקים. אם יש התאמה, מתבצעת בדיקה של רשימות איומים מקומיות (באמצעות ההליך שמפורט במאמר בנושא מצב רשימה מקומית). אם אין התאמה, הלקוח ממשיך בבדיקת הגיבוב בזמן אמת, כפי שמפורט בהמשך.

בנוסף למסד הנתונים המקומי, הלקוח ינהל מטמון מקומי. המטמון המקומי הזה לא צריך להיות באחסון קבוע, ויכול להיות שהוא יימחק אם יש עומס על הזיכרון.

בהמשך מפורטות ההוראות.

הליך בדיקת כתובות URL בזמן אמת

הפרוצדורה הזו מקבלת כתובת URL אחת u ומחזירה SAFE, UNSAFE או UNSURE. אם מוחזרת התוצאה SAFE, כתובת ה-URL נחשבת בטוחה על ידי הגלישה הבטוחה של Google. אם הפונקציה מחזירה UNSAFE, מערכת הגלישה הבטוחה של Google קובעת שכתובת ה-URL עלולה להיות לא בטוחה, ולכן צריך לבצע פעולה מתאימה: למשל, להציג אזהרה למשתמש הקצה, להעביר הודעה שהתקבלה לתיקיית הספאם או לדרוש מהמשתמש אישור נוסף לפני שממשיכים. אם הערך שמוחזר הוא UNSURE, צריך להשתמש בהמשך בהליך Local List Mode.

  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 לשרת של הגלישה הבטוחה של Google בגרסה 5 באמצעות RPC SearchHashes או שיטת REST‏ hashes.search. אם אירעה שגיאה (כולל שגיאות רשת, שגיאות HTTP וכו'), מחזירים UNSURE. אחרת, התשובה היא response שהתקבלה משרת SB, שהיא רשימה של גיבובים מלאים יחד עם מידע עזר שמזהה את אופי האיום (הנדסה חברתית, תוכנות זדוניות וכו'), וגם זמן התפוגה של המטמון expiration.
  7. לכל fullHash מתוך response:
    1. הוספה של fullHash למטמון המקומי, יחד עם expiration.
  8. לכל fullHash מתוך response:
    1. isFound היא התוצאה של חיפוש fullHash ב-expressionHashes.
    2. אם הערך של isFound הוא False, ממשיכים בלולאה.
    3. אם isFound הוא True, הפונקציה מחזירה את הערך UNSAFE.
  9. החזרה SAFE.

הפרוטוקול הזה מציין מתי הלקוח שולח את expressionHashPrefixes לשרת, אבל הוא לא מציין במכוון איך לשלוח אותם. לדוגמה, מקובל שהלקוח ישלח את כל הקידומות expressionHashPrefixes בבקשה אחת, ומקובל גם שהלקוח ישלח כל קידומת בנפרד בבקשות נפרדות לשרת (אולי במקביל).expressionHashPrefixes מותר גם לשלוח קידומות גיבוב לא קשורות או שנוצרו באופן אקראי יחד עם קידומות הגיבוב ב-expressionHashPrefixes, כל עוד מספר קידומות הגיבוב שנשלחות בבקשה אחת לא עולה על 30.