投稿

5月, 2021の投稿を表示しています

マイナンバーカードの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さんは電子署名を検証することで、受信したメッセージがなりすましや改ざんされていないか確認するこ

アジャイルに一貫したモデリングから実装を維持する方法を知る本(エリック・エヴァンスのドメイン駆動設計)

イメージ
今回は、私にとってのソフトウェア設計に関するバイブル本の一つをご紹介します。 エリック・エヴァンスのドメイン駆動設計 エリック・エヴァンス  (著), 今関 剛 (監修), 和智 右桂  (翻訳), 牧野 祐子 (翻訳) エリック・エヴァンスのドメイン駆動設計 ソフトウェアの核心にある複雑さに立ち向かう (Amazonで書籍情報を表示) タイトルの通り、著者のエリック・エヴァンスさんが「ドメイン駆動設計」について、熱く語る本です! 英語版の初版は2003年(日本語版は2011年)に出版されているようなので、意外に歴史のある本ですが、その後の有名な本でも多くで引用されて、今でも影響力の大きい本の一つだと思います。 その理由の一つとして、時代とともにソフトウェアが大規模化、複雑化が進むと同時に、アジャイル開発プロセスやマイクロサービスなどの考え方が普及したこともあり、それに対応できる設計手法(考え方)が求められているからだと思います。 ドメイン駆動設計(domain-driven design, DDD)については、Wikipediaやネット上に多くの解説や情報があります。 ドメイン駆動設計(Wikipedia) しかし、エリック・エヴァンスさんの教え?(ドメイン駆動設計の本質)をちゃんと理解しようと思えば(というより、仕事で複雑性に対応する設計ができるようにするためには)、この本を熟読して、書かれていることを自分なりに「かみ砕くこと」だと思います。(この本を読み返す毎にそう思います。) 設計パターン本のような体裁も持ちあわせていますが、この本の凄さは、パターンカタログというより、「設計道」の啓蒙書(あるいは思想書?)のような側面だと思います(笑)。 約500ページ強の大著にもかかわらず、文章一つ一つに説得力があり(読み返すごとに気づきがある)、さらに文章も熱くて(「~しなければならない」という口調が多い(笑))、修行僧になったと錯覚するくらい身が引き締まります(笑)。 <本の内容> まえがきに「本書が提供するものは、設計上の意思決定を行うためのフレームワークと、ドメイン設計について議論するための技術的な語彙である。」と書かれています。 しかし、これでは分かり難いので(笑)、もう少し具体的に内容を見ていきます。 この本の序文は、あの マーティン・

マイナンバーカードの電子証明書(公的個人認証サービス)にJava APIでアクセスする

イメージ
本記事では、マイナンバーカード(個人番号カード)に搭載されている電子証明書(公的的個人認証サービス)にJavaプログラムからアクセスする方法を見ていきます。 【目次】 [1]はじめに [2]事前準備(利用者クライアントソフトで動作確認) (1)ICカードリーダライタの準備 (2)利用者クライアントソフトのインストール (3)利用者クライアントソフトの動作確認 [3]APIについて (1)仕様の構成 (2)Javaインターフェイスの仕様 (3)Javaライブラリ(クラスパス)の設定 [4]JavaのカードAPライブラリを利用して電子証明書を取得 (1)マイナンバーカードの署名用電子証明書(JPKICryptSignJNI) (2)マイナンバーカードの利用者証明用電子証明書( JPKICryptAuthJNI) (3)住基カードの署名用電子証明書を取得 (JPKICryptJNI) [5]電子証明書の扱い [6]Javaの個人認証サービス APを利用する (1)電子証明書の表示(showCertViewer) (2)署名用電子証明書から基本4情報を取得(getBasicData) (3)利用者証明書の有効性確認(confirm) (4) ICカードリーダライタに挿入されているICカードの種別を取得(getCardType) [1]はじめに 最近何かと話題のマイナンバーカードですが、本記事では、マイナンバーカードに搭載されている電子証明書(公的的個人認証サービス)にプログラムからアクセスする方法を見ていきます。 公的個人認証サービスのリーフレットには、以下のように書かれています。 誰もが安心してオンライン手続きを行うには、他人を装って虚偽の申請を行う「なりすまし」や、第三者が送信されたデータを書き換える「改ざん」などへの対策が必要です。 公的個人認証サービスは「なりすまし」や「改ざん」を防ぎ、インターネットを通じて安全・確実な行政手続き等を行うための機能を電子証明書という形で提供しています。 電子証明書は、市区町村窓口において取得でき、個人番号カード(番号カード)内に記録されます。 電子証明書には、利用者証明用証明書と署名用電子証明書の2種類があります。電子申請・申告には、署名用電子証明書が必要です ここで個人番号カードとはマイナンバーカードのことです。そして、