1枚チートシート(case03 再識別デモ)¶
出典と位置づけ: 海外の実在事例(2014年 NYC タクシーデータ再識別ほか)を参考に作成した仮想のデモ。合成データを使用。以下の「法律」は、もし日本の制度に当てはめたらという仮定の説明です。
配布・印刷について
このページはブラウザの 印刷 → PDFに保存 で1枚の配布資料として使えます(ナビ等は印刷時に自動で隠れます)。
先に知っておく4語
- ハッシュ関数: 入力から決まった値(ハッシュ)を出す関数。同じ入力からは必ず同じ値。逆算する式は無いが、入力を総当りすれば元を言い当てられる。
- エントロピー(低エントロピー): 値の取りうるパターンの多さ。形式が公知で候補が少ない=低エントロピー=総当りできる。
- ソルト/HMAC: ソルトは各値に足すランダム値。HMAC は秘密鍵つきハッシュ。どちらも総当り・使い回しを防ぐ。
- 再識別: 匿名・仮名化したはずのデータから、元の個人を言い当てること。
- その他の語は 用語集 に。
事例のあらすじ¶
タクシー事業者が、走行履歴の 運転者IDを SHA-256 でハッシュ化し、「匿名化したつもり」で公開。
しかし ①ID形式が公知(低エントロピー)+②無ソルトの単純ハッシュ、の2点から、攻撃者に運転者IDを全復元された。
元データと公開データ¶
| データ | 主な項目 | 公開範囲 |
|---|---|---|
| drivers(運転者マスタ) | 運転者ID / 氏名 / 営業所 | 非公開 |
| trips(走行履歴) | 走行ID / 運転者ID / 乗車日時 / 乗車地 / 降車地 / 走行距離km / 料金 | 非公開 |
| ハッシュ化済み履歴(公開) | 運転者ハッシュ / 乗車日時 / 乗車地 / 降車地 / 走行距離km / 料金 | 一般公開 |
攻撃の早見表¶
| 段階 | やること | 効かせる弱点 |
|---|---|---|
| ① 方法の特定 | 既知の運転者ID(自分が乗った運転手)を sha256 → 公開データに一致を発見 |
② 無ソルト SHA-256 |
| ② 対応表の構築 | 公知フォーマット 100-NNN-NNN の全候補(10^6)を総当り → ハッシュ→ID 表 |
① 形式が公知・低エントロピー |
| ③ 全復元 | 公開履歴のハッシュを引き当て、運転者IDを全行に復元 | ①+② |
結果(すべて合成データ)¶
100-001-001 のハッシュ 87145a71… が公開データに一致 → 2,000種を全復元・17,950行が元データと全一致・数秒。
対策(弱点の裏返し)¶
- 秘密鍵つきハッシュ(HMAC)にし、鍵を公開データと分離して厳重管理(総当りで復元 0 件)。
- ソルトを付けて事前計算表(レインボーテーブル)を無効化。
- 個人単位の識別子を残さない(ランダム仮ID+対応表を残さない=連結符号を断つ/case02)。
- 一般化・集計して個票のまま公開しない。
安易な匿名化が危険な2つの理由¶
- 技術: 候補が少なく(低エントロピー)単純ハッシュ(無ソルト・鍵なし)なら総当りで復元される。技術の理解が必要。
- 法律: 匿名加工情報の作成基準(施行規則34条)を満たさず匿名加工情報ではない。公表・第三者提供前提なので仮名加工情報とも言えない(原則、公表・第三者提供不可)。どちらの制度にも乗らない。
覚えておく3点¶
- ハッシュ化 ≠ 匿名化。候補が少なく単純なら総当りで元に戻る(技術)。制度の作成基準も満たさない(法律)。
- たった1件の既知IDで加工方法が割れる(無ソルトの怖さ)。
- 法令・委員会規則とその実装例を把握し、正しく理解して運用する。技術対策(鍵つきハッシュ・連結符号の削除・一般化)と制度上の位置づけを、目的に応じて揃える。