仕事でデータの2次利用のために匿名化データセットに加工する機会があり, 匿名化技術について簡単に下調べしてみました。
今回, 参考にしたのは 月刊誌「統計」平成27年9月号 特集:ビッグデータ (p8 – ビッグデータの活用と匿名化技術) です。
k-匿名化
まず, 個人情報 と プライバシー の違いに触れておく。
- 個人情報 : 単体もしくは組み合わせにより個人を特定できる情報
- プライバシー : 自分に関する情報の流れを自分でコントロールできる権利
k-匿名化 (k-anonymity) は匿名化データセットが流出している前提で, 攻撃者が候補となるレコードを k 個以下に絞り込めないことを保証するプライバシー指標。
複数のデータセットに共通して表れる属性を照合することで異なるデータセットを関連付ける攻撃を行うレコードリンク攻撃というが, k-匿名化が生まれた背景にはレコードリンク攻撃対策がある。
レコードの属性を4種類に分類する。
- 識別子 (identifier) : 氏名, マイナンバーなど
- 準識別子 (quasi-identifier): 年齢, 性別, 住所, 電話番号, 購買情報, 位置情報など
- 機密情報 (sensitive attribute) : 収入, 病名など
- 非機密情報 (non-sensitive attribute) : 識別子, 準識別子, 機密情報以外の属性
k-匿名化が想定するのは, 攻撃者が準識別子を全て外部知識として持っていることである。
例として以下の架空のデータセットを考える。
Name | Age | Gender | Occupation | Disease |
Ramsha | 29 | Female | Lawyer | Cancer |
Yadu | 24 | Female | Novelist | Viral infection |
Salima | 28 | Female | Novelist | Cancer |
sunny | 27 | Male | Engineer | Heart-related |
Joan | 24 | Female | Engineer | Heart-related |
Bahuksana | 23 | Female | Novelist | Cancer |
Rambha | 25 | Male | Engineer | Heart-related |
Kishor | 29 | Male | Lawyer | Heart-related |
Johnson | 17 | Male | Dancer | Heart-related |
John | 19 | Male | Dancer | Viral infection |
k-匿名化では元のデータセットに対して以下の加工を行う。
(1) 識別子に属するカラムのデータを排除する。排除した印として, * を代入する。
Name | Age | Gender | Occupation | Disease |
* | 29 | Female | Lawyer | Cancer |
* | 24 | Female | Novelist | Viral infection |
* | 28 | Female | Novelist | Cancer |
* | 27 | Male | Engineer | Heart-related |
* | 24 | Female | Engineer | Heart-related |
* | 23 | Female | Novelist | Cancer |
* | 25 | Male | Engineer | Heart-related |
* | 29 | Male | Lawyer | Heart-related |
* | 17 | Male | Dancer | Heart-related |
* | 19 | Male | Dancer | Viral infection |
(2) 準識別子に属するカラムのデータに対して一般化の処理 (Generalization) [1] をかける
Name | Age | Gender | Occupation | Disease |
* | 20 < x ≤ 30 | Female | Lawyer | Cancer |
* | 20 < x ≤ 30 | Female | Novelist | Viral infection |
* | 20 < x ≤ 30 | Female | Novelist | Cancer |
* | 20 < x ≤ 30 | Male | Engineer | Heart-related |
* | 20 < x ≤ 30 | Female | Engineer | Heart-related |
* | 20 < x ≤ 30 | Female | Novelist | Cancer |
* | 20 < x ≤ 30 | Male | Engineer | Heart-related |
* | 20 < x ≤ 30 | Male | Lawyer | Heart-related |
* | x ≤ 20 | Male | Dancer | Heart-related |
* | x ≤ 20 | Male | Dancer | Viral infection |
(3) 一般化の処理がされたカラムのデータで, ユニークな組み合わせで決まる各グループが k レコード以上を含むまで (2) を行う
一般化の処理によって, 攻撃者は標的のユーザに対して 1/k 以下の確率でしか特定できなくなる。機密情報に対して加工する必要がないのも特徴である。
ただし, 一般化の処理はデータの有用性を損なう可能性があるので, Minimal Distortion などデータ有用性の指標を最大化する匿名化データセットを選択する最適化アルゴリズムが研究されている。
k-匿名化で得られた匿名化データセットを以下とする。
Name | Age | Gender | Occupation | Disease |
* | 20 < x ≤ 30 | Female | Professional | Cancer |
* | 20 < x ≤ 30 | Female | Artist | Viral infection |
* | 20 < x ≤ 30 | Female | Artist | Cancer |
* | 20 < x ≤ 30 | Male | Professional | Heart-related |
* | 20 < x ≤ 30 | Female | Professional | Heart-related |
* | 20 < x ≤ 30 | Female | Artist | Cancer |
* | 20 < x ≤ 30 | Male | Professional | Heart-related |
* | 20 < x ≤ 30 | Male | Professional | Heart-related |
* | x ≤ 20 | Male | Artist | Heart-related |
* | x ≤ 20 | Male | Artist | Viral infection |
k-匿名化を行った上でも機密情報の属性が同一の値を持つ場合は, 機密情報の推定ができてしまう。これを属性リンク攻撃という。
Name | Age | Gender | Occupation | Disease |
* | 20 < x ≤ 30 | Male | Professional | Heart-related |
* | 20 < x ≤ 30 | Male | Professional | Heart-related |
* | 20 < x ≤ 30 | Male | Professional | Heart-related |
l-多様性
属性リンク攻撃に対して, l-多様性 (l-diversity) は, 同じ準識別子を持つレコード群が少なくとも l 個の異なる機密情報を持つことを要求する。同時に l-匿名性も満たす。
Name | Age | Gender | Occupation | Disease |
* | 20 < x ≤ 30 | Male | Professional | Heart-related |
* | 20 < x ≤ 30 | Male | Professional | Cancer |
* | 20 < x ≤ 30 | Male | Professional | Viral infection |
l-多様性は k-匿名化よりも強力であるが, 機密情報に関するあるグループの分散とデータセット全体の分散が異なる場合, その情報を手掛かりに確率的な推測が可能である。これを歪度攻撃 (Skewness Attack) と言う。
t-近似性
歪度攻撃のような確率的推論に対する対策として, t-近似性 (t-closeness) がある。t-近似性では歪度攻撃で狙われたあるグループ内の分散とデータセット全体の分散を Earth Mover’s Distance という距離で測り, それを t 以下とすることを要求する。一方, 欠点はデータ有用性を著しく下げてしまう点である。
次元の呪い
k-匿名化は直感的に理解しやすく, 加工も比較的容易である。
しかし, 多次元データになるほど元のデータセットが含む準識別子の数は増え, それらの組み合わせは膨大になりユニークになり易い。従ってデータセット上で類似するユーザは減っていく。このデータに対してk-匿名化すると, 抽象度が高まりすぎてデータの有用性を損なってしまう。これを, 次元の呪い [2]という。
多次元データに関するプライバシー保護の分野では位置情報データの識別子を仮名に置き換える方法も研究されている。[3, 4]
また, 時系列データの匿名化では攻撃者が外部知識として知りえる行動データの数に上限を仮定して, この仮定の元での解決策を検討していくのが一般的なようである。例えば, 対象とする時間領域を狭める方法が取られる。
おわりに
本書では, 匿名化技術において次元の呪いは本質的とも言える課題で, プライバシー保護とデータ効用のトレードオフ性に留意した現実的な運用について議論を続けていくことが大切である, と締めくくっています。
実務では, 社内や提供先のプライバシー保護ポリシー [5] を守った上でデータ効用を最大にする匿名化手法を選択するべきかと思ったけど, 現実はプライバシー保護ポリシーの解釈に迷ったり, 複雑な匿名化手法を選択した時に技術を理解しバグなく実装できるか, あるいはそのチェック体制の整備など, 課題は沢山ありそうなので, 確かに継続的な議論をしていくしかないのかなと思いました。
次は, データ匿名化手法 ―ヘルスデータ事例に学ぶ個人情報保護 を読んでみようと思います。
[1] 職業が技術者を専門職に変換, 年齢を年代に変換するなど抽象度の高い一般的な情報に変換すること
[2] 機械学習の次元削減や特徴選択の話の文脈で出てくる次元の呪いとは少し問題設定が異なる
[3] Privacy-preserving Publishing of Pseudonym-based Trajectory Location Data Set
[4] 位置情報サービスにおける 属性の可観測性を考慮したプライバシ保護手法
[5] 社内の前にまずは パーソナルデータの利活用に関する制度改正大綱, 海外だと EUデータ保護規則, 米国HIPAA匿名化ガイドライン といった関連法案やガイドラインをチェックすべきか。