Введение в дифференциальную приватность

Конфиденциальность данных и анонимизация в Python

Rebeca Gonzalez

Instructor

Что такое дифференциальная приватность (DP)?

Вы красите волосы?

$$ $$ Изображение руки, нажимающей на кнопку с галочкой

Рисунок блондинки

Конфиденциальность данных и анонимизация в Python

Что такое дифференциальная приватность (DP)?

Изображение монеты

Конфиденциальность данных и анонимизация в Python

Что такое дифференциальная приватность (DP)?

Диаграмма с монетой, указывающей на ветку «орёл» слева

Конфиденциальность данных и анонимизация в Python

Что такое дифференциальная приватность (DP)?

Диаграмма с монетой, указывающей на ветку «орёл» слева, и подписью «настоящий ответ»

Конфиденциальность данных и анонимизация в Python

Что такое дифференциальная приватность (DP)?

Диаграмма с монетой, указывающей на ветку «решка» справа

Конфиденциальность данных и анонимизация в Python

Что такое дифференциальная приватность (DP)?

Диаграмма с монетой, указывающей на ветку «решка» справа, с вариантами «орёл» и «решка»

Конфиденциальность данных и анонимизация в Python

Что такое дифференциальная приватность (DP)?

Диаграмма с монетой, указывающей на ветку «решка» справа. Ветка «орёл» ведёт к ответу «нет», ветка «решка» — к ответу «да»

Конфиденциальность данных и анонимизация в Python

Что такое дифференциальная приватность (DP)?

Дифференциальная приватность — это математическое определение приватности.

Рисунок лица, разделённого пополам: правая сторона с вопросительным знаком

Конфиденциальность данных и анонимизация в Python

Кто использует дифференциальную приватность (DP)?

Логотип Apple

Конфиденциальность данных и анонимизация в Python

Кто использует дифференциальную приватность (DP)?

Клавиатура эмодзи Apple

Логотип Apple

Конфиденциальность данных и анонимизация в Python

Глобальная дифференциальная приватность

  • Доверенный куратор защищает данные
  • Шум добавляется к результату

Диаграмма глобальной дифференциальной приватности

Конфиденциальность данных и анонимизация в Python

Локальная дифференциальная приватность

  • Нет доверенной стороны.
  • Шум добавляется перед передачей данных.

Диаграмма локальной дифференциальной приватности

Конфиденциальность данных и анонимизация в Python

Эпсилон-дифференциальная приватность

Греческая буква эпсилон $\epsilon$: определяет степень приватности и уровень шума при публикации данных.

  • Высокие значения $\epsilon$ означают более точные, но менее приватные данные
  • Системы с малым $\epsilon$ выдают сильно зашумлённые данные
Конфиденциальность данных и анонимизация в Python

Эпсилон — это экспонента

Например, $\epsilon$ = 1.

$\epsilon^1=2{,}72$

  • Это почти в три раза приватнее, чем $\epsilon$ = 2.
    • $\epsilon^2=7{,}39$
  • И более чем в 8 000 раз приватнее, чем $\epsilon$ = 10.
    • $\epsilon^10=22000$
Конфиденциальность данных и анонимизация в Python

K-анонимность и дифференциальная приватность

k-анонимность даёт «синтаксические» гарантии

  • По-прежнему широко используется
  • Во многих случаях недостаточна

Дифференциальная приватность — фактический стандарт защиты данных

  • Применяется в компаниях: Apple, Uber, Google
  • Деградацию приватности при каждой публикации можно точно измерить
Конфиденциальность данных и анонимизация в Python

Введение в diffprivlib

diffprivlib v0.3 от IBM

Логотип IBM

Конфиденциальность данных и анонимизация в Python

Гистограммы

# Get counts and bars for non-private histogram of salaries
counts, bins = np.histogram(salaries)


# Normalize counts to get proportions of the height proportions = counts / counts.sum()
# Draw the histogram of proportions plt.bar(bins[:-1], height=proportions, width=(bins[1] - bins[0])) plt.show()
Конфиденциальность данных и анонимизация в Python

Гистограммы

Результирующая неприватная гистограмма

Конфиденциальность данных и анонимизация в Python

Приватная гистограмма

import diffprivlib.tools

# Get counts and bars for private histogram of salaries with epsilon of 0.1 dp_counts, dp_bins = tools.histogram(salaries, epsilon=0.1)
# Normalize counts to get proportions dp_proportions = dp_counts / dp_counts.sum()
# Draw the histogram of proportions and see differences plt.bar(dp_bins[:-1], dp_proportions, width=(dp_bins[1] - dp_bins[0])) plt.show()
Конфиденциальность данных и анонимизация в Python

Приватная гистограмма

Неприватная гистограмма Результирующая неприватная гистограмма

Результирующая приватная гистограмма Результирующая приватная гистограмма

Конфиденциальность данных и анонимизация в Python

Давайте потренируемся!

Конфиденциальность данных и анонимизация в Python

Preparing Video For Download...