コンテンツにスキップ

case03(再識別デモ): 弱点の評価 — 3/7

攻撃の設計に入る前の下ごしらえ。「なぜ運転者ハッシュが元に戻せるのか」を、ハッシュ化の性質IDの作りの両面から評価します。用語は 用語集 を参照。

見るポイント

  • ハッシュ関数の性質: 同じ入力からは必ず同じ出力が出る(決定的)。逆算する式は無いが、入力を総当りして一致を探せば元の入力が分かる
  • エントロピー(候補の多さ): 元の値が取りうるパターンが少ないほど、総当りが早く終わる。IDの桁形式が公知だと候補が絞られる。
  • ソルト/秘密鍵の有無: ソルト(各値に足すランダム値)や秘密鍵(HMAC)が無いと、同じIDは誰が計算しても同じハッシュになり、事前計算した対応表(レインボーテーブル)で一気に照合できる。
  • 既知の平文があるか: 攻撃者が「1つでも」元のIDとそのハッシュの組を掴めると、加工方法そのものを言い当てられる

2つの弱点

この事例で再識別が成立してしまう原因は、次の2点に集約されます。

致命的な弱点

弱点具体的な状態なぜ危険か攻撃で果たす役割
① 形式が公知・低エントロピー運転者IDは 100-000-000 形式。先頭の事業者コード 100 は公表・固定。候補は残り6桁=約100万通り(106取りうるIDを全列挙できる。全部ハッシュしても数秒。総当りで ハッシュ→ID の対応表を作れる
② 単純な無ソルト SHA-256ソルト・秘密鍵なしで SHA-256 を1回。同じIDは誰が計算しても同じハッシュ。事前計算・使い回しが効く。既知IDのハッシュ一致で加工方法を確定できる

エントロピーの直感

もしIDが「予測不能な十分に長いランダム値」(例: 128ビットの乱数)なら、候補が天文学的で総当りは不可能です。ところが本件のIDは桁形式が決まっていて、しかも公表されている部分があるため、実際に試すべき候補は約100万通りに縮みます。「形式が公知」=「候補が少ない」=「総当りできる」 という連鎖が弱点①の本質です。

ソルト・秘密鍵があると何が変わる?

  • ソルト(値ごとに違うランダム値を足してハッシュ)があると、同じIDでも出力がバラけ、事前計算した対応表が使えません。
  • 秘密鍵つきハッシュ(HMAC)だと、鍵を知らない攻撃者は正しいハッシュを再現できず、総当りしても一致しません。
  • 本件はどちらも無し。だから「素の SHA-256 で総当り」がそのまま通ってしまいます(対策は 結果 で実演)。

公開データの各項目(再識別に使えるか)

項目 性質 再識別での役割
運転者ハッシュ 運転者IDの無ソルト SHA-256 復元対象。総当りで元の運転者IDに戻せる(弱点①②)
乗車日時 行動・履歴 復元後、同一運転者の行動を時系列で追える
乗車地・降車地 行動・履歴 復元後、営業所・生活圏の推定につながる
走行距離km・料金 行動・履歴 補助的(他項目と組み合わせ)

→ この評価をもとに、次の 攻撃の設計 で「①方法の特定 → ②総当りで全復元」の手順を組み立てます。