マイナンバーカードのサービス固有識別子(PPID)について
PPIDについて調べたのでちょっと書いておきます。
(Copilotによる説明です)
このIDだけなら、流出したとしても、使い道がないですね。
---
PPID(Pairwise Pseudonymous Identifier、仮名識別子)は、マイナアプリやマイキープラットフォーム、デジタル認証サービスで採用されている「サービスごとに異なる利用者ID」です。最大の目的は、複数サービス間での名寄せを防ぎながら本人を識別することです。
■ PPIDとは何か
通常、ある人を識別するIDとして共通番号を使うと、
・サービスAでの利用履歴
・サービスBでの利用履歴
・サービスCでの利用履歴
を簡単に結び付けられてしまいます。
そこでPPIDでは、
同じ人 / サービス / 発行されるID
ーーーーーーーーーーーーーーーーーーーー
山田さん / 図書館 / PPID-A
山田さん / 施設予約 / PPID-B
山田さん / オンライン申請 / PPID-C
のように、同一人物でもサービスごとに別の識別子を発行します。
そのため、図書館システムが持つIDと施設予約システムが持つIDを見比べても、「実は同じ人だ」と分かりません。
■ なぜPPIDが必要なのか
マイナンバーカードには、
・利用者証明用電子証明書
・署名用電子証明書
などがありますが、それらの証明書情報を各サービスが直接管理すると、
・個人情報管理の負担が大きい
・サービス間で利用者を追跡できてしまう
・プライバシーリスクが高まる
という問題があります。
そこでマイキープラットフォームやデジタル認証サービスが間に入り、
✓ マイナンバーカードで本人確認
✓ 電子証明書の有効性確認
✓ サービス専用PPIDを発行
という仕組みにしています。
■ マイナアプリではどう使われるのか
デジタル認証サービスの実装ガイドラインでは、
利用者識別子(PPID)はデジタル認証サービスサーバがRP(利用サービス)へ発行する識別子であり、RPごとにユニークな識別子を発行する
とされています。
ここでいうRP(Relying Party)は、
・銀行
・自治体サイト
・保険会社
・民間サービス
など認証結果を受け取る側です。
例えば、
A銀行 → PPID = X123...
B証券 → PPID = Y456...
C自治体 → PPID = Z789...
となります。
■ マイナンバーとの違い
よく混同されますが、PPIDはマイナンバーとは全く別物です。
項目 / マイナンバー / PPID
ーーーーーーーーーーーーーーーーーーーーー
形式 / 法律で定義 / サービス用識別子
全サービス共通 / ○ / ×
本人特定能力 / 非常に高い / サービス内のみ
サービス間名寄せ / 可能 / 原則不可能
民間利用 / 制限あり / 認証用途で利用可能
PPIDからマイナンバーを逆算することはできません。
■ 図書館カードの例
デジタル庁の資料では、図書館利用を例に説明されています。
✓ 利用者がマイナンバーカードを提示
✓ マイキープラットフォームが本人確認
✓ 図書館向けPPIDを発行
✓ 図書館システムはPPIDと利用者番号を紐付け
✓ 次回以降はPPIDで利用者を識別
図書館システムは電子証明書そのものを管理する必要がなく、PPIDだけで利用者管理できます。
■ 技術的にはOIDCのpairwise identifierと同じ考え方
PPIDという名称はもともと、
Pairwise Pseudonymous Identifier
というOpenID Connectの概念です。
特徴は、
利用者ごとではなく
「利用者 × サービス」の組み合わせごと
に異なるIDを生成することです。
例えば同じGoogleアカウントでも、pairwise方式ならサービスAに渡るIDとサービスBに渡るIDは異なります。
マイナアプリのデジタル認証サービスでも、この考え方が採用されています。
■ ユーザー目線でのメリット
利用者から見ると、
・マイナンバーは事業者に渡らない
・電子証明書そのものも事業者が持たなくてよい
・サービス間で行動履歴を結びつけにくい
・サービスごとに独立したIDになる
というプライバシー保護上の利点があります。
要するにPPIDは、
「マイナンバーカードで本人確認はできるが、各サービスには共通の個人番号を渡さない」
ための仕組みです。
これはマイナアプリの普及で民間利用が広がる中でも、サービス横断での追跡や名寄せを防ぐ重要な設計になっています。


の質問に対し、
---
おっしゃる通り、過去に発行された「PPIDが入った署名付きデータ」を単にコピーして使い回す(リプレイ攻撃を行う)ことができれば、なりすましが可能になってしまいます。
これを防ぐため、マイナアプリ(OIDCプロトコル)の仕組みでは、ご指摘の通り「サービス側が毎回用意した一度限りの使い捨てランダム文言」をデータに混ぜ込み、それを含めて電子署名をさせて送り返すという対策が最初から標準仕様として組み込まれています。
この仕組みを、専門用語では 「nonce(ナンス)」 と呼びます。
<途中略>
デジタル庁の資料にある「次回以降はPPIDで識別」という言葉は、事業者側から見て「もう名前や住所を再確認しなくてよい(PPIDという鍵だけでDBからユーザーを呼び出せる)」という意味であり、セキュリティ上の「nonce+電子署名による本人確認(リプレイ攻撃対策)」の手順を省略してよいという意味ではありません。 安全性を担保するためには、毎回あの厳格な手続きが裏側で実行されています。