コンテンツにスキップ

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行が元データと全一致・数秒

対策(弱点の裏返し)

  1. 秘密鍵つきハッシュ(HMAC)にし、鍵を公開データと分離して厳重管理(総当りで復元 0 件)。
  2. ソルトを付けて事前計算表(レインボーテーブル)を無効化。
  3. 個人単位の識別子を残さない(ランダム仮ID+対応表を残さない=連結符号を断つ/case02)。
  4. 一般化・集計して個票のまま公開しない。

安易な匿名化が危険な2つの理由

  • 技術: 候補が少なく(低エントロピー)単純ハッシュ(無ソルト・鍵なし)なら総当りで復元される。技術の理解が必要。
  • 法律: 匿名加工情報の作成基準(施行規則34条)を満たさず匿名加工情報ではない。公表・第三者提供前提なので仮名加工情報とも言えない(原則、公表・第三者提供不可)。どちらの制度にも乗らない。

覚えておく3点

  1. ハッシュ化 ≠ 匿名化。候補が少なく単純なら総当りで元に戻る(技術)。制度の作成基準も満たさない(法律)。
  2. たった1件の既知IDで加工方法が割れる(無ソルトの怖さ)。
  3. 法令・委員会規則とその実装例を把握し、正しく理解して運用する。技術対策(鍵つきハッシュ・連結符号の削除・一般化)と制度上の位置づけを、目的に応じて揃える。

用語は 用語集、詳しい理由は ① 全体概要、実行は ② Colab、結果は ③ 結果