(57)【特許請求の範囲】
【請求項１】
ＩＣカード発行装置とＩＣカードとの間で行われる複数の発行工程の進捗を前記ＩＣカード発行装置が確認しながら前記ＩＣカードを発行するＩＣカード発行方法において、
前記ＩＣカード発行装置が、発行工程の進捗状況を示す情報を含むＩＣカード発行用データを生成する生成ステップと、
前記生成ステップにより生成された前記発行工程の進捗状況を示す情報を含むＩＣカード発行用データを、前記ＩＣカード発行装置が、前記ＩＣカードへ向けて発行工程単位で送信する送信ステップと、
前記送信ステップにより送信された前記発行工程の進捗状況を示す情報を含むＩＣカード発行用データを、前記ＩＣカードが受信する受信ステップと、
前記受信ステップにより受信された前記発行工程の進捗状況を示す情報を含むＩＣカード発行用データを、前記ＩＣカード内に設けられたデータ用領域であって、運用時に使用され発行完了を表す固定データを記憶するためのデータ用領域、に発行工程単位で記憶する記憶ステップと、
を備えたことを特徴とするＩＣカード発行方法。
【請求項２】
前記ＩＣカード発行装置は、発行処理シーケンス用のコマンドとは別に、前記発行工程の進捗状況を示す情報を含むＩＣカード発行用データを前記ＩＣカードに記憶させるためのコマンドを、前記ＩＣカードへ向けて発行工程単位で送信する
ことを特徴とする請求項１に記載のＩＣカード発行方法。
【請求項３】
ＩＣカード発行装置とＩＣカードとの間で行われる複数の発行工程の進捗を前記ＩＣカード発行装置が確認しながら前記ＩＣカードを発行するＩＣカード発行方法において、
前記ＩＣカード発行装置が発行工程の情報を含むＩＣカード発行用データを生成する生成ステップと、
前記生成ステップにより生成された前記ＩＣカード発行用データを前記ＩＣカード発行装置が前記ＩＣカードへ向けて送信する送信ステップと、
前記送信ステップにより送信された前記ＩＣカード発行用データを前記ＩＣカードが受信する受信ステップと、
前記ＩＣカード内に既に記憶された前記ＩＣカード発行用データが有るか無いかを前記ＩＣカード発行装置が判定する判定ステップと、
前記判定ステップにより前記既に記憶されたＩＣカード発行用データが無いと判定された場合に前記受信ステップにより受信された前記発行工程の情報を含むＩＣカード発行用データを該ＩＣカード発行用データに対応して予め定められた前記ＩＣカード内のデータ用の所定領域に記憶し、前記既に記憶されたＩＣカード発行用データが有ると判定された場合に前記受信ステップにより受信された前記発行工程の情報を含むＩＣカード発行用データを前記データ用領域の前記予め定められた所定領域とは異なる空き領域に記憶する記憶ステップと、
前記記憶ステップにより前記発行工程の情報を含むＩＣカード発行用データが記憶された後、前記既に記憶されたＩＣカード発行用データを削除する削除ステップと、
を備えたことを特徴とするＩＣカード発行方法。
【請求項４】
ＩＣカード発行装置とＩＣカードとの間で行われる複数の発行工程の進捗を前記ＩＣカード発行装置が確認しながら前記ＩＣカードを発行するＩＣカード発行システムにおいて、
前記ＩＣカード発行装置は、
ＩＣカード発行工程の進捗状況を示す情報を含むＩＣカード発行用データを生成する生成手段と、
前記生成手段により生成された前記発行工程の進捗状況を示す情報を含むＩＣカード発行用データを、前記ＩＣカードへ向けて発行工程単位で送信する送信手段と、
を有し、
前記ＩＣカードは、
前記ＩＣカード発行装置の前記送信手段により送信された前記発行工程の進捗状況を示す情報を含むＩＣカード発行用データを、受信する受信手段と、
前記受信手段により受信された前記発行工程の進捗状況を示す情報を含むＩＣカード発行用データを、前記ＩＣカード内に設けられたデータ用領域であって、運用時に使用され発行完了を表す固定データを記憶するためのデータ用領域、に発行工程単位で記憶する記憶手段と、
を備えたことを特徴とするＩＣカード発行システム。
【請求項５】
ＩＣカード発行装置とＩＣカードとの間で行われる複数の発行工程の進捗を前記ＩＣカード発行装置が確認しながら前記ＩＣカードを発行するＩＣカード発行システムにおいて、
前記ＩＣカード発行装置は、
ＩＣカード発行工程の情報を含むＩＣカード発行用データを生成する生成手段と、
前記生成手段により生成された前記ＩＣカード発行用データを前記ＩＣカードへ向けて送信する送信手段と、
前記ＩＣカード内に既に記憶された前記ＩＣカード発行用データが有るか無いかを判定する判定手段と、
前記判定手段により前記既に記憶されたＩＣカード発行用データが無いと判定された場合に前記ＩＣカードに前記発行工程の情報を含むＩＣカード発行用データを記憶させた後、前記ＩＣカード内の前記既に記憶されたＩＣカード発行用データを削除する削除手段と、を有し、
前記ＩＣカードは、
前記判定手段により前記既に記憶されたＩＣカード発行用データが無いと判定された場合に前記受信手段により受信された前記発行工程の情報を含むＩＣカード発行用データを該ＩＣカード発行用データに対応して予め定められた前記ＩＣカード内のデータ用の所定領域に記憶し、前記既に記憶されたＩＣカード発行用データが有ると判定された場合に前記受信手段により受信された前記発行工程の情報を含むＩＣカード発行用データを前記データ用領域の前記予め定められた所定領域とは異なる空き領域に記憶する記憶手段を有する
ことを特徴とするＩＣカード発行システム。
【請求項６】
ＩＣカードとの間で行われる複数の発行工程の進捗を確認しながら前記ＩＣカードを発行するＩＣカード発行装置であって、
ＩＣカード発行工程の進捗状況を示す情報を含むＩＣカード発行用データを生成する生成手段と、
前記生成手段により生成された前記発行工程の進捗状況を示す情報を含むＩＣカード発行用データを、前記ＩＣカードへ向けて発行工程単位で送信する送信手段と、を有し、
前記送信手段により送信された前記発行工程の進捗状況を示す情報を含むＩＣカード発行用データを、前記ＩＣカード内に設けられたデータ用領域であって、運用時に使用され発行完了を表す固定データを記憶するためのデータ用領域、に発行工程単位で記憶させる
ことを特徴とするＩＣカード発行装置。
【請求項７】
ＩＣカードとの間で行われる複数の発行工程の進捗を確認しながら前記ＩＣカードを発行するＩＣカード発行装置であって、
ＩＣカード発行工程の情報を含むＩＣカード発行用データを生成する生成手段と、
前記生成手段により生成された前記ＩＣカード発行用データを、前記ＩＣカードのへ向けて送信する送信手段と、
前記ＩＣカード内に既に記憶された前記ＩＣカード発行用データが有るか無いかを判定する判定手段と、
前記判定手段により前記既に記憶されたＩＣカード発行用データが無いと判定された場合に前記ＩＣカードに前記発行工程の情報を含むＩＣカード発行用データを記憶させた後、前記ＩＣカード内の前記既に記憶されたＩＣカード発行用データを削除させる削除手段と、を有し、
前記判定手段により前記既に記憶されたＩＣカード発行用データが無いと判定された場合に前記送信手段により送信された前記発行工程の情報を含むＩＣカード発行用データを該ＩＣカード発行用データに対応して予め定められた前記ＩＣカード内のデータ用の所定領域に記憶させ、前記既に記憶されたＩＣカード発行用データが有ると判定された場合に前記送信手段により送信された前記発行工程の情報を含むＩＣカード発行用データを前記データ用領域の前記予め定められた所定領域とは異なる空き領域に記憶させる
ことを特徴とするＩＣカード発行装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ICカードの発行に関し、特にICカードの発行の途中で処理が中断した場合の処理の再開に関するものである。
【背景技術】
【０００２】
ICカードの発行工程を管理する管理方法として、ICカードに内蔵されたＥＥＰＲＯＭ内にテーブルを用意し、各発行処理が実行済みであるかを示す「未／済」情報を書き込む領域と、その発行処理の結果を示す「結果」情報を書き込む領域とを備え、このテーブルを読み出すことによりICカードの発行工程の履歴を確認する方法がある（例えば、特許文献１参照）。
また、複数の関連性のあるデータの書き込み最中に障害が生じてもデータの整合性を維持する情報処理方法として、データをブロック単位で記憶するデータ領域と、データ領域とは異なる領域であってブロックの番号を複数記憶する第１および第２の領域とを備え、データを第１または第２の領域のうち一方の領域が記憶しているブロック番号に対応するデータ領域のブロックに書き込み、そのデータを書き込んだブロックのブロック番号を第１または第２の領域の他方に記憶させ、記憶させた後に第１または第２の領域のうち一方の領域が記憶しているデータを消去する方法がある（例えば、特許文献２参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開平６−２５９６０９
【特許文献２】特開平１１−２５００３
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、特許文献１に記載のICカード発行工程の管理方法及び特許文献２に記載の情報処理方法のいずれも、データを記憶する領域とは別にデータの処理状態を記憶する領域を設けているため、これらの方法を用いてICカードの発行を行うには発行過程のデータ処理状態を記憶する専用領域を備える必要があり、ICカードのようにデータを記憶する領域と処理状態を記憶する領域の合計領域に制限がある場合には、データを記憶する領域を削減しなければならないという問題があった。
【０００５】
本発明はこのような問題を解決するためになされたもので、ICカード発行処理における複数工程を管理するために、ICカード内に工程管理専用の記憶領域を設けることなく、ICカード内のデータ記憶領域を用いて工程管理ができ、さらに、発行の途中で処理が中断した場合に、途中の処理から再開することができるICカード発行方法を得ることを目的とする。
【課題を解決するための手段】
【０００６】
本発明に係るICカード発行方法は、ICカード発行装置とICカードとの間で行われる複数の発行工程の進捗をICカード発行装置が確認しながらICカードを発行するICカード発行方法において、ICカード発行装置が、発行工程の進捗状況を示す情報を含むICカード発行用データを生成する生成ステップと、生成ステップにより生成された発行工程の進捗状況を示す情報を含むICカード発行用データを、ICカードへ向けて発行工程単位で送信する送信ステップと、ICカードが、ICカード発行装置の送信ステップにより送信された発行工程の進捗状況を示す情報を含むICカード発行用データを受信する受信ステップと、受信ステップにより受信された発行工程の進捗状況を示す情報を含むICカード発行用データを、ICカード内に設けられたデータ用領域であって、運用時に使用され発行完了を表す固定データを記憶するためのデータ用領域に発行工程単位で記憶する記憶ステップと、を備えたものである。
【発明の効果】
【０００７】
本発明によれば、ICカード発行方法は、ICカード発行装置とICカード間で行われる複数の発行工程の進捗をICカード発行装置が確認しながらICカードを発行するICカード発行方法において、ICカード発行装置が発行工程の情報を含むICカード発行用データを生成する生成ステップと、生成ステップにより生成されたICカード発行用データをICカードへ向けて送信する送信ステップと、ICカードがICカード発行装置の送信ステップにより送信されたICカード発行用データを受信する受信ステップと、受信ステップにより受信された発行工程の情報を含むICカード発行用データをICカード内に設けられたデータ用領域に記憶する記憶ステップと、を備えたことにより、ICカード発行の際にICカード発行装置とICカード間で行われる複数の発行工程の進捗を、ICカード内のICカード発行用データを記憶する領域に記憶できるため、進捗管理用に専用の記憶領域を設けることなく、ICカードの発行工程を管理でき、さらに、発行処理が中断された場合に発行工程の情報、すなわち発効工程の進捗状況を示すデータ、を確認することにより、発行工程単位で途中の処理から容易に再開することができる。
【図面の簡単な説明】
【０００８】
【図１】本発明の実施の形態１に係るICカード発行システムの構成を示す図である。
【図２】図１に記載のICカードのファイル構成を示す図である。
【図３】図１に記載のサーバのフローチャートを示す図である。
【図４】図１に記載のサーバとICカード間の処理シーケンスを示す図である。
【図５】本発明の実施の形態３に係るサーバのフローチャートを示す図である。
【図６】本発明の実施の形態３に係るICカード発行方法の手順を示す図である。
【発明を実施するための形態】
【０００９】
実施の形態１．
本発明を実施する実施の形態１におけるICカード発行システムの構成を図１ないし図４を用いて説明する。図１において、ICカード発行システム１はサーバ２すなわちICカード発行装置と、ネットワーク３を介してサーバ２と通信可能に接続されたクライアント４すなわちICカード発行用データ転送装置と、クライアント４に有線接続されたICカードリーダライタ５と、ICカードリーダライタ５に着脱可能に設けられたICカード６とで構成されている。
【００１０】
サーバ２はクライアント４からのICカード発行要求を受け付ける要求受付部２１と、受け付けたICカード発行要求に応じてICカード６へ書き込むための鍵や証明書等の認証データを生成して保管する鍵・証明書発行部２２と、生成された鍵や証明書から実際にICカードへ格納されるファイルのイメージを生成するイメージ生成部２３と、構成された各ファイルのイメージからICカード６に送信可能なコマンドを生成し、このコマンドを含むデータをネットワーク３へ向けて送信すると共に、ICカード６からコマンドに対して発せられるレスポンスを受信するAPDU（Application Data Unit）送受信部と、を備えている。
鍵・証明書発行部２２は耐タンパー性を有し、証明書を発行する際に必要となるプライベート鍵、公開鍵証明書、PIN（Personal Identification Number）等の情報を保管している。
【００１１】
クライアント４は、外部からICカード６内に登録する利用者の氏名等の情報を取得する入力部（図示しない）と、サーバ２に対するICカード発行要求を生成し、取得した利用者の氏名等の情報と共にネットワーク３へ向けて送信する要求発行部４１と、サーバ２からICカード６へ向けて送信されたコマンドを含むICカード発行用データ及びこのコマンドに対するICカード６からサーバ２へのレスポンスを含むICカード発行用データを転送するAPDU転送部４２と、を備えている。
ICカードリーダライタ５は、クライアント４から転送されたコマンドを含むICカード発行用データをICカード６に書き込む機能、及びICカード６からコマンドへのレスポンスを読み出す機能を有するものであって、ICカード６はICカードリーダライタ５により書き込まれたプライベート鍵、公開鍵証明書、PIN等の認証データを表面に施された印刷やエンボス等の記憶手段によって保持している。また、図示していないが、ICカード６はAPDU転送部４２から転送されたコマンドを含むICカード発行用データを受信する受信手段と、受信したICカード発行用データをICカード６内のメモリ（図示しない）に記憶する記憶手段を有する。
【００１２】
（ICカードのファイル構造）
図２はJIS X 6320-15の規格に準拠したICカード６のICカード発行用データを記憶するデータ領域のファイル構造の一例を示す図である。ICカード６はICカード発行システム１が取り扱うファイル群を示すファイルとしてDedicated File（以下、DFと称する）を有し、DF配下にはICカード発行用データを格納する領域として複数のElementary File（以下、EFと称する）が設けられている。図２では、CIA（Cryptographic Information Application）がDFであり、CIA以下の他のすべてのファイルがEFである。なお、EFの数や大きさはICカード製造時に決定されるものである。また、このICカード6はICカード発行工程の進捗情報を管理する管理用データの専用領域は備えていない。
【００１３】
EFのうち、認証情報オブジェクトを格納するAOD、プライベート鍵オブジェクトを格納するPrKD、公開鍵オブジェクトを格納するPuKD、証明書オブジェクトを格納するCDは、論理的なデータの種類によりオブジェクトファイルとも呼ばれる。
【００１４】
オブジェクトファイル以外のEFには、認証情報として一般利用者のパスワードを格納するUserPIN、認証情報として管理者のパスワードを格納するSOPIN、プライベート鍵を格納するPriKey1及びPriKey2、公開鍵を格納するPubKey1及びPubKey2、公開属性を有する証明書を格納するPublic、プライベート属性を有する証明書を格納するPrivate、CIA配下のICカード６の情報を示すCIAInfo、オブジェクトファイルへのポインタを格納するOD、Public及びPrivateの空き領域を管理するUnusedSpace等がある。UserPIN及びSOPINのパスワードはAOD内の認証情報オブジェクトから参照されるものであり、PriKey1及びPriKey2のプライベート鍵はPrKD内のプライベート鍵オブジェクトから、PubKey1及びPubKey2の公開鍵はPuKD内の公開鍵オブジェクトから参照されるものである。また、Publicの公開属性を有する証明書及びPrivateのプライベート属性を有する証明書はCD内の証明書オブジェクトからそれぞれ参照されるものである。
【００１５】
各EFに格納されるオブジェクトの型はJIS X 6320-15に示されているものと同じである。CIAInfo内には先頭領域からCIAInfo型のオブジェクトがASN.1のDERエンコードされた形式で格納されている。ODにはCIOChoice型の複数のオブジェクトがDERエンコードされた形式で格納され、これらのオブジェクトにはAODの認証オブジェクトを示すauthObjects、PrKDのプライベート鍵オブジェクトを示すprivateKeys、PuKDの公開鍵オブジェクトを示すpublicKeys、CDの証明書オブジェクトを示すcertificatesが含まれている。これらCIOChoice型のオブジェクトを格納する順序は上記に限るものではなく、他のCIOChoice型の要素を含んでいても良い。また、あるCIOChoice型のオブジェクトの最後尾が格納される領域と次のCIOChoice型のオブジェクトの先頭が格納される領域とは連続していなくても良く、この場合にはオブジェクトのデータが存在しない領域にデータが存在しないことを示す0xFFまたは0x00のデータが格納される。なお、これはODに限ることではなく、他のEFにおいても複数のオブジェクトが格納される場合は同様である。
【００１６】
UnusedSpaceにはPKCS#15で定義されているUnusedSpace型のオブジェクトがDERエンコードされた形式で複数格納され、これらのUnusedSpace型のオブジェクトには空き領域が存在するEFの情報、先頭からのバイト数の情報、長さを示すバイト数の情報がデータとして含まれている。また、AODにはAuthenticationObjectChoice型のオブジェクトがDERエンコードされた形式で複数格納され、このオブジェクトとして、パスワードを示すpwdがUserPINまたはSOPINを示すデータとして選択されている。
【００１７】
PrKDにはPriKey1またはPriKey2を示すデータを含むPrivateKeyChoice型のprivateRSAKey等のオブジェクトがDERエンコードされた形式で複数格納され、PuKDにはPubKey1またはPubKey2を示すデータを含むPublicKeyChoice型のpublicRSAKey等のオブジェクトがDERエンコードされた形式で複数格納されている。
CDには先頭からのバイト数の情報及び長さを示すバイト数の情報と共に、PublicまたはPrivateを示すCertificateChoice型のx509Certificate等のオブジェクトがDERエンコードされた形式で複数格納されている。
【００１８】
UserPINにはICカードに特有の形式でパスワードを認証するためのデータが格納され、UserPINが認証されるとPriKey1及びPriKey2の使用及びPrivateの読み込みが可能になる。SOPINにはICカードに特有の形式でパスワードを認証するためのデータに加え、製造時にデフォルトのパスワードを認証するためのデータが格納されており、SOPINが認証されると全EFの変更が可能になる。
PriKey1及びPriKey2にはそれぞれプライベート鍵が格納されており、これらの鍵を使用することでICカード６内部での演算、すなわち電子署名の生成や暗号化されたデータの復号化が可能となる。
PubKey1、PubKey2、Public、PrivateといったEFは指定されたデータを保存したり読み出したりする基本機能のみを有し、PubKey1及びPubKey2には先頭領域から公開鍵が１つだけ格納され、Public及びPrivateには複数の証明書が格納されている。
【００１９】
（ICカード発行手順）
ここで、CIAInfoを利用してICカードを発行する手順について説明する。
クライアント４の要求発行部４１から、ネットワーク３を介してサーバ２にICカード利用者の氏名を指定したICカード発行要求が送信されると、サーバ２の要求受付部２１はICカード発行要求を受信し、正当性を確認して鍵・証明書発行部２２に鍵及び証明書の発行を指示する。このとき、クライアント４から送信されるICカード発行要求には、ICカード利用者の氏名の他に利用者が申請可能な項目や発行要求の送信権を示す情報等が含まれていても良い。
【００２０】
鍵・証明書発行部２２は、要求受付部２１から鍵及び証明書の発行指示を受けるとRSAの鍵対すなわちプライベート鍵と公開鍵を生成し、この公開鍵とICカード発行要求で指定された利用者の氏名、及びシステムに設定されている証明書のプロファイル等を用いて公開鍵証明書を生成する。そして、生成したRSAの鍵対、公開鍵証明書、生成した公開鍵証明書の上位公開鍵証明書をイメージ生成部２３へ伝達する。
【００２１】
イメージ生成部２３は、生成されたRSAの鍵対からPrKD及びPriKey1に格納すべきデータを、公開鍵証明書からCD及びPublicに格納すべきデータをそれぞれ生成する。また、イメージ生成部２３は、ICカード発行システム１に設定されているICカード６のプロファイルに基づいて、CIAInfo、OD、AODに格納すべきデータを生成し、生成した各データに対応するパスワードをUserPIN及びSOPINに格納するデータとして生成する。各EFに格納されるデータはICカード６と同様のファイル構成を構築し、サーバ２内のメモリ（図示しない）に記録される。
【００２２】
イメージ生成部２３によるイメージの生成が完了すると、APDU送受信部２４は、メモリに記録されたICカード６のファイル構成からICカード６に対するコマンド及びICカード６との間で行う処理シーケンスを構成し、クライアント４に向けてICカード６に対するコマンドを送信する。ICカード６に対するコマンドとしては、例えば、JIS X 6320-4（ISO/IEC 7816-4）に準拠した形式のものが使用できる。
【００２３】
APDU送受信部２４から送信されたコマンドはネットワーク３を介してクライアント４に到達し、クライアント４内のAPDU転送部４２によりICカードリーダライタ５に挿入されたICカード６に向けて転送される。ICカード６からは受信したコマンドに対するレスポンスが生成され、このレスポンスを含むICカード発行用データがICカードリーダライタ５に読み取られてクライアント４に送信される。クライアント４のAPDU転送部４２は、ICカードリーダライタ５から受信したICカード発行用データをネットワーク３を介してサーバ２に転送する。以降、同様の手順によりサーバ２とICカード６間の通信が必要な回数繰り返される。
【００２４】
（サーバの処理）
サーバ２が行う処理フローを図３に示す。
サーバ２のAPDU送受信部２４はまずＳ１でDFを選択し、Ｓ２でICカード６内のデータを読み込んで発行工程を確認し、パスワードが変更されているか否かを確認する。パスワードが変更されていなければＳ３にて出荷時のパスワードを用いて認証を行い、パスワードが変更されていればＳ３にて変更後の運用時のパスワードを用いて認証を行う。ICカード6の認証に成功するとＳ２にてICカード６から読み込んだデータを用いてＳ４により発行工程を確認する。その後、Ｓ５でICカード６に所定のデータの書き込みを行いICカード発行処理を完了する。使用するコマンドは、例えば、DFの選択はSELECT、ICカード６の認証はVERIFY、パスワードの変更はCHANGE REFERENCE DATA、ICカード６内のデータ読み込みはREAD BINARY、ICカード６へのデータ書き込みはUPDATE BINARY、等がある。
【００２５】
（オブジェクトの構造）
ここで、サーバ２とICカード６間で送受信されるコマンドおよびレスポンスを含むオブジェクトの構造について説明する。
ICカード６に送信されるオブジェクトの構造は、以下のようになっている。
「CLA  INS  P1  P2  Lc  コマンドデータ  Le」
CLAはクラスバイトと呼ばれる通信条件を規定する１バイトのデータ、INSはコマンドを示す１バイトのデータである。また、P1とP2はそれぞれ異なるコマンドパラメータを示す１バイトのデータ、Lcはコマンドデータの長さを示すデータ、コマンドデータはコマンドに応じたデータ、LeはICカード６から送信されるレスポンスデータの許容する長さを示すデータである。
一方、ICカード６が送信するオブジェクトの構造は、以下のようになっている。
「レスポンスデータ  SW1  SW2」
レスポンスデータはコマンドの実行結果を示すデータ、SW1及びSW2は実行結果のステータスを示す１バイトのデータである。
【００２６】
ここで、サーバ２とICカード６との間で送受信されるオブジェクトを、具体例を用いて説明する。例えば、APDU送受信部２４からICカード６に送信されるUPDATE BINARYであって、CIAInfoの先頭１バイトに0x00を書き込むものはコマンドデータに対応する部分に0x00が格納されるので以下のようになる。
「00  D6  92  00  01  00」
なお、数字は16進表記したものであって、Leは省略されている。
【００２７】
ICカード６にオブジェクトが伝達されてUPDATE BINARYのコマンドが正常に完了すると、ICカード６は以下のバイナリ列をレスポンスとしてサーバ２に返す。
「90  00」
このレスポンスは、レスポンスデータが無くコマンドが正常に終了したことを示している。
【００２８】
一方、ICカード６のCIAInfoの先頭１バイトに格納されたデータを読み出す際にAPDU送受信部２４から送信されるREAD BINARYは以下のようになる。
「00  B0  92  00  01」
READ BINARYは読み出しを行うコマンドであるためコマンドデータは存在せず、Leは省略されている。
【００２９】
ICカード６にオブジェクトが伝達されてREAD BINARYのコマンドが正常に完了すると、ICカード６は以下のバイナリ列をレスポンスとしてサーバ２に返す。
「00  90  00」
先頭の１バイトはレスポンスデータが0x00であることを示しており、後の２バイトはコマンドが正常に終了したことを示している。
【００３０】
（オブジェクトの処理シーケンス）
サーバ２の処理フロー及びオブジェクトの構造について説明したので、ここではICカード発行時にサーバ２とICカード６との間で送受信されるオブジェクトの処理シーケンスについて説明する。
ICカード６を発行するにあたって、サーバ２はまず、ICカード６に対してCIAを選択する。CIAの選択に成功するとREAD BINARYを送信してCIAInfoの先頭１バイトに格納されたデータを読み込み、次の処理シーケンスを決定する。
なお、ここではCIAInfoの先頭１バイトを進捗管理用の領域として用いるため、この領域のデータを読み込むが、ICカード発行処理の途中で進捗管理以外の用途で更新されない領域であれば、位置及びサイズはこれに限るものではない。
【００３１】
READ BINARYに対するレスポンスデータが0xFFまたは0x00の場合、Ｓ４２のようにサーバ２はレスポンスを送信したICカード６が新品であると判定して最初から順にICカード６の発行処理を実行する。Ｓ４３のように、READ BINARYに対するレスポンスデータが後述するICカード発行処理の各ステップのいずれかを示している場合は、ICカード発行処理が中断していると判断して該当するStepの直後から順にICカード６の発行処理を実行する。また、ICカード６の発行処理が完了するとCIAInfo型のオブジェクトはDERエンコードされ、CIAInfoの先頭１バイトに0x30が必ず格納されることから、READ BINARYに対するレスポンスデータが0x30の場合にはＳ４４のようにサーバ２はICカード発行処理が完了していると判定して発行処理を行わない。
【００３２】
ICカード６の発行処理を行うには、まずSOPINに対してVERIFYを実行して認証を得る必要がある。最初から処理を開始する場合は出荷時のパスワードを用いてSOPINに対してVERIFYを実行し、途中から処理を開始する場合は運用時のパスワードを用いてSOPINに対してVERIFYを実行する。なお、運用時のパスワードは、SOPINの認証後に実行されるCHANGE REFERENCE DATAにより得られるものである。
【００３３】
SOPINの認証後に行われるICカード６の発行処理はJIS X 6320-15の規格に準拠する場合、以下の15のStepがある。シーケンスを図４に示すと共に、各Stepの詳細について説明する。
Step1：管理者のパスワードを格納するSOPIN内のパスワードを運用時のパスワードに変更する。このとき、パスワード変更用コマンドであるCHANGE REFERENCE DATAの実行後、進捗管理用の領域として用いられるCIAInfoの先頭１バイトに格納されるデータを0x01にする。
Step2：利用者のパスワードを用いて一般利用者のパスワードを格納するUserPIN内のパスワードを変更する。このとき、コマンドの進捗管理用の領域のデータを0x02にする。
Step3：オブジェクトファイルへのポインタを格納するODにデータを書き込む。このとき、書き込みコマンドであるUPDATE BINARYの実行後、進捗管理用の領域のデータを0x03にする。
Step4：Public及びPrivateの空き領域を管理するUnusedSpaceにデータを書き込む。このとき、コマンドの進捗管理用の領域のデータを0x04にする。
Step5：認証情報オブジェクトを格納するAODにデータを書き込む。このとき、コマンドの進捗管理用の領域のデータを0x05にする。
Step6：プライベート鍵オブジェクトを格納するPrKDにデータを書き込む。このとき、コマンドの進捗管理用の領域のデータを0x06にする。
Step7：公開鍵オブジェクトを格納するPuKDにデータを書き込む。このとき、コマンドの進捗管理用の領域のデータを0x07にする。
Step8：証明書オブジェクトを格納するCDにデータを書き込む。このとき、コマンドの進捗管理用の領域のデータを0x08にする。
Step9：プライベート鍵を格納するPriKey1にデータを書き込む。このとき、コマンドの進捗管理用の領域のデータを0x09にする。
Step10：プライベート鍵を格納するPriKey2にデータを書き込む。このとき、コマンドの進捗管理用の領域のデータを0x0aにする。
Step11：公開鍵を格納するPubKey1にデータを書き込む。このとき、コマンドの進捗管理用の領域のデータを0x0bにする。
Step12：公開鍵を格納するPubKey2にデータを書き込み、このとき、コマンドの進捗管理用の領域のデータを0x0cにする。
Step13：公開属性を有する証明書を格納するPublicにデータを書き込む。このとき、コマンドの進捗管理用の領域のデータを0x0dにする。
Step14：プライベート属性を有する証明書を格納するPrivateにデータを書き込む。このとき、コマンドの進捗管理用の領域のデータを0x0eにする。
Step15：CIA配下のEFの情報を表示するCIAInfoにデータを書き込む。なお、CIAInfoにデータを書き込むことによって、進捗管理用の領域のデータが0x30に更新される。
【００３４】
このように、運用時に使用されるデータであるCIAInfo型のオブジェクトの先頭１バイトにICカード発行処理の進捗状況を示すデータ、すなわちICカード６発行工程の情報を書き込むことにより、進捗管理用の専用領域を持たないICカード６であっても内部に進捗状況を示すデータを保存することができるため、発行処理が中断された場合にその進捗状況を示すデータを確認することで途中の処理から容易に再開することができる。
なお、ネットワークにおける通信やICカードのコマンドの暗号化については詳細説明を省略したが、パスワードやプライベート鍵など秘匿しなければならない情報を扱う通常の場合と同様に、ネットワークについてはTLS（Transport Layer Security）やIPSec（Security Architecture for the Internet Protocol）等を適用し、ICカード６についてはSecure Messaging（SM）を使用するものとする。
【００３５】
この実施の形態によれば、運用時に使用されるデータの一部であって運用中に固定値が格納される領域にICカード発行処理の進捗状況を示すデータを書き込むことにより、進捗管理用の専用領域を持たないICカード６であってもICカード６内部に進捗状況を示すデータを保存でき、発行処理が中断された場合にその中断された処理を容易に特定してICカード６の発行処理を途中から再開することができる。
また、ネットワーク３を介してICカード発行処理を行うため、セキュリティ管理された施設でICカード６を発行する場合には利用者が発行申し込みをしてから手元に届くまでに数週間かかる時間を大幅に削減することができ、ICカード６の即時発行も可能になる。
【００３６】
また、サーバ２は上記ICカード６に対応するため、進捗管理用の専用領域を持たないICカード６であっても発行処理の進捗状況を管理することができる。
【００３７】
実施の形態２．
実施の形態２に係るICカード発行システム１の構成は実施の形態１と同じであるため説明を省略する。実施の形態１ではICカード発行処理の進捗状況を示すためにCIAInfoの先頭１バイトに格納されるデータの領域を使用しているが、本実施の形態ではCIAInfoに格納するオブジェクトの末尾に３バイト追加し、この領域を使用する。以下、実施の形態１と異なる処理シーケンスについて説明する。
【００３８】
ICカード６を発行するにあたって、サーバ２は実施の形態１と同様にＳ１からＳ３の工程を実施する。例えばＳ１においてCIAを選択した場合、CIAInfo型のオブジェクトの先頭から２バイト目にオブジェクトの長さを示すデータが格納されていることから、READ BINARYを実行してCIAInfoの２バイト目に格納されているデータを読み込む。読み込んだデータが0xFFまたは0x00であればICカード６が新品であると判定し、本来の値であれば処理が完了していると判定し、本来の値に３を付加した値であれば処理が中断していると判定する。
【００３９】
ICカード６が新品であると判定した場合、サーバ２はまず出荷時のパスワードを用いてSOPINの認証を得る。その後CIAInfoにデータを書き込むためにUPDATE BINARYを実行し、オブジェクト直後に「8A  01  01」のデータを書き込み、このオブジェクトの先頭から２バイト目に本来の値に３を付加した値を書き込む。以降、実施の形態１に記載のStep1からStep14の処理を順次行う。ただし、進捗管理用の領域として使用するのはCIAInfo型のオブジェクト直後から３バイト目とする。また、進捗管理用の領域に書き込むデータは１加算したデータとする。
【００４０】
一方、処理が中断していると判定した場合、サーバ２はまずCIAInfo型のオブジェクト直後から３バイト目に格納されているデータからICカード発行処理のうち最後に発行処理が成功したStepを特定して、SOPINのパスワードを変更していなければ出荷時のパスワードを用いてSOPINの認証を得、SOPINのパスワードを変更していれば運用時のパスワードを用いてSOPINの認証を得る。その後、処理が中断した直後のStepからICカード発行処理を再開する。以降、Step14までの各処理を順次行う点はICカード６が新品の場合と同様である。
なお、処理が中断された場合、CIAInfo型のオブジェクトは「issuing Status  [10] OCTET STRING OPTIONAL」の要素が追加されたオブジェクトと解釈できるため、オブジェクトの読み込み時にサーバ２等が支障をきたすことはない。
【００４１】
Step15については、いずれの場合も最初にCIAInfoに対してUPDATE BINARY UPDATEを実行しているのでStep14の後にはこの発行処理は行わない。代わりにCIAInfo型のオブジェクトの先頭から２バイト目を本来の値に戻すと共に、CIAInfo型のオブジェクト直後の３バイトの値すべてを0xFFに変更する。
【００４２】
この実施の形態によれば、運用時に使用されるデータを３バイト分拡張し、この拡張した領域にICカード発行処理の進捗状況を示すデータを書き込むことにより、実施の形態１と同様に、進捗管理用の専用領域を持たないICカード６であっても内部に進捗状況を示すデータを保存でき、発行処理が中断された場合にその中断された処理を容易に特定してICカード６の発行処理を途中から再開することができる。
【００４３】
実施の形態３．
実施の形態１及び実施の形態２ではICカード６の発行処理について説明した。本実施の形態では、既に発行されているICカードのプライベート鍵、公開鍵、公開鍵証明書を更新するICカード更新方法について説明する。なお、ここではICカード６の更新は発行の一形態とする。
【００４４】
ICカード発行システム１の構成及びICカード６の初期発行の方法は実施の形態１と同じとする。ICカード６の発行方法のうち、初期発行は実施の形態１または実施の形態２のいずれであっても良いが、ICカード６の更新すなわち２回目以降の発行では実施の形態２の方法を用いる。
【００４５】
図５にサーバ２が行う処理のフローチャートを示す。サーバ２はまずＳ１でDFを選択し、Ｓ２でICカード６内のデータを読み込んで発行工程を確認し、パスワードが変更されているか否かを確認する。パスワードが変更されていなければＳ３にて出荷時のパスワードを用いて認証を行い、パスワードが変更されていればＳ３にて変更後の運用時のパスワードを用いて認証を行う。ICカード6の認証に成功するとＳ２にてICカード６から読み込んだデータを用いてＳ４により発行工程を確認する。その後、Ｓ５でICカード６に所定のデータの書き込みを行いICカード発行処理を完了する。
【００４６】
Ｓ５のICカード６への書き込みの際、まずＳ５１にてICカード６内に発行処理用の既存データがあるか無いかを判定し、既存データが無い場合はＳ５２に進んでICカード６内のデータ領域である予め定められた所定の領域に発行処理用のデータを書き込む。既存データが有る場合はＳ５３にてICカード６内の予め定められた所定領域とは異なる空き領域にデータを書き込み、Ｓ５４にて既存データを削除し、Ｓ５５で空き領域に書き込んだデータを既存データが格納されていた所定領域にコピーし、Ｓ５６にて空き領域に書き込んだデータを削除する。
使用するコマンドは、例えば、DFの選択はSELECT、ICカード６の認証はVERIFY、パスワードの変更はCHANGE REFERENCE DATA、ICカード６内のデータ読み込みはREAD BINARY、ICカード６へのデータ書き込みはUPDATE BINARY、等がある。
【００４７】
ICカード６に格納されている公開鍵証明書には、プライベート鍵の危殆化による漏洩や失効リストの肥大化を防止する等の理由により、数年程度の有効期間が設けられている。例えば実施の形態１に記載のファイル構成を有するICカード６を更新する場合、PrKD、PuKD、CD、PriKey1、PriKey2、PubKey1、PubKey2、Publicを変更する必要がある。また、Publicの変更に伴いUnusedSpaceも変更する必要がある。
以下、図６を用いてCD、Pubic、UnusedSpaceの関係に特化して説明する。
なお、CDに格納されるCertificateChoice型のオブジェクトは旧テンプレートまたは新テンプレート、Publicに格納される公開鍵証明書のデータは旧データまたは新データ、UnusedSpaceに格納されるUnusedSpace型のオブジェクトは空き領域として示す。
【００４８】
図６（ａ）は更新前の状態を示しており、旧テンプレートはCDの先頭、旧データはPublicの先頭に格納され、Publicの空き領域を示すオブジェクトもUnusedSpaceの先頭に格納されている。図６（ｂ）は更新手順１によりPublicの旧データより後ろの領域に新データが格納された状態を示している。なお、新データはPublicの先頭から新データの大きさ分よりも後ろに格納される。図６（ｃ）は更新手順２により新データをPublicに格納することにより変化した空き領域を示すオブジェクトがUnusedSpaceに格納された状態を示している。この例では旧データと新データの間に隙間があるため、２つの空き領域が追加されている。
【００４９】
図６（ｄ）は更新手順３によりUnusedSpaceに最初から格納されていた空き領域を示すオブジェクトが削除された状態を示し、図６（ｅ）は更新手順４によりPublicの新データを参照する新テンプレートがCDに格納された状態を示している。なお、新テンプレートはPublicに格納された新データと同様に、必要であれば後ろの領域にずらして格納される。図６（ｆ）は更新手順５によりCDから旧テンプレートが削除された状態を、図６（ｇ）は更新手順６により旧データの削除により変化した空き領域を示すオブジェクトがUnusedSpaceの先頭に格納された状態を示している。
【００５０】
図６（ｈ）は更新手順７により旧データと新データの間に存在する空き領域を示すオブジェクトがUnusedSpaceから削除された状態を示している。なお、旧データと新データの間に空き領域が存在しない場合はこのオブジェクトが存在しないため、この更新手順７は省略される。図６（ｉ）は更新手順８によりPublicから旧データが削除された状態を示し、図６（ｊ）は更新手順９によりPublicの先頭に新データが格納された状態を示している。図６（ｋ）は図６（ｂ）で格納された新データと図６（ｊ）で格納された新データの間の空き領域を示すオブジェクトが更新手順１０によりUnusedSpaceに格納された状態を示している。空き領域が存在しない場合はこの更新手順１０は省略される。
【００５１】
図６（ｌ）は、図６（ｇ）でUnusedSpaceの先頭に格納された空き領域を示すオブジェクトが更新手順１１により削除された状態を示している。図６（ｍ）は更新手順１２によりCDの先頭に新テンプレートが格納された状態を示し、図６（ｎ）は図６（ｅ）でCDに格納された新テンプレートが更新手順１３により削除された状態を示している。図６（ｏ）は、図６（ｂ）で格納された新データより後ろの領域を空き領域として示すオブジェクトが更新手順１４によりUnusedSpaceの先頭に格納された状態を示している。
【００５２】
図６（ｐ）はUnusedSpaceに格納された空き領域を示すオブジェクトのうち、先頭に格納されたオブジェクト以外が更新手順１５により削除された状態を示している。図６（ｑ）は、図６（ｂ）でPublicの旧データが格納されていた領域よりも後ろの領域に格納された新テンプレートが削除され、ICカードの更新処理が完了した状態を示している。
上記の更新処理の手順を要約すると、データを格納する時すなわちデータを書き込む時はデータ、空き領域、テンプレートの順に処理を行い、データを削除する時はテンプレート、空き領域、データの順に処理を行うことになる。
【００５３】
PrKD、PriKey1、PriKey2の関係においては、CDの代わりにPrKD、Publicの代わりにPriKey1及びPriKey2を用い、CDとPublic間の処理手順で先頭に格納されるデータをPriKey1に、それ以外のデータをPriKey2に格納することにより、上記と同様に新旧データの整合性を維持しつつICカード６の更新処理を行うことができる。
【００５４】
また、PuKD、PubKey1、PubKey2の関係においては、CDの代わりにPuKD、Publicの代わりにPubKey1及びPubKey2を用いることでPrKD、PriKey1、PriKey2の関係と同様に新旧データの整合性を維持しつつICカード６の更新処理を行うことができる。
【００５５】
ICカード更新処理の全体としては、CDとPublic、PrKDとPriKey1とPriKey2、PuKDとPubKey1とPubKey2、それぞれについて更新処理を実行するのではなく、まずPriKey1、PriKey2、PubKey1、PubKey2、Publicに新データを格納し、PrKD、PuKD、CDに新プレートを格納するという手順で更新する。
【００５６】
このような手順を踏むことで、図６（ｄ）の更新手順３までは古い鍵や証明書が格納されているICカードとして使用することができ、図６（ｆ）の更新手順５から図６（ｐ）の更新手順１５までは更新手順１２を除いて、新しい鍵や証明書が格納されているICカードとして使用できる。また、図６（ｅ）の更新手順４や図６（ｍ）の更新手順１２においても、格納されているべき鍵や証明書の数を知ることができれば、ICカード６の使用に必要のない鍵や証明書を無視することで更新処理の途中であってもICカード６を正しく使用できる。
【００５７】
このように、新旧データの整合性を維持しつつICカード６の更新処理を行うことにより、セキュリティが確保された施設において新しいICカード６を発行して書留等の輸送手段を介して利用者に送付する必要がなくなり、輸送コストを節約できると共に古いICカード６の廃棄による環境への影響も低減できる。
【００５８】
この実施の形態によれば、ICカード６の認証に成功すると、サーバ２はICカード６内に既に記憶されたICカード発行用データが有るか無いかを判定し、既に記憶されたICカード発行用データが無いと判定されるとICカード６が受信した発行工程の情報を含むICカード発行用データをこのICカード発行用データに対応して予め定められたデータ用領域の所定領域に記憶させ、既に記憶されたICカード発行用データが有ると判定されるとICカード６が受信した発行工程の情報を含むICカード発行用データをICカード内の予め定められた所定領域とは異なるデータ用領域の空き領域に記憶し、空き領域にICカード発行用データを記憶した場合には既に記憶されていたICカード発行用データを削除することにより、実施の形態２に記載の効果に加えて、ICカード更新処理が中断された場合であっても中断された処理を容易に特定することができICカード６の更新処理を途中から再開することができる。また、上記のとおり新旧のICカード発行用データの整合性がとれる順序で更新処理を行うため、一部の更新処理については更新処理の途中であってもICカードを継続して使用することができる。
【００５９】
また、サーバ２は上記ICカード６に対応するため、進捗管理用の専用領域を持たないICカード６であっても更新処理の進捗状況を管理することができる。
【符号の説明】
【００６０】
１  ICカード発行システム
２  サーバ
２１  要求受付部
２２  鍵・証明書発行部
２３  イメージ生成部
２４  APDU送受信部
４  クライアント
４１  要求発行部
４２  APDU転送部
６  ICカード
【図１】
0005413326.tif 000002
【図２】
0005413326.tif 000003
【図３】
0005413326.tif 000004
【図４】
0005413326.tif 000005
【図５】
0005413326.tif 000006
【図６】
0005413326.tif 000007