case03(再識別デモ): 復元後テーブル定義(③ 結果・付録)¶
全7ステップの本編ではなく、③ 結果の付録です。攻撃で得られる「対応表」と「再識別された走行履歴」のスキーマをまとめます(結果とチェック・対策は 7. 結果確認)。
id_map(総当りで得た逆引き表)¶
| No. | 項目 | データ型 | 形式・値域 | キー | 値の例 |
|---|---|---|---|---|---|
| 1 | 運転者ハッシュ | 文字列 | 16進64桁 | PK | 87145a71…a542d79 |
| 2 | 復元運転者ID | 文字列 | 100-NNN-NNN |
100-001-001 |
公知フォーマットの全候補(10^6)を SHA-256 した結果のうち、公開データに現れたハッシュだけを記録したもの。2,000種の運転者ハッシュすべてが一意に復元される。
trips_reidentified(再識別された走行履歴)¶
| No. | 項目 | データ型 | 形式・値域 | キー | 値の例 |
|---|---|---|---|---|---|
| 1 | 復元運転者ID | 文字列 | 100-NNN-NNN |
FK | 100-001-001 |
| 2 | 乗車日時 | 日時 | 秒まで | 2026-06-30 20:43:29 | |
| 3 | 乗車地 | 文字列 | エリア名 | 羽田空港 | |
| 4 | 降車地 | 文字列 | エリア名 | 池袋 | |
| 5 | 走行距離km | 実数 | 0.8〜35 | 5.3 | |
| 6 | 料金 | 整数 | 円 | 2812 |
公開データの 運転者ハッシュ を対応表で置き換えたもの。ここに運転者マスタ(非公開のはずだが、既知の運転者などから氏名・営業所も推定できる)を突き合わせると、「誰が」いつ・どこを走ったかまで再識別される。
公開データ → 復元後の対応¶
| 公開データ | 復元後 | 処理 |
|---|---|---|
| 運転者ハッシュ | 復元運転者ID | 総当りで作った対応表で逆引き |
| 乗車日時・乗車地・降車地・走行距離km・料金 | 同左 | そのまま(もともと平文で公開されている) |
スキーマ変化の要点¶
- 事業者は「運転者IDをハッシュ化すれば個人は分からない」と考えたが、ハッシュ列は復元運転者IDに戻せるため、実質的に運転者IDを平文公開したのと変わらない。
- 乗降・日時・料金はもともと平文なので、運転者IDが復元された瞬間に、特定の運転者の行動履歴が丸ごと再識別される。
- これを防ぐには、ハッシュ化ではなく、連結符号を残さない・秘密鍵で守る・粒度を落とすといった対策が必要(結果)。
← ② 実装(Colab) に戻る / → 次に 結果とチェック・対策 で再識別の成立と、正しい防ぎ方を確認します。