コンテンツにスキップ

case03(再識別デモ): データを見る(公開されたデータ) — 2/7

再識別デモの流れ

  1. 全体概要
  2. データを見る
  3. 弱点の評価
  4. 攻撃の設計
  5. 攻撃の仕様
  6. 実装
  7. 結果確認

まず、外部に公開されたデータそのものを見ます。攻撃者が手にできるのはこれだけです。これを見て「もう匿名化できていそうか?」を、あなた自身の目で確かめてください。

公開されたデータ:ハッシュ化済み走行履歴

事業者は、走行履歴の 運転者ID を SHA-256 に置き換え、走行IDを落として「ハッシュ化済み履歴」として一般公開しました(全 17,950 行)。氏名も、元の運転者IDも、表には出てきません。

項目 内容
運転者ハッシュ 運転者IDを SHA-256 にかけた16進64桁
乗車日時 そのまま
乗車地・降車地 そのまま
走行距離km・料金 そのまま
公開データのサンプル(先頭数行・すべて合成データ)
運転者ハッシュ 乗車日時 乗車地 降車地 走行距離km 料金
87145a71…a542d79 2026-06-30 20:43:29 羽田空港 池袋 5.3 2812
9b1d3c7e…f0a24e6 2026-04-02 08:11:05 品川 銀座 4.1 2180
4a8f012b…c3d59071 2026-05-18 22:47:39 新宿 渋谷 3.6 1930

運転者ハッシュは、規則性の無い長い文字列に見えます。氏名も運転者IDも無いので、一見すると「誰の記録か」は分かりません。値はすべて教材用の合成データで、実在の個人・車両・事業者とは無関係です。

これで匿名化できている?

運転者IDを消して、意味のなさそうなハッシュに置き換えたのだから、もう個人は分からない——そう見えます。本当にそうでしょうか? 実はこのデータには、攻撃者につけ込まれる弱点が隠れています。それが何かは、次ページ 弱点の評価 で明らかにします。

舞台裏:事業者だけが持つ元データ(非公開)

参考までに、公開の裏側で事業者が持っているデータの構造も示します。外部には出しておらず、攻撃者は直接は見られません。 公開したハッシュ化済み履歴は、この trips の運転者IDをハッシュに置き換えて作ったものです。

データ 主キー 1レコード 件数 公開範囲
drivers(運転者マスタ) 運転者ID 運転者1人 2,000 非公開
trips(走行履歴) 走行ID 走行1件 17,950 非公開
erDiagram
    drivers ||--o{ trips : "運転者ID"
    drivers {
        string 運転者ID PK
        string 氏名
        string 営業所
    }
    trips {
        string 走行ID PK
        string 運転者ID FK
        datetime 乗車日時
        string 乗車地
        string 降車地
        float 走行距離km
        int 料金
    }

合成データの作り方は デモデータについて を参照。