Real Time Mode

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

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

בהמשך מופיע פירוט של התהליך.

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

הפרוצדורה הזו מקבלת כתובת URL אחת u ומחזירה SAFE, UNSAFE או UNSURE. אם מוחזרת התוצאה SAFE, כתובת ה-URL נחשבת בטוחה על ידי הגלישה הבטוחה של Google. אם הפונקציה מחזירה UNSAFE, כתובת ה-URL נחשבת ללא בטוחה על ידי מערכת הגלישה הבטוחה של Google, וצריך לנקוט פעולה מתאימה: למשל, להציג אזהרה למשתמש הקצה, להעביר הודעה שהתקבלה לתיקיית הספאם או לדרוש מהמשתמש אישור נוסף לפני שממשיכים. אם הערך שמוחזר הוא 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 לשרת של הגלישה הבטוחה של 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.