説明

ICカード発行方法、及びICカード発行システム

【課題】ICカード発行処理の進捗状況を管理する管理データ用に専用の記憶領域を設けることなく、ICカード発行処理の進捗状況を管理できるICカードを得る。
【解決手段】ICカード発行システム1はサーバ2、ネットワーク3、ネットワーク3を介してサーバ2と通信可能に接続されたクライアント4、クライアント4に有線接続されたICカードリーダライタ5、ICカードリーダライタ5に着脱可能に設けられたICカード6で構成され、サーバ2はICカード発行工程の情報を含むICカード発行用データを生成してICカード6へ送信し、ICカード6は受信したICカード発行用データをICカード6内のデータ用記憶領域に記憶する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、ICカードの発行に関し、特にICカードの発行の途中で処理が中断した場合の処理の再開に関するものである。
【背景技術】
【0002】
ICカードの発行工程を管理する管理方法として、ICカードに内蔵されたEEPROM内にテーブルを用意し、各発行処理が実行済みであるかを示す「未/済」情報を書き込む領域と、その発行処理の結果を示す「結果」情報を書き込む領域とを備え、このテーブルを読み出すことによりICカードの発行工程の履歴を確認する方法がある(例えば、特許文献1参照)。
また、複数の関連性のあるデータの書き込み最中に障害が生じてもデータの整合性を維持する情報処理方法として、データをブロック単位で記憶するデータ領域と、データ領域とは異なる領域であってブロックの番号を複数記憶する第1および第2の領域とを備え、データを第1または第2の領域のうち一方の領域が記憶しているブロック番号に対応するデータ領域のブロックに書き込み、そのデータを書き込んだブロックのブロック番号を第1または第2の領域の他方に記憶させ、記憶させた後に第1または第2の領域のうち一方の領域が記憶しているデータを消去する方法がある(例えば、特許文献2参照)。
【先行技術文献】
【特許文献】
【0003】
【特許文献1】特開平5−160633
【特許文献2】特開平11−25003
【発明の概要】
【発明が解決しようとする課題】
【0004】
しかしながら、特許文献1に記載のICカード発行工程の管理方法及び特許文献2に記載の情報処理方法のいずれも、データを記憶する領域とは別にデータの処理状態を記憶する領域を設けているため、これらの方法を用いてICカードの発行を行うには発行過程のデータ処理状態を記憶する専用領域を備える必要があり、ICカードのようにデータを記憶する領域と処理状態を記憶する領域の合計領域に制限がある場合には、データを記憶する領域を削減しなければならないという問題があった。
【0005】
本発明はこのような問題を解決するためになされたもので、ICカード発行処理における複数工程を管理するために、ICカード内に工程管理専用の記憶領域を設けることなく、ICカード内のデータ記憶領域を用いて工程管理ができるICカード発行方法を得ることを目的とする。
【課題を解決するための手段】
【0006】
本発明に係るICカード発行方法は、ICカード発行装置とICカード間で行われる複数の発行工程の進捗をICカード発行装置が確認しながらICカードを発行するICカード発行方法において、ICカード発行装置が発行工程の情報を含むICカード発行用データを生成する生成ステップと、生成ステップにより生成されたICカード発行用データをICカードへ向けて送信する送信ステップと、ICカードがICカード発行装置の送信ステップにより送信されたICカード発行用データを受信する受信ステップと、受信ステップにより受信された発行工程の情報を含むICカード発行用データをICカード内に設けられたデータ用領域に記憶する記憶ステップと、を備えたものである。
【発明の効果】
【0007】
本発明によれば、ICカード発行方法は、ICカード発行装置とICカード間で行われる複数の発行工程の進捗をICカード発行装置が確認しながらICカードを発行するICカード発行方法において、ICカード発行装置が発行工程の情報を含むICカード発行用データを生成する生成ステップと、生成ステップにより生成されたICカード発行用データをICカードへ向けて送信する送信ステップと、ICカードがICカード発行装置の送信ステップにより送信されたICカード発行用データを受信する受信ステップと、受信ステップにより受信された発行工程の情報を含むICカード発行用データをICカード内に設けられたデータ用領域に記憶する記憶ステップと、を備えたことにより、ICカード発行の際にICカード発行装置とICカード間で行われる複数の発行工程の進捗を、ICカード内のICカード発行用データを記憶する領域に記憶できるため、進捗管理用に専用の記憶領域を設けることなく、ICカードの発行工程を管理できる。
【図面の簡単な説明】
【0008】
【図1】本発明の実施の形態1に係るICカード発行システムの構成を示す図である。
【図2】図1に記載のICカードのファイル構成を示す図である。
【図3】図1に記載のサーバのフローチャートを示す図である。
【図4】図1に記載のサーバとICカード間の処理シーケンスを示す図である。
【図5】本発明の実施の形態3に係るサーバのフローチャートを示す図である。
【図6】本発明の実施の形態3に係るICカード発行方法の手順を示す図である。
【発明を実施するための形態】
【0009】
実施の形態1.
本発明を実施する実施の形態1におけるICカード発行システムの構成を図1ないし図4を用いて説明する。図1において、ICカード発行システム1はサーバ2すなわちICカード発行装置と、ネットワーク3を介してサーバ2と通信可能に接続されたクライアント4すなわちICカード発行用データ転送装置と、クライアント4に有線接続されたICカードリーダライタ5と、ICカードリーダライタ5に着脱可能に設けられたICカード6とで構成されている。
【0010】
サーバ2はクライアント4からのICカード発行要求を受け付ける要求受付部21と、受け付けたICカード発行要求に応じてICカード6へ書き込むための鍵や証明書等の認証データを生成して保管する鍵・証明書発行部22と、生成された鍵や証明書から実際にICカードへ格納されるファイルのイメージを生成するイメージ生成部23と、構成された各ファイルのイメージからICカード6に送信可能なコマンドを生成し、このコマンドを含むデータをネットワーク3へ向けて送信すると共に、ICカード6からコマンドに対して発せられるレスポンスを受信するAPDU(Application Data Unit)送受信部と、を備えている。
鍵・証明書発行部22は耐タンパー性を有し、証明書を発行する際に必要となるプライベート鍵、公開鍵証明書、PIN(Personal Identification Number)等の情報を保管している。
【0011】
クライアント4は、外部からICカード6内に登録する利用者の氏名等の情報を取得する入力部(図示しない)と、サーバ2に対するICカード発行要求を生成し、取得した利用者の氏名等の情報と共にネットワーク3へ向けて送信する要求発行部41と、サーバ2からICカード6へ向けて送信されたコマンドを含むICカード発行用データ及びこのコマンドに対するICカード6からサーバ2へのレスポンスを含むICカード発行用データを転送するAPDU転送部42と、を備えている。
ICカードリーダライタ5は、クライアント4から転送されたコマンドを含むICカード発行用データをICカード6に書き込む機能、及びICカード6からコマンドへのレスポンスを読み出す機能を有するものであって、ICカード6はICカードリーダライタ5により書き込まれたプライベート鍵、公開鍵証明書、PIN等の認証データを表面に施された印刷やエンボス等の記憶手段によって保持している。また、図示していないが、ICカード6はAPDU転送部42から転送されたコマンドを含むICカード発行用データを受信する受信手段と、受信したICカード発行用データをICカード6内のメモリ(図示しない)に記憶する記憶手段を有する。
【0012】
(ICカードのファイル構造)
図2はJIS X 6320-15の規格に準拠したICカード6のICカード発行用データを記憶するデータ領域のファイル構造の一例を示す図である。ICカード6はICカード発行システム1が取り扱うファイル群を示すファイルとしてDedicated File(以下、DFと称する)を有し、DF配下にはICカード発行用データを格納する領域として複数のElementary File(以下、EFと称する)が設けられている。図2では、CIA(Cryptographic Information Application)がDFであり、CIA以下の他のすべてのファイルがEFである。なお、EFの数や大きさはICカード製造時に決定されるものである。また、このICカード6はICカード発行工程の進捗情報を管理する管理用データの専用領域は備えていない。
【0013】
EFのうち、認証情報オブジェクトを格納するAOD、プライベート鍵オブジェクトを格納するPrKD、公開鍵オブジェクトを格納するPuKD、証明書オブジェクトを格納するCDは、論理的なデータの種類によりオブジェクトファイルとも呼ばれる。
【0014】
オブジェクトファイル以外のEFには、認証情報として一般利用者のパスワードを格納するUserPIN、認証情報として管理者のパスワードを格納するSOPIN、プライベート鍵を格納するPriKey1及びPriKey2、公開鍵を格納するPubKey1及びPubKey2、公開属性を有する証明書を格納するPublic、プライベート属性を有する証明書を格納するPrivate、CIA配下のICカード6の情報を示すCIAInfo、オブジェクトファイルへのポインタを格納するOD、Public及びPrivateの空き領域を管理するUnusedSpace等がある。UserPIN及びSOPINのパスワードはAOD内の認証情報オブジェクトから参照されるものであり、PriKey1及びPriKey2のプライベート鍵はPrKD内のプライベート鍵オブジェクトから、PubKey1及びPubKey2の公開鍵はPuKD内の公開鍵オブジェクトから参照されるものである。また、Publicの公開属性を有する証明書及びPrivateのプライベート属性を有する証明書はCD内の証明書オブジェクトからそれぞれ参照されるものである。
【0015】
各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においても複数のオブジェクトが格納される場合は同様である。
【0016】
UnusedSpaceにはPKCS#15で定義されているUnusedSpace型のオブジェクトがDERエンコードされた形式で複数格納され、これらのUnusedSpace型のオブジェクトには空き領域が存在するEFの情報、先頭からのバイト数の情報、長さを示すバイト数の情報がデータとして含まれている。また、AODにはAuthenticationObjectChoice型のオブジェクトがDERエンコードされた形式で複数格納され、このオブジェクトとして、パスワードを示すpwdがUserPINまたはSOPINを示すデータとして選択されている。
【0017】
PrKDにはPriKey1またはPriKey2を示すデータを含むPrivateKeyChoice型のprivateRSAKey等のオブジェクトがDERエンコードされた形式で複数格納され、PuKDにはPubKey1またはPubKey2を示すデータを含むPublicKeyChoice型のpublicRSAKey等のオブジェクトがDERエンコードされた形式で複数格納されている。
CDには先頭からのバイト数の情報及び長さを示すバイト数の情報と共に、PublicまたはPrivateを示すCertificateChoice型のx509Certificate等のオブジェクトがDERエンコードされた形式で複数格納されている。
【0018】
UserPINにはICカードに特有の形式でパスワードを認証するためのデータが格納され、UserPINが認証されるとPriKey1及びPriKey2の使用及びPrivateの読み込みが可能になる。SOPINにはICカードに特有の形式でパスワードを認証するためのデータに加え、製造時にデフォルトのパスワードを認証するためのデータが格納されており、SOPINが認証されると全EFの変更が可能になる。
PriKey1及びPriKey2にはそれぞれプライベート鍵が格納されており、これらの鍵を使用することでICカード6内部での演算、すなわち電子署名の生成や暗号化されたデータの復号化が可能となる。
PubKey1、PubKey2、Public、PrivateといったEFは指定されたデータを保存したり読み出したりする基本機能のみを有し、PubKey1及びPubKey2には先頭領域から公開鍵が1つだけ格納され、Public及びPrivateには複数の証明書が格納されている。
【0019】
(ICカード発行手順)
ここで、CIAInfoを利用してICカードを発行する手順について説明する。
クライアント4の要求発行部41から、ネットワーク3を介してサーバ2にICカード利用者の氏名を指定したICカード発行要求が送信されると、サーバ2の要求受付部21はICカード発行要求を受信し、正当性を確認して鍵・証明書発行部22に鍵及び証明書の発行を指示する。このとき、クライアント4から送信されるICカード発行要求には、ICカード利用者の氏名の他に利用者が申請可能な項目や発行要求の送信権を示す情報等が含まれていても良い。
【0020】
鍵・証明書発行部22は、要求受付部21から鍵及び証明書の発行指示を受けるとRSAの鍵対すなわちプライベート鍵と公開鍵を生成し、この公開鍵とICカード発行要求で指定された利用者の氏名、及びシステムに設定されている証明書のプロファイル等を用いて公開鍵証明書を生成する。そして、生成したRSAの鍵対、公開鍵証明書、生成した公開鍵証明書の上位公開鍵証明書をイメージ生成部23へ伝達する。
【0021】
イメージ生成部23は、生成されたRSAの鍵対からPrKD及びPriKey1に格納すべきデータを、公開鍵証明書からCD及びPublicに格納すべきデータをそれぞれ生成する。また、イメージ生成部23は、ICカード発行システム1に設定されているICカード6のプロファイルに基づいて、CIAInfo、OD、AODに格納すべきデータを生成し、生成した各データに対応するパスワードをUserPIN及びSOPINに格納するデータとして生成する。各EFに格納されるデータはICカード6と同様のファイル構成を構築し、サーバ2内のメモリ(図示しない)に記録される。
【0022】
イメージ生成部23によるイメージの生成が完了すると、APDU送受信部24は、メモリに記録されたICカード6のファイル構成からICカード6に対するコマンド及びICカード6との間で行う処理シーケンスを構成し、クライアント4に向けてICカード6に対するコマンドを送信する。ICカード6に対するコマンドとしては、例えば、JIS X 6320-4(ISO/IEC 7816-4)に準拠した形式のものが使用できる。
【0023】
APDU送受信部24から送信されたコマンドはネットワーク3を介してクライアント4に到達し、クライアント4内のAPDU転送部42によりICカードリーダライタ5に挿入されたICカード6に向けて転送される。ICカード6からは受信したコマンドに対するレスポンスが生成され、このレスポンスを含むICカード発行用データがICカードリーダライタ5に読み取られてクライアント4に送信される。クライアント4のAPDU転送部42は、ICカードリーダライタ5から受信したICカード発行用データをネットワーク3を介してサーバ2に転送する。以降、同様の手順によりサーバ2とICカード6間の通信が必要な回数繰り返される。
【0024】
(サーバの処理)
サーバ2が行う処理フローを図3に示す。
サーバ2のAPDU送受信部24はまずS1でDFを選択し、S2でICカード6内のデータを読み込んで発行工程を確認し、パスワードが変更されているか否かを確認する。パスワードが変更されていなければS3にて出荷時のパスワードを用いて認証を行い、パスワードが変更されていればS3にて変更後の運用時のパスワードを用いて認証を行う。ICカード6の認証に成功するとS2にてICカード6から読み込んだデータを用いてS4により発行工程を確認する。その後、S5でICカード6に所定のデータの書き込みを行いICカード発行処理を完了する。使用するコマンドは、例えば、DFの選択はSELECT、ICカード6の認証はVERIFY、パスワードの変更はCHANGE REFERENCE DATA、ICカード6内のデータ読み込みはREAD BINARY、ICカード6へのデータ書き込みはUPDATE BINARY、等がある。
【0025】
(オブジェクトの構造)
ここで、サーバ2とICカード6間で送受信されるコマンドおよびレスポンスを含むオブジェクトの構造について説明する。
ICカード6に送信されるオブジェクトの構造は、以下のようになっている。
「CLA INS P1 P2 Lc コマンドデータ Le」
CLAはクラスバイトと呼ばれる通信条件を規定する1バイトのデータ、INSはコマンドを示す1バイトのデータである。また、P1とP2はそれぞれ異なるコマンドパラメータを示す1バイトのデータ、Lcはコマンドデータの長さを示すデータ、コマンドデータはコマンドに応じたデータ、LeはICカード6から送信されるレスポンスデータの許容する長さを示すデータである。
一方、ICカード6が送信するオブジェクトの構造は、以下のようになっている。
「レスポンスデータ SW1 SW2」
レスポンスデータはコマンドの実行結果を示すデータ、SW1及びSW2は実行結果のステータスを示す1バイトのデータである。
【0026】
ここで、サーバ2とICカード6との間で送受信されるオブジェクトを、具体例を用いて説明する。例えば、APDU送受信部24からICカード6に送信されるUPDATE BINARYであって、CIAInfoの先頭1バイトに0x00を書き込むものはコマンドデータに対応する部分に0x00が格納されるので以下のようになる。
「00 D6 92 00 01 00」
なお、数字は16進表記したものであって、Leは省略されている。
【0027】
ICカード6にオブジェクトが伝達されてUPDATE BINARYのコマンドが正常に完了すると、ICカード6は以下のバイナリ列をレスポンスとしてサーバ2に返す。
「90 00」
このレスポンスは、レスポンスデータが無くコマンドが正常に終了したことを示している。
【0028】
一方、ICカード6のCIAInfoの先頭1バイトに格納されたデータを読み出す際にAPDU送受信部24から送信されるREAD BINARYは以下のようになる。
「00 B0 92 00 01」
READ BINARYは読み出しを行うコマンドであるためコマンドデータは存在せず、Leは省略されている。
【0029】
ICカード6にオブジェクトが伝達されてREAD BINARYのコマンドが正常に完了すると、ICカード6は以下のバイナリ列をレスポンスとしてサーバ2に返す。
「00 90 00」
先頭の1バイトはレスポンスデータが0x00であることを示しており、後の2バイトはコマンドが正常に終了したことを示している。
【0030】
(オブジェクトの処理シーケンス)
サーバ2の処理フロー及びオブジェクトの構造について説明したので、ここではICカード発行時にサーバ2とICカード6との間で送受信されるオブジェクトの処理シーケンスについて説明する。
ICカード6を発行するにあたって、サーバ2はまず、ICカード6に対してCIAを選択する。CIAの選択に成功するとREAD BINARYを送信してCIAInfoの先頭1バイトに格納されたデータを読み込み、次の処理シーケンスを決定する。
なお、ここではCIAInfoの先頭1バイトを進捗管理用の領域として用いるため、この領域のデータを読み込むが、ICカード発行処理の途中で進捗管理以外の用途で更新されない領域であれば、位置及びサイズはこれに限るものではない。
【0031】
READ BINARYに対するレスポンスデータが0xFFまたは0x00の場合、S42のようにサーバ2はレスポンスを送信したICカード6が新品であると判定して最初から順にICカード6の発行処理を実行する。S43のように、READ BINARYに対するレスポンスデータが後述するICカード発行処理の各ステップのいずれかを示している場合は、ICカード発行処理が中断していると判断して該当するStepの直後から順にICカード6の発行処理を実行する。また、ICカード6の発行処理が完了するとCIAInfo型のオブジェクトはDERエンコードされ、CIAInfoの先頭1バイトに0x30が必ず格納されることから、READ BINARYに対するレスポンスデータが0x30の場合にはS44のようにサーバ2はICカード発行処理が完了していると判定して発行処理を行わない。
【0032】
ICカード6の発行処理を行うには、まずSOPINに対してVERIFYを実行して認証を得る必要がある。最初から処理を開始する場合は出荷時のパスワードを用いてSOPINに対してVERIFYを実行し、途中から処理を開始する場合は運用時のパスワードを用いてSOPINに対してVERIFYを実行する。なお、運用時のパスワードは、SOPINの認証後に実行されるCHANGE REFERENCE DATAにより得られるものである。
【0033】
SOPINの認証後に行われるICカード6の発行処理はJIS X 6320-15の規格に準拠する場合、以下の15のStepがある。シーケンスを図4に示すと共に、各Stepの詳細について説明する。
Step1:管理者のパスワードを格納するSOPIN内のパスワードを運用時のパスワードに変更する。このとき、パスワード変更用コマンドであるCHANGE REFERENCE DATAの実行後、進捗管理用の領域として用いられるCIAInfoの先頭1バイトに格納されるデータを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に更新される。
【0034】
このように、運用時に使用されるデータであるCIAInfo型のオブジェクトの先頭1バイトにICカード発行処理の進捗状況を示すデータ、すなわちICカード6発行工程の情報を書き込むことにより、進捗管理用の専用領域を持たないICカード6であっても内部に進捗状況を示すデータを保存することができるため、発行処理が中断された場合にその進捗状況を示すデータを確認することで途中の処理から容易に再開することができる。
なお、ネットワークにおける通信やICカードのコマンドの暗号化については詳細説明を省略したが、パスワードやプライベート鍵など秘匿しなければならない情報を扱う通常の場合と同様に、ネットワークについてはTLS(Transport Layer Security)やIPSec(Security Architecture for the Internet Protocol)等を適用し、ICカード6についてはSecure Messaging(SM)を使用するものとする。
【0035】
この実施の形態によれば、運用時に使用されるデータの一部であって運用中に固定値が格納される領域にICカード発行処理の進捗状況を示すデータを書き込むことにより、進捗管理用の専用領域を持たないICカード6であってもICカード6内部に進捗状況を示すデータを保存でき、発行処理が中断された場合にその中断された処理を容易に特定してICカード6の発行処理を途中から再開することができる。
また、ネットワーク3を介してICカード発行処理を行うため、セキュリティ管理された施設でICカード6を発行する場合には利用者が発行申し込みをしてから手元に届くまでに数週間かかる時間を大幅に削減することができ、ICカード6の即時発行も可能になる。
【0036】
また、サーバ2は上記ICカード6に対応するため、進捗管理用の専用領域を持たないICカード6であっても発行処理の進捗状況を管理することができる。
【0037】
実施の形態2.
実施の形態2に係るICカード発行システム1の構成は実施の形態1と同じであるため説明を省略する。実施の形態1ではICカード発行処理の進捗状況を示すためにCIAInfoの先頭1バイトに格納されるデータの領域を使用しているが、本実施の形態ではCIAInfoに格納するオブジェクトの末尾に3バイト追加し、この領域を使用する。以下、実施の形態1と異なる処理シーケンスについて説明する。
【0038】
ICカード6を発行するにあたって、サーバ2は実施の形態1と同様にS1からS3の工程を実施する。例えばS1においてCIAを選択した場合、CIAInfo型のオブジェクトの先頭から2バイト目にオブジェクトの長さを示すデータが格納されていることから、READ BINARYを実行してCIAInfoの2バイト目に格納されているデータを読み込む。読み込んだデータが0xFFまたは0x00であればICカード6が新品であると判定し、本来の値であれば処理が完了していると判定し、本来の値に3を付加した値であれば処理が中断していると判定する。
【0039】
ICカード6が新品であると判定した場合、サーバ2はまず出荷時のパスワードを用いてSOPINの認証を得る。その後CIAInfoにデータを書き込むためにUPDATE BINARYを実行し、オブジェクト直後に「8A 01 01」のデータを書き込み、このオブジェクトの先頭から2バイト目に本来の値に3を付加した値を書き込む。以降、実施の形態1に記載のStep1からStep14の処理を順次行う。ただし、進捗管理用の領域として使用するのはCIAInfo型のオブジェクト直後から3バイト目とする。また、進捗管理用の領域に書き込むデータは1加算したデータとする。
【0040】
一方、処理が中断していると判定した場合、サーバ2はまずCIAInfo型のオブジェクト直後から3バイト目に格納されているデータからICカード発行処理のうち最後に発行処理が成功したStepを特定して、SOPINのパスワードを変更していなければ出荷時のパスワードを用いてSOPINの認証を得、SOPINのパスワードを変更していれば運用時のパスワードを用いてSOPINの認証を得る。その後、処理が中断した直後のStepからICカード発行処理を再開する。以降、Step14までの各処理を順次行う点はICカード6が新品の場合と同様である。
なお、処理が中断された場合、CIAInfo型のオブジェクトは「issuing Status [10] OCTET STRING OPTIONAL」の要素が追加されたオブジェクトと解釈できるため、オブジェクトの読み込み時にサーバ2等が支障をきたすことはない。
【0041】
Step15については、いずれの場合も最初にCIAInfoに対してUPDATE BINARY UPDATEを実行しているのでStep14の後にはこの発行処理は行わない。代わりにCIAInfo型のオブジェクトの先頭から2バイト目を本来の値に戻すと共に、CIAInfo型のオブジェクト直後の3バイトの値すべてを0xFFに変更する。
【0042】
この実施の形態によれば、運用時に使用されるデータを3バイト分拡張し、この拡張した領域にICカード発行処理の進捗状況を示すデータを書き込むことにより、実施の形態1と同様に、進捗管理用の専用領域を持たないICカード6であっても内部に進捗状況を示すデータを保存でき、発行処理が中断された場合にその中断された処理を容易に特定してICカード6の発行処理を途中から再開することができる。
【0043】
実施の形態3.
実施の形態1及び実施の形態2ではICカード6の発行処理について説明した。本実施の形態では、既に発行されているICカードのプライベート鍵、公開鍵、公開鍵証明書を更新するICカード更新方法について説明する。なお、ここではICカード6の更新は発行の一形態とする。
【0044】
ICカード発行システム1の構成及びICカード6の初期発行の方法は実施の形態1と同じとする。ICカード6の発行方法のうち、初期発行は実施の形態1または実施の形態2のいずれであっても良いが、ICカード6の更新すなわち2回目以降の発行では実施の形態2の方法を用いる。
【0045】
図5にサーバ2が行う処理のフローチャートを示す。サーバ2はまずS1でDFを選択し、S2でICカード6内のデータを読み込んで発行工程を確認し、パスワードが変更されているか否かを確認する。パスワードが変更されていなければS3にて出荷時のパスワードを用いて認証を行い、パスワードが変更されていればS3にて変更後の運用時のパスワードを用いて認証を行う。ICカード6の認証に成功するとS2にてICカード6から読み込んだデータを用いてS4により発行工程を確認する。その後、S5でICカード6に所定のデータの書き込みを行いICカード発行処理を完了する。
【0046】
S5のICカード6への書き込みの際、まずS51にてICカード6内に発行処理用の既存データがあるか無いかを判定し、既存データが無い場合はS52に進んでICカード6内のデータ領域である予め定められた所定の領域に発行処理用のデータを書き込む。既存データが有る場合はS53にてICカード6内の予め定められた所定領域とは異なる空き領域にデータを書き込み、S54にて既存データを削除し、S55で空き領域に書き込んだデータを既存データが格納されていた所定領域にコピーし、S56にて空き領域に書き込んだデータを削除する。
使用するコマンドは、例えば、DFの選択はSELECT、ICカード6の認証はVERIFY、パスワードの変更はCHANGE REFERENCE DATA、ICカード6内のデータ読み込みはREAD BINARY、ICカード6へのデータ書き込みはUPDATE BINARY、等がある。
【0047】
ICカード6に格納されている公開鍵証明書には、プライベート鍵の危殆化による漏洩や失効リストの肥大化を防止する等の理由により、数年程度の有効期間が設けられている。例えば実施の形態1に記載のファイル構成を有するICカード6を更新する場合、PrKD、PuKD、CD、PriKey1、PriKey2、PubKey1、PubKey2、Publicを変更する必要がある。また、Publicの変更に伴いUnusedSpaceも変更する必要がある。
以下、図6を用いてCD、Pubic、UnusedSpaceの関係に特化して説明する。
なお、CDに格納されるCertificateChoice型のオブジェクトは旧テンプレートまたは新テンプレート、Publicに格納される公開鍵証明書のデータは旧データまたは新データ、UnusedSpaceに格納されるUnusedSpace型のオブジェクトは空き領域として示す。
【0048】
図6(a)は更新前の状態を示しており、旧テンプレートはCDの先頭、旧データはPublicの先頭に格納され、Publicの空き領域を示すオブジェクトもUnusedSpaceの先頭に格納されている。図6(b)は更新手順1によりPublicの旧データより後ろの領域に新データが格納された状態を示している。なお、新データはPublicの先頭から新データの大きさ分よりも後ろに格納される。図6(c)は更新手順2により新データをPublicに格納することにより変化した空き領域を示すオブジェクトがUnusedSpaceに格納された状態を示している。この例では旧データと新データの間に隙間があるため、2つの空き領域が追加されている。
【0049】
図6(d)は更新手順3によりUnusedSpaceに最初から格納されていた空き領域を示すオブジェクトが削除された状態を示し、図6(e)は更新手順4によりPublicの新データを参照する新テンプレートがCDに格納された状態を示している。なお、新テンプレートはPublicに格納された新データと同様に、必要であれば後ろの領域にずらして格納される。図6(f)は更新手順5によりCDから旧テンプレートが削除された状態を、図6(g)は更新手順6により旧データの削除により変化した空き領域を示すオブジェクトがUnusedSpaceの先頭に格納された状態を示している。
【0050】
図6(h)は更新手順7により旧データと新データの間に存在する空き領域を示すオブジェクトがUnusedSpaceから削除された状態を示している。なお、旧データと新データの間に空き領域が存在しない場合はこのオブジェクトが存在しないため、この更新手順7は省略される。図6(i)は更新手順8によりPublicから旧データが削除された状態を示し、図6(j)は更新手順9によりPublicの先頭に新データが格納された状態を示している。図6(k)は図6(b)で格納された新データと図6(j)で格納された新データの間の空き領域を示すオブジェクトが更新手順10によりUnusedSpaceに格納された状態を示している。空き領域が存在しない場合はこの更新手順10は省略される。
【0051】
図6(l)は、図6(g)でUnusedSpaceの先頭に格納された空き領域を示すオブジェクトが更新手順11により削除された状態を示している。図6(m)は更新手順12によりCDの先頭に新テンプレートが格納された状態を示し、図6(n)は図6(e)でCDに格納された新テンプレートが更新手順13により削除された状態を示している。図6(o)は、図6(b)で格納された新データより後ろの領域を空き領域として示すオブジェクトが更新手順14によりUnusedSpaceの先頭に格納された状態を示している。
【0052】
図6(p)はUnusedSpaceに格納された空き領域を示すオブジェクトのうち、先頭に格納されたオブジェクト以外が更新手順15により削除された状態を示している。図6(q)は、図6(b)でPublicの旧データが格納されていた領域よりも後ろの領域に格納された新テンプレートが削除され、ICカードの更新処理が完了した状態を示している。
上記の更新処理の手順を要約すると、データを格納する時すなわちデータを書き込む時はデータ、空き領域、テンプレートの順に処理を行い、データを削除する時はテンプレート、空き領域、データの順に処理を行うことになる。
【0053】
PrKD、PriKey1、PriKey2の関係においては、CDの代わりにPrKD、Publicの代わりにPriKey1及びPriKey2を用い、CDとPublic間の処理手順で先頭に格納されるデータをPriKey1に、それ以外のデータをPriKey2に格納することにより、上記と同様に新旧データの整合性を維持しつつICカード6の更新処理を行うことができる。
【0054】
また、PuKD、PubKey1、PubKey2の関係においては、CDの代わりにPuKD、Publicの代わりにPubKey1及びPubKey2を用いることでPrKD、PriKey1、PriKey2の関係と同様に新旧データの整合性を維持しつつICカード6の更新処理を行うことができる。
【0055】
ICカード更新処理の全体としては、CDとPublic、PrKDとPriKey1とPriKey2、PuKDとPubKey1とPubKey2、それぞれについて更新処理を実行するのではなく、まずPriKey1、PriKey2、PubKey1、PubKey2、Publicに新データを格納し、PrKD、PuKD、CDに新プレートを格納するという手順で更新する。
【0056】
このような手順を踏むことで、図6(d)の更新手順3までは古い鍵や証明書が格納されているICカードとして使用することができ、図6(f)の更新手順5から図6(p)の更新手順15までは更新手順12を除いて、新しい鍵や証明書が格納されているICカードとして使用できる。また、図6(e)の更新手順4や図6(m)の更新手順12においても、格納されているべき鍵や証明書の数を知ることができれば、ICカード6の使用に必要のない鍵や証明書を無視することで更新処理の途中であってもICカード6を正しく使用できる。
【0057】
このように、新旧データの整合性を維持しつつICカード6の更新処理を行うことにより、セキュリティが確保された施設において新しいICカード6を発行して書留等の輸送手段を介して利用者に送付する必要がなくなり、輸送コストを節約できると共に古いICカード6の廃棄による環境への影響も低減できる。
【0058】
この実施の形態によれば、ICカード6の認証に成功すると、サーバ2はICカード6内に既に記憶されたICカード発行用データが有るか無いかを判定し、既に記憶されたICカード発行用データが無いと判定されるとICカード6が受信した発行工程の情報を含むICカード発行用データをこのICカード発行用データに対応して予め定められたデータ用領域の所定領域に記憶させ、既に記憶されたICカード発行用データが有ると判定されるとICカード6が受信した発行工程の情報を含むICカード発行用データをICカード内の予め定められた所定領域とは異なるデータ用領域の空き領域に記憶し、空き領域にICカード発行用データを記憶した場合には既に記憶されていたICカード発行用データを削除することにより、実施の形態2に記載の効果に加えて、ICカード更新処理が中断された場合であっても中断された処理を容易に特定することができICカード6の更新処理を途中から再開することができる。また、上記のとおり新旧のICカード発行用データの整合性がとれる順序で更新処理を行うため、一部の更新処理については更新処理の途中であってもICカードを継続して使用することができる。
【0059】
また、サーバ2は上記ICカード6に対応するため、進捗管理用の専用領域を持たないICカード6であっても更新処理の進捗状況を管理することができる。
【符号の説明】
【0060】
1 ICカード発行システム
2 サーバ
21 要求受付部
22 鍵・証明書発行部
23 イメージ生成部
24 APDU送受信部
4 クライアント
41 要求発行部
42 APDU転送部
6 ICカード

【特許請求の範囲】
【請求項1】
ICカード発行装置とICカード間で行われる複数の発行工程の進捗を前記ICカード発行装置が確認しながら前記ICカードを発行するICカード発行方法において、
前記ICカード発行装置が発行工程の情報を含むICカード発行用データを生成する生成ステップと、
前記生成ステップにより生成された前記ICカード発行用データを前記ICカード発行装置が前記ICカードへ向けて送信する送信ステップと、
前記送信ステップにより送信された前記ICカード発行用データを前記ICカードが受信する受信ステップと、
前記受信ステップにより受信された前記発行工程の情報を含むICカード発行用データを前記ICカード内に設けられたデータ用領域に記憶する記憶ステップと、
を備えたことを特徴とするICカード発行方法。
【請求項2】
ICカード発行装置とICカード間で行われる複数の発行工程の進捗を前記ICカード発行装置が確認しながら前記ICカードを発行するICカード発行方法において、
前記ICカード発行装置が発行工程の情報を含むICカード発行用データを生成する生成ステップと、
前記生成ステップにより生成された前記ICカード発行用データを前記ICカード発行装置が前記ICカードへ向けて送信する送信ステップと、
前記送信ステップにより送信された前記ICカード発行用データを前記ICカードが受信する受信ステップと、
前記ICカード内に既に記憶された前記ICカード発行用データが有るか無いかを前記ICカード発行装置が判定する判定ステップと、
前記判定ステップにより前記既に記憶されたICカード発行用データが無いと判定された場合に前記受信ステップにより受信された前記発行工程の情報を含むICカード発行用データを該ICカード発行用データに対応して予め定められた前記ICカード内のデータ用の所定領域に記憶し、前記既に記憶されたICカード発行用データが無いと判定された場合に前記受信ステップにより受信された前記発行工程の情報を含むICカード発行用データを前記データ用領域の前記予め定められた所定領域とは異なる空き領域に記憶する記憶ステップと、
前記記憶ステップにより前記発行工程の情報を含むICカード発行用データが記憶された後、前記既に記憶されたICカード発行用データを削除する削除ステップと、を備えたことを特徴とするICカード発行方法。
【請求項3】
ICカード発行装置とICカード間で行われる複数の発行工程の進捗を前記ICカード発行装置が確認しながらICカードを発行するICカード発行システムにおいて、
前記ICカード発行装置は、ICカード発行工程の情報を含むICカード発行用データを生成する生成手段と、
前記生成手段により生成された前記ICカード発行用データを前記ICカードへ向けて送信する送信手段と、を有し、
前記ICカードは、前記ICカード発行装置の前記送信手段により送信された前記ICカード発行用データを受信する受信手段と、
前記受信手段により受信された前記発行情報を含むICカード発行用データを前記ICカード内に設けられたデータ用領域に記憶する記憶手段と、
を備えたことを特徴とするICカード発行システム。
【請求項4】
ICカード発行装置とICカード間で行われる複数の発行工程の進捗を前記ICカード発行装置が確認しながら前記ICカードを発行するICカード発行方法において、
前記ICカード発行装置は、ICカード発行工程の情報を含むICカード発行用データを生成する生成手段と、
前記生成手段により生成された前記ICカード発行用データを前記ICカードへ向けて送信する送信手段と、
前記ICカード内に既に記憶された前記ICカード発行用データが有るか無いかを判定する判定手段と、
前記判定手段により前記既に記憶されたICカード発行用データが無いと判定された場合に前記ICカードに前記発行工程の情報を含むICカード発行用データを記憶させた後、前記ICカード内の前記既に記憶されたICカード発行用データを削除する削除手段と、を有し、
前記ICカードの前記記憶手段は、
前記判定手段により前記既に記憶されたICカード発行用データが無いと判定された場合に前記受信手段により受信された前記発行工程の情報を含むICカード発行用データを該ICカード発行用データに対応して予め定められた前記ICカード内のデータ用の所定領域に記憶し、前記既に記憶されたICカード発行用データが有ると判定された場合に前記受信手段により受信された前記発行工程の情報を含むICカード発行用データを前記データ用領域の前記予め定められた所定領域とは異なる空き領域に記憶することを特徴とする請求項3に記載のICカード発行システム。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate


【公開番号】特開2012−38143(P2012−38143A)
【公開日】平成24年2月23日(2012.2.23)
【国際特許分類】
【出願番号】特願2010−178565(P2010−178565)
【出願日】平成22年8月9日(2010.8.9)
【出願人】(000006013)三菱電機株式会社 (33,312)
【Fターム(参考)】