マイナンバーカードを認証器にする — Safari/Android/OIDCハイブリッド 全体像

「マイナンバーカードを認証器にする」一連の実験を、ここまで4本書いてきました。個別記事だと全体像が見えにくいので、何を作って、どう繋がっているかを1枚にまとめます。狙いはシンプル:誰もが持つマイナンバーカードを、フィッシング耐性のある認証器として、低コストで実用にする

4本の流れ

  1. Safari の WebAuthn 認証器にする:Safari には Chrome の webAuthenticationProxy が無いので、navigator.credentials を override。カードのRSA署名から Ed25519 を導出して応答。実カードで登録・認証成功。
  2. 本物の証明 × 簡易証明(OIDC×WebAuthn ハイブリッド):WebAuthn 単独では「本物のマイナ由来」「Sybil耐性」が出せない。そこで登録時にデジタル認証アプリ(OIDC)で本人性を担保し、以後は WebAuthn で運用する2層設計。
  3. Google で使う(ES256対応):Google は EdDSA を出さないので、同じ種から per-RP の P-256 鍵を派生して ES256 署名。プライバシーを保ったまま実RP対応。
  4. スマホだけで署名(Android NFC):USBリーダー不要。自作Androidアプリがマイナを NFC で読み、署名できることを実証。読み取りハード問題への答え。

全体アーキテクチャ:2つの証明を分けて合成

プリミティブ実体何を証明性質
① 本物の証明デジタル認証アプリ OIDC今この瞬間、本物のマイナ保持者重い・オンライン・fresh
② 簡易証明Myna FIDO(WebAuthn)登録済みの鍵を今も所持軽い・オフライン・高速

RPは操作ごとに必要なものを合成する:日常ログインは②だけ、投票や機密文書など「今この人が本物」が要る操作は①を足す(step-up)。役割が直交しているので、混ぜずに段階化できる。

読み取り手段の選択肢

  • Mac + USB PC/SC リーダー:開発・常用者向け(Safari拡張)。
  • スマホ NFC:全員が持つ。専用ハード不要(Android 実証済、iPhone は Core NFC で後追い)。
  • 将来:スマホ用電子証明書(SE搭載)→ カードのタップすら不要に。

正直な位置づけ

この方式はカードを「種の供給源」として使い、鍵の導出・署名はソフト側で行うため、鍵の耐タンパー性は YubiKey 等に及びません。だから「金庫」ではなく「全員が持つカードで、所持+PIN による本人性とフィッシング耐性を低コストで足す層」。足りない本人性は①(OIDC)で補う——この割り切りが設計の背骨です。

これからやること

  • スマホ署名 →(自前リレーで)PCブラウザの WebAuthn へ → リーダーレス認証の通し
  • 企業の機密文書(Google Drive)ゲートの実装(ファイル単位の本人ゲート)
  • デジタル認証アプリのテスト環境で OIDC を実接続(sub の安定性・再発行時挙動の確認)

コード:myna-fido-safari(Safari拡張)、ハイブリッドPoC は別リポジトリで実装中。元になった jpki/myna に感謝します。

コメント

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

IP: 取得中...
216.73.216.103216.73.216.103