אתם יכולים להשתמש בפרטיות דיפרנציאלית עם 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 הרגילים לניתוח.