投稿

ラベル(マイナンバーカード)が付いた投稿を表示しています

文字の図形とコードの関係を調べる

【目次】 [1]はじめに [2]行政における外字の情報表現の例 (1)マイナンバーカードに格納される署名用電子証明書の氏名、住所 (2)法人番号公表サイトの法人情報 [3]汎用電子情報交換整備プログラム [4]文字情報基盤 [5]戸籍統一文字情報の検索サイト [6]道のりは長い(文字は生きている?) [1]はじめに 以前、『 法人番号公表サイトのWeb-APIを利用した法人情報の取得と文字の取扱い 』という記事を書いたときから「文字」のことが少し気になっていました。 コンピュータで表示できない文字がいっぱいあることは分かっていましたが、これまで PC や社内システムに閉じた「外字」として扱ってましたので、あまり深く考えていませんでした。 加えて、私は国語嫌いだったこともあって、文字とか漢字とか面倒な世界は意図的に遠ざけていた気がします。 しかし、PC あるいは社内で閉じた利用に限れば外字は使えても、他のシステムとの情報交換には使えません。特にDX時代において「外字」はかなり問題です。 文字に無関心だった私は、難しい漢字を簡単な漢字に置き換えて(縮退して)情報交換すればいいのでは?と簡単に思っていましたが、今頃になってそんなに簡単ではないことが分かってきました。 そして、ボチボチ調べ始めていたのですが、奥が深すぎて自分の頭の中が混乱し始めたので(涙)、このあたりで自分の頭の整理をかねてメモ書きしておくことにしました。 ちなみに、今回は文字とは?といった話ではなく、また、文字コード規格の話でもありません。どちらかというと、文字の図形と文字コードの間を結び付けるところの話です。 [2]行政における外字の情報表現の例 まずは外字の情報交換がどのように扱われているのか、行政関係の仕様を例に見てみます。 (1)マイナンバーカードに格納される署名用電子証明書の氏名、住所 マイナンバーカードには、氏名、住所、生年月日、性別の4情報が記載された「署名用電子証明書」が格納されています。 利用者クライアントソフトに係る技術仕様について https://www.j-lis.go.jp/jpki/procedure/procedure1_2_3.html 署名用電子証明書及び利用者証明用電子証明書のプロファイル仕様書 仕様書によると、氏名、住...

Java版Bouncy Castleを利用して署名用電子証明書から基本4情報を取り出す

本記事では、Java版 Bouncy Castle ライブラリを利用して、マイナンバーカードに格納されている(公的個人認証サービスの)署名用電子証明書から基本4情報を取り出すサンプルを作ってみます。 【目次】 [1]はじめに [2]参考情報 [3]基本4情報を抽出するサンプルプログラム [1]はじめに 以前の記事『 マイナンバーカードの電子証明書(公的個人認証サービス)にJava APIでアクセスする 』において、個人認証サービス AP(公的個人認証サービスのJavaライブラリ)を利用して、署名用電子証明書に記載されている基本4情報(氏名、性別、生年月日、住所)を取り出す方法を見ました。 本記事では、公的個人認証サービスのライブラリに依存しない方法で、署名用電子証明書から基本4情報を取り出す方法を見ていきます。 電子証明書を解析する方法はいろいろありますが、Java続きという事で、今回はJava版の Bouncy Castle ライブラリを利用することにします。 [2]参考情報 ここはさらりと流して頂いて構わないのですが、今回のコードに関する参考情報をメモしておきます。 ガッツリ理解するなら、電子証明書の基礎から理解する必要があります。 Request for Comments: 5280 Internet X.509 Public Key Infrastructure Certificate and Certificate Revocation List (CRL) Profile https://datatracker.ietf.org/doc/html/rfc5280 日本語訳:インターネットX.509 PKI: 証明書と CRL のプロファイル https://www.ipa.go.jp/security/rfc/RFC5280-00JA.html この内容に加えて、実際の証明書のバイナリファイルを理解しようとすると、構文規則のASN.1と、その符号化規則(BER、DER)の知識も必要となります。 (Wikipedia)Abstract Syntax Notation One(ASN.1) その他、PKIX関連の内容などを含めて、深く理解するのはかなりハードルが高いと思いますが、与えられた証明書から必要な情報を抽出するプログラムを作る、ということ...

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

マイナンバーカードの電子証明書(公的個人認証サービス)に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種類があります。電子申請・申告には、署名用電子証明書が必要です ここで個人番号カードとはマイナンバーカードのことです。そして、...