マイナンバーカードを スマホ NFC でリーダーレスの WebAuthn 認証器にし、実在の証券会社にログインするところまで来ました。そこでふと思った疑問——クレジットカードにも IC チップがある。あれもマイナと同じように、NFC で読んで署名させて、認証器の”鍵の種”にできるのか? 結論から言うとできません。しかも「規約的にダメ」以前に、EMV(クレカ)チップの設計が、マイナで成立した仕掛けを根本から壊す。それを自分のカードで実機検証しました。
はじめに明確化します。これは自分名義のカードを自分で読んだだけで、カード番号(PAN)等の生データは取得も表示もしていません。スキミングの手順を示すものでもありません。狙いは「なぜマイナの手がクレカでは効かないか」を技術的に確かめる、防御・解説目的の記録です。
マイナで成立した条件 —「決定的署名」
我々の方式の核心は1つでした:「同じ入力 → 必ず同じ署名 → 同じ種(seed)→ 同じ鍵」。マイナの利用者証明用鍵は、PIN で守られた上で、こちらが渡したハッシュに対して決定的(deterministic)な RSA 署名を返す。だから毎回同じ種を再現でき、カードには何も保存せずに per-RP の鍵を導出できた。この「決定性」と「任意データに署名させられる窓口」の2つが揃っていたのが鍵です。
EMV プローブを作って、自分の Visa で叩く
Android アプリに EMV プローブモードを足し、非接触で APDU を送って応答を見ました(PAN 等は取得しない方針)。結果はこうです。
SELECT PPSE : 9000 ← チップは応答する
AID : A0000000031010 (Visa)
SELECT AID : 9000
INTERNAL AUTHENTICATE: 6A81 ← "function not supported"
# 同じ入力(UN=01020304 固定)で GPO を2回:
GPO #1 : 9000 AC(暗号文)=5564B6436847D153 ATC=00A6 (166)
GPO #2 : 9000 AC(暗号文)=0633B81598C91F16 ATC=00A7 (167)
読み取れることが2つあります。
① 任意データに署名させる窓口が無い
マイナの「利用者証明用」のように「このハッシュに署名して」と頼める汎用インタフェースが、EMV には無い。単体署名にあたる INTERNAL AUTHENTICATE を叩いても 6A81(機能未サポート)。このカードは署名を取引フロー(GPO/暗号文生成)の中にだけ同梱する型(qVSDC/CDA)で、外から自由に署名オラクルとして使えない。
② そもそも署名が毎回変わる(決定的でない)
これが本丸です。まったく同じ入力(固定した Unpredictable Number)で取引開始(GPO)を2回叩いたのに、返ってくる暗号文(Application Cryptogram)は別物でした。さらに ATC(Application Transaction Counter, 取引カウンタ)が 166 → 167 へ +1。EMV は、署名/暗号文の対象に
- ATC(取引ごとに必ず +1 されるカウンタ)
- 端末が渡す Unpredictable Number
- カード内部で生成する ICC Dynamic Number
を混ぜ込みます。これはリプレイ攻撃を防ぐための意図的な設計。だから同じ入力でも出力は二度と一致しない。マイナの「同じ入力→同じ署名」と真逆です。再現できない以上、安定した”鍵の種”は作れない——マイナでやった鍵導出は、EMV では成立しません。
対比でまとめる
| 必要条件 | マイナ(JPKI) | クレカ(EMV) |
|---|---|---|
| 同じ入力→同じ署名 | ✅ 決定的 | ❌ 毎回変わる(ATC/UN/動的乱数) |
| 任意データに署名させる窓口 | ✅ 利用者証明用 | ❌ 6A81 / 取引フロー内のみ |
| 素性を出さずに使える | ✅ 署名だけ種に使う | ❌ 読めば PAN が露出 |
| 第三者が叩く正規 IF | ✅ JPKI 仕様 | ❌ スキーム規約で禁止 |
なぜマイナだけが特別だったのか
マイナがうまくいったのは、「PIN で守られた、決定的で、素性を出さずに使える署名」という、わりと稀な性質を国民 ID として備えていたから。クレカ EMV はその真逆——決済取引の中で、毎回違う・リプレイ不能な証明を出すために最適化された専用設計で、汎用の署名オラクルにはならない。だから「クレカでも同じことを」は、規約以前に技術的に成立しない、というのが実機での結論でした。
(なお EMV チップを読むと PAN 相当データが取得できてしまう点は、非接触スキミングの注意喚起として知られる通りです。本検証では一切取得・表示していません。カードのチップは「正規カードであることを取引の中で証明する」ための精密な部品であって、好きに署名させる汎用デバイスではない——その線引きを、改めて実機で確認できました。)

コメントを残す