コンテンツにスキップ

③ 結果とチェック・対策 — 7/7

② 実装(Colab) の Notebook をコミット済みの公表統計に対して実行した結果です(決定的なので Colab 実行と一致します)。復元後スキーマは 復元後テーブル定義 を参照。

データ規模

データ 規模
住民(個票・非公開) 7人
公表統計表 14行(うち7行は秘匿、制約に効くのは7行)

再構築の結果

公表統計表だけ(元の個票は不使用)を制約にして、CP-SAT で全解を数え尽くしました。

指標
使った制約(公表された行) 7 行
見つかった解の数 1(全解を数え尽くして一意)
真の個票(residents)との一致 7人全員が一致
ソルバの状態 OPTIMAL(全解列挙・完了)

再構築された個票(論文と同じ記法):

8FBS  18MWS  24FWS  30MWM  36FBM  66FBM  84MBM

「平均36.7×3人 → 合計110の一択」のように、丸めた統計でも合計・中央値・人数を連立させると解が1点に絞られます。伏せた7行が無くても、7人全員の年齢・性別・人種・配偶関係が確定しました。

確認テスト結果(すべて合格)

  • [x] 公表統計が真の個票から再計算した値と整合する(独立検算)
  • [x] 公表統計だけからの再構築で、解が一意(全解を数え尽くして1通り)
  • [x] 復元した個票が真の個票(residents)と全員一致
  • [x] 14行中7行を秘匿しても一意に決まる(セル抑制は再構築を止めない)

安易な統計公表が危険な2つの理由(技術・法律)

ここでの「法律」は、もし同種の事象を日本の制度に当てはめて考えたらという仮定の整理です(この事例が参考にしたのは海外の事例。全体概要 冒頭の注意も参照)。

何が問題か このデモでの現れ方
技術 多数・高精度の統計は個票についての方程式になり、連立すると個票が一意に定まる。秘匿だけでは防げない 7行の制約だけで7人全員を復元・全一致
法律 「統計にしたから個人情報ではない」と安易に大量公表すると、再構築によって結果的に個人が特定されうる。匿名加工情報として公表・第三者提供するなら、施行規則第34条の基準や統計へのノイズ付与を踏まえた設計が要る 「個票は出していない」のに個人が特定できる状態

技術だけ・法律だけを見ても足りません。「復元できないか(技術)」と「制度の要件を満たすか(法律)」の両方を確かめる必要があります。

どう防ぐべきだったか(対策)

攻撃が成立した条件(多数・高精度の統計)を裏返すと、対策になります。

  • 差分プライバシー(統計にノイズを加える): 公表値に数学的に制御されたノイズを足すと、各制約が「幅」を持ち、解が一意に絞れなくなる。米国2020年国勢調査が採用したのはこの考え方。
  • 公表する統計の量・精度を絞る: 細かいグループの統計を出しすぎない/粗く丸める。小集団の統計は特に慎重に。
  • 秘匿だけに頼らない: セルの抑制は再構築を止めないと理解し、上の対策と組み合わせる。
  • 匿名加工の基準を踏まえる: 個票を加工して出すなら、一般化・特異な記述の削除など施行規則第34条の考え方(case02)を、統計公表なら再構築耐性を、目的に応じて設計する。

補足: 「7人だから解けたのでは?」— 一意でなくても“にじみ出る”

「7人と小さいから解けただけでは? 人数が多ければ安全では?」——もっともな疑問です。公表する統計はそのままで、人数だけ25人に増やして確かめます。

同じ“種類”の7区分の統計を、25人の集団から出すと次のとおり(合成データ)。この統計だけを制約に再構築すると——個票は一意に定まりません(すべての統計を満たす個票の組合せが多数)。「では安全か」というと、そうではありません。

グループ 人数 中央値 平均
総人口 25 41 45.7
女性 15 54 50.3
男性 10 35 38.9
黒人 12 41 45.2
白人 13 41 46.2
既婚の成人 11 33 39.9
黒人女性 7 39 46.0

それでも、たった1人を丸裸にできる — 差分攻撃

全員をピタリ当てられなくても、重なり合う2つの集計の差を取ると、たった1人だけが分離されて値が分かってしまいます。これが 差分攻撃(differencing attack) です。

この25人の年収について、たとえば次の2つが公表されたとします(属性別の平均年収は、統計としてありふれた公表項目です)。

公表された集計 人数 平均年収 年収の合計(=平均×人数)
白人男性 5 480万 2,400万
うち既婚 4 555万 2,220万

この地区で「白人男性」は5人、そのうち「既婚」は4人——未婚は1人だけです。合計を引き算すると 2,400 − 2,220 = 180万。この唯一の“未婚の白人男性”の年収は180万円だと、ぴたりと分かります。周囲より大きく低いので、特定の1人が「低所得(貧困層)」と名指しされてしまいます。

たった2つの集計で、特定の1人の機微情報が丸裸

「個票は出していない」「平均しか公表していない」——それでも、属性の組合せで1人に絞れる集計を2つ出すだけで、その人の年収がぴたり露出します。年収に限らず、病歴・借入・利用サービスなど、どんな機微な値でも同じです。

全員を復元できなくても、たった1人を分離できれば十分な侵害。しかも集団を大きくしても、この「2つの集計の差」は防げません。

丸めても防げない → だから差分プライバシー

「平均を丸く公表すれば安全では?」——確かに差はぼやけますが、狭い範囲に絞られるだけで、ほぼ言い当てられます。丸めだけでは不十分。だから、集計値に確率的なノイズを加えて「1人が加わった/抜けた」の差を覆い隠す 差分プライバシー(=まさにこの“差分”からの保護)が必要になります。

差分攻撃は「一見安全な統計から個人が分かる」手口のひとつにすぎません。スモールセル・中央値・全員一致(0/100%)・表の突き合わせなど、多くの“わかってしまう”例を 開示リスク集 にまとめました。

本当の効きどころ — 「人数」ではなく「統計量 ÷ 未知数」

再構築・部分開示のしやすさは、集団の人数そのものではなく、公表する統計の量・精度未知数(人数×属性)バランスで決まります。

  • 統計を増やさず人数だけ増やしても、部分開示(属性推論)は残ります(上の例)。
  • 人数に見合うだけ統計を増やす(細かいクロス集計を大量に公表する)と、大規模でも解が絞られ再構築が成立します。米国2020年国勢調査の再構築が全米規模でも成立したのは、膨大な公表統計があったからです。

だから対策は「対象を大きくする」ことではなく、差分プライバシーで統計に不確かさを持たせる/公表する統計の量・精度を絞ること(前述)。

この事例の要点 — 正しく理解して運用する

「統計にすれば安全」ではありません。 多数・高精度の統計を公表すると、元の個票を出していなくても再構築で個人が特定され(あるいは一意でなくても、差分攻撃で特定の1人が分離され)、技術・法律の両面で危険です。

大切なのは、法令・委員会規則と、その実装例(どう公表・加工すれば要件を満たすか)を把握し、正しく理解したうえで運用できるようにすること。技術的な対策(差分プライバシー・公表量の制御)と、制度上の位置づけ(匿名加工情報の作成基準と取り扱い義務)を、目的に応じて揃える必要があります。制度の具体的な要件は最新のガイドライン・委員会規則で確認してください。


↩ もう一度確かめる: ② Colab で自分で実行④ 攻撃の設計 に戻る。

出典: 本デモは Garfinkel, Abowd, Martindale, "Understanding Database Reconstruction Attacks on Public Data", Communications of the ACM 62(3), 2019 を参考にした教材です(参照資料)。