(57)【要約】【課題】  初期発行時等においてＩＣカード内部に記録されたデータの整合性検査が不必要な場合に、前記データの整合性検査を省くことのできるＩＣカードおよびＩＣカードプログラムを提供する。【解決手段】  データの誤り検出符合が特定値の場合はデータの整合性を検査せずにコマンド処理を実行し、前記誤り符合が特定値以外の場合はデータの整合性を検査してコマンド処理を実行する機能を備えたアプリケーションコマンドをＩＣカードに実装することで、初期発行前に前記誤り検出符合を前記特定値に設定しておけば、初期発行時にはコマンド処理にデータの整合性検査は実行されず、初期発行に要する時間を短縮できる。【選択図】      図６
2005202822.tif 000002
【特許請求の範囲】
【請求項１】
記録領域に記録されたデータの整合性を誤り検出符号を用いて検査するデータ整合性検査手段を具備したＩＣカードにおいて、前記誤り検出符合が特定値の場合には前記データ整合性検査手段を実行しない機能を有するコマンドを備えたことを特徴とするＩＣカード。
【請求項２】
請求項１に記載のＩＣカードにおいて、前記コマンドは前記コマンド処理中に、前記記憶領域に格納された誤り検出符合を前記特定値に替えて前記データ整合性検査手段で演算した誤り検出符合に更新する機能を有するコマンドであることを特徴とするＩＣカード。
【請求項３】
請求項１または請求項２に記載のＩＣカードにおいて、前記特定値は前記データ整合性検査手段では演算されない値であることを特徴するＩＣカード。
【請求項４】
外部装置からコマンドを処理するＩＣカード用プログラムにおいて、前記コマンドの処理対象となる記録領域に格納されたデータの誤り検出符合を読み出すステップ、読み出した前記誤り検出符合を特定値と比較するステップ、読み出した前記誤り検出符合が特定値と一致している場合はデータ整合性検査を実行しないステップを順に実行する手順を含むことを特徴とするＩＣカード用プログラム。
【請求項５】
外部装置からコマンドを処理するＩＣカード用プログラムにおいて、前記コマンドの処理対象となる記録領域に格納されたデータの誤り検出符合を読み出すステップ、読み出した前記誤り検出符合を特定値と比較するステップ、読み出した前記誤り検出符合が特定値と一致している場合はデータ整合性検査を実行せずに前記コマンドを処理するステップ、前記コマンド処理後に前記コマンドの処理対象となったデータの誤り検出符合を演算するステップ、前記演算した誤り検出符合を前記コマンドの処理対象となったデータに付加して記憶領域に格納するステップを順に実行する手順を含むことを特徴とするＩＣカード用プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、クレジットカードサイズのプラスチックカードに半導体集積回路（以下、ＩＣチップと記す）を埋め込んだＩＣカードおよびＩＣカード用ソフトウェアに関し、特に前記ＩＣチップ内のメモリへデータを読み書きする技術に関する。
【背景技術】
【０００２】
従来より、キャッシュカードや電子マネーといった金融系の用途において、ＩＣカードが広く用いられている。ＩＣカードとは、クレジットカードサイズのプラスチップカードに半導体集積回路（以下、ＩＣチップと記す）を埋め込んだカードである。ＩＣカードには磁気カードに比べて１００倍近いデータを記録でき、また使用者の認証機能やデータの暗号化機能を備えることでデータの改竄にも強いカードである。
【０００３】
ＩＣカードはその用途上、特許文献１の発明の実施の形態に記載されているように、通常はＩＣカード内部に記録されているデータの整合性に誤りがあるまま動作することは望まれず、メモリにデータを記録するときは、データと共に誤り検出符合を記録することが一般的である。
【０００４】
前記誤り検出符合はデータ整合性検査に使用されるデータで、データ整合性検査とはメモリ等の記録領域に格納されたデータの誤りを検査することで、メモリに記録するデータと共に前記データを元にある算術式で演算した値すなわち誤り検出符合を付加してメモリに記録し、データの書き込み・読み出しの際はメモリに記録されているデータを元に同じ算術式で誤り検出符合を演算し、メモリに記録されている誤り検出符合と演算した誤り検出符合が一致することを確認する検査である。誤り検出符合の値が一致していればメモリ内に記録されたデータの整合性に誤りは無いと判断し、値が一致しなければメモリ内に記録されたデータの整合性に誤りがあると判断する。
【０００５】
代表的なデータ整合性検査の一つであるチェックサム検査は、算術式として加算式を用い、メモリに記録するデータの加算値を前記データと共にメモリに記録する。データ書き込み・データ読み出しの処理時は、メモリに記録されているデータの加算値を演算し、同じくメモリに記録されている加算値と比較することでデータの整合性を検査する。このチェックサム検査は算術式が単純で処理時間が短いといった利点はあるものの、２つ以上のデータの誤りが同時に発生すると、それぞれの誤りが相殺されて正しい加算値になってしまう場合がある。例えば２つのデータの順序が入れ替わると、データの加算値は変化せず、チェックサム検査では前記データの入れ替りを検査できないことがある。
【０００６】
そこでＩＣカードの分野においては、ファイルに記録されたデータ整合性検査として前記チェックサムではなく巡回冗長検査（CRC:cyclic redundancy check、以下、ＣＲＣと記す）を用いるケースが多い。ＣＲＣでは、算術式として単純な加算を用いず、生成多項式と呼ばれるデータのシフトや加算等を組み合わせた算術式を用いるため、２つ以上のデータの誤りが同時に発生しても、データの整合性が正しいと判断される確率は極めて低くい。ただしその一方、ＣＲＣにおいては複雑な算術式を用いるためチェックサム検査よりも演算量が大幅に増え、結果としてデータ整合性検査に要する時間が増えてしまう問題がある。
【０００７】
ＣＲＣの演算時間を短縮する手段としては、非特許文献１に記載されているようなＣＲＣ演算専用回路をＩＣチップに設けることが多い。ＩＣカード運用時は、前記ＣＲＣ演算専用回路によりＣＲＣの演算時間が問題になることは極めて少ないが、一方ＩＣカード製造会社がＩＣカードを発行する際は、前記ＣＲＣ演算専用回路を具備したＩＣカードであってもＣＲＣの演算時間が問題になる。
【０００８】
例えば個人認証用のＩＣカードには認証機関の電子証明証をＩＣカードに書き込むことがおおく、前記電子証明証のデータ容量は数Ｋバイトにもおよぶため、ＩＣカード製造会社内におけるＩＣカード発行前であって、メモリに記録されているデータの整合性が問われない状況にあるにも関わらず、前記電子証明証を書き込む前には、前記電子証明証を書込む数Ｋバイトにおよぶメモリ領域のＣＲＣを演算しなくてはならない。ＩＣカードの発行枚数が少ないときは前記ＣＲＣの演算時間は特に問題にならないが、ＩＣカードの発行枚数が多いときは製造処理能力または製造コストの面において、前記ＣＲＣの演算時間が問題となっている。
【０００９】
【特許文献１】特開平９−２３１１１１号公報
【非特許文献１】「テレビジョン画像情報工学ハンドブック（テレビジョン学会編）第１版」、オーム社発行、１９９０年、ｐ．６２８」
【発明の開示】
【発明が解決しようとする課題】
【００１０】
前述の通り、ＩＣカード製造会社等のＩＣカードを大量に発行する会社においては、ＩＣカード発行前等のＩＣチップに記録されているデータの整合性が問われない状況では、データ整合性検査に要する時間を短縮することで発行処理能力を向上できる方式が望まれている。加えてＩＣカード運用時等のＩＣチップに記録されているデータの整合性が問われる状況においては、ＩＣカードはＩＣカード内部に記録しているデータの整合性に誤りがあるまま動作しないことが望ましい。
【００１１】
本発明は、前述の課題を鑑みて、発行処理前等のデータの整合性を問われにくい状況においてはデータ整合性検査を省くことで、データ書き込み処理やデータ読み出し処理等の処理時間を短縮できるＩＣカードおよびＩＣカード用プログラムを提供することを目的とする。加えて、ＩＣカード運用時等のＩＣチップに記録しているデータの整合性を問われる状況においては、ＩＣカード内部に記録されているデータの整合性検査を実行するＩＣカードおよびＩＣカード用プログラムを提供することも目的とする。
【課題を解決するための手段】
【００１２】
上記課題を鑑みて、請求項１に記載のＩＣカードは、記憶領域に格納されるデータに、前記データの誤り検出するための誤り検出符合を付加して格納し、前記記録領域に格納されたデータから誤り検出符合を演算する機能と、演算した誤り検出符合と前記記憶領域に格納された誤り検出符合から前記記憶領域に格納されたデータの整合性を検査する機能を有するデータ整合性検査手段を具備したＩＣカードにおいて、前記記憶領域に格納された誤り検出符合が特定値の場合には前記データ整合性検査手段を実行しない機能を有するコマンドを備えたことを特徴とするＩＣカードである。カード発行前等の記憶領域に格納されているデータの整合性を問われない状況においては、データに付加する誤り検出符合を特定値に設定しておくことで、データ整合検査を省くことができ、コマンドの処理時間を短縮できる。
【００１３】
請求項２に記載のＩＣカードは、請求項１に記載のＩＣカードにおいて、前記コマンドは前記コマンド処理中に、前記記憶領域に格納された誤り検出符合を前記特定値に替えて前記データ整合性検査手段で演算した誤り検出符合に更新する機能を有するコマンドであることを特徴とするＩＣカードである。コマンド処理後に誤り符合を演算値とすることで、カード運用時等においてはデータ整合性検査は実行され、ＩＣカード内部に記録されているデータの整合性に誤りがあるままの状態でＩＣカードが動作することを防ぐ。
【００１４】
請求項３に記載のＩＣカードは、請求項１または請求項２に記載のＩＣカードにおいて、前記特定値は前記データ整合性検査手段では演算されない値であることを特徴するＩＣカードである。前記特定値を前記データ整合性検査手段では演算されない値とすることで、カード運用時に前記演算された誤り符合と前記特定値が一致することはなくなる。
【００１５】
請求項４に記載のＩＣカード用プログラムは、外部装置からコマンドを処理するＩＣカード用プログラムにおいて、前記コマンドの処理対象となる記録領域に格納されたデータの誤り検出符合を読み出すステップ、読み出した前記誤り検出符合を特定値と比較するステップ、読み出した前記誤り検出符合が特定値と一致している場合はデータ整合性検査を実行しないステップを順に実行する手順を含むことを特徴とするＩＣカード用プログラムである。本ＩＣカード用プログラムをＩＣカードに実装することで、請求項１から請求項３に記載のＩＣカードを実現できる。
【００１６】
請求項５記載のＩＣカード用プログラムにおいては、外部装置からコマンドを処理するＩＣカード用プログラムにおいて、前記コマンドの処理対象となる記録領域に格納されたデータの誤り検出符合を読み出すステップ、読み出した前記誤り検出符合を特定値と比較するステップ、読み出した前記誤り検出符合が特定値と一致している場合はデータ整合性検査を実行せずに前記コマンドを処理するステップ、前記コマンド処理後に前記コマンドの処理対象となったデータの誤り検出符合を演算するステップ、前記演算した誤り検出符合を前記コマンドの処理対象となったデータに付加して記憶領域に格納するステップを順に実行する手順を含むことを特徴とするＩＣカード用プログラムである。本ＩＣカード用プログラムをＩＣカードに実装することで、請求項２または請求項３に記載のＩＣカードを実現できる。
【発明の効果】
【００１７】
前述で示した通り本発明によれば、データに付加した誤り検出符合を特定値に設定することで、発行処理前等のデータの整合性を問われにくい状況においてはデータ整合性検査を省くことができ、データ書き込み処理等のコマンド処理時間を短縮できるＩＣカードおよびＩＣカード用プログラムを提供できる。加えて、コマンド処理実行後に前記誤り検出符合を特定値から前記データ整合性検査手段で演算された誤り検出符合に更新することで、カード発行後の運用時等においてはＩＣカード内部に記録されているデータの整合性に誤りがあるまま動作することを防ぐことができる。
【発明を実施するための最良の形態】
【００１８】
以下、本発明の実施の形態として、本発明をデータ書き込みコマンドおよびデータ読み出しコマンドに適用した例について、図を参照しながら詳細に説明する。図１はマルチアプリケーション型ＩＣカードの基本構成図、図２はＩＣチップの構成図、図３はアプリケーションソフトの説明図、図４はアプリケーションデータの説明図、図５はレコードデータの説明図、図６はデータ書き込みコマンドの動作フロー図、図７はＥＥＰＲＯＭ内部状態の説明図、図８はデータ読み出しコマンドの動作フロー図である。
【００１９】
図１はマルチアプリケーション型ＩＣカードの基本構成図である。本実施の形態のＩＣカードはマルチアプリケーション型ＩＣカードであり、図１に示すように、マルマルチアプリケーション型ＩＣカード１０は、ハードウェアとしてＩＣチップ２０を、ソフトウェアとしてマルチアプリケーションＯＳ３０とアプリケーションソフト４０を有している。
【００２０】
図２はＩＣチップ２０のハードウェア構成図である。ＩＣチップ２０には、外部装置からのデータもしくは電気信号に基いてＩＣチップ内部全体を制御し、データの論理和・論理否定等の演算機能を有する中央演算装置２１（以下、ＣＰＵと記す。ＣＰＵはCentral Processing Unitの略）と、プログラムを記憶する不揮発性の記憶デバイスとして読み出し専用メモリ２２（以下、ＲＯＭと記す。ＲＯＭはRead Only Memoryの略）と、プログラムもしくはデータを記憶する揮発性の記憶デバイスとしてランダムアクセスメモリ２３（以下、ＲＡＭと記す。ＲＡＭはRandom Access Memory の略）と、同じくプログラムもしくはデータの記憶デバイスとして電気的に消去・書き換えできるＲＯＭ２４（以下、ＥＥＰＲＯＭと記す。ＥＥＰＲＯＭはElectrically Erasable Programmable Read-Only Memory の略）と、ＣＲＣを演算する回路としてＣＲＣ演算回路２５と、接触端子２７を介して外部装置９０と通信するための手段としてＩ／Ｏ制御回路２６を具備している。
【００２１】
ＣＲＣ演算回路２５は、ＩＴＵ−Ｔ（国際 電気通信連合電気通信標準化部門）の勧告に従ったＣＲＣ１６生成器である。ＣＲＣ演算回路２５の出力は１６ビット、すなわち２バイトの値で、８ビット単位すなわち１バイト単位でデータの誤りを検出できる。ＣＲＣ演算回路２５のインプットレジスタに１バイトのデータを入力すると、ＣＲＣ演算回路２５にてＣＲＣの演算が自動的に行われアウトプットレジスタから演算結果が出力される。前記インプットレジスタに連続して１バイトずつデータを入力することで、任意のデータ長のＣＲＣを演算することができる。
【００２２】
マルチアプリケーションＯＳ３０とは、図１に示すように１枚のＩＣカードに複数のアプリケーション４０を搭載できるＯＳである。マルチアプリケーションＯＳ３０は、Ｉ／Ｏ制御回路２６を制御し接触端子２７を介して外部装置９０とデータ通信するプログラム等のアプリケーションソフト４０で共通に利用できる関数と、アプリケーションソフト４０をＥＥＰＲＯＭ２４に書き込む機能等の基本機能を有し、マルチアプリケーションＯＳ３０のコードはＲＯＭ２２に記録されている。電気的にデータの消去・書き換えが行えるＥＥＰＲＯＭ２４にアプリケーションソフト４０を搭載することで、前記マルチアプリケーションＯＳ３０ではカード発行後においてもアプリケーションソフト４０の削除・追加が行えることが特徴である。
【００２３】
アプリケーションソフト４０はクレジットや電子マネーなどのプログラムであり、アプリケーションソフト４０ごとにデータ書き込みコマンドまたはデータ読み出しコマンドなどのアプリケーションソフト４０で使用するコマンドや、データ整合性検査方式またはデータファイル構造などを独自に定義できる。本発明を適用したデータ書き込みコマンドおよびデータ読み出しコマンドはこのアプリケーションソフト４０で定義されたコマンドであり、マルチアプリケーションＯＳ３０の種別は問わない。
【００２４】
図３はＥＥＰＲＯＭ２４に搭載するアプリケーションソフト４０の構造図である。アプリケーションソフト４０は、アプリケーションのプログラムであるアプリケーションコード４１０と、アプリケーションコード４１０が使用するアプリケーションデータ４２０から構成されている。
【００２５】
アプリケーションコード４１０には、データの整合性を検査するデータ整合性検査コード４１１、ＥＥＰＲＯＭ２４にデータを書込むデータ書き込みコマンドコード４１２、ＥＥＰＲＯＭ２４からデータを読み出すデータ読み出しコマンドコード４１３およびその他アプリケーションソフト４０で必要なプログラムコード４１４が記録されている。データ整合性検査コード４１１は、ＣＰＵ２１が有する演算機能とＣＲＣ演算回路２５を利用して誤り検出符合を演算し、ＥＥＰＲＯＭ２４に記録されたデータの整合性検査を実行するデータ整合性検査手段である。なおデータ書き込みコード４１２およびデータ読み出しコード４１３は、それぞれ本発明を適用したプログラムである。
【００２６】
アプリケーションデータ４２０は、複数のデータファイル４２１から構成されている。各データファイル４２１には、アプリケーションが使用するクレジット番号、電子マネーの金額、電子証明証等の情報がデータとして記憶される。
【００２７】
図４はデータファイル４２１の構造図である。データファイル４２１は複数のレコードデータ４３０が連なった構造になっている。
【００２８】
図５はレコードデータ４３０の構造図である。レコードデータ４３０はレコードデータ４３０の属性を示す１バイトのＴＡＧフィールド４３１、データの長さを示す１バイトのＬＥＮフィールド４３２、ＬＥＮフィールドで示された長さのデータを有するデータフィールド４３３、レコードデータの整合性検査に使用する誤り検出符合としてとして４バイトのＥＤＣフィールド４３４から構成されている。
【００２９】
本実施の形態で用いる誤り検出符合は、ＴＡＧフィールド４３１、ＬＥＮフィールド４３２およびデータフィールド４３３に記録されたデータからＣＲＣ演算回路２５を用いて演算した２バイトのＣＲＣ演算値と、前記ＣＲＣ演算値のすべてのビットを反転した２バイトの値とから構成されている。データ整合性検査コード４１１は、ＥＥＰＲＯＭ２４に記録された前述のデータから前記誤り検出符合を演算し、ＥＥＰＲＯＭ２４に記録されたＥＤＣフィールド４３４の値と比較する。データ整合性検査コード４１１は、演算した誤り検出符合とＥＤＣフィールドの値が一致していればデータの整合性に誤りは無いと判断し、値が一致しなければデータの整合性に誤りが有ると判断する。
【００３０】
ＣＲＣ演算値の２バイトに前記ＣＲＣ演算値のすべてのビットを反転した２バイトを加えた４バイトのデータを誤り検出符合とすることで、「００００００００ｈ」の４バイトの値は、データ整合性検査の算術アルゴリズム上において演算されない値となるため、「００００００００ｈ」は特定値として使用される。なぜならＣＲＣ演算値が「００００ｈ」の時は、誤り検出符合は「００００ＦＦＦＦｈ」となり特定値とは一致せず、それ以外のＣＲＣ値の場合はＣＲＣ演算値自体が「００００ｈ」でないため特定値とは一致しないため、前記算出アルゴリズムで演算される誤り検出符合は特定値と一致することはない。
【００３１】
ここから、本発明を適用したデータ書き込みコマンドの動作について図６と図７を参照しながら説明する。図６は本発明を適用したデータ書き込みコード４１２の動作フロー図、図７はデータファイル４５０のＥＥＰＲＯＭ２４の内部状況を表した図である。図７においては、本発明の要点を明確にするために、アプリケーションデータ４２０のデータファイルはデータファイル４５０の１つ、データファイル４５０に含まれるレコードデータはレコードデータ４６０、４７０の２つとしている。
【００３２】
図７（ａ）は、データファイル４５０がマルチアプリケーションＯＳ３０によって書込まれた直後のデータファイル４５０のメモリ領域を示した図である。図７（ａ）に示すように、データファイル４５０には２つのレコードデータ４６０、４７０が初期状態で記録されている。
【００３３】
レコードデータ４６０のＴＡＧフィールドには「０１ｈ」、ＬＥＮフィールドには「０８ｈ」、データフィールドには初期値として「ＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦｈ」が記録されている。レコードデータ４７０のＴＡＧフィールドには「０２ｈ」、ＬＥＮフィールドには「０８ｈ」、データフィールドには初期値として「ＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦＦｈ」が記録されている。またレコードデータ４６０、４７０のＥＤＣフィールドには、それぞれ特定値として「００００００００ｈ」が記録されている。
【００３４】
まず初めに図７（ａ）の状態においてレコードデータ４６０にデータを書き込む処理フローについて図６を参照しながら説明する。マルチアプリケーションＯＳ３０が外部装置からレコードデータ４６０に対しデータを書き込むデータ書き込みコマンドを受信すると、マルチアプリケーションＯＳ３０は前記データ書き込みコマンドで送信されたデータをＲＡＭ２３に展開する。ここで前記ＲＡＭ２３に展開されたデータは、レコードデータ４６０のＴＡＧフィールド、ＬＥＮフィールドおよびデータフィールドを少なくとも含んでいるデータである。マルチアプリケーションＯＳ３０はＲＡＭ２３にデータを展開した後、アプリケーションソフト４０に前記データ書き込みコマンド処理を依頼する。アプリケーションソフト４０は、アプリケーションコード４１０に記録されているデータ書き込みコマンドコード４１２を実行しレコードデータ４６０に対しデータ書き込み処理を開始する（Ｓ１０）。
【００３５】
データ書き込み処理においては、まずはじめにレコードデータ４６０のＥＤＣフィールドの値と特定値すなわち「００００００００ｈ」を比較する。（Ｓ１１）。図７（ａ）においてレコードデータ４６０のＥＤＣフィールドの値は特定値すなわち「００００００００ｈ」と一致しているため、レコードデータ４６０のデータ整合性検査Ｓ１２をスキップし、レコードデータ４６０のデータ書き込み処理Ｓ１４へ進む。
【００３６】
データ書き込み処理においては、前記ＲＡＭ２３に展開されたデータのＴＡＧフィールドおよびＬＥＮフィールドに対応する値とレコードデータ４６０に記録されているそれぞれの値を比較し、各々の値が一致していれば、同じく前記ＲＡＭ２３に展開されたデータフィールドに対応する値をレコードデータ４６０のデータフィールドに書き込む処理を行う（Ｓ１４）。
【００３７】
書き込み終了後、レコードデータ４６０のデータフィールドに書込んだデータを読み出し、前記ＲＡＭ２３に展開されているデータと一致することを確認する（Ｓ１５）。
【００３８】
前記フィールドに書き込まれたデータとＲＡＭ２３に展開されたデータがすべて一致していれば、レコードデータ４６０のＴＡＧフィールド、ＬＥＮフィールドおよびデータフィールドに記録されたデータをＣＲＣ演算回路２５のインプットレジスタに入力し、ＣＲＣ演算回路２５のアウトプットレジスタからＣＲＣ演算値を取得する。前記ＣＲＣ演算値のすべてのビットを反転させた値をＣＰＵ２１の論理否定演算機能を用いて計算し、前記ＣＲＣ演算値と前記ＣＲＣ演算値のすべてのビットを反転させた値の合計４バイトを、レコードデータ４６０のＥＤＣフィールドに記録し（Ｓ１６）、次のステップに進む。
【００３９】
データ書き込み処理が正常に終了した場合は、データ書き込みコマンドが正常に終了したことを示すメッセージをマルチアプリケーションＯＳ３０に返信し（Ｓ１７）、レコードデータ４６０に対するデータ書き込みコマンド処理を終了する（Ｓ２０）。
【００４０】
前記データフィールドに書き込まれたデータと前記ＲＡＭ２３に展開されたデータが一致しなければ、データ書き込みコマンドが異常に終了したことを示すメッセージをマルチアプリケーションＯＳ３０に返信し（Ｓ１８）、レコードデータ４６０に対するデータ書き込みコマンド処理を終了する（Ｓ２０）。
【００４１】
図７（ｂ）は、レコードデータ４６０に前記データ書き込みコマンドにて「０００１０２０３０４０５０６０７ｈ」を書き込んだ後のデータファイル４５０のメモリ領域を示した図である。図７（ｂ）においてはレコードデータ４６０のデータフィールドには前記データが書き込まれ、ＥＤＣフィールドには特定値ではない誤り検出符合「Ｅ４Ｄ１１Ｂ２Ｅ」が書き込まれている。またレコードデータ４７０のデータはすべて初期状態のままである。
【００４２】
以下に図７（ｂ）の状態において、レコードデータ４６０に「１０１１１２１３１４１５１６１７ｈ」を書き込む処理について説明する。前述のようにマルチアプリケーションＯＳ３０がＲＡＭ２３にデータを展開した後、アプリケーションソフト４０にてデータ書き込みコマンド４１２が実行される（Ｓ１０）。
【００４３】
まず始めにレコードデータ４６０のＥＤＣフィールドの値と特定値すなわち「００００００００ｈ」を比較する（Ｓ１１）。図７（ｂ）においてはレコードデータ４６０のＥＤＣフィールドは「Ｅ４Ｄ１１Ｂ２Ｅ」であり特定値すなわち「００００００００ｈ」と一致しておらず、レコードデータ４６０のデータ整合性検査（Ｓ１２）へ進む。
【００４４】
データ整合性検査においては、データ整合性検査コード４１１がレコードデータ４６０のＴＡＧフィールド、ＬＥＮフィールドおよびデータフィールドのデータをＣＲＣ演算回路２５にインプットしＣＲＣ演算値を取得する。前記ＣＲＣ演算値に前記ＣＲＣ値演算値のすべてのビットを反転させたデータを加えた合計４バイトの値をレコードデータ４６０のＥＤＣフィールドの値と比較する（Ｓ１２）。値が一致しているときはレコードデータ４６０のデータ整合性検査を正常としＳ１４へ進み、一致していないときはデータの整合検査を異常としＳ１８へ進む（Ｓ１３）。
【００４５】
データ整合性検査が正常の場合の処理、すなわちS１４以降の処理は前述の手順と同じである。
【００４６】
データ整合性検査が異常の場合は、マルチアプリケーションＯＳ３０にデータの整合性異常を示すメッセージを返信し（Ｓ１８）、レコードデータ４６０の書き込み処理を終了する（Ｓ２０）。
【００４７】
図７（ｃ）はレコードデータ４６０のデータフィールドに「１０１１１２１３１４１５１６１７ｈ」を書込んだ後の図である。図７（ｃ）においては、レコードデータ４６０のデータフィールドおよびＥＤＣフィールドの値がそれぞれ更新されている。なおレコードデータ４７０の各フィールドは初期状態が保たれている。
【００４８】
上述のように、本発明を適用したデータ書き込みコマンドにおいては、書き込み対象の誤り検出符合が特定値の場合にはデータ書き込み前のデータ整合性検査は実行されず、特定値と異なる場合にデータ書き込み前のデータ整合性検査は実行される。またデータ書き込み処理実行後はデータ整合性検査が実行されるため、対象とするデータの整合性に誤りがある場合はデータの書き込み処理は実行されない。
【００４９】
次にデータ読み出しコマンド処理について説明する。図８はデータ読み出しコマンドの動作フロー図である。まず始めに図７（ｃ）の状態において、レコードデータ４６０のデータ読み出し処理について説明する。
【００５０】
マルチアプリケーションＯＳ３０がレコードデータ４６０のデータを読み出すデータ読み出しコマンドを受信すると、マルチアプリケーションＯＳ３０は前記データ読み出しコマンド処理をアプリケーションソフト４０に依頼する。アプリケーションソフト４０はアプリケーションコード４１０に記録されているデータ読み出しコマンドコード４１３を実行し、レコードデータ４６０に対してデータ読み出し処理を開始する（Ｓ３０）。
【００５１】
データ読み出し処理においては、まず始めにレコードデータ４６０ののＥＤＣフィールドの値と特定値すなわち「００００００００ｈ」を比較する（Ｓ３１）。図７（ｃ）においてレコードデータ４６０のＥＤＣフィールドは「８１０Ａ７ＥＦ５」であり特定値すなわち「００００００００ｈ」と一致しておらず、レコードデータ４６０のデータ整合性検査（Ｓ３２）へ進む。
【００５２】
データ整合性検査においては、データ整合性検査コード４１１がレコードデータ４６０のＴＡＧフィールド、ＬＥＮフィールドおよびデータフィールドのデータをＣＲＣ演算回路２５にインプットしＣＲＣ演算値を取得する。前記ＣＲＣ演算値に前記ＣＲＣ値演算値のすべてのビットを反転させたデータを加えた合計４バイトの値とレコードデータ４６０のＥＤＣフィールドの値を比較する（Ｓ３２）。値が一致しているときはレコードデータ４６０のデータ整合性検査を正常としデータ読み出し処理Ｓ３４に進み、一致していないときはデータ整合検査を異常としＳ３６へ進む（Ｓ３３）。
【００５３】
データ整合性検査が正常の場合は、レコードデータ４６０のＴＡＧフィールド、ＬＥＮフィールドおよびデータフィールドの値を読み出しＲＡＭ２３に展開し（Ｓ３４）、データ読み出しコマンド正常終了のメッセージをマルチアプリケーションＯＳ３０に返信し、マルチアプリケーションＯＳ３０にＲＡＭ２３に展開したデータを外部装置９０に送信する処理を依頼した後（Ｓ３７）、データ読み出しコマンドの処理を終了する（Ｓ３８）。
【００５４】
データ整合性検査が異常の場合は、マルチアプリケーションＯＳ３０にデータ読み出しコマンドの異常終了を返信した後（Ｓ３６）、データ読み出しコマンドの処理を終了する（Ｓ３８）。
【００５５】
ここからレコードデータ４７０のデータを読み出す処理に内容について説明する。前に述べた手順でアプリケーションソフト４０はデータ読み出しコマンドコード４１３を開始する（Ｓ３０）。
【００５６】
データ読み出し処理においては、まず始めにレコードデータ４６０ののＥＤＣフィールドの値と特定値すなわち「００００００００ｈ」を比較する。（Ｓ３１）。図７（ｃ）においてレコードデータ４７０のＥＤＣフィールドは「００００００００ｈ」であり特定値すなわち「００００００００ｈ」と一致しているため、レコードデータ４７０のデータ整合性検査Ｓ３２はスキップし、データ読み出し処理Ｓ３４へ進む。Ｓ３４以降の手順は、前に述べた通りである。
【００５７】
上述のように、本発明を適用したデータ読み出しコマンドにおいては、読み出し対象の誤り検出符合が特定値の場合にはデータ読み出し前のデータ整合性検査は実行されず、特定値と異なる場合にはデータ読み出し前のデータ整合性検査は実行される。
【００５８】
これまで述べたように、ＩＣカード発行時等のデータの整合性が問われにくい場合には、誤り検出符合を特定値に設定することで、本発明を適用したデータ書き込みコマンドまたはデータ読み出しコマンド等の処理時においてはデータ整合性検査を省くことができコマンドの処理時間を短縮することができる。また発行後等は、前記誤り検出符合が特定値からデータ整合性検査手段で演算された値に更新されるため、前記コマンド処理時にはデータ整合性検査が実行され、データの整合性に誤りがあるまま前記コマンド処理が実行されることはない。
【００５９】
また本実施の形態においては、データ整合性検査に用いる算術アルゴリズムとしてＣＲＣを用いが、他の算術アルゴリズム、例えばチェックサムや水平冗長検査でも良い、また本実施の形態ではマルチアプリケーション型ＯＳに適用した例を示したが、アプリケーションをＲＯＭに格納する専用ＯＳ（ＮａｔｉｖｅＯｓ）でも本発明は適用できる。加えてデータファイル毎にデータファイル全体の整合性検査に用いる誤り検出符合を付加し、本発明を適用しても構わない。
【図面の簡単な説明】
【００６０】
【図１】マルチアプリケーション型ＩＣカードの基本構造図
【図２】ＩＣチップの構造図
【図３】アプリケーションソフトの説明図
【図４】アプリケーションデータの説明図
【図５】レコードデータの説明図
【図６】データ書き込みコマンドの動作フロー図
【図７】データファイル内部状態の説明図
【図８】データ読み出しコマンドの動作フロー図
【符号の説明】
【００６１】
１０    マルチアプリケーション型ＩＣカード
２０    ＩＣチップ
２１    ＣＰＵ
２２    ＲＯＭ
２３    ＲＡＭ
２４    ＥＥＰＲＯＭ
２５    ＣＲＣ演算回路
２６    Ｉ／Ｏ制御回路
２７    接触端子
３０    マルチアプリケーションＯＳ
４０    アプリケーションソフト
４１０  アプリケーションコード
４１１  データ整合性検査コード
４１２  データ書き込みコマンドコード
４１３  データ読み出しコマンドコード
４２０  アプリケーションデータ
４２１  データファイル
４３０  レコードデータ
４３１  ＴＡＧフィールド
４３２  ＬＥＮフィールド
４３３  データフィールド
４３４  ＥＤＣフィールド
４５０  データファイル
４６０  レコードデータ
４７０  レコードデータ
【図１】
2005202822.tif 000003
【図２】
2005202822.tif 000004
【図３】
2005202822.tif 000005
【図４】
2005202822.tif 000006
【図５】
2005202822.tif 000007
【図６】
2005202822.tif 000008
【図７】
2005202822.tif 000009
【図８】
2005202822.tif 000010