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

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

מהי פרטיות דיפרנציאלית?

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

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

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

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

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

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

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

תרשים שמציג הגעה של ערך חריג.

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

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

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

רעש של נקודה צפה

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

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

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

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

סיווג שגוי

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

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

תמחור

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