(57)【要約】【課題】ＩＣカードからのデータの読み出し時間を短縮する。【解決手段】データ処理装置１は、ＩＣカード３に記憶されている複数のデータを用いて複数のデータ処理を実行する。実行対象データ処理選択部４は、複数のデータ処理のうち、実行対象のデータ処理を実行対象データ処理として選択する。データ読み出し部５は、実行対象データ処理選択部４により実行対象データ処理が選択された際に、複数のデータのうち実行対象データ処理に用いられるデータを読み出し対象データとして識別し、識別した読み出し対象データをＩＣカード３から読み出す。【選択図】図２
2017021687.tif 000002
【特許請求の範囲】
【請求項１】
ＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）カードに記憶されている複数のデータを用いて複数のデータ処理を実行するデータ処理装置であって、
前記複数のデータ処理のうち、実行対象のデータ処理を実行対象データ処理として選択する実行対象データ処理選択部と、
前記実行対象データ処理選択部により前記実行対象データ処理が選択された際に、前記複数のデータのうち前記実行対象データ処理に用いられるデータを読み出し対象データとして識別し、識別した前記読み出し対象データを前記ＩＣカードから読み出すデータ読み出し部とを有するデータ処理装置。
【請求項２】
前記データ処理装置は、更に、
前記データ読み出し部により読み出されたデータを記憶するメモリ領域を有し、
前記データ読み出し部は、
前記実行対象データ処理選択部により前記実行対象データ処理が選択された際に、前記読み出し対象データが前記メモリ領域に記憶されているか否かを判定し、
前記読み出し対象データが前記メモリ領域に記憶されていない場合に、前記読み出し対象データを前記ＩＣカードから読み出す請求項１に記載のデータ処理装置。
【請求項３】
前記データ読み出し部は、
前記読み出し対象データのみを前記ＩＣカードから読み出す請求項１に記載のデータ処理装置。
【請求項４】
前記データ処理装置は、
前記複数のデータ処理として、複数の暗号処理を行い、
前記実行対象データ処理選択部は、
前記実行対象データ処理として、前記複数の暗号処理のうち実行対象の暗号処理を選択し、
前記データ読み出し部は、
前記実行対象データ処理選択部により前記実行対象データ処理として特定の暗号処理が選択された際に、前記複数のデータのうち前記特定の暗号処理に用いられるデータを前記読み出し対象データとして識別し、識別した前記読み出し対象データを前記ＩＣカードから読み出す請求項１に記載のデータ処理装置。
【請求項５】
ＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）カードに記憶されている複数のデータを用いて複数のデータ処理を実行するコンピュータが行うデータ処理方法であって、
前記コンピュータが、前記複数のデータ処理のうち、実行対象のデータ処理を実行対象データ処理として選択する実行対象データ処理選択ステップと、
前記実行対象データ処理選択ステップにより前記実行対象データ処理が選択された際に、前記コンピュータが、前記複数のデータのうち前記実行対象データ処理に用いられるデータを読み出し対象データとして識別し、識別した前記読み出し対象データを前記ＩＣカードから読み出すデータ読み出しステップとを有するデータ処理方法。
【請求項６】
ＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）カードに記憶されている複数のデータを用いて複数のデータ処理を実行するコンピュータに、
前記複数のデータ処理のうち、実行対象のデータ処理を実行対象データ処理として選択する実行対象データ処理選択ステップと、
前記実行対象データ処理選択ステップにより前記実行対象データ処理が選択された際に、前記複数のデータのうち前記実行対象データ処理に用いられるデータを読み出し対象データとして識別し、識別した前記読み出し対象データを前記ＩＣカードから読み出すデータ読み出しステップとを実行させるデータ処理プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）カードから、ＩＣカードに記憶されているデータを読み出す技術に関する。
【背景技術】
【０００２】
ＩＣカードは、ＰＣ（Ｐｅｒｓｏｎａｌ  Ｃｏｍｐｕｔｅｒ）やワークステーション等の計算機と比較してＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）性能やデータ転送速度性能が低い。
ＩＣカードのデータを用いたデータ処理を行うアプリケーションプログラム（以下、単にアプリケーションという）は、アプリケーションの初期化時やＩＣカードとの接続時に、ＩＣカード内の読み出し可能なデータをすべて読み出してメモリ領域にキャッシュし使用することによって性能向上を行ってきた。
【０００３】
例えば、非特許文献１では、暗号アプリケーションインタフェースの一種であるＰＫＣＳ  ＃１１に準拠した暗号アプリケーションが、ＰＫＣＳ  ＃１５という標準化されたファイル構造を持つＩＣカードを操作する場合に、暗号アプリケーションの初期化時にＩＣカード内のデータを読み出してメモリ領域にキャッシュしている。
【先行技術文献】
【非特許文献】
【０００４】
【非特許文献１】独立行政法人  情報処理推進機構、「ＩＣ・ＩＤカードの相互運用可能性の向上に係る基礎調査  シーズ編  報告書」、２００７年１月１１日掲載、ｐ．１０３〜ｐ．１０７
【発明の概要】
【発明が解決しようとする課題】
【０００５】
ＰＫＣＳ  ＃１５、ＩＳＯ／ＩＥＣ  ７８１６−１５やＪｉｓ  Ｘ  ６３２０−１５のような標準規格で定められたＩＣカード内のファイル構造は汎用性を重視している。
そのため、ＩＣカードの処理に必須となるパスワードやプライベート鍵等のデータファイルに加えて、ＩＣカードのファイル構造の仕様を記述したファイルもＩＣカードに格納されている。
【０００６】
従来のように暗号アプリケーションの初期化時やＩＣカードとの接続時に読み出し可能なすべてのデータを読み出そうとすると、ファイルが多いためデータのキャッシュに時間がかかり、処理全体の時間が遅くなるという課題がある。
【０００７】
この発明は上記のような課題を解決することを主な目的としており、ＩＣカードからのデータの読み出し時間を短縮することを主な目的とする。
【課題を解決するための手段】
【０００８】
本発明に係るデータ処理装置は、
ＩＣ（Ｉｎｔｅｇｒａｔｅｄ  Ｃｉｒｃｕｉｔ）カードに記憶されている複数のデータを用いて複数のデータ処理を実行するデータ処理装置であって、
前記複数のデータ処理のうち、実行対象のデータ処理を実行対象データ処理として選択する実行対象データ処理選択部と、
前記実行対象データ処理選択部により前記実行対象データ処理が選択された際に、前記複数のデータのうち前記実行対象データ処理に用いられるデータを読み出し対象データとして識別し、識別した前記読み出し対象データを前記ＩＣカードから読み出すデータ読み出し部とを有する。
【発明の効果】
【０００９】
本発明によれば、実行対象データ処理が選択された際に、実行対象データ処理に用いられるデータに絞ってＩＣカードから読み出すことによって、データの読み出し時間を短縮することができる。
【図面の簡単な説明】
【００１０】
【図１】実施の形態１に係るシステム構成例を示す図。
【図２】実施の形態１に係るデータ処理装置の機能モジュール構成例を示す図。
【図３】実施の形態１に係るデータ処理装置のソフトウェア構成例を示す図。
【図４】実施の形態１に係るＩＣカードファイル構造例を示す図。
【図５】実施の形態１に係る暗号アプリケーションの基本フローチャートを示す図。
【図６】実施の形態１に係るＩＣカードの処理の詳細フローチャートを示す図。
【図７】実施の形態１に係るＩＣカード情報取得処理のシーケンスを示す図。
【図８】実施の形態１に係る利用者証明書取得処理のシーケンスを示す図。
【図９】実施の形態１に係るプライベート鍵を用いた電子署名処理のシーケンスを示す図。
【図１０】実施の形態１に係るデータ処理装置のハードウェア構成例を示す図。
【発明を実施するための形態】
【００１１】
実施の形態１．
＊＊＊構成の説明＊＊＊
（システム構成例）
図１は、本実施の形態に係るシステム構成例を示す。
【００１２】
図１において、データ処理装置１は、ＩＣカード３に記憶されている複数のデータを用いて複数のデータ処理を行う。
データ処理装置１は、例えば、ＰＣである。
【００１３】
ＩＣカードリーダライタ２は、データ処理装置１に接続されＩＣカード３に対する入出力を行う。
【００１４】
ＩＣカード３は、複数のデータを記憶している。
ＩＣカード３は、ＩＣカードリーダライタ２に挿入される。
データ処理装置１は、ＩＣカードリーダライタ２を介して、ＩＣカード３からデータを読み出す。
【００１５】
（機能モジュール構成例）
図２は、本実施の形態に係るデータ処理装置１の機能モジュール構成例を示す。
【００１６】
図２において、実行対象データ処理選択部４は、複数のデータを用いて実行される複数のデータ処理のうち、実行対象のデータ処理を実行対象データ処理として選択する。
なお、実行対象データ処理選択部４により行われる動作は、実行対象データ選択ステップに対応する。
【００１７】
データ読み出し部５は、実行対象データ処理選択部４により実行対象データ処理が選択された際に、複数のデータのうち実行対象データ処理に用いられるデータを読み出し対象データとして識別する。
そして、データ読み出し部５は、識別した読み出し対象データをＩＣカード３から読み出す。
更に、データ読み出し部５は、ＩＣカード３から読み出したデータを用いて、実行対象データ処理選択部４により選択された実行対象データ処理を実行する。
なお、データ読み出し部５により行われる動作は、データ読み出しステップに対応する。
【００１８】
メモリ領域６は、データ読み出し部５により読み出されたデータを記憶するキャッシュ領域である。
ＩＣカードデータ７は、データ読み出し部５により読み出され、メモリ領域６にキャッシュされたデータである。
【００１９】
（ソフトウェア構成例）
図３は、本実施の形態に係るデータ処理装置１のソフトウェア構成例を示す。
図３において、ＩＣカード３、メモリ領域６、ＩＣカードデータ７は図２に示したものと同様である。
【００２０】
図３では、図２に示す実行対象データ処理選択部４の具体的態様として、上位アプリケーション４００を示し、図２に示すデータ読み出し部５の具体的態様として、暗号アプリケーション５００を示す。
暗号アプリケーション５００は、複数のデータを用いて複数の暗号処理ができる。
上位アプリケーション４００は、暗号アプリケーション５００を呼び出して、複数の暗号処理のうち暗号アプリケーション５００に実行させる暗号処理（実行対象暗号処理）を選択する。
そして、暗号アプリケーション５００は、複数のデータのうち、実行対象暗号処理に用いられるデータを読み出し対象データとして識別し、識別した読み出し対象データをＩＣカード３から読み出す。
そして、暗号アプリケーション５００は、ＩＣカード３から読み出したデータを用いて、実行対象暗号処理を実行する。
【００２１】
以下では、実行対象データ処理選択部４の動作として、上位アプリケーション４００の動作を説明し、データ読み出し部５の動作として暗号アプリケーション５００の動作を説明する。
【００２２】
（ＩＣカードのファイル構造）
図４は、本実施の形態に係るＩＣカード３のファイル構造の一例を示す。
【００２３】
図４では、例としてＪｉｓ  Ｘ  ６３２０−１５の規格に準拠したファイル構造としている。
ＰＫＣＳ  ＃１５やＩＳＯ／ＩＥＣ  ７８１６−１５等の他のＩＣカードファイル構造を定めている規格に準拠してもよい。
【００２４】
ＩＣカード３は暗号アプリケーション５００が取り扱うファイル群を示すファイルとしてＤｅｄｉｃａｔｅｄ  Ｆｉｌｅ（以下、ＤＦと称する）を有する。
そして、ＤＦ配下には、ＩＣカード処理用データを格納する領域として複数のＥｌｅｍｅｎｔａｒｙ  Ｆｉｌｅ（以下、ＥＦと称する）が設けられている。
図４では、ＣＩＡ（Ｃｒｙｐｔｏｇｒａｐｈｉｃ  Ｉｎｆｏｒｍａｔｉｏｎ  Ａｐｐｌｉｃａｔｏｎ）がＤＦであり、ＣＩＡ以下の他のすべてのファイルがＥＦである。
なお、ＥＦの数や大きさはＩＣカード製造時に決定されるものである。
【００２５】
ＥＦのうち、認証情報オブジェクトを格納するＡＯＤ、プライベート鍵オブジェクトを格納するＰｒＫＤ、公開鍵オブジェクトを格納するＰｕＫＤ、証明書オブジェクトを格納するＣＤは、論理的なデータの種類によりオブジェクトファイルとも呼ばれる。
【００２６】
オブジェクトファイル以外のＥＦには、認証情報として一般利用者のパスワードを格納するＵｓｅｒＰＩＮがある。
また、認証情報として管理者のパスワードを格納するＳＯＰＩＮがある。
また、プライベート鍵を格納するＰｒｉＫｅｙ１及びＰｒｉＫｅｙ２がある。
また、公開鍵を格納するＰｕｂＫｅｙ１及びＰｕｂＫｅｙ２がある。
また、公開属性を有する証明書を格納するＰｕｂｌｉｃ、プライベート属性を有する証明書を格納するＰｒｉｖａｔｅがある。
また、ＣＩＡ配下のＩＣカード３の情報を示すＣＩＡＩｎｆｏがある。
また、オブジェクトファイルへのポインタを格納するＯＤ、Ｐｕｂｌｉｃ及びＰｒｉｖａｔｅの空き領域を管理するＵｎｕｓｅｄＳｐａｃｅ等がある。
【００２７】
ＵｓｅｒＰＩＮ及びＳＯＰＩＮのパスワードは、ＡＯＤ内の認証情報オブジェクトから参照される。
また、ＰｒｉＫｅｙ１及びＰｒｉＫｅｙ２のプライベート鍵は、ＰｒＫＤ内のプライベート鍵オブジェクトから参照される。
また、ＰｕｂＫｅｙ１及びＰｕｂＫｅｙ２の公開鍵は、ＰｕＫＤ内の公開鍵オブジェクトから参照される。
また、Ｐｕｂｌｉｃの公開属性を有する証明書及びＰｒｉｖａｔｅのプライベート属性を有する証明書は、ＣＤ内の証明書オブジェクトからそれぞれ参照される。
【００２８】
各ＥＦに格納されるオブジェクトの型はＪＩＳ  Ｘ  ６３２０−１５に示されているものと同じである。
ＣＩＡＩｎｆｏ内には、先頭領域からＣＩＡＩｎｆｏ型のオブジェクトがＡＳＮ．１のＤＥＲエンコードされた形式で格納されている。
ＯＤにはＣＩＯＣｈｏｉｃｅ型の複数のオブジェクトがＤＥＲエンコードされた形式で格納される。
また、これらのオブジェクトにはＡＯＤの認証オブジェクトを示すａｕｔｈＯｂｊｅｃｔｓ、ＰｒＫＤのプライベート鍵オブジェクトを示すｐｒｉｖａｔｅＫｅｙｓ、ＰｕＫＤの公開鍵オブジェクトを示すｐｕｂｌｉｃＫｅｙｓ、ＣＤの証明書オブジェクトを示すｃｅｒｔｉｆｉｃａｔｅｓが含まれている。
これらＣＩＯＣｈｏｉｃｅ型のオブジェクトを格納する順序は上記に限るものではなく、他のＣＩＯＣｈｏｉｃｅ型の要素を含んでいてもよい。
また、あるＣＩＯＣｈｏｉｃｅ型のオブジェクトの最後尾が格納される領域と次のＣＩＯＣｈｏｉｃｅ型のオブジェクトの先頭が格納される領域とは連続していなくてもよい。
この場合には、オブジェクトのデータが存在しない領域にデータが存在しないことを示す０ｘＦＦまたは０ｘ００のデータが格納される。
なお、これはＯＤに限ることではなく、他のＥＦにおいても複数のオブジェクトが格納される場合は同様である。
【００２９】
ＵｎｕｓｅｄＳｐａｃｅにはＰＫＣＳ  ＃１５で定義されているＵｎｕｓｅｄＳｐａｃｅ型のオブジェクトがＤＥＲエンコードされた形式で複数格納される。
また、これらのＵｎｕｓｅｄＳｐａｃｅ型のオブジェクトには空き領域が存在するＥＦの情報、先頭からのバイト数の情報、長さを示すバイト数の情報がデータとして含まれている。
また、ＡＯＤにはＡｕｔｈｅｎｔｉｃａｔｉｏｎＯｂｊｅｃｔＣｈｏｉｃｅ型のオブジェクトがＤＥＲエンコードされた形式で複数格納され、このオブジェクトとして、パスワードを示すｐｗｄがＵｓｅｒＰＩＮまたはＳＯＰＩＮを示すデータとして選択されている。
【００３０】
ＰｒＫＤには、ＰｒｉＫｅｙ１またはＰｒｉＫｅｙ２を示すデータを含むＰｒｉｖａｔｅＫｅｙＣｈｏｉｃｅ型のＰｒｉｖａｔｅＲＳＡ（登録商標）Ｋｅｙ等のオブジェクトがＤＥＲエンコードされた形式で複数格納される。
また、ＰｕＫＤには、ＰｕｂＫｅｙ１またはＰｕｂＫｅｙ２を示すデータを含むＰｕｂｌｉｃＫｅｙＣｈｏｉｃｅ型のＰｕｂｌｉｃＲＳＡ（登録商標）Ｋｅｙ等のオブジェクトがＤＥＲエンコードされた形式で複数格納されている。
ＣＤには、先頭からのバイト数の情報及び長さを示すバイト数の情報と共に、ＰｕｂｌｉｃまたはＰｒｉｖａｔｅを示すＣｅｒｔｉｆｉｃａｔｅＣｈｏｉｃｅ型のｘ５０９Ｃｅｒｔｉｆｉｃａｔｅ等のオブジェクトがＤＥＲエンコードされた形式で複数格納されている。
【００３１】
ＵｓｅｒＰＩＮには、ＩＣカードに特有の形式でパスワードを認証するためのデータが格納される。
ＵｓｅｒＰＩＮが認証されるとＰｒｉＫｅｙ１及びＰｒｉＫｅｙ２の使用及びＰｒｉｖａｔｅの読み込みが可能になる。
ＳＯＰＩＮには、ＩＣカードに特有の形式でパスワードを認証するためのデータに加え、製造時にデフォルトのパスワードを認証するためのデータが格納されており、ＳＯＰＩＮが認証されると全ＥＦの変更が可能になる。
ＰｒｉＫｅｙ１及びＰｒｉＫｅｙ２にはそれぞれプライベート鍵が格納されており、これらの鍵を使用することでＩＣカード３内部での演算、すなわち電子署名の生成や暗号化されたデータの復号化が可能となる。
ＰｕｂＫｅｙ１、ＰｕｂＫｅｙ２、Ｐｕｂｌｉｃ、ＰｒｉｖａｔｅといったＥＦは指定されたデータを保存したり読み出したりする基本機能のみを有し、ＰｕｂＫｅｙ１及びＰｕｂＫｅｙ２には先頭領域から公開鍵が１つだけ格納され、Ｐｕｂｌｉｃ及びＰｒｉｖａｔｅには複数の証明書が格納されている。
【００３２】
ここでは、暗号アプリケーション５００の処理が開始するまでに、ＩＣカード３の情報と、管理者と一般利用者のパスワード、プライベート属性のプライベート鍵１つ、公開属性の公開鍵１つ、公開属性の証明書として利用者証明書１つと上位証明書３つがＩＣカード３に格納されているものとする。
即ち、ＣＩＡＩｎｆｏにはＩＣカード３の情報、ＡＯＤにはＳＯＰＩＮとＵｓｅｒＰＩＮの情報、ＰｒＫＤにはプライベート鍵の情報、ＰｕＫＤには公開鍵の情報、ＣＤには証明書の情報、ＯＤにはＡＯＤ、ＰｒＫＤ、ＰｕＫＤ、ＣＤの情報が格納されているものとする。
また、ＳＯＰＩＮに管理者のパスワード、ＵｓｅｒＰＩＮに一般利用者のパスワード、ＰｒｉＫｅｙ１にプライベート鍵、ＰｕｂＫｅｙ１に公開鍵、Ｐｕｂｌｉｃに証明書４つ、Ｕｎｕｓｅｄ  ＳｐａｃｅにはＰｕｂｌｉｃの空き領域が格納されているものとする。
更に、ＰｒｉＫｅｙ２、ＰｕｂＫｅｙ２、Ｐｒｉｖａｔｅにはデータは格納されていないものとする。
読み出し可能なファイルはＣＩＡＩｎｆｏ、ＡＯＤ、ＰｒＫＤ、ＰｕＫＤ、ＣＤ、ＯＤ、ＰｕｂＫｅｙ１、Ｐｕｂｌｉｃ、Ｕｎｕｓｅｄ  Ｓｐａｃｅである。
読み出し不可能なファイルはＳＯＰＩＮ、ＵｓｅｒＰＩＮ、ＰｒｉＫｅｙ１とする。
【００３３】
＊＊＊＊動作の説明＊＊＊
（暗号アプリケーションの処理フロー）
ここで、暗号アプリケーション５００の基本的な処理フローを図５を用いて説明する。
【００３４】
ここでの例として、暗号アプリケーション５００はＰＫＣＳ  ＃１１の仕様に準拠したアプリケーションインタフェースを持つこととする。
しかしながら、暗号アプリケーション５００が、Ｗｉｎｄｏｗｓ（登録商標）  ＯＳで提供されているＣｒｙｐｔｏＡＰＩ等その他の仕様に準拠したアプリケーションインタフェースを持つことでもよい。
【００３５】
上位アプリケーション４００によって暗号アプリケーション５００が呼び出されると、暗号アプリケーション５００は自身の初期化処理を行う（Ｓ１）。
初期化処理では、暗号アプリケーション５００はＩＣカード３にアクセスしない。
即ち、暗号アプリケーション５００は、初期化処理では、ＩＣカード３からデータを読み出さない。
【００３６】
次に、暗号アプリケーション５００は、ＩＣカード３と通信するためのセッションを確立する（Ｓ２）。
なお、この段階でも、暗号アプリケーション５００は、ＩＣカード３からデータを読み出さない。
【００３７】
その後、上位アプリケーション４００から暗号アプリケーション５００に実行対象暗号処理が通知される。
そして、暗号アプリケーション５００は、実行対象暗号処理に用いられるデータのみをＩＣカード３から読み出して、実行対象暗号処理を実行する（Ｓ３）。
即ち、暗号アプリケーション５００は、ＩＣカード３からＩＣカード情報を取得したり、利用者証明書を取得したり、プライベート鍵を用いて電子署名を行なったりするＩＣカードの処理を行う。
複数の実行対象暗号処理がある場合は、暗号アプリケーション５００はデータの読み出しを繰り返し実行する。
【００３８】
実行対象暗号処理が終了したら、暗号アプリケーション５００は、ＩＣカード３とのセッションを解除し（Ｓ４）、暗号アプリケーション５００は終了処理を行って（Ｓ５）終了する。
【００３９】
なお、図５のＳ２とＳ４の処理は省略してもよい。
【００４０】
次に、図５のＳ３の詳細フローを図６を参照して説明する。
図６に示す手順は、データ処理方法及びデータ処理プログラムの例に相当する。
【００４１】
暗号アプリケーション５００は、上位アプリケーション４００より呼び出されたＡＰＩ（関数）の入力値により、実行対象暗号処理の内容を判定し、キャッシュ対象データ（読み出し対象データ）を選定する（Ｓ３１）。
Ｓ３１の処理の結果、キャッシュ対象データがない場合（Ｓ３２でＮＯ）、つまり、ＩＣカード３からデータを読み出さなくても、実行対象暗号処理を実行できる場合は、暗号アプリケーション５００は、実行対象暗号処理を実行する（Ｓ３７）。
【００４２】
一方、キャッシュ対象データがある場合（Ｓ３２でＹＥＳ）、つまり、ＩＣカード３からデータを読み出す必要がある場合は、キャッシュ対象データ（読み出し対象データ）がメモリ領域６に既にキャッシュ済みか否かを判定する（Ｓ３３）。
既にキャッシュ済みであれば、暗号アプリケーション５００は、次のキャッシュ対象データの判定に進む（Ｓ３６）。
キャッシュ対象データがメモリ領域６にキャッシュされていなければ、暗号アプリケーション５００は、ＩＣカード３からキャッシュ対象データを読み出す（Ｓ３４）。
そして、暗号アプリケーション５００は、読み出したキャッシュ対象データをメモリ領域６のＩＣカードデータ７に追加して保管する（Ｓ３５）。
すべてのキャッシュ対象データの判定が済んだら、暗号アプリケーション５００は、メモリ領域６のＩＣカードデータ７の中から必要なデータを取り出して実行対象暗号処理を実行する（Ｓ３７）。
【００４３】
（暗号処理例１：ＩＣカード情報取得処理フロー）
ＩＣカードの処理（Ｓ３）の１つ目の具体的例としてＩＣカード情報の取得処理フローについて図７を用いて説明する。
【００４４】
上位アプリケーション４００からＩＣカード情報取得関数Ｃ＿ＧｅｔＴｏｋｅｎＩｎｆｏが実行されると（Ｓ１０１）、暗号アプリケーション５００は、関数の入力値から情報を取得するＩＣカードを特定し、ＣＩＡＩｎｆｏ、ＯＤ、ＡＯＤをキャッシュ対象データとして選定する。
それぞれのデータがキャッシュ済みでなければ、暗号アプリケーション５００は、ＩＣカード３からデータを読み出しメモリ領域６のＩＣカードデータ７に追加する（Ｓ１０２、Ｓ１０３、Ｓ１０４）。
暗号アプリケーション５００は、ＣＩＡＩｎｆｏとＡＯＤに格納されている情報からＩＣカード情報を作成し、Ｃ＿ＧｅｔＴｏｋｅｎＩｎｆｏの出力値として上位アプリケーション４００に返す（Ｓ１０５）。
【００４５】
（暗号処理例２：利用者証明書取得処理フロー）
ＩＣカードの処理（Ｓ３）の２つ目の具体的例として利用者証明書の取得処理フローについて図８を用いて説明する。
【００４６】
上位アプリケーション４００からオブジェクト検索初期化関数Ｃ＿ＦｉｎｄＯｂｊｅｃｔｓＩｎｉｔが実行される（Ｓ２０１）。
この時、上位アプリケーション４００は、入力値として検索対象が利用者証明書のＩＤを持つ証明書オブジェクトであることを示す値を関数に入力する。
暗号アプリケーション５００は関数の入力値から検索に必要なファイルがＯＤとＣＤであることを判定しキャッシュ対象データに選定する。
それぞれデータがキャッシュ済みでなければ、暗号アプリケーション５００は、ＩＣカード３からデータを読み出しメモリ領域６のＩＣカードデータ７に追加する（Ｓ２０２、Ｓ２０３）。
また、暗号アプリケーション５００は、ＣＤを用いて証明書オブジェクトを検索し、該当するオブジェクトを自身で保持しておく。
そして、Ｃ＿ＦｉｎｄＯｂｊｅｃｔｓＩｎｉｔを終了する（Ｓ２０４）。
次に、上位アプリケーション４００から検索されたオブジェクトを取得する関数Ｃ＿ＦｉｎｄＯｂｊｅｃｔｓが実行される（Ｓ２０５）。
暗号アプリケーション５００は、自身で保持しているオブジェクトを出力値として返す（Ｓ２０６）。
オブジェクト検索終了関数Ｃ＿ＦｉｎｄＯｂｊｅｃｔｓＦｉｎａｌが実行されると（Ｓ２０７）、暗号アプリケーション５００は必要な処理を行い、関数を終了する（Ｓ２０８）。
【００４７】
上位アプリケーション４００から検索されたオブジェクトから証明書データを取得する関数Ｃ＿ＧｅｔＡｔｔｒｉｂｕｔｅＶａｌｕｅが実行される（Ｓ２０９）。
暗号アプリケーション５００は、ＩＣカードデータ７から読み出したＣＤを用いてＰｕｂｌｉｃの利用者証明書データ格納領域を見つけ、利用者証明書データのみ読み出しＩＣカードデータ７に追加する（Ｓ２１０）。
そして、暗号アプリケーション５００は、出力値として利用者証明書データを返して終了する（Ｓ２１１）。
【００４８】
（暗号処理例３：プライベート鍵を用いた電子署名処理フロー）
ＩＣカードの処理（Ｓ３）の３つ目の具体的例としてプライベート鍵を用いた電子署名処理フローについて図９を用いて説明する。
【００４９】
プライベート属性のプライベート鍵を用いた処理を行うため、上位アプリケーション４００から認証関数Ｃ＿Ｌｏｇｉｎが実行される（Ｓ３０１）。
暗号アプリケーション５００は、関数の入力値から利用者認証に必要なＯＤとＡＯＤをキャッシュ対象データに選定する。
それぞれのデータがキャッシュ済みでなければ、暗号アプリケーション５００は、ＩＣカード３からデータを読み出しメモリ領域６のＩＣカードデータ７に追加する（Ｓ３０２、Ｓ３０３）。
そして、暗号アプリケーション５００は、キャッシュされたＡＯＤから利用者認証に必要な情報を取得し、利用者認証を行い、関数を終了する（Ｓ３０４）。
【００５０】
上位アプリケーション４００からオブジェクト検索初期化関数Ｃ＿ＦｉｎｄＯｂｊｅｃｔｓＩｎｉｔが実行される（Ｓ３０５）。
この時、上位アプリケーション４００は、入力値として検索対象がプライベート鍵のＩＤを持つプライベート鍵オブジェクトであることを示す値を関数に入力する。
暗号アプリケーション５００は、関数の入力値から検索に必要なファイルがＯＤとＰｒＤであることを判定しキャッシュ対象データに選定する。
ＯＤはＳ３０２によってキャッシュ済みであるので、暗号アプリケーション５００は、ＰｒＫＤのみＩＣカード３からデータを読み出しメモリ領域６のＩＣカードデータ７に追加する（Ｓ３０６）。
暗号アプリケーション５００は、ＰｒＫＤを用いてプライベート鍵オブジェクトを検索し該当するオブジェクトを自身で保持しておく。
そして、Ｃ＿ＦｉｎｄＯｂｊｅｃｔｓＩｎｉｔを終了する（Ｓ３０７）。
【００５１】
上位アプリケーション４００から検索されたオブジェクトを取得する関数Ｃ＿ＦｉｎｄＯｂｊｅｃｔｓが実行される（Ｓ３０８）。
暗号アプリケーション５００は自身で保持しているオブジェクトを出力値として返す（Ｓ３０９）。
オブジェクト検索終了関数Ｃ＿ＦｉｎｄＯｂｊｅｃｔｓＦｉｎａｌが実行されると（Ｓ３１０）、暗号アプリケーション５００は必要な処理を行い、関数を終了する（Ｓ３１１）。
【００５２】
上位アプリケーション４００から検索されたオブジェクトを用いて電子署名初期化関数Ｃ＿ＳｉｇｎＩｎｉｔが実行されると（Ｓ３１２）、暗号アプリケーション５００は必要な処理を行い関数を終了する（Ｓ３１３）。
【００５３】
次に電子署名関数Ｃ＿Ｓｉｇｎが実行されると（Ｓ３１４）、暗号アプリケーション５００はＩＣカードデータ７から読み出したＰｒＫＤを用いてＰｒｉＫｅｙ１の格納領域を見つけ、関数の入力値とＰｒｉＫｅｙ１を使ってＩＣカード３に電子署名処理を実行させる（Ｓ３１５）。
そして、出力値として署名データを返して終了する（Ｓ３１６〜Ｓ３１８）。
【００５４】
＊＊＊実施の形態の効果の説明＊＊＊
以上のように、本実施の形態によれば、実行対象データ処理が選択された際に、実行対象データ処理に用いられるデータに絞ってＩＣカードから読み出すことによって、データの読み出し時間を短縮することができる。
つまり、暗号アプリケーションの初期化時やＩＣカード接続時ではなく、ＩＣカードを用いて行う暗号処理の内容が判明した時に初めてデータをキャッシュし、処理内容に応じてキャッシュ対象のデータを必要なものだけに絞るようにしているので、データの読み出し時間を短縮し処理時間を削減することができる。
【００５５】
従来は、処理内容に関わらず毎回ＣＩＡＩｎｆｏ、ＯＤ、ＡＯＤ、ＰｒＫＤ、ＰｕＫＤ、ＣＤ、ＰｕｂＫｅｙ１、Ｐｕｂｌｉｃ内の４つの証明書の１１個のデータをキャッシュしていた。
本実施の形態では、１つ目の具体例ではＣＩＡＩｎｆｏ、ＯＤ、ＡＯＤの３個、２つ目の具体例ではＯＤ、ＣＤ、Ｐｕｂｌｉｃ内の１つの証明書の３個、３つ目の具体例ではＯＤ、ＡＯＤ、ＰｒＫＤの３個のデータをキャッシュするだけでよい。
【００５６】
なお、以上では、暗号アプリケーション５００をデータ読み出し部５の例とし、暗号アプリケーション５００が暗号処理を行う例を説明した。
しかしながら、データ読み出し部５が実行するデータ処理は暗号処理に限られず、復号処理、圧縮処理等の他の種類のデータ処理であってもよい。
【００５７】
＊＊＊ハードウェア構成例の説明＊＊＊
【００５８】
最後に、本実施の形態に示したデータ処理装置１のハードウェア構成例を図１０を参照して説明する。
データ処理装置１はコンピュータであり、データ処理装置１の各要素をプログラムで実現することができる。
データ処理装置１のハードウェア構成としては、バスに、演算装置９０１、補助記憶装置９０２、主記憶装置９０３、通信装置９０４、入出力装置９０５が接続されている。
【００５９】
演算装置９０１は、プログラムを実行するＣＰＵである。
補助記憶装置９０２は、例えばＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）やフラッシュメモリ、ハードディスク装置である。
主記憶装置９０３は、ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）である。
図２及び図３に示すメモリ領域６は、例えば、主記憶装置９０３で実現される。
通信装置９０４は、例えば、ＮＩＣ（Ｎｅｔｗｏｒｋ  Ｉｎｔｅｒｆａｃｅ  Ｃａｒｄ）である。
入出力装置９０５は、例えばマウス、キーボード、ディスプレイ装置等である。
【００６０】
プログラムは、通常は補助記憶装置９０２に記憶されており、主記憶装置９０３にロードされた状態で、順次演算装置９０１に読み込まれ、実行される。
プログラムは、図２に示す「実行対象データ処理選択部４」及び「データ読み出し部５」として説明している機能を実現するプログラムである。
更に、補助記憶装置９０２にはオペレーティングシステム（ＯＳ）も記憶されており、ＯＳの少なくとも一部が主記憶装置９０３にロードされ、演算装置９０１はＯＳを実行しながら、図１に示す「実行対象データ処理選択部４」及び「データ読み出し部５」の機能を実現するプログラムを実行する。
また、図３に示した「上位アプリケーション４００」及び「暗号アプリケーション５００」も補助記憶装置９０２に記憶されており、主記憶装置９０３にロードされた状態で、順次演算装置９０１により実行される。
また、本実施の形態の説明において、「実行対象データ処理選択部４」及び「データ読み出し部５」、「上位アプリケーション４００」及び「暗号アプリケーション５００」の処理の結果を示す情報やデータや信号値や変数値が主記憶装置９０３にファイルとして記憶されている。
【００６１】
なお、図１０の構成は、あくまでもデータ処理装置１のハードウェア構成の一例を示すものであり、データ処理装置１のハードウェア構成は図１０に記載の構成に限らず、他の構成であってもよい。
【符号の説明】
【００６２】
１  データ処理装置、２  ＩＣカードリーダライタ、３  ＩＣカード、４  実行対象データ処理選択部、５  データ読み出し部、６  メモリ領域、７  ＩＣカードデータ、４００  上位アプリケーション、５００  暗号アプリケーション。
【図１】
2017021687.tif 000003
【図２】
2017021687.tif 000004
【図３】
2017021687.tif 000005
【図４】
2017021687.tif 000006
【図５】
2017021687.tif 000007
【図６】
2017021687.tif 000008
【図７】
2017021687.tif 000009
【図８】
2017021687.tif 000010
【図９】
2017021687.tif 000011
【図１０】
2017021687.tif 000012