1/m x k-匿名化
TRANSCRIPT
ー匿名化中川裕志
はじめに• 行動履歴や購買履歴のように個人データを構成するレコードが長大になる傾向。• 長大なレコードは、それ自体に個人識別性、特定性が出てくる。– パーソナルデータ検討委員会の技術 WG では、乗車履歴をそのまま扱おうとすると、個人識別性が高く、 k- 匿名化するとデータ有用性がガタ落ちになると報告されました。
• k=2 でも識別性が残るようです。
はじめに(つづき)• そこで、対策として、長大なレコードを細かく分割する方法があります。
– m 分割 = 1/mー匿名化• m分割すると疑似 ID を除くレコードデータだけから個人識別、特定は困難になります。• ただし、疑似 ID を使う場合は k- 匿名性を併用する必要があります ー匿名化• これは、少し複雑な方法なので、モデル化をしてみたいと思います。
まずはウォームアップk- 匿名化はこんな感じ
• 個人データのデータベースで、まず氏名など直接個人を識別できる個人識別情報を削除。• 住所、年齢などの疑似 ID の精度を落とし、(住所を市町村まで、年齢を 10 歳刻み、など) 同疑似 ID の人が
k 人以上いるように変換。疑似 ID 属性 1
データ・・・ 属性 L
データX 市 Y 町1-1
500 CD
X 市 Y 町1-5
450 スマホ・・・ ・・・ ・・・X 市 Y 町2-3
700 PC
疑似ID
属性 1データ
・・・ 属性 Lデータ
X 市 Y町
500 CD
X 市 Y町
450 スマホ・・・ ・・・ ・・・X 市 Y町
700 PC
k- 匿名化
同じ疑似 ID が k 人以上いて、区別できない
k- 匿名化の問題点• 住所、年齢、くらいしか疑似 ID がなければ k- 匿名化は簡単にできます属性データの一部が疑似 ID になることは大いにあります。
職業、勤務先や通う学校の場所、通勤、通学などの移動履歴情報、家族構成、 etc.
属性データまで精度を落とそうとすると、 k- 匿名化するためには k が小さくなってしまいます。
k- 匿名化の問題点• とくに、大規模データベースでは k が小さくないと k- 匿名化できない k が小さくなるとデータの価値が減少 k が小さくなると、そもそも匿名化が破られやすい
– 疑似 ID の精度を落として、 k- 匿名化しても、 k が小さいと、疑似 ID以外のデータから個人が特定されやすい。k=2 なんてとても危ない。ターゲット広告でもゆすりでも、 2 名に対して行ってしまえば、やった側は十分にペイする。
k=2 でも k- 匿名化されていれば、匿名加工情報として流通してしまって大丈夫なんだろうかという疑念。法律家は、 k=1 と k=2 の間で線引きしたいらしいが。。。
1/m- 匿名化はこんな感じ• 個人データが1つにまとまっている( 1 レコード)状態が普通• しかし、時間経過と共にデータ量がどんどん増加
– 移動履歴、購買履歴、 etc
そこで 1 レコードを m 個に分割 1/m- 匿名化 さらに、分割したデータには別々の仮名を付与 1/m- 匿名化で疑似 ID を削除すれば 分割したデータ同士は関係が付かない。
仮名 疑似 ID データ1
データ2
データ3
… データM
仮名1
疑似ID
データ1
… データm1
仮名m
疑似ID
データm'
… データM...
m 分割
疑似 ID 削除した 1/m- 匿名化の問題点• m 分割したレコードに別々の仮名がついていると、複数の m 分割したレコードが 1 人でデータであることを認識すること(=名寄せ)が困難 – プライバシー保護能力は高い– 名寄せの困難さの程度を評価したい
• 一般的に個人レコードの分断による価値の減少• m 分割したレコードに別々の仮名を付け疑似 ID を削除しているので、各々の繋がりが消失し、データ価値は減少
ー匿名化はこんな感じ• 原理は簡単– ここまでは、 1/m- 匿名化では擬似IDを削除したが– ここからは、 1/m- 匿名化では疑似 ID は k- 匿名化– 1 レコードは m 個に分割して、別々の仮名を付ける。– 図示すると次のページのようになる。– ちなみに k=1, m=1 だといわゆる仮名化
ー匿名化の第 1版個人 ID 疑似 ID データ1 データ2 データ3 … データ Ma 疑似 ID(a) データ1 a データ2 a データ3 a … データ Mab 疑似 ID(b) データ1
bデータ2b
データ3b
… データ Mb
c 疑似 ID(c) データ1 c データ2 c データ3 c … データ Md… … … … … … …z 疑似 ID(z) データ1 z データ2 z データ3 z … データ Mz
仮名a-m
疑似ID(k)
… データMa
仮名b-m
疑似ID(k)
… データMb
… … … …
仮名a-1
疑似ID(k)
データ1 a
…
仮名b-1
疑似ID(k)
データ1 b
…
… … … …
… … … …
仮名z-1
疑似ID(k)’
データ1 z
…… … … …
仮名z-1
疑似ID(k)’
… データ1Mz
・・・
・・・
⁞ ⁞
各々のグループのk 人は、同一の疑似 ID
仮名 a-1,..a-m,b-1,……z-1 は全部異なる
ブロックと呼ぶ
ー匿名化の第 1版 ー匿名化 の 1ブロックは
精度を落とした疑似 ID(k) が同じ k 人以上のデータからなる。 元データベースの 1 行( 1 人分のレコード)の 1/m の属性だけを含むのがデフォールト 1ブロックは疑似 ID(k) が同じなので、同じ k 人のデータが分割されたものだとは分かる ただし、ブロック中で横 1 行に並ぶデータは、同一データ主体のデータと分かる。 さらに疑似 ID (k)によって、 m 個のブロックが同じデータデータ主体のレコードの分割だと分かるので、わざわざm 分割した意味がなくなる。 これでは m 分割しない k- 匿名化と同じ
以上の状況への改善策を次のページ以降に書きます。
改善策
仮名d-m
疑似ID(k)
… データMd
仮名c-m
疑似ID(k)
… データMc
… … … …
仮名a-1
疑似ID(k)
データ1 a
…
仮名b-1
疑似ID(k)
データ1 b
…
… … … …
… … … …
仮名z-1
疑似ID(k)’
データ1 z
…… … … …
仮名x-1
疑似ID(k)’
… データ1Mx
・・・
・・・
⁞⁞
m 個のブロックの各々で、レコードの順番をシャッフルする。 (下図参照)
すると、ブロックを渡って同一個人のレコードのであることは、形式的には分からなくなる。 プライバシー保護の強度はブロック内のデータが個人毎に名寄せされることの容易さで表せる。
仮名c-2
疑似ID(k)
データ2b
…
仮名e-2
疑似ID(k)
データ2c
…
… … … …
これらは順番がシャッフルされて入れ替わっているので、同じ人のレコードをブロック間で対応できない
改善策 2:ブロック内をシャッフル 下の図にあるように、ブロック内の各列では、列内のデータの順番をランダムに入れ替える(シャッフル) すると、横 1 行が同じ人のデータであると保証されない。 仮名はデータとの対応が無くなるので、無意味だから削除 実は、ブロック化する前の全データについて列ごとにシャッフルしたことと同じ。
仮名 a-1 疑似 ID(k) データ1a
… データ pc
仮名 b-1 疑似 ID(k) データ1b
… データ pf
… … … … …
仮名f -1
疑似 ID(k) データ1f
… データ pa
このブロック内の個々のデータは誰のデータか区別できない
p=M/m
改善策 3:疑似 IDとデータ分離 (a) 仮名と疑似 ID (k)の対応表 (b) m 個の仮名+分割データ
に分離し、管理を分ける。 (b) だけ利活用のために公開する。
(a) の対応表が欲しい場合は、利用法についての制約を厳しくする。例えば、(a) をさらに他者に渡さない、 (a) の利用目的を限定する、など。
疑似 ID として扱う属性が少ない場合、 (a) はデータとしての重要度が低いので、公開しなくてもデータ価値はあまり減らない ただし、分割データのほうに疑似 ID として使える情報が残存する。 その残存情報が疑似 ID として使えないように、データを m 個に分割しているわけだから この場合のプライバシー保護性能の評価が検討課題
改善策 4:ランダムサンプリング• 第 1版で作ったブロックから、ブロック毎にランダムサンプリングして公開。
– 疑似 ID が同一でも同じグループの人のデータのランダム抽出された一部分なので、 k- 匿名化よりプライバシー保護能力が高い– ただし、大きな k でないと保護効果が少ない。
• 疑似 ID の属性が少ないなら、大きな k も可能。• もともとの(個人xデータ)行列の構造のデータベースから(ランダムに選んだ個人 x ランダムに選んだデータ)というようなランダムサンプリングしてもよいが、データの質がランダム選択により激減するだろう。
• サンプリング率をパラメターにしたとき– 「価値の減少と個人識別困難さ」のトレードオフが検討課題
まとめ• ー匿名化の概念を説明しました。• 長い個人データのレコードを m 分割することとー匿名化の組み合わせなので、アイデア自体は簡単です。• ただし、プライバシー保護、匿名化の性能評価、およびデータ有用性については、今後の課題となります。– 精密な数理モデルはけっこう面倒な予感。