כשלקוחות בוחרים להשתמש בגרסה 5 של הגלישה הבטוחה של Google במצב זמן אמת, הם שומרים במסד הנתונים המקומי שלהם: (i) מטמון גלובלי של אתרים שסביר להניח שהם לא מזיקים, בפורמט של גיבוב SHA256 של ביטויי כתובות URL של סיומת מארח או קידומת נתיב, (ii) קבוצה של רשימות איומים, בפורמט של קידומות גיבוב SHA256 של ביטויי כתובות URL של סיומת מארח או קידומת נתיב. הרעיון המרכזי הוא שבכל פעם שהלקוח רוצה לבדוק כתובת URL מסוימת, מתבצעת בדיקה מקומית באמצעות המטמון הגלובלי. אם הבדיקה הזו עוברת, מתבצעת בדיקה של רשימות איומים מקומיות. אחרת, הלקוח ממשיך בבדיקת הגיבוב בזמן אמת, כפי שמפורט בהמשך.
בנוסף למסד הנתונים המקומי, הלקוח ינהל מטמון מקומי. המטמון המקומי הזה לא צריך להיות באחסון קבוע, ויכול להיות שהוא יימחק אם יש עומס על הזיכרון.
בהמשך מופיע פירוט של התהליך.
הליך בדיקת כתובות URL בזמן אמת
הפרוצדורה הזו מקבלת כתובת URL אחת u ומחזירה SAFE, UNSAFE או UNSURE. אם מוחזרת התוצאה SAFE, כתובת ה-URL נחשבת בטוחה על ידי הגלישה הבטוחה של Google. אם הפונקציה מחזירה UNSAFE, כתובת ה-URL נחשבת ללא בטוחה על ידי מערכת הגלישה הבטוחה של Google, וצריך לנקוט פעולה מתאימה: למשל, להציג אזהרה למשתמש הקצה, להעביר הודעה שהתקבלה לתיקיית הספאם או לדרוש מהמשתמש אישור נוסף לפני שממשיכים. אם הערך שמוחזר הוא UNSURE, צריך להשתמש בהמשך בהליך הבא של בדיקה מקומית.
-
expressionsהיא רשימה של ביטויי סיומת או תחילית שנוצרו על ידי כתובת ה-URLu. -
expressionHashesהיא רשימה שבה כל רכיב הוא גיבוב SHA256 של כל ביטוי ב-expressions. - לכל
hashמתוךexpressionHashes:- אם אפשר למצוא את
hashבמטמון הגלובלי, מחזירים אתUNSURE.
- אם אפשר למצוא את
-
expressionHashPrefixesהיא רשימה שבה הרכיבים הם 4 הבייטים הראשונים של כל גיבוב ב-expressionHashes. - לכל
expressionHashPrefixמתוךexpressionHashPrefixes:- מחפשים את
expressionHashPrefixבמטמון המקומי. - אם נמצאה רשומה במטמון:
- הפונקציה בודקת אם השעה הנוכחית גדולה משעת התפוגה.
- אם הוא גדול יותר:
- מסירים את הרשומה שנמצאה במטמון מהמטמון המקומי.
- ממשיכים עם הלולאה.
- אם הוא לא גדול יותר:
- הסרת
expressionHashPrefixהספציפי הזה מexpressionHashPrefixes. - בודקים אם הגיבוב המלא התואם ב-
expressionHashesנמצא ברשומה שבמטמון. - אם נמצא, מחזירה
UNSAFE. - אם לא נמצאה רשומה, ממשיכים בלולאה.
- הסרת
- אם לא נמצאה רשומה במטמון, ממשיכים בלולאה.
- מחפשים את
- שולחים את
expressionHashPrefixesלשרת של הגלישה הבטוחה של Google בגרסה 5 באמצעות RPC SearchHashes או שיטת REST hashes.search. אם אירעה שגיאה (כולל שגיאות רשת, שגיאות HTTP וכו'), מחזיריםUNSURE. אחרת, התגובה היאresponseשהתקבלה משרת ה-SB, שהיא רשימה של גיבובים מלאים יחד עם מידע עזר שמזהה את אופי האיום (הנדסה חברתית, תוכנות זדוניות וכו'), וגם זמן התפוגה של המטמוןexpiration. - לכל
fullHashמתוךresponse:- הוספה של
fullHashלמטמון המקומי, יחד עםexpiration.
- הוספה של
- לכל
fullHashמתוךresponse:-
isFoundהיא התוצאה של חיפושfullHashב-expressionHashes. - אם הערך של
isFoundהוא False, ממשיכים בלולאה. - אם
isFoundהוא True, הפונקציה מחזירה את הערךUNSAFE.
-
- החזרה
SAFE.
הפרוטוקול הזה מציין מתי הלקוח שולח את expressionHashPrefixes לשרת, אבל הוא לא מציין במכוון איך לשלוח אותם. לדוגמה, מקובל שהלקוח ישלח את כל הקידומות expressionHashPrefixes בבקשה אחת, ומקובל גם שהלקוח ישלח כל קידומת בנפרד בבקשות נפרדות לשרת (אולי במקביל).expressionHashPrefixes מותר גם לשלוח קידומות גיבוב לא קשורות או שנוצרו באופן אקראי יחד עם קידומות הגיבוב ב-expressionHashPrefixes, כל עוד מספר קידומות הגיבוב שנשלחות בבקשה אחת לא עולה על 30.