データ匿名化手法まとめ、その2
オライリーの書籍「データ匿名化手法」Khaled El Emam (著), Luk Arbuckle (著)
TL;DR
2015年5月に日本語翻訳された
副題はヘルスデータ事例に学ぶ個人情報保護
著者はカナダ人、カナダやアメリカの法律や事例について書かれている。日本での法律や事例については監訳者の注という形で補足されている
今回は7章から13章(最後)まで
内容
データリダクション
自由形式のテキスト
地理空間の集約
医療分野におけるコード群
マスキング
セキュアな連結
非特定化と品質
7章 データリダクション
大規模で複雑なデータセットに対して従来方式の非特定化を適用するとかなりの情報損失をする可能性がある
情報損失を最小限に抑えながらプライバシー保証を提供するようにデータのサイズと複雑さを減らす方法を見つける
リダクションとは
低減、削減、縮小、単純化
情報の質を落とさずにデータを減らす
サブサンプリング
データセットからランダムにサインプリングしてレコード全体のサブセットを作る
標本データのこと
横断的データのサブサンプリング
レコードごとにサンプリング
縦断的データのサブサンプリン
患者ごとにサンプリング
データ全体を代表しているデータをサンプリングする
どれだけ少なくできるか
効果量を含む検出力分析を使って、適切なサンプルサイズを決める
全ての種類のリスクに有効ではない
最大リスクに対してサンプリングはほとんど影響を及ぼさない
つまり一般公開するデータセットに対してあまり有効ではない
BORNデータの適用
BORNデータ(カナダオンタリオ州の出生データ)を使ったサブサンプリングの例が掲載されている
たくさんの準識別子
次元の呪い(curse of dimensionality)
準識別子が多いとそれだけ再特定のリスクが高まる
攻撃者が患者について知りえることについて現実的な仮定をする
データセットに20個の準識別子があれば攻撃者は20個の背景知識をもっていると仮定するのはやりすぎ
現実には5個から7個程度の背景知識しか持っていない
準識別子に強い相関があると、ある準識別子を知るだけでそれ以上のことを推測できる恐れがある
3-5個の準識別子を知るだけで20個の準識別子を完全に推測できるかもしれない
少数の準識別子についてリスク評価をすることは結局全ての準識別子を調べるのと同じこと
したがってそれぞれの準識別子は互いに無関係と仮定するのが良さそう
準識別子のサブセット
攻撃者が20個の準識別子のうち5個を知っていると仮定する
20個から5個選ぶ組み合わせは15,504通り、すべてを評価するのはかなり時間がかかる
一つの準識別子のリスクが高い場合、その準識別子と組み合わせる準識別子のリスクも高くなる
カバーリングデザインを使うと効果的
カバーリングデザイン
情報損失の観点で若干犠牲を払う必要がある
精度と計算時間のバランスを取りながらどの程度情報損失が受け入れられるかを微調整できる
大きな組み合わせグループの中の関心のあるグループをカバーする
table:5個から3個選ぶ(前組み合わせ)
集合# 組み合わせ
1 {q1, q2, q3}
2 {q1, q2, q4}
3 {q1, q2, q5}
4 {q1, q3, q4}
5 {q1, q3, q5}
6 {q1, q4, q5}
7 {q2, q3, q4}
8 {q2, q3, q5}
9 {q2, q4, q5}
10 {q3, q4, q5}
table:5個から3個選ぶ(サイズ4のブロックで全てカバーする)
{q1, q2, q3, q4} 1, 2, 4, 7
{q1, q2, q3, q5} 1, 3, 5, 8
{q1, q2, q4, q5} 2, 3, 6, 9
{q1, q3, q4, q5} 4, 5, 6, 10
カバーリングデザインにおける再特定確率を測定する時は評価される組み合わせの中で最大の確率を選びそれをデータセット全体の値として使う
著者が試みた戦略
1. カバーリングデザインのブロックをリスクの高いレコードのパーセント順に最大パーセントを最も上にして並べる
2. 最も上にあるブロックから始めてリスクが受け入れ可能なくらい低くなるまで一般化とそれに続く秘匿を適用していく
3. リストを順に降りていきすべてのブロックに対してリスクが受け入れ可能なくらい低くなるまで一般化と秘匿を繰り返す
BORNデータの適用事例
BORNデータに対してカバーリングデザインを実施した事例が掲載されている
8章 自由形式のテキスト
テキスト匿名化に対する一般的なアプローチ
glassonion1.icon個人情報を検出してくれるいい感じのMLモデルがすでにありそう
モデルベース
トレーニング用データセットから統計的モデルまたは機械学習モデルを導出する
ルールベース
事前に定義された基準と制約を適用する
ルールベースの方がモデルベースよりも検出率が高くなる傾向がある
検出率=テキストの中から個人情報を検出する量が多いかどうか
しかし精度についてはモデルベースの方が良い傾向がある
精度=検出された個人情報が本当に個人情報かどうか
自由形式のデータを匿名化する場合は初めにルールベースで処理をしてからモデルベースで処理するのが良い
9章 地理空間の集約
公衆衛生では位置情報が重要になる
食中毒の発生した場所の特定など
ジオプロキシ攻撃のリスク
患者が利用した医療機関の場所や薬局の場所から患者のおおよその住所が推測されてしまう
郵便番号(ZIPコード)を使ったデータの一般化(クロッピング)は地理的な詳細情報を大量に失う恐れがある
隣接した地域のクラスタリングを実施する
郵便番号のクロッピングに比べて再特定のリスクを下げつつ領域をかなり小さくすることができる
10章 医療分野におけるコード群
ケージャンコードフェスティバルにおける事例
ルイジアナ州の非特定化された請求データが与えられ、医療保険を改善するためのアイデアを競う
ケジャンコードフェスティバルのデータは2階層
1階層目は横断的データ、2階層目は縦断的データ
データの中で使用されるコード
国際疾病分類(ICD)
医療通用手技用語集(CPT)
全米医薬品コード(NDC)
一般化
疾病(ICD)コードを一般化する
ICD-9-CMコードは階層的に分類されている(コードに意味がある)
5桁を3桁にするみたいな
処置(CPT)コード
階層的コード
著作権で保護されたコードであり使用するためには料金がかかるため研究領域ではあまり使用されない
一般化のノウハウがない
医薬品(NDC)コード
コードに階層がない
階層化できるデータと対応づける必要がある
ATC分類体系と体系づける
NDCからATCコードへ変換する
階層化されたコード体系は一般化しやすい
秘匿
1階層目の横断的データに対しては3章で実施した方法で非特定化
2階層目の縦断的データに対してk-匿名化を実施した
医療コードグループごとに個別の患者数を数えてkより少ないコードを秘匿した
シャッフリング
一般化と秘匿だけでは十分な効果が得られない場合はシャッフリングを実施する
あるコードグループで同値類にある患者の間で診断そのものをランダムに入れ替えた
11章で紹介されているランダム化のこと
11章 マスキング
マスキングは分析に必要なフィールドに適用するものではなく名前や社会保障番号、IDといったフィールドに対して適用する
非特定化は分析に必要なデータを保護するもの、マスキングは分析に必要のないフィールド保護するもの
マスキングはオリジナルのデータを完全に隠す
マスキングの3つのアプローチ
フィールド秘匿
識別子をデータから取り除く、一番簡単なマスキング手法
別のデータと連結したいときには使えない
ランダム化
識別子を偽のデータに置き換える手法
仮名化
1つ以上の識別子をユニークな値に置き換える手法
特定の識別子の値から仮名を何度生成しても常に同じ仮名を得ることができる
データの連結に使用できる
仮名の方法が甘いと情報が漏れる可能性があるので注意が必要
簡単に元のID復元される可能性がある
ちゃんとハッシュ化したとしてもハッシュ照合のリスクは残る
組織をまたいでデータを提供するときはとくに注意した方が良い、ハッシュではなく準同型暗号を検討した方が良さそう
動的なマスキング
データベースとアプリケーション層の間に埋め込むことができる
ユーザのアクセス権に応じて動的なマスキングを実施する
マスキング単体では個人のアイデンティティを保護するのに十分ではない
マスキングは必要だが十分ではない
機密性の高い医療保険情報を扱っている組織がマスキングだけして非特定化をしない事例があとをたたない
12章 セキュアな連結
異なる組織によって収集されたデータを連結する
データセットの連結に使える最適なフィールドは識別子
個人を識別できる情報を組織間で共有する必要がある
匿名化をする前にデータセットを連結する
ユニークな識別子として振る舞う1つ以上の共通フィールドを使って二つのテーブルを等結合(equi-join)する
お互いの組織は相手にデータを開示したくない
セキュアではないデータの連結
ハッシュ値マッチング
ハッシュ照合の危険性がある
第3者によるハッシュ値のマッチング
第3者が信頼できない(してはいけない)
ハッシュ値のソルティング
ソルトを組織間で共有する必要があるためハッシュ値マッチングと同じ危険性がある
第3者によるハッシュのソルティング
第3者が信頼できない(してはいけない)
第3者問題
完全に信頼できる関係者
完全に信頼できる関係者は存在しない
半分信頼できる関係者
関係者は規定されたプロトコルに従うが、相手が受け取った情報とその計算結果が個人情報を復元するのに使えることを認識していると仮定する
悪意のある関係者
論外
等結合プロトコルのアーキテクチャには半分信頼できる第3者が必要になる
暗号化の鍵を半分信頼できる第3者が保持する
連結のためのプロトコル
Paillier暗号加算
$ E(m_1) \times E(m_2) = E(m_1 + m_2)
複合すると
$ D(E(m_1 + m_2)) = m_1 + m_2
加法準同型暗号システムの一種
Paillier暗号は同じメッセージを複数回暗号化しても異なる暗号文が生成される
攻撃者が暗号化されたメッセージを比較しても元の情報を見つけ出せないことが保証される
データのマッチング
前処理、半分信頼できる第3者(Birthdaygoers)が鍵ペアを生成してそれぞれの組織(CarolersとTailgaters)に公開鍵を送る
1. CarolersがTailgatersに暗号化されたレコードを送る
2. Tailgatersが持っている暗号化されたレコードそれぞれに対して乱数を生成する
3. CarolersとTailgatersのすべてのレコードペア、すべてのマッチング変数に対して比較変数を計算する。マッチング変数はすべてBirthdaygoersに送付される
4. Birthdaygoersは秘密鍵を使って比較変数を復号する。複合した値が0の場合マッチしたと判定する
5. Birthdaygoersには比較されたレコードのペアとマッチング変数全てに関してマッチ、非マッチの2値テーブルが残る。このマッチテーブルをCarolersとTailgatersに送付する
glassonion1.icon Anonifyで活用できそうな事例、SaaS化できると面白そう
スケールアップの問題
データのマッチングはCarolersがn個のデータベースを持っていてTailgatersがm個のデータベースを持っている場合、比較を $ n \times m回行う必要がある
かなりの計算時間を要する
カッコウ・ハッシングを使ってマッチングを高速化する
このアルゴリズムを使うと必ず一定時間内に計算が終わることが保証される
13章 非特定化と品質
有用な非特定化による有用なデータ
質の低い非特定化手法はデータの有効性を低下させる
データの有効性を最大化する最適化手法もあれば、データの有効性を犠牲にして再特定のリスクを最小化する最適化手法もある
事前にリスク閾値を適切に決めることが重要
損失の度合い
データの有効性と再特定のリスクはトレードオフの関係にある
公開データはオリジナルデータに比べて有効性が下がる
公開データセットを作成する場合はどのようなデータが利用者から求められているか把握することが重要
仕事に配慮した非特定化
非特定化手法を選ぶときはデータを使ってどんな分析が行われるか「わかっている」ことが理想
データの有用性を改善するための質問
本当に必要としているのはどんなデータですか?
地理空間的解析を実行する必要がありますか?
正確な日付は必要ですか?
稀な事象を探しているのですか?
変数をカテゴリに分類できますか、あるいはカテゴリをグループ化できますか?
医療機関や薬局のアイデンティティは必要ですか?
データ受領者にはデータ補完を行う能力がありますか?
追加のコントロールを課すことを厭(いと)いませんか?
データ共有に関する契約を強化できますか?
終わりに
カナダ/アメリカの事例がたくさん紹介されているのでとても参考になりました。個人的には12章のセキュアな連結が面白かったです。データ活用を考えれば組織をまたいだデータの連結は不可欠だと考えています。今後どのくらい実用化されるのか注目したいと思います。(文責・藤田)