מעקב בין מכשירים: קישור סשנים ללא התחברות
כיצד אלגוריתם זיהוי המכשירים שלנו מחבר סשנים אנונימיים בין דפדפנים ומכשירים באמצעות התאמת אותות הסתברותית וניתוח גרפים.
כאשר משתמש מבקר באתר שלכם מהמחשב הנייד שלו בבוקר ומהטלפון שלו אחר הצהריים, רוב פלטפורמות האנליטיקה רואות שני מבקרים נפרדים לחלוטין. אלגוריתם זיהוי המכשירים שלנו מסוגל לקשר את הסשנים הללו בצורה הסתברותית — ללא צורך בהתחברות — באמצעות ניתוח חפיפת אותות ובניית גרפי מכשירים.
אתגר המעקב בין מכשירים
fingerprinting מסורתי מייצר מזהה ייחודי לכל מופע דפדפן. Chrome במחשב נייד מפיק מזהה אחד; Safari באייפון מפיק מזהה אחר. אפילו באותו מכשיר, דפדפנים שונים מייצרים fingerprints שונים משום שיש להם user agents שונים, תמיכה שונה בפיצ'רים ומאפייני rendering שונים.
אבל משתמשים לא חושבים במונחים של דפדפנים. הם חושבים במונחים של סשנים. הם מתחילים רכישה בטלפון בזמן ארוחת הצהריים ומסיימים אותה במחשב הנייד בבית. הם חוקרים מוצר בטאבלט וקונים אותו במחשב השולחני. עבור זיהוי הונאה והתאמה אישית, ההבנה שהסשנים הללו שייכים לאותו אדם היא קריטית.
התאמת אותות הסתברותית
הקישור בין מכשירים שלנו בנוי סביב גרף אנשים עם שלושה סוגי צמתים: המבקר (פרופיל דפדפן אחד), המכשיר (המכונה שמתחת לכמה פרופילי דפדפן), ומזהה מגובב (hashed) הנגזר מכתובת אימייל או ממספר טלפון חתומים שהאפליקציה שלכם מעבירה אלינו. הצלעות בין הצמתים הללו הן שמאחדות שני סשנים לכדי אדם אחד.
נעדרים מהרשימה הזו במכוון: כתובת ה־IP וה־ASN. רשת משותפת היא האות המפתה והשגוי — משרד, קמפוס או carrier-grade NAT מציבים מאחורי כתובת אחת אלפי אנשים שאין ביניהם כל קשר, ולכן צלע המבוססת על IP יוצרת בדיוק את סוג הקישור השגוי שתיקונו יקר ביותר. הצלעות הדטרמיניסטיות שבהן אנחנו כן משתמשים — אותו מכשיר, אותו מזהה מגובב, אותו שורש מבקר קנוני — הן כאלה שרשת משותפת אינה יכולה לייצר יש מאין.
מעל זה קיים רכיב הסתברותי תחום: זוגות התנהגותיים מאומתים של מבקר יכולים להישקל כמועמדים לצירוף, בתקרה של מספר קטן לכל מבקר ורק מעל רף confidence מינימלי. הוא מרחיב אשכול שהצלעות הדטרמיניסטיות כבר עיגנו; הוא אינו פותח אשכול בכוחות עצמו.
בניית גרף המכשירים
כל קישור מאומת או בעל הסתברות גבוהה בין סשנים יוצר צלע (edge) בגרף מכשירים. הגרף מחבר מופעי דפדפן לצמתי מכשיר, וצמתי מכשיר לצמתי אדם. עם הזמן, ככל שמצטברים יותר סשנים, הגרף נעשה מדויק יותר.
בניית הגרף משתמשת בגישה שמרנית. צלע דטרמיניסטית — אותו מכשיר שנפתר תחת שני פרופילי דפדפן, או אותו מזהה מגובב שסופק עבור שני חשבונות — יוצרת את הקישור באופן ישיר. כל דבר חלש מזה נחשב מועמד ולא קישור, חייב לעבור רף confidence מינימלי, ומוגבל בתקרה כך שמבקר יחיד לא יגרור אחריו אשכול חסר גבולות. מבקר או גשר בהסגר מדולגים לחלוטין במקום להתמזג על בסיס חשד.
יישומים לזיהוי הונאה
הקישור בין מכשירים חזק במיוחד עבור זיהוי הונאה. נוכל שמנהל חשבונות על פני כמה פרופילי דפדפן מזוהה כאשר הפרופילים הללו נפתרים לאותו מכשיר שמתחתיהם, או כאשר אותו מזהה חתום מופיע מאחורי שניים מהחשבונות. כרטיס אשראי גנוב שנעשה בו שימוש במכשיר שמעולם לא היה משויך לגרף המכשירים של בעל הכרטיס מפעיל התראה מיידית.
ראינו רשתות הונאה שבהן מפעיל יחיד מריץ עשרות מכונות וירטואליות כדי ליצור חשבונות מזויפים. כל מכונה וירטואלית מציגה fingerprint דפדפן נבדל, אך כולן מתארחות על אותה חומרה פיזית, וזיהוי המכשיר הוא שמקפל אותן בחזרה למכונה אחת. צומת המכשיר המשותף הזה הוא הצלע שעליה נבנה הגרף — הוא חושף את הרשת מתוך חשבון בודד שזוהה, ללא כל הסתמכות על כתובת משותפת.
עיצוב ששומר על פרטיות
הקישור בין מכשירים מעורר חששות פרטיות לגיטימיים. הגישה שלנו מצמצמת אותם באמצעות כמה החלטות עיצוב. ראשית, השכבה כבויה כברירת מחדל — היא אינה מגיעה יחד עם פריסה, אלא מופעלת במכוון עבור סביבת עבודה, ועד אז לא נבנה שום גרף אנשים. שנית, הקישור מתרחש בצד השרת ולעולם אינו נחשף לדפדפן, ולכן גרף הקישורים אינו ניתן לקריאה מצד הלקוח, והמצב נקבע בצד שלנו ולא על ידי משהו שהדף יכול לשלוח. שלישית, צלע המזהה קיימת רק אם האפליקציה שלכם בוחרת לספק אימייל או טלפון חתומים — אנחנו לא גוזרים אותה מהמבקר. רביעית, ניתן לספק למשתמשים שקיפות לגבי מכשירים מקושרים דרך ממשק הפרטיות שלכם.
מדדי דיוק
הפשרה מכוונת, והיא מעדיפה precision על פני recall — נעדיף לפספס קישור מאשר ליצור קישור שגוי. ההעדפה הזו נראית בעיצוב ולא במספר כותרת: צלעות דטרמיניסטיות יוצרות קישורים, אותות חלשים רק מרחיבים אשכולות שכבר מעוגנים, גשרים בהסגר מדולגים, וכל אשכול מוגבל בתקרה. קישור שפוספס עולה לכם בדפוס הונאה שהייתם תופסים מאוחר יותר באמצעים אחרים. קישור שגוי ממזג שני לקוחות אמיתיים לאדם אחד, והשגיאה הזו מתפשטת לכל החלטה שתתקבל לאחר מכן.
מדדו זאת על התנועה שלכם לפני שאתם מסתמכים עליה. ה־recall בין מכשירים תלוי בכמה מהמשתמשים שלכם בכלל מתחברים — צלע המזהה היא החזקה ביותר שקיימת, והיא קיימת רק היכן שהאפליקציה שלכם מספקת אותה.