(57)【要約】【課題】可変長データの創生処理と可変長データの書き込み処理それぞれにおいて，可変長データをＮＶＭに書き込むコマンドをＩＣカードへ送信しなくとも，新規の可変長データをＮＶＭに書き込むことができるようにする。【解決手段】ＩＣカード１が備える書き込みコマンド３は，書き込みコマンド３のコマンドＡＰＤＵをＩＣカード１が受信すると，創生指示データ３１がコマンドデータに含まれているか確認し，創生指示データ３１がコマンドデータに含まれている場合，創生指示データ３１で示される最大データ長のデータ本体を有する可変長データを格納できるサイズの格納領域をＮＶＭ２３に確保する創生処理を実行した後，書き込み指示データ３０で示されるデータ本体を格納領域内に書き込む書き込み処理を実行する。【選択図】図３
2018156162.tif 000002
【特許請求の範囲】
【請求項１】
メモリに書き込む可変長データのデータ本体を示す書き込み指示をコマンドデータに含むコマンドＡＰＤＵを受信すると，前記データ本体の最大データ長を示す創生指示がコマンドデータに含まれているか確認し，前記創生指示が前記コマンドデータに含まれている場合，前記創生指示で示される最大データ長のデータ本体を有する可変長データを格納できるサイズの格納領域をメモリに確保する創生処理を実行した後，前記書き込み指示で示されるデータ本体を前記格納領域内に書き込む書き込み処理を実行する書き込み手段を備えたことを特徴とするＩＣカード。
【請求項２】
メモリに書き込む可変長データのデータ本体を示す書き込み指示をコマンドデータに含むコマンドＡＰＤＵを受信すると，前記データ本体の最大データ長を示す創生指示がコマンドデータに含まれているか確認し，前記創生指示が前記コマンドデータに含まれている場合，前記創生指示で示される最大データ長のデータ本体を有する可変長データを格納できるサイズの格納領域をメモリに確保する創生処理を実行した後，前記書き込み指示で示されるデータ本体を前記格納領域内に書き込む書き込み処理を実行する書き込み手段として，ＩＣカードのＣＰＵを動作させるコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は，ＩＣカードに関し，更に詳しくは，データ長が可変な可変長データをＩＣカードのメモリに書き込む技術に関する。
【背景技術】
【０００２】
ＩＣカードが備える電気的に書き換え可能な不揮発性メモリ（以下，「ＮＶＭ」と記す。ＮＶＭは，Non-volatile memoryの略）には，ＩＣカードの用途に合わせて様々なデータが記憶される。ＩＣカードのＮＶＭに記憶するデータには，データ長が固定の固定長データもあるが，データ長が可変な可変長データもある。
【０００３】
可変長データをＮＶＭに記憶するように構成されたＩＣカードは，可変長データをＮＶＭに書き込むコマンドを備える。可変長データをＮＶＭに書き込むコマンドはＩＣカードの規格で変わるが，例えば，非特許文献１に係る規格では，ＴＬＶ構造の可変長データをＮＶＭに書き込むコマンドとしてＰＵＴ＿ＤＡＴＡコマンドが規定され，非特許文献２では，ＴＬＶ構造の可変長データをＮＶＭに書き込むコマンドとしてＳＴＯＲＥ＿ＤＡＴＡコマンドが規定されている。
【０００４】
図７は，新規の可変長データをＮＶＭに書き込む際の従来の手順を説明する図である。可変長データをＮＶＭに書き込む際，まず，可変長データの創生処理が実行される。可変長データの創生処理が実行されることで，可変長データを格納する領域である格納領域がＮＶＭに確保される。なお，可変長データの創生処理は，具体的に，可変長データをＮＶＭに書き込むコマンドを使用して，全て初期値（‘ＦＦ’）になっている最大データ長のデータ本体を有する可変長データをＮＶＭに書き込む処理になる。
【０００５】
可変長データの創生処理が終了すると，可変長データの書き込み処理が実行される。可変長データの書き込み処理が実行されることで，創生処理にてＮＶＭに確保された格納領域内に所定の可変長データが書き込まれる。格納領域のサイズは創生処理で決まるので，格納領域に格納できる可変長データは，創生処理で決定した最大データ長以下のデータ本体を有する可変長データになる。なお，可変長データの書き込み処理は，可変長データをＮＶＭに書き込むコマンドを使用して，所定の可変長データをＮＶＭに書き込む処理になる。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】ＩＳＯ／ＩＥＣ７８１６−４
【非特許文献２】Ｇｌｏｂａｌ Ｐｌａｔｆｏｒｍ
【発明の概要】
【発明が解決しようとする課題】
【０００７】
上述したように，新規の可変長データをＮＶＭに書き込む際，可変長データの創生処理と可変長データの書き込み処理を実施するために，可変長データの創生処理と可変長データの書き込み処理それぞれにおいて，可変長データをＮＶＭに書き込むコマンドをＩＣカードへ送信する必要があった。
【０００８】
新規の可変長データをＮＶＭに書き込む際，可変長データの創生処理と可変長データの書き込み処理それぞれにおいて，可変長データをＮＶＭに書き込むコマンドをＩＣカードへ送信すると，ＩＣカードの発行時など，数多くの可変長データをＮＶＭに書き込む場合に処理時間が長くなってしまう。
【０００９】
そこで，本発明は，可変長データの創生処理と可変長データの書き込み処理それぞれにおいて，可変長データをＮＶＭに書き込むコマンドをＩＣカードへ送信しなくとも，新規の可変長データをＮＶＭに書き込むことができるようにすることを目的とする。
【課題を解決するための手段】
【００１０】
上述した課題を解決する第１の発明は，メモリに書き込む可変長データのデータ本体を示す書き込み指示をコマンドデータに含むコマンドＡＰＤＵを受信すると，前記データ本体の最大データ長を示す創生指示がコマンドデータに含まれているか確認し，前記創生指示が前記コマンドデータに含まれている場合，前記創生指示で示される最大データ長のデータ本体を有する可変長データを格納できるサイズの格納領域をメモリに確保する創生処理を実行した後，前記書き込み指示で示されるデータ本体を前記格納領域内に書き込む書き込み処理を実行する書き込み手段を備えたことを特徴とするＩＣカードである。
【００１１】
更に，第２の発明は， メモリに書き込む可変長データのデータ本体を示す書き込み指示をコマンドデータに含むコマンドＡＰＤＵを受信すると，前記データ本体の最大データ長を示す創生指示がコマンドデータに含まれているか確認し，前記創生指示が前記コマンドデータに含まれている場合，前記創生指示で示される最大データ長のデータ本体を有する可変長データを格納できるサイズの格納領域をメモリに確保する創生処理を実行した後，前記書き込み指示で示されるデータ本体を前記格納領域内に書き込む書き込み処理を実行する書き込み手段として，ＩＣカードのＣＰＵを動作させるコンピュータプログラムである。
【発明の効果】
【００１２】
上述した本発明によれば，可変長データをＮＶＭに書き込むコマンドのコマンドデータに，書き込み指示データと創生指示データが含まれている場合，可変長データの創生処理を実行した後に，可変長データの書き込み処理が実行されるので，可変長データの創生処理と可変長データの書き込み処理それぞれにおいて，可変長データをＮＶＭに書き込むコマンドをＩＣカードへ送信しなくとも，新規の可変長データをＮＶＭに書き込むことができる。
【図面の簡単な説明】
【００１３】
【図１】本実施形態に係るＩＣカードのハードウェア構成を説明する図
【図２】本実施形態に係る書き込みコマンドを説明する図
【図３】本実施形態に係る書き込みコマンドの動作を説明する図
【図４】ＰＵＴ＿ＤＡＴＡコマンドに書き込みコマンドを適用したケースを説明する図。
【図５】ＳＴＯＲＥ＿ＤＡＴＡコマンドに書き込みコマンドを適用したケースを説明する図。
【図６】ＮＶＭの状態を説明する図。
【図７】新規の可変長データをＮＶＭに書き込む際の従来の手順を説明する図。
【発明を実施するための形態】
【００１４】
ここから，本発明の好適な実施形態を記載する。なお，以下の記載は本発明の技術的範囲を束縛するものでなく，理解を助けるために記述するものである。
【００１５】
図１は，本実施形態に係るＩＣカード１のハードウェア構成を説明する図である。本実施形態に係るＩＣカード１は，プラスチックなどのカード基材にＩＣチップ２を埋め込んだカード媒体である。図１では，コンタクト端子２ａを介して外部の端末装置と物理的に接触して通信する接触型としてＩＣカード１を図示しているが，ＩＣカード１は，リーダライタと非接触で通信する非接触型であってもよい。また，図１では，ＩＣカード１の外形は，ISO/IEC 7816のＩＤ−１型であるが， ETSI TS 102 221等で規格化されている小型の形態（Plug-in UICC，Mini-UICC，4FF）でもよい。
【００１６】
図１に図示したように，ＩＣカード１に埋め込まれるＩＣチップ２は，データの入出力を行うＩ／Ｏ２４，各種演算を行うＣＰＵ２０(Central Processing Unit),一時的にデータを記憶する際に用いるメモリであるＲＡＭ２２(Random Access Memory),ＩＣカード１が備えるコマンドのプログラムなどを記憶するＲＯＭ２１（Read-Only Memory）に加え，データを記憶する電気的に書き換え可能なメモリであるＮＶＭ２３を備える。
【００１７】
ＩＣカード１が備えるＮＶＭ２３は，データ長が可変な可変長データなどを記憶するためのメモリで，ＩＣカード１が備えるＲＯＭ２１には，ＣＰＵ２０を動作させるコンピュータプログラムにより実現されるコマンドとして，本発明に係る書き込み手段として機能する書き込みコマンド３が記憶されている。なお，図１では，書き込みコマンド３を記憶しているメモリをＲＯＭ２１にしているが，書き込みコマンド３を記憶しているメモリはＮＶＭ２３でもよい。
【００１８】
ＩＣカード１のＮＶＭ２３に記憶させる可変長データは，可変長データの最大データ長の範囲でデータ長を変更できるように，タグ，データ長およびデータ本体の３つで構成される。可変長データのタグは，可変長データの識別に用いるデータで，ＴＬＶフォーマットのＴａｇに相当する。可変長データのデータ長は，可変長データのデータ本体のデータ長で，ＴＬＶフォーマットのＬｅｎｇｔｈに相当する。可変長データのデータ本体は，ＴＬＶフォーマットのＶａｌｕｅに相当し，データ本体のみが可変長になる。
【００１９】
図２は，本実施形態に係る書き込みコマンド３を説明する図である。図２（ａ）は，書き込みコマンド３のコマンドＡＰＤＵ(Application Protocol Data Unit)を説明する図である。本実施形態に係る書き込みコマンド３のコマンドＡＰＤＵは，ＣＬＡ，ＩＮＳ，Ｐ１，Ｐ２，Ｌｃおよびコマンドデータから構成される。
【００２０】
書き込みコマンド３のコマンドＡＰＤＵを構成するＣＬＡは，書き込みコマンド３のクラスを示す１バイトのデータで，ＣＬＡのコーディングについては，非特許文献１，２などで規格化されている。書き込みコマンド３のコマンドＡＰＤＵを構成するＩＮＳは，書き込みコマンド３を示す１バイトのデータである。
【００２１】
書き込みコマンド３のコマンドＡＰＤＵを構成するＰ１およびＰ２は，書き込みコマンド３のコマンドパラメータとなるデータでそれぞれ１バイトである。Ｐ１およびＰ２から構成されるコマンドパラメータの使用方法は，他のコマンドを参照にして決定できる。例えば，非特許文献１で規定されているＰＵＴ＿ＤＡＴＡコマンドを参照すれば，Ｐ１およびＰ２から構成されるコマンドパラメータにより，可変長データのタグが指定されることになる。また，非特許文献２ではＳＴＯＲＥ＿ＤＡＴＡコマンドを参照すれば，Ｐ１およびＰ２から構成されるコマンドパラメータにより，可変長データを分割して送信する場合の最終コマンドであるか否か，可変長データのデータ構造，および，コマンドのブロック番号などが示される。
【００２２】
書き込みコマンド３のコマンドＡＰＤＵを構成するＬｃは，後述するコマンドデータの長さを示すデータである。
【００２３】
本実施形態に係る書き込みコマンド３のコマンドＡＰＤＵに含まれるコマンドデータは，ＮＶＭ２３に書き込む可変長データのデータ本体を示す書き込み指示データ３０を必ず含み，更に，可変長データの格納領域をＮＶＭ２３に確保する創生処理を実行する場合には，データ本体の最大データ長を示す創生指示データ３１を含む。
【００２４】
本実施形態に係る書き込み指示データ３０は，可変長データと同様に，書き込み指示データ３０であることを意味するタグと，データ本体のデータ長と，書き込み指示データ３０のデータ本体から構成され，書き込み指示データ３０のデータ本体は，可変長データのデータ本体を含む。また，本実施形態に係る創生指示データ３１も，可変長データと同様に，創生指示データ３１であることを意味するタグと，データ本体のデータ長と，創生指示データ３１のデータ本体から構成され，創生指示データ３１の本体は，創生する可変長データに係る最大データ長を含む。
【００２５】
図２（ｂ）は，書き込みコマンド３のレスポンスＡＰＤＵを説明する図である。本実施形態に係る書き込みコマンド３のレスポンスＡＰＤＵは，書き込みコマンド３の実行結果を示す２バイトのステータスワード（ＳＷ１，ＳＷ２）のみで構成される。
【００２６】
図３は，本実施形態に係る書き込みコマンド３の動作を説明する図である。本実施形態に係る書き込みコマンド３を実装したＩＣカード１が，書き込みコマンド３のコマンドＡＰＤＵを図外のターミナルから受信すると，ＩＣカード１の内部で書き込みコマンド３が起動する（Ｓ１）。
【００２７】
ＩＣカード１の内部で起動した書き込みコマンド３は，ＩＣカード１が受信した書き込みコマンド３のコマンドＡＰＤＵのコマンドデータに創生指示データ３１が含まれるか確認する（Ｓ２）。本実施形態では，書き込みコマンド３のコマンドＡＰＤＵのコマンドデータの先頭に書き込み指示データ３０を配置しているので，書き込み指示データ３０に続いて創生指示データ３１があるか否か確認することで，コマンドデータに創生指示データ３１が含まれるか確認できる。
【００２８】
書き込みコマンド３は，創生指示データ３１の確認結果に応じて処理を分岐し，書き込みコマンド３のコマンドＡＰＤＵのコマンドデータに創生指示データ３１が含まれている場合に限り創生処理を実施する（Ｓ３）。創生処理において，書き込みコマンド３は，創生指示データ３１のデータ本体を可変長データに係るデータ本体の最大データ長として取得し，最大データ長のデータ本体を有する可変長データを格納できるサイズの格納領域をＮＶＭ２３に確保した後，データ本体を格納する領域内のバイト全てを初期値に書き換える。
【００２９】
本実施形態に係る可変長データは，タグ，データ長およびデータ本体の３つで構成されているため，データ本体を格納する領域に加えて，可変長データのタグを格納する領域と可変長データのデータ長を格納する領域も格納領域に必要になる。例えば，タグが２バイト，データ長が１バイト，そして，データ本体の最大データ長が１６バイトの場合，格納領域のサイズは合計で１９バイト（＝２バイト+１バイト+１６バイト）になる。
【００３０】
図３のＳ２において，コマンドＡＰＤＵのコマンドデータの中から創生指示データ３１を検索でなかった場合，または，図３のＳ３において創生処理を実施した後，書き込みコマンド３は，コマンドＡＰＤＵのコマンドデータに含まれる書き込み指示データ３０で示される可変長データのデータ本体を，可変長データに対応する格納領域内に書き込む書き込み処理を実行する（Ｓ４）。可変長データに対応する格納領域は，可変長データのタグと同じタグが書き込まれている格納領域であるが，ここでは，創生処理で確保した格納領域内になる。なお，書き込み処理において，書き込みコマンド３は，創生処理で確保した格納領域において，可変長データのデータ本体を格納する領域の先頭から，書き込み指示データ３０で示される可変長データのデータ本体を書き込む。
【００３１】
コマンドデータに含まれる書き込み指示データ３０で示される可変長データのデータ本体を格納領域に書き込む処理を実行した後，書き込みコマンド３は，書き込みコマンド３の実行結果を示すレスポンスＡＰＵＤを図外のターミナルへ送信する処理（Ｓ５）を行い，図３の手順は終了する。
【００３２】
図外のターミナルへ送信するレスポンスＡＰＤＵの内容は，書き込みコマンド３の実行結果によって異なる。例えば，創生指示データ３１と書き込み指示データ３０が，書き込みコマンド３のコマンドＡＰＤＵのコマンドデータに含まれる場合，創生指示データ３１を用いた創生処理が正常終了し，かつ，書き込み指示データ３０を用いた書き込み処理が正常終了すると，図外のターミナルへ送信するレスポンスＡＰＤＵは，書き込みコマンド３が正常終了したことを示すステータスワードになる。また，書き込み指示データ３０のみが，書き込みコマンド３のコマンドＡＰＤＵのコマンドデータに含まれる場合，書き込み処理が正常終了すると，図外のターミナルへ送信するレスポンスＡＰＤＵは，書き込みコマンド３が正常終了したことを示すステータスワードになる。更に，書き込み処理において，可変長データのタグに対応する格納領域がＮＶＭ２３に存在しない場合，図外のターミナルへ送信するレスポンスＡＰＤＵは，創生処理が未実施を示すステータスワードになる。
【００３３】
図４は，ＰＵＴ＿ＤＡＴＡコマンドに書き込みコマンド３を適用したケースを説明する図で，図５は，ＳＴＯＲＥ＿ＤＡＴＡコマンドに書き込みコマンド３を適用したケースを説明する図である。
【００３４】
図４で図示した書き込みコマンド３のコマンドＡＰＤＵにおいて，ＣＬＡは‘００’でＩＮＳは，ＰＵＴ＿ＤＡＴＡコマンドのＩＮＳと同じ‘ＤＡ’になっている。図４で図示した書き込みコマンド３のコマンドＡＰＤＵでは，ＰＵＴ＿ＤＡＴＡコマンドと同様に，コマンドパラメータによって可変長データのタグが示されその値は‘９Ｆ０１’である。また，図４で図示した書き込みコマンド３のコマンドＡＰＤＵのコマンドデータには，可変長データの書き込み処理を示すタグ（ここでは，‘８０’）を有する書き込み指示データ３０に加え，可変長データの創生処理を示すタグ（ここでは，‘８１’）を有する創生指示データ３１が含まれる。図４において，書き込み指示データ３０のデータ本体は，可変長データのデータ本体で‘３１３２３３３４’である。また，創生指示データ３１のデータ本体は‘１０’で，可変長データのデータ本体の最大データ長は１６バイトである。
【００３５】
図５で図示した書き込みコマンド３のコマンドＡＰＤＵにおいて，ＣＬＡは‘８０’でＩＮＳは，ＳＴＯＲＥ＿ＤＡＴＡコマンドのＩＮＳと同じ‘Ｅ２’になっている。図５で図示した書き込みコマンド３のコマンドＡＰＤＵでは，ＳＴＯＲＥ＿ＤＡＴＡコマンドと同様に，コマンドパラメータによって，可変長データを分割して送信する場合の最終コマンドであるか否か，可変長データのデータ構造などが示され，図５においてコマンドパラメータは‘０９００’（最終コマンド，可変長データのデータ構造はＢＥＲ−ＴＬＶ構造，ブロック番号は‘００’）である。また，図５で図示した書き込みコマンド３のコマンドＡＰＤＵのコマンドデータには，可変長データの書き込み処理を示すタグ（ここでは，‘８０’）を有する書き込み指示データ３０に加え，可変長データの創生処理を示すタグ（ここでは，‘８１’）を有する創生指示データ３１が含まれる。書き込み指示データ３０のデータ本体は，タグ，データ長およびデータ本体で構成される可変長データで，図５において書き込み指示データ３０のデータ本体は ‘９Ｆ０１０４３１３２３３３４’である。ここで，‘９Ｆ０１’は可変長データのタグで，‘０４’は可変長データのデータ長で， ‘３１３２３３３４’が可変長データのデータ本体である。また，図４と同様に，創生指示データ３１のデータ本体は‘１０’である。なお，ＳＴＯＲＥ＿ＤＡＴＡコマンドに書き込みコマンド３を適用する場合，可変長データのタグは，書き込み指示データ３０のデータ本体から取得することになる。
【００３６】
図６は，ＮＶＭ２３の状態を説明する図である。図６（ａ）は，可変長データの創生処理（Ｓ３）を実施した後のＮＶＭ２３を説明する図である。ＩＣカード１が備えるＮＶＭ２３は，可変長データを格納する格納領域の管理データを記憶する管理領域２３ａと，可変長データを格納する格納領域が設けられるデータ領域２３ｂを備える。書き込みコマンド３のコマンドＡＰＤＵに含まれる創生指示データ３１を用いた創生処理が実施されることで，創生処理で確保した格納領域の管理データが管理領域２３ａに追加される。格納領域の管理データは，格納領域に対応する可変長データのタグと，格納領域の開始アドレスと，格納領域のサイズを含む。
【００３７】
創生処理でＮＶＭ２３のデータ領域２３ｂ内に確保した格納領域には，先頭から順に，格納領域に格納する可変長データのタグ（ここでは，‘９Ｆ０１’の２バイト），データ長およびデータ本体が書き込まれる。創生処理（Ｓ３）で格納領域に書き込まれる可変長データのデータ長は，データ本体の最大データ長で，ここでは‘１０’（１６バイト）である。更に，創生処理（Ｓ３）で格納領域に書き込まれる可変長データのデータ本体は，データ長が最大データ長で全てのバイトは初期値（‘ＦＦ’）である。
【００３８】
図６（ｂ）は，書き込み処理（Ｓ４）を実施した後のＮＶＭ２３を説明する図である。図５では，書き込み指示データ３０で示される可変長データのデータ本体は‘３１３２３３３４’の４バイトであるため，書き込み処理（Ｓ４）において，格納領域に書き込まれている可変長データのデータ長 ‘１０’は‘０４’に更新され，格納領域に書き込んでいる可変長データのデータ本体の先頭４バイトはＦＦＦＦＦＦＦＦ’から‘３１３２３３３４’に更新される。
【符号の説明】
【００３９】
１    ＩＣカード
２０  ＣＰＵ
２３  ＮＶＭ
３    書き込みコマンド
３０  書き込み指示データ
３１  創生指示データ
【図１】
2018156162.tif 000003
【図２】
2018156162.tif 000004
【図３】
2018156162.tif 000005
【図４】
2018156162.tif 000006
【図５】
2018156162.tif 000007
【図６】
2018156162.tif 000008
【図７】
2018156162.tif 000009