שימוש בפרטיות דיפרנציאלית

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

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

תרחיש שימוש לדוגמה בפרטיות דיפרנציאלית

כדי להבין טוב יותר את המושג "פרטיות דיפרנציאלית", נבחן דוגמה פשוטה.

בתרשים העמודות הזה מוצגת רמת העומס במסעדה קטנה בערב מסוים. הרבה אורחים מגיעים בשעה 19:00, והמסעדה ריקה לגמרי בשעה 01:00:

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

התרשים הזה נראה שימושי, אבל יש בו בעיה. כשמגיע אורח חדש, התרשים העמודות מציג את הנתון הזה באופן מיידי. בתרשים הבא אפשר לראות בבירור שיש אורח חדש, ושהוא הגיע בערך בשעה 01:00:

בתרשים מוצג ערך חריג של זמן הגעה.

הצגת הפרט הזה היא לא אידיאלית מבחינת הפרטיות, כי נתונים סטטיסטיים אנונימיים לא אמורים לחשוף תרומות של משתמשים ספציפיים. אם נציב את שני התרשימים זה לצד זה, ההבדל יהיה עוד יותר ברור: בתרשים העמודות הכתום יש אורח אחד נוסף שהגיע בסביבות השעה 01:00:

השוואה בין תרשימים מדגישה תרומה של אדם מסוים.

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

השוואות כפופות לפרטיות דיפרנציאלית.

איך פועלת פרטיות דיפרנציאלית בשאילתות

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

באמצעות GoogleSQL ל-BigQuery, אתם יכולים לשנות את תוצאות השאילתה באמצעות צבירות נתונים בפרטיות דיפרנציאלית. כשמריצים את השאילתה, מתבצעות הפעולות הבאות:

  1. מחשב צבירות לכל ישות בכל קבוצה, אם הקבוצות צוינו באמצעות משפט GROUP BY. מגביל את מספר הקבוצות שכל ישות יכולה לתרום להן, על סמך פרמטר הפרטיות הדיפרנציאלית max_groups_contributed.
  2. מגביל את התרומה המצטברת של כל ישות כך שתהיה בטווח גבולות ההגבלה. אם לא מציינים את גבולות החסימה, הם מחושבים באופן מרומז בשיטה של פרטיות דיפרנציאלית.
  3. מצטבר את התרומות המצטברות של כל ישות שמוגבלות לכל קבוצה.
  4. מוסיפה רעש לערך המצטבר הסופי של כל קבוצה. ההיקף של הרעש האקראי הוא פונקציה של כל הגבולות המוגבלים ופרמטרי הפרטיות.
  5. מחשב ספירת ישויות עם רעש לכל קבוצה ומסיר קבוצות עם מעט ישויות. ספירת ישויות רועשת עוזרת לבטל קבוצה לא דטרמיניסטית של קבוצות.

התוצאה הסופית היא מערך נתונים שבו לכל קבוצה יש תוצאות מצטברות עם רעש, וקבוצות קטנות הוסרו.

במאמרים הבאים מוסבר מהי פרטיות דיפרנציאלית ומהם תרחישי השימוש שלה:

יצירת שאילתה תקינה עם פרטיות דיפרנציאלית

כדי שהשאילתה עם הפרטיות הדיפרנציאלית תהיה תקינה, היא צריכה לעמוד בכללים הבאים:

הגדרת עמודה של יחידת פרטיות

יחידת פרטיות היא הישות במערך נתונים שמוגנת באמצעות פרטיות דיפרנציאלית. ישות יכולה להיות אדם פרטי, חברה, מיקום או כל עמודה שתבחרו.

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

אפשר להגדיר עמודה של יחידת פרטיות בסעיף OPTIONS של סעיף פרטיות דיפרנציאלית עם המזהה הייחודי privacy_unit_column.

בדוגמאות הבאות, עמודה של יחידת פרטיות נוספת לסעיף פרטיות דיפרנציאלית. ‫id מייצג עמודה שמקורה בטבלה שנקראת students.

SELECT WITH DIFFERENTIAL_PRIVACY
  OPTIONS (epsilon=10, delta=.01, privacy_unit_column=id)
  item,
  COUNT(*, contribution_bounds_per_group=>(0, 100))
FROM students;
SELECT WITH DIFFERENTIAL_PRIVACY
  OPTIONS (epsilon=10, delta=.01, privacy_unit_column=members.id)
  item,
  COUNT(*, contribution_bounds_per_group=>(0, 100))
FROM (SELECT * FROM students) AS members;

הסרת רעשים משאילתה עם פרטיות דיפרנציאלית

בקטע 'הפניה לסינטקס של שאילתות', אפשר לעיין במאמר בנושא הסרת רעשים.

הוספת רעש לשאילתה עם פרטיות דיפרנציאלית

במאמר העזר "תחביר של שאילתות", קוראים את הקטע הוספת רעש.

הגבלת הקבוצות שבהן יכול להיות מזהה של יחידת פרטיות

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

מגבלות

בקטע הזה מתוארות המגבלות של פרטיות דיפרנציאלית.

ההשפעות של פרטיות דיפרנציאלית על הביצועים

שאילתות עם פרטיות דיפרנציאלית פועלות לאט יותר משאילתות רגילות, כי מתבצעת צבירה לכל ישות ומוחלת המגבלה max_groups_contributed. הגבלת גבולות התרומה יכולה לעזור לשפר את הביצועים של שאילתות עם פרטיות דיפרנציאלית.

פרופילי הביצועים של השאילתות הבאות לא דומים:

SELECT
  WITH DIFFERENTIAL_PRIVACY OPTIONS(epsilon=1, delta=1e-10, privacy_unit_column=id)
  column_a, COUNT(column_b)
FROM table_a
GROUP BY column_a;
SELECT column_a, COUNT(column_b)
FROM table_a
GROUP BY column_a;

הסיבה להבדל בביצועים היא שמתבצעת רמה נוספת של קיבוץ ברמת פירוט גבוהה יותר לשאילתות עם פרטיות דיפרנציאלית, כי צריך לבצע גם צבירה לכל ישות.

פרופילי הביצועים של השאילתות הבאות אמורים להיות דומים, למרות שהשאילתה עם הפרטיות הדיפרנציאלית קצת יותר איטית:

SELECT
  WITH DIFFERENTIAL_PRIVACY OPTIONS(epsilon=1, delta=1e-10, privacy_unit_column=id)
  column_a, COUNT(column_b)
FROM table_a
GROUP BY column_a;
SELECT column_a, id, COUNT(column_b)
FROM table_a
GROUP BY column_a, id;

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

מגבלות תחימה משתמעות לקבוצות נתונים קטנות

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

נקודות חולשה בפרטיות

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

מגבלות על הבטחות בנוגע לפרטיות

ב-BigQuery, הפרטיות הדיפרנציאלית מיישמת את האלגוריתם של הפרטיות הדיפרנציאלית, אבל לא מבטיחה את מאפייני הפרטיות של קבוצת הנתונים שנוצרה.

שגיאות זמן ריצה

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

רעש בנקודה צפה (floating point)

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

הוספות של רעש פרטיות דיפרנציאלית לסוגי נתונים של נקודה צפה כפופות לפגיעויות שמתוארות במאמר Widespread Underestimation of Sensitivity in Differentially Private Libraries and How to Fix It (הערכת חסר נפוצה של רגישות בספריות של פרטיות דיפרנציאלית ואיך לפתור את הבעיה). הוספת רעש לסוגי נתונים של מספרים שלמים לא חשופה לנקודות החולשה שמתוארות במאמר.

סיכונים של מתקפת תזמון

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

סיווג שגוי

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

אם אתם צריכים עזרה בהבנת הנתונים, כדאי להשתמש בשירותים ובכלים הבאים:

תמחור

השימוש בפרטיות דיפרנציאלית לא כרוך בעלות נוספת, אבל חל התמחור הסטנדרטי של BigQuery לניתוח נתונים.