何がプライベートで、なぜ重要か?

Pythonで学ぶデータプライバシーと匿名化

Rebeca Gonzalez

Data engineer

Facebookとケンブリッジ・アナリティカの不祥事

データプライバシーの影響

  • 8,700万人分の個人情報への不正アクセス
  • 米国有権者の心理プロファイル作成
  • 政治キャンペーンでの説得に利用

データプライバシー権の不遵守の結果、法廷に立つマーク・ザッカーバーグ

Pythonで学ぶデータプライバシーと匿名化

プライバシーとは?

通りを歩く人々

Pythonで学ぶデータプライバシーと匿名化

情報の流れとプライバシー

街中の女性の顔に顔認識が適用され、同時に頭上にGPSアイコンが表示されている

Pythonで学ぶデータプライバシーと匿名化

情報の流れとプライバシー

  • 個人情報がどう流れるか

 

「社会的・法的規範を満たす情報の流れを確保する能力。」

街中の女性の顔に顔認識が適用され、同時に頭上にGPSアイコンが表示されている

Pythonで学ぶデータプライバシーと匿名化

個人を特定できる情報(PII)

単独、または他の関連データと組み合わせて、個人を特定できるデータ。

個人情報を記入する欄がある紙のフォームとペン

Pythonで学ぶデータプライバシーと匿名化

機微なPII

  • 明確に特定の個人に関する
  • 露出で被害・羞恥・不便を招く可能性

男性の周囲に個人情報らしきポップアップが表示されているイラスト

Pythonで学ぶデータプライバシーと匿名化

機微なPII

  • 氏名(フルネーム)
  • 社会保障番号(SSN)
  • 財務情報
  • 医療記録

GDPRに違反した場合の最高制裁金を示す画像

Pythonで学ぶデータプライバシーと匿名化

非機微なPII

単独では個人を特定できないデータ

  • 性別
  • 職業
  • 郵便番号
  • 出生地の市区町村
Pythonで学ぶデータプライバシーと匿名化

非機微なPII

性別・職業・郵便番号・出生地など、単独では個人を特定できないデータ。

  • 性別
  • 職業
  • 郵便番号
  • 出生地
他の情報と組み合わせれば特定され得ます!

「欧州の政府の長」と生年月日が表示され、アンゲラ・メルケルの顔に線が引かれている図

1 アンゲラ・メルケルの写真はウィキメディア・コモンズより。
Pythonで学ぶデータプライバシーと匿名化

GDPR:EU一般データ保護規則

欧州在住者、または欧州でデータが処理される人のPIIを保護。

GDPRの主要原則

  1. 適法性・公正性・透明性
  2. 目的限定
  3. データ最小化
  4. 正確性
  5. 保存期間の制限

詳細はこちら

GDPRに違反した場合の最高制裁金を示す画像

Pythonで学ぶデータプライバシーと匿名化

データ抑制

対象者のプライバシーを守るため、特定の情報を除去すること。

属性抑制
  • 列を丸ごと削除
セル/レコード抑制
  • 行やセル内のデータを削除・置換
Pythonで学ぶデータプライバシーと匿名化

データセットでの属性抑制

# Attribute suppression on Sensitive PII "name"
suppressed_salaries = salaries.drop('name', axis="columns")


# Explore obtained dataset suppressed_salaries.head()
     gender    status    salary     pay_basis    position_title
0    Male    Employee    64400.0    Per Annum    DEPUTY DIRECTOR
1    Male    Employee    43600.0    Per Annum    ASSOCIATE DIRECTOR
2    Male    Employee    120000.0   Per Annum    SPECIAL ASSISTANT TO THE PRESIDENT AND DEPUTY ...
3    Male    Employee    86200.0    Per Annum    LEAD ADVANCE REPRESENTATIVE
4    Male    Employee    106000.0   Per Annum    SPECIAL ASSISTANT TO THE PRESIDENT AND DIRECTO...
Pythonで学ぶデータプライバシーと匿名化

データセットでのレコード抑制

# Explore the DataFrame
salaries.head()
      hours    performance    salary 
0     72       51             $80,500.00 
1     20       99             $2,805,000.00 
3     75       62             $75,800.00 
4     74       58             $60,000.00 
5     70       54             $79,000.00 
Pythonで学ぶデータプライバシーと匿名化

データセットでのレコード抑制

# Drop rows with salaries higher than 2,000,000
salaries = salaries.drop(salaries[salaries.Salary > 2000000].index)

# See reasulting DataFrame
salaries.head()
      hours    performance    salary 
0     72       51             80500 
2     75       62             75800 
3     74       58             60000 
4     70       54             79000 
5     68       53             62000 
Pythonで学ぶデータプライバシーと匿名化

抑制と連結攻撃

2つの表:左は属性抑制後の医療データ、右は一部同じ項目を含む有権者登録データ

Pythonで学ぶデータプライバシーと匿名化

Ayo berlatih!

Pythonで学ぶデータプライバシーと匿名化

Preparing Video For Download...