公的個人認証サービス対応ICカードリーダーが600円で売られてました。USB接続の接触型ICカードリーダーで、マイナンバーカードが読めます。自作macOSマシンでも使えてマイナポータルにログインできました。
Table of Contents
マイナンバーカード対応リーダー
「Hackintoshで確定申告」という記事を、何年も前に書きました。この時使うのが、マイナンバーカードを読み取るための「公的個人認証サービス対応ICカードリーダ」です。今まで、SCR3310-NTTComというカードリーダを使用してました。ずっと以前に販売終了になった古代の製品ですが、秋葉原のジャンク屋さんに山積みされていたのを、使う当てもなく買ったものでした。こういう衝動買いは、大体は無駄に終わるのですが、この物件に関してはとても役に立ってます。
今は後継機種が販売されているようですが結構な価格です。実はマイナンバーカードは非接触型ICカードでもあるらしくNFCリーダやスマートフォンでも読めるようです。後継機種のカードリーダーも非接触型らしく、それもあって高価なようです。接触型なら端子だけで済むところを、無線送受信機とアンテナが必要なので高くなるのは仕方ないです。
デジタル庁もできることですし、これから利用する機会も増えそうなので、カードリーダーを買い足そうと考えました。AliExpressで探したら、接触型ICカードリーダーは送料込みで7ドルくらいでした。
Amazon.co.jpで探したら、ほぼ同じものらしい製品が送料無料で600円でした。今は少し値上がりしてましたがそれでも700円程度です。
ならばということで、信頼と安心のAmazonで手配しました。これをBig Surをインストールした自作マシンに接続すると、システム情報に現れました。動きそうです。
ここに書かれているEMV Smartcard REaderという名前のEMVは、ICチップ搭載クレジットカードの標準規格の名前だそうです。Europay, Master Card, Visaの頭文字らしいです。マイナンバーカードもEMV規格に合わせて作られているようです。考えてみれば、日本のマイナンバーカードにしか使えないガラパゴスなリーダーだったら、ネットで格安で売られているわけがないですよね。試してみたところ、クレジットカードを挿しても反応しますので、本来はPOS端末用などの用途で販売されているのかと思われます。
公的個人認証サービス
マイナンバーカードがあるとどうして確定申告がオンラインでできるのか、謎だったので、総務省のページに行って勉強してきました。
ちなみに冒頭のキャラクタはマイキーくんと言って総務省の職員の方がデザインされたようです。JPKI (Japanese Public Key Infrastructure) の頭文字が入っているそうです。
このページに書いてあることによると、マイナンバーカードのメモリーには2個の証明書と2個の秘密鍵が記録してあるようです。秘密鍵は公開鍵暗号方式で使う鍵です。公開鍵暗号方式では、データを秘密鍵で暗号化して、公開鍵で解読します。秘密鍵を持っている人だけがその暗号化データを作れたことを証明できます。証明書と秘密鍵は、マイナンバーカードを作るときに要望すると書き込んでくれます。お役所でカードを作ってもらうときに、よく分からないけど無料だったので、とりあえず書き込んでもらった記憶があります。
マイナンバーカードに入っている秘密鍵は取り出すことができないように作られているそうです。一方で、2個の証明書は取り出せて、以下の用途に使われます。
- 署名用電子証明書:確定申告提出書類など、お役所に提出する書類の署名用証明書。公開鍵などの情報の他に、氏名、住所、性別、生年月日の情報(4基本情報)が書いてあります。
- 利用者証明用電子証明書:マイナポータル(マイナンバーカードを使った電子手続きのポータルサイト)などのサイトにログインするときに使う利用者証明書。公開鍵やシリアル番号などが書かれていますが、4基本情報は書かれていません。
総務省のサイトの説明を読む限りでは、以下のような手順で使用するようです。マイナーポータルにログインするときは、おそらくはサーバ側から乱数のようなデータが送られてきて、それを秘密鍵で暗号化して、利用者証明用電子証明書と一緒に送り返すのかと思います。確定申告申請書に関しては、提出書類そのものを秘密鍵で暗号化して、署名用電子証明書と一緒に送り返すという説明が書いてありました。書類そのものを暗号化するのではなくて、書類は平文のままで、書類のハッシュ値を暗号化しているのかなと思わないでもないです。
秘密鍵の秘密
おおよその仕組みは把握できたのですが、秘密鍵の扱いが疑問でした。証明書を使用する際にはパスワード(英数字6~16桁または数字4桁)が必要です。その時に秘密鍵も読み出せるのかとも想像したのですが、それでは簡単に秘密鍵が漏洩してしまいます。総務省のページにも、秘密鍵はカードからは出てこないと説明してあります。そうすると暗号化できるのはカードの中の人(CPU)だけですが、NFCアンテナからの微小な電力でも動くカードで暗号化などできるのでしょうか。
検索していたら、「マイナンバーカードを使ってSSHする」という記事が見つかりました。
みなさんマイナンバーカードはもう手元に届きましたか? 私の住む大田区はとても混雑していて申請から5ヶ月かかって今月やっと交付してもらうことができました。このカードに含まれる公的個人認証機能は以前から住基カードに入っていたものですが、今年から民間利用もできるようになりました。しかし、この公的個人認証ですが詳細な仕様が公開されていないため、商用利用しようという動きはまだ聞きませんし、既に動いている行政サービスのe-govやe-taxはIE限定で、いまだにJava Appletが使われているなど大変残念な状況です。カードに... マイナンバーカードでSSHする - AAA Blog - AAA Blog |
マイナンバーカードにアクセスするためのプロトコルは、なんと未公開らしいです。(少し古い記事なので今は違うのかもしれません)どうりで謎だったわけです。ただ世界標準に準拠しているので、ハッキングできているようです。この記事によると、カードの中には、以下のようなディレクトリで機能が管理されているようです。APはアプリケーションの略らしいです。MFはメインフレームの略です(rootってくらいの意味かな)。
公的個人認証APが、公開鍵暗号方式を担っているディレクトリです。署名xxxというユニットが、確定申告などで使う4基本情報を含んだ証明書による認証を担当して、認証xxxというユニットが、マイナポータルへのログインなどで使う、個人情報(4基本情報)を含まない認証を担当してます。
この記事によると、標準的なカードドライバを元にしたオープンソースアプリで、プロトコルに即した数バイトのデータをマイナンバーカードとやり取りすることで、秘密鍵による暗号化ができるそうです。認証xxxユニットを使う手順をまとめると以下です。
- とあるバイト列をカードに送信して公的個人認証APを選択する
- 同様に認証用PIN (IEF0018) を選択する
- 4桁の暗証番号をASCIIコードで送る
- 認証用鍵 (IEF0017) を選択する
- 暗号化してほしいデータ(ハッシュ値など)を送る
- その結果、カードから署名データが返送される
これで最終的には、暗号化されたデータと公開鍵が得られるのだと思われます。ということで、なんと、マイナンバーカードが暗号化をしてくれているようです。それなら秘密鍵が外に出ることはないですね。冒頭のタイトルを「マイナンバーカードを読む」としましたが、実はもっと高度な処理をしていたようです。この記事によると、秘密鍵を内部に保持して、外に出さずに内部で暗号化できるデバイスは、まだまだ高価らしいです。それを国民全員に無料で配布しているのですから、もっと活用できるようにすべきだとのことでした。
マイナポータルにログインする
冒頭で紹介した格安カードリーダーを使ってマイナポータルにログインを試みました。
マイナンバーカードを使った様々な行政の手続やお知らせの確認がオンラインで24時間可能です! トップページ | マイナポータル - |
マイナポータルは政府が運営しているオンラインサービスで、マイナンバーカードを使った電子手続きのポータルサイトです。ここにログインするには、マイナンバーカードが必要です。おそらくはSSHのログインと同様に、サーバーからタイムスタンプのような乱数が送られてくるので、それをマイナンバーカードの中のチップが暗号化して、公開鍵を含んだ証明書と一緒に送り返すのだと思われます。
Big Surをクリーンインストールした後なので、前回インストールしたSafari拡張機能が消えてました。ログインをしようとしたら、Safari機能拡張のダウンロードとインストールを求められました。
OKボタンを押すと、Safari拡張機能がダウンロードされます。これを、Safariの「環境設定…」から有効にすると、この先に進みます。ちなみに、マイナンバーカードを使ういろいろなサイトで、それぞれ別々の拡張機能のダウンロードを求められます。一本化して簡素化しようとする動きはあるようですが、まだまだややこしいです。
公的個人認証サービスとは、電子証明書などの安全性が高い技術を利用し、他人によるなりすまし申請や電子データが通信途中で改ざんされることを防ぐための機能を、安い費用で提供するものです。 公的個人認証サービスとは | 公的個人認証サービス ポータルサイト - |
Safari拡張機能を有効にすると、カードリーダーが認識されて、マイナンバーカードをセットするよう促されました。600円のカードリーダーが正しく動いているようです!
マイナンバーカードをセットすると、4桁数字のパスワード入力を求められます。このパスワードを使ってマイナカードに指示すると、マイナカードが、サーバーから送られた既知のデータを暗号化し、公開鍵を含む「利用者証明用電子証明書」と一緒に返してくれるのだと思います。
これで無事ログインできました。
まとめ
Amazonで安価に売られているマイナンバー読み取りカードリーダーは、マイナポータルのログインに使えました。まだ試していませんが、他の公的個人認証サービスでも、おそらく問題なく使えると思います。マイナンバーカードの公的個人認証サービスは、無料で使える電子実印みたいな機能なので、お役所のサイトだけでなく、もっと色々な場面で使えるようになれば良いと思います。