マイナンバーカードによる電子認証・署名のメモ
マイナンバーカードによる電子認証・署名のメモ
おそらく今後普及するであろうマイナンバーによる電子認証・電子署名についてのメモ. 実際に触ってみるまで電子証明書(マイナンバーカード)の使い方がピンと来なかったので, この記事ではざっくり必要な暗証番号(パスワード)とその使い方を紹介.
電子証明書とは
Wikipediaの情報を引用すると,日本の法律の定義では以下になる.
電子証明書は、日本国の法律(電子署名及び認証業務に関する法律)においては、「利用者が電子署名を行ったものであることを確認するために用いられる事項が当該利用者に係るものであることを証明するために作成する電磁的記録その他の認証業務の用に供するものとして主務省令で定めるものをいう」と定められている。 引用:電子証明書 - Wikipedia
「〇〇書」となっているので紙の書類のようみえるが,要は電子認証情報をもったものになる. 日常では以下の2つを指すことが多いと思う.
特に,e-Taxでの説明を見ると次のようになっている.
電子証明書とは、信頼できる第三者(認証局)が間違いなく本人であることを電子的に証明するもので、書面取引における印鑑証明書に代わるものといえます。 引用:電子証明書とは何ですか。|e-Tax
電子証明書(公的個人認証サービス)は厳密には2種類
電子証明書(公的個人認証サービス)は厳密には2種類あり,マイナンバーは両方のサービスを利用できる. 総務省のページを見ると次のように説明されている.
- 署名用電子証明書:インターネット等で電子文書を作成・送信する際に利用します(例 e-Tax等の電子申請)。「作成・送信した電子文書が、利用者が作成した真性なものであり、利用者が送信したものであること」を証明することができます。
- 利用者証明用電子証明書:インターネットサイトやコンビニ等のキオスク端末等にログインする際に利用します(例 マイナポータルへのログイン、コンビニでの公的な証明書の交付)。「ログインした者が、利用者本人であること」を証明することができます。
利用者証明用電子証明書(サービス)
e-Taxなどにログインするときに「認証用暗証番号(数字4桁)」を使用して利用する.
住基カードには無く,マイナンバーカードから追加された機能である.
署名用電子証明書(サービス)
e-Taxで書類を提出する際の署名するときなどに使用する. 従来のやり方だと書類ファイルを印刷して印鑑を捺してそれをスキャンして送信なんてやる方法もあった. 電子署名の場合,電子署名書(マイナンバーカード)で「署名用パスワード(署名用暗証番号,英大文字+数字6文字以上)」を使用して署名情報を付加して送信することができる.
電子署名は以前から交付されている住基カード(今は新規発行なし)でもできた.
必要なもの
以下が,電子認証・署名に必要なものです.
- 電子証明書(マイナンバーカードなど)
- 認証・署名をするときに使うパスワード(暗証番号)
- ICカードリーダ(Pasoriなど):大体2000-3000円
- ICカードリーダを認識できる(USBを挿せる)PC
使い方・使用例
e-Taxで電子認証してログインする例
e-Taxで電子署名をする例
Windowsの場合
- PCにICカードリーダを接続して,ブラウザIE11で電子署名の画面までいく.
- [媒体の選択]で「カードタイプの電子証明書をご利用の場合」を選択
- [認証局サービスの選択]で「公的個人認証サービス(マイナンバーカード)」を選択
- マイナンバーカードをカードリーダーにかざす. 署名用暗証番号(英大文字+数字6文字以上)を入力する.
-
[電子署名の付与]で電子証明書の確認して付与する.
次の情報が表示される.
- シリアル番号
- 発行先
- 発行先別名
- 発行元
- 発行元別名
- 有効期間
電子認証・署名の仕組み
図がある資料を探したところ総務省の資料があったので一部引用する.
仕組みとしては,一般的な公開鍵暗号方式を使っている. マイナンバーカードの中に公開鍵と秘密鍵を持っている.
認証も署名も基本的には同じ方式をとり,暗号化する対象が違う.
- 認証の場合:乱数(NONCE)
- 署名の場合:署名するデータ
利用者証明用電子証明書の仕組み
p.6,http://www.soumu.go.jp/main_content/000528384.pdf
- ログインシステム側:乱数(NONCE)を生成し,こちらに送信する.
- ユーザ側:送られた乱数をマイナンバーカード中の秘密鍵で暗号化して暗号文を生成.
- ユーザ側:認証用暗証番号を入力しそれが正しければ,乱数,暗号文(暗号化した乱数)と公開鍵・電子証明書情報の3つをログインシステム側に送信
- ログインシステム側:暗号文(暗号化した乱数)を公開鍵で復号化する.
- ログインシステム側:乱数と復号化したデータが一致するか改ざんチェックする.
- ログインシステム側:改ざんがなければ,認証局に電子証明書の有効性(有効期限など)を照会.
- ログインシステム側:認証局から有効性の回答を取得.
- ログインシステム側:有効であれば認証成功でログイン可能にする.
署名用電子証明書の仕組み
p.6,http://www.soumu.go.jp/main_content/000528384.pdf
基本は利用者証明用電子証明書と同じ,暗号化するのは署名用のデータになる.
- ユーザ側:署名したい文書をマイナンバーカード中の秘密鍵で暗号化して暗号文を生成する.
- ユーザ側:署名用暗証番号を入力しそれが正しければ,文書,暗号文(暗号化した文書)と公開鍵・電子証明書情報の3つをシステム側に送信
- システム側:暗号文(暗号化した文書)を公開鍵で復号化する.
- システム側:文書と復号化したデータが一致するか改ざんをチェックする.
- システム側:改ざんがなければ,認証局に電子証明書の有効性(有効期限など)を照会.
- システム側:認証局から有効性の回答を取得.
- システム側:有効であれば署名成功で文書を送信する.
マイナンバーカードを認識して操作するには
代表的なSDKは2種類ある.
- Windowsでは標準でSDKとしてwinscard.dllがあるのでこれを使いたい言語で読み込んで使う.(Macにも名前は違うが該当するSDKがある)
- クロスプラットフォームを意識したオープンソースのものであればOpenSCがあり,これはcmd上で使える.
OpenSCを使って実際にマイナンバーカードにアクセスしている実例は,以下の2つあり自分もいつか試したい.