אתם יכולים להשתמש בפרטיות דיפרנציאלית עם BigQuery כדי להגן על מידע אישי בנתונים שלכם, ועדיין לבצע חישובים ולקבל תובנות. תקן הפרטיות הזה מגביל את המידע האישי שנחשף על ידי פלט הנתונים, ועוזר לכם לשתף נתונים ולהסיק מסקנות לגבי קבוצות בלי לחשוף פרטים על אנשים ספציפיים. פרטיות דיפרנציאלית שימושית במיוחד כשקיים סיכון לזיהוי מחדש או כשצריך לכמת את האיזון בין סיכון הפרטיות לבין התועלת האנליטית.
פרטים על התחביר מופיעים בסעיף בנושא פרטיות דיפרנציאלית. רשימת הפונקציות שאפשר להשתמש בהן עם התחביר הזה מופיעה במאמר פונקציות מצטברות עם פרטיות דיפרנציאלית.
תרחיש שימוש לדוגמה בפרטיות דיפרנציאלית
כדי להבין טוב יותר מהי פרטיות דיפרנציאלית, נבחן דוגמה פשוטה.
בתרשים העמודות הזה מוצגת רמת העומס במסעדה קטנה בערב מסוים. הרבה אורחים מגיעים בשעה 19:00, והמסעדה ריקה לגמרי בשעה 01:00:
התרשים הזה נראה שימושי, אבל יש בו בעיה. כשמגיע אורח חדש, התרשים העמודות מציג את העובדה הזו באופן מיידי. בתרשים הבא אפשר לראות בבירור שיש אורח חדש, ושהוא הגיע בערך בשעה 1:00:
הצגת הפרט הזה לא טובה מנקודת מבט של פרטיות, כי נתונים סטטיסטיים אנונימיים לא אמורים לחשוף תרומות של אנשים פרטיים. כשמציבים את שני התרשימים זה לצד זה, רואים את זה אפילו יותר בבירור: בתרשים העמודות הכתום יש אורח אחד נוסף שהגיע בסביבות השעה 1:00:
שוב, זה לא טוב. כדי למנוע בעיות פרטיות כאלה, אפשר להוסיף רעש אקראי לתרשימי העמודות באמצעות פרטיות דיפרנציאלית. בטבלת ההשוואה הבאה, התוצאות הן אנונימיות ולא חושפות יותר תרומות אישיות.
איך פועלת פרטיות דיפרנציאלית בשאילתות
המטרה של פרטיות דיפרנציאלית היא לצמצם את הסיכון לחשיפת מידע: הסיכון שמישהו יוכל ללמוד מידע על ישות במערך נתונים. פרטיות דיפרנציאלית מאזנת בין הצורך להגן על הפרטיות לבין הצורך בשימוש בניתוח סטטיסטי. ככל שהפרטיות גדלה, התועלת של ניתוח סטטיסטי יורדת, ולהפך.
בעזרת GoogleSQL ל-BigQuery, אפשר לבצע טרנספורמציה של תוצאות שאילתה באמצעות צבירות פרטיות דיפרנציאליות. כשמריצים את השאילתה, מתבצעות הפעולות הבאות:
- אם מציינים קבוצות באמצעות פסקה
GROUP BY, המערכת מחשבת צבירות לכל ישות בכל קבוצה. מגביל את מספר הקבוצות שכל ישות יכולה לתרום להן, על סמך פרמטר הפרטיות הדיפרנציאליתmax_groups_contributed. - Clamps כל תרומה מצטברת לכל ישות כדי שתהיה בתוך גבולות ההידוק. אם לא מציינים את גבולות ההגבלה, הם מחושבים באופן מרומז בדרך ששומרת על פרטיות דיפרנציאלית.
- מצטברות התרומות המצומצמות של כל ישות לכל קבוצה.
- הפונקציה מוסיפה רעש לערך המצטבר הסופי של כל קבוצה. הסקאלה של הרעש האקראי היא פונקציה של כל הגבולות המהודקים ופרמטרים הפרטיות.
- מחשב ספירת ישויות עם רעש לכל קבוצה ומסיר קבוצות עם מעט ישויות. ספירת ישויות עם רעש עוזרת לבטל קבוצה לא דטרמיניסטית של קבוצות.
התוצאה הסופית היא מערך נתונים שבו לכל קבוצה יש תוצאות מצטברות עם רעש, וקבוצות קטנות סולקו.
במאמרים הבאים אפשר לקרוא מידע נוסף על פרטיות דיפרנציאלית ועל תרחישי השימוש בה:
- מבוא ידידותי ולא טכני לפרטיות דיפרנציאלית
- SQL עם פרטיות דיפרנציאלית עם תרומת משתמש מוגבלת
- פרטיות דיפרנציאלית בוויקיפדיה
יצירת שאילתה תקפה עם פרטיות דיפרנציאלית
כדי שהשאילתה עם פרטיות דיפרנציאלית תהיה תקפה, צריך לעמוד בכללים הבאים:
- מוגדרת עמודה של יחידת פרטיות.
- הרשימה
SELECTמכילה סעיף של פרטיות דיפרנציאלית. - רק פונקציות צבירה עם פרטיות דיפרנציאלית מופיעות ברשימה
SELECTעם סעיף הפרטיות הדיפרנציאלית.
הגדרת עמודה של יחידת פרטיות
יחידת פרטיות היא הישות במערך נתונים שמוגנת באמצעות פרטיות דיפרנציאלית. ישות יכולה להיות אדם, חברה, מיקום או כל עמודה שתבחרו.
שאילתה עם פרטיות דיפרנציאלית חייבת לכלול עמודה אחת בלבד של יחידת פרטיות. עמודה של יחידת פרטיות היא מזהה ייחודי של יחידת פרטיות, והיא יכולה להופיע בכמה קבוצות. מכיוון שיש תמיכה בכמה קבוצות, סוג הנתונים של העמודה של יחידת הפרטיות צריך להיות ניתן לקיבוץ.
אפשר להגדיר עמודה של יחידת פרטיות בסעיף 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 רגילים על ניתוח.