マイナンバーカードのJava APIを利用して電子署名する
本記事では、Java APIを利用して、マイナンバーカードに搭載されている公的個人認証サービスの電子証明書(公開鍵、秘密鍵)を利用した電子署名とその検証方法を見ていきます。 【目次】 [1]はじめに [2]電子署名と検証の概要 [3]電子署名(カードAPライブラリを利用) (1)署名用電子証明書 (2)利用者証明用証明書 (3)ダイジェストをJavaで計算する場合のサンプル [4]電子署名の検証(Java標準ライブラリを利用) [5]電子署名の検証(カードAPライブラリを利用) [1]はじめに 本記事では、Java APIを利用して、マイナンバーカードに搭載されている公的個人認証サービスの電子証明書(公開鍵、秘密鍵)を利用した電子署名とその検証方法を見ていきます。 なお、マイナンバーカードに搭載されている電子証明書の概要や、Java APIから電子証明書にアクセスする方法については、記事『 マイナンバーカードの電子証明書(公的個人認証サービス)にJava APIでアクセスする 』を参照して下さい。 さて、公的個人認証サービスは、「インターネットを通じて安全・確実な行政手続き等を行うために、他人によるなりすまし申請や電子データが通信途中で改ざんされていないことを確認するための機能」を提供するものとされています。 この「他人によるなりすまし申請や電子データが通信途中で改ざんされていないことを確認」することを実現する技術が電子署名やPKIになりますが、今回はJava APIを利用した電子署名を中心に見ていきます。 ところで、用語として、厳密には「電子署名(electronic signature)」と「デジタル署名(digital signature)」を区別することもあるようですが、本記事では公開鍵暗号方式を用いた署名を電子署名として書くことにします。(JPKIライブラリの仕様書にも電子署名という用語で書かれていますので。) [2]電子署名と検証の概要 電子署名は、なりすまし、改ざん、否認という脅威を防ぐ技術です。 例えば、AさんがBさんへ安全・確実に電子的なメッセージを送信したいとします。 Aさんは、送信したいメッセージに電子署名を行ってBさんへ送信します。Bさんは電子署名を検証することで、受信したメッセージがなりすましや改ざんされていないか確認するこ...