נכסים של מזהה משותף של ספק Google

רקע

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

לכן חשוב לזכור שהמזהה המשותף לא מתייחס לחשבון Google (או למשתמש או לישות אחרת באחסון של Google) ולא לחשבון הספק/מנפיק (או לישות אחרת). היא מתייחסת לקישור בין שני הדברים האלה.

מאפייני מזהה משותף

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

לשילוב בין Google לשותף חיצוני, חשוב מאוד שהמזהים המשותפים יהיו בעלי המאפיינים הבאים:

  1. להיות ייחודיים בכל העולם: המזהה המשותף הזה צריך להפנות רק לקישור אחד בין משתמש Google לחשבון המנפיק. לא יכול להיות מזהה משותף אחר לאותו מנפיק שיש לו ערך זהה.
  2. אי אפשר לנחש: המזהים המשותפים האלה מעניקים הרשאה לבצע פעולה בשם המשתמש, ולכן חשוב שלצד שלישי לא תהיה אפשרות לנחש את ערך המזהה המשותף.
  3. ניתן לביטול: חשוב שהמשתמש יוכל לבטל מזהה משותף. הביטול הזה ימנע מהמשתמש להשתמש בעתיד בערך המזהה המשותף. למאפיין הזה יש כמה מאפייני תוצאות:
    • לא על סמך נכס שלא ניתן לשינוי באחד מהחשבונות: אם הערך של המזהה המשותף היה מבוסס על נכס שלא ניתן לשינוי של חשבון המנפיק או של חשבון Google, יצירה מחדש של מזהה משותף שבוטל תוביל לאותו ערך של המזהה המשותף (וכך תבטל את הביטול), ולכן הערך של המזהה המשותף לא יכול להיות מספר טלפון של החשבון (למשל, מספר טלפון ולא מספר טלפון).
    • לא רק <חשבון Google, חשבון שותף>: חייב להיות ערך אחר (למשל זמן) כדי לאפשר את הביטול.
  4. מתן הרשאה למספר קישורים לחשבון מכל צד: חשוב להקפיד שיצירת הערך של המזהה המשותף לא תמנע ממשתמש Google אחד לקשר את החשבון לכמה חשבונות בנק, או לקשר ליותר מחשבון Google אחד לחשבון בנק אחד (למשל, חשבון הורה וחשבון צאצא שמקושרים לחשבון הבנק של ההורה). בדומה ליכולת הביטול, יש לכך כמה תוצאות:
    • שוב, לא על סמך נכס שלא ניתן לשינוי של אחד מהחשבונות: אחרת, למזהה המשותף יהיה אותו ערך כשמשתמש יחיד של Google קישר כמה חשבונות בנק (אם ערך המזהה המשותף מבוסס על חשבון Google), או אם מספר חשבונות Google מקושרים לחשבון בנק אחד (אם הערך של המזהה המשותף מבוסס על נכס של חשבון הבנק)
  5. Be long-lived: המזהה המשותף תקף רק בהקשר מאובטח (השילוב בין Google לבין הספק, שמשתמש בהגנות ברמת החיבור וגם בהגנות ברמת האפליקציה (למשל PGP, SSL הדדי וכו'), ולכן הוא לא צריך מחזור חיים קצר כדי לשמור על האבטחה. ההעדפה של Google היא שלמזהים משותפים לא יפוג התוקף אף פעם, אבל אם לספק נדרש תאריך תפוגה, הוא צריך להיות פרק זמן ארוך (למשל, יותר משנה).

מאפיינים אחרים של מזהים משותפים מומלצים:

  1. Base64: כך קל יותר להעביר ולהציג את הערך של השילוב ב-https.
  2. אורך מינימלי: מומלץ להשתמש לפחות ב-27 ספרות (לפני קידוד Base64) כדי שיהיה מספיק מרחב כתובות כדי למנוע התנגשויות.

מה יכול להשתבש?

כדי לעזור לקורא להבין מהם המאפיינים הנדרשים, הנה כמה מקרים לדוגמה שממחישים את הבעיות שבהן לא נעשה שימוש בנכסים האלה.

מקרים לדוגמה של מזהים משותפים

מקרה לדוגמה מס' 1: מיחזור של מספרי טלפון

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

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

מקרה לדוגמה מס' 2: ההדבקה

עובד של Google או Partner מדביק בטעות מזהה משותף בצ'אט, במקום בכלי פנימי. שכבות הגנה נוספות מונעות מכל אחד להשתמש במזהה המשותף באופן זדוני, אבל ליתר ביטחון, Google רצתה לבטל את המזהה המשותף ולהחליף אותו במזהה חדש. כש-Google או Partner מנסים לבטל את המזהה המשותף, הם מגלים שהמזהים המשותפים הם רק מספר החשבון של המשתמש במערכת של המנפיק, והמזהה המשותף משמש לחיפוש ישיר של חשבון המשתמש. לכן, אי אפשר לבטל את המזהה המשותף בלי למחוק את חשבון המשתמש וליצור לו חשבון חדש.

תיאור מקרה מס' 3: העובד הגרוע

לאחר שגורם זדוני ב-Google/Partner מבין את התקרית "The Copy" שלמעלה, שמבין שהמזהה המשותף הוא רק מספר החשבון של המשתמש, אם יש לו אפשרות להכניס את מזהה החשבון של מישהו אחר לערך של המזהה המשותף שלו, הוא יכול לבצע רכישות מול החשבון של אותו אדם. ההפרה של מאפיין מס' 2 גרמה להדבקה הלא מכוונת הזו יותר מחור אבטחה של משתמש יחיד, מכיוון שמדובר בחור אבטחה לכל משתמש.

מקרה לדוגמה מס' 4: הסבב

אחרי אירוע "TheTake" שלמעלה, המנפיק עובר ל-UUID כפורמט המזהה המשותף שלו. הפעם, עובד של המנפיק שולח בטעות חלק מהמזהים המשותפים בטקסט ללא הצפנה, כחלק משרשור של ניפוי באגים. לדברי Google, אל דאגה, אנחנו פשוט נבטל ונחליף את המזהים המשותפים של המשתמש.

כחלק מהסבב, Google מודיעה למנפיק שלכל חשבון משתמש שנפרץ יהיו שני מזהים משותפים פעילים למשך פרק זמן קצר במהלך ניקוי מסד הנתונים. אבל המנפיק לא אישר את השימוש בנכס מס' 4, ומיידע את Google שיש לה אילוץ שלפיו רק מזהה משותף אחד יכול להיות פעיל בחשבון משתמש מסוים. זה מוביל לסבב מאוד מבולגן עם תנאי גזע.