(57)【特許請求の範囲】
【請求項１】
所定ビット長のブロック単位でデータを記憶する電気的に書き換え可能な不揮発性メモリ（ＮＶＭ）と、
前記ＮＶＭにデータを書き込む際に、該データの記憶に利用するブロック毎にＥＣＣ（Error Correction Code）を演算し、該データの記憶に利用する前記ブロックに対応付けてＥＣＣを前記ＮＶＭに記憶し、電源が投入されて活性化されると、前記ＮＶＭに記憶されているＥＣＣを前記ブロック毎に検証し、前記ブロックに対応付けて検証結果を記憶するＥＣＣ制御手段と、
前記ＮＶＭに記憶されているデータにアクセスするアクセス命令を受信すると、アクセス対象となるデータの記憶に利用されている前記ブロックに対応するＥＣＣの検証結果を参照し、該検証結果によりデータの誤りを訂正したことが示されていた場合、アクセス対象となるデータを前記ＮＶＭの空き領域に移設してから前記アクセス命令を実行する命令実行手段を、
備えていることを特徴とするセキュリティトークン。
【請求項２】
前記ＮＶＭに書き込むデータにはＥＤＣが付加され、前記セキュリティトークンの前記命令実行手段は、前記アクセス命令を実行する前に、データに付加されたＥＤＣを検証し、ＥＤＣが異常の場合、前記アクセス命令の実行を中止することを特徴とする、請求項１に記載したセキュリティトークン。
【請求項３】
アクセス対象となるデータは、前記ＮＶＭに配置されたファイル内に記憶されているレコードであって、前記命令実行手段は、アクセス対象となるレコードの記憶に利用されている前記ブロックに対応するＥＣＣの検証結果によってデータの誤りを訂正したことが示されていた場合、アクセス対象となるレコードを該レコードが記憶されているファイル内の空き領域に移設することを特徴とする、請求項１または請求項２に記載したセキュリティトークン。
【請求項４】
電源が投入されて活性化されると、所定ビット長のブロック単位でデータを記憶する電気的に書き換え可能な不揮発性メモリ（ＮＶＭ）に記憶されているＥＣＣをブロック毎に検証し、前記ブロックに対応付けて検証結果を記憶するＥＣＣ検証工程と、
前記ＮＶＭに記憶されているデータにアクセスするアクセス命令を受信すると、アクセス対象となるデータの記憶に利用されている前記ブロックに対応するＥＣＣの検証結果を参照し、該検証結果によりデータの誤りを訂正したことが示されていた場合、アクセス対象となるデータを前記ＮＶＭの空き領域に移設してから前記アクセス命令を実行する命令実行工程が、
少なくとも実行されることを特徴とするセキュリティトークンにおける命令の実行方法。
【請求項５】
電源が投入されて活性化されると、所定ビット長のブロック単位でデータを記憶する電気的に書き換え可能な不揮発性メモリ（ＮＶＭ）に記憶されているＥＣＣをブロック毎に検証し、前記ブロックに対応付けて検証結果を記憶するＥＣＣ検証工程と、
前記ＮＶＭに記憶されているデータにアクセスするアクセス命令を受信すると、アクセス対象となるデータの記憶に利用されている前記ブロックに対応するＥＣＣの検証結果を参照し、該検証結果によりデータの誤りを訂正したことが示されていた場合、アクセス対象となるデータを前記ＮＶＭの空き領域に移設してから前記アクセス命令を実行する命令実行工程を、
セキュリティトークンに実行させるためのコンピュータプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＩＣカードやＵＳＢキーに代表され認証用途に用いられるセキュリティトークンに関し、更に詳しくは、セキュリティトークンに実装された電気的に書き換え可能な不揮発性メモリに発生するメモリエラーに対する信頼性を向上させるための技術に関する。
【背景技術】
【０００２】
電気的に書き換え可能な不揮発性メモリ(以下、「ＮＶＭ」と記す。NVM：Non-Volatile Memory) を使用してデータを記憶し認証用途に用いられるセキュリティトークンには、半導体製造技術の進歩によって大容量のＮＶＭが実装されるようになった。
【０００３】
一般的にＮＶＭの故障は大きく分けて初期故障、偶発故障及び摩耗故障の３つに分類され、セキュリティトークンに実装されているＮＶＭのメモリ容量が比較的小さければ、製品出荷前の段階で、ＮＶＭに対して読み書きを繰り返すメモリテストを全数実施し、ＮＶＭに初期故障が発生するセキュリティトークンをスクリーニングことが可能であるが、ＮＶＭが大容量の場合、生産コストの観点から十分なメモリテストを全数実施することが困難なため、ＮＶＭに初期故障が発生するセキュリティトークンが出荷されてしまう危険性がある。
【０００４】
セキュリティトークンには演算結果の信頼性が要求されるため、初期故障、偶発故障及び摩耗故障を問わず、ＮＶＭに発生するメモリエラーを検出できるように、ＮＶＭに記憶されるデータにＥＤＣ(Error Detection Code)を付加することが一般的に行われているが、特許文献１に記載があるように、メモリエラーがＮＶＭに発生するとセキュリティトークンの演算は停止するため、ＮＶＭに初期故障が発生するセキュリティトークンが出荷されてしまうと、システムの信頼性や稼働率を下げる原因となってしまう。
【０００５】
ＮＶＭにメモリエラーが発生しても、あたかもＮＶＭにメモリエラーが発生していないかのように取り扱うことができるように、ＮＶＭに記憶されたデータの誤りを検出し自動的に訂正できるＥＣＣ(Error Correction Code) が開発され（例えば、特許文献２、３）、ＥＣＣを利用することで、２ビットまでのデータの誤りを検出でき、更に、１ビットまでのデータの誤りを訂正できるようになる。
【０００６】
なお、１ビットまでのデータの誤りを訂正できるだけでは不十分に思われるかも知れないが、ＥＣＣは所定ビット数（例えば、６４ビットや３２ビット）毎に設けられるため、ＮＶＭの故障率を考慮すると、１ビットまでのデータの誤りを訂正できるだけで十分な効果が得られる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１１−２４０９１号公報
【特許文献３】特開平７−１２２０８７号公報
【特許文献３】特開平９−３３０２７３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
このように、ＥＣＣを利用することで、セキュリティトークンのＮＶＭにメモリエラーが発生しても、あたかもＮＶＭにメモリエラーが発生していないかのようにセキュリティトークンを取り扱うことができるようになるが、ＥＣＣを利用してデータの誤りを訂正できたとしても、このままの状態でセキュリティトークンを利用し続けると、メモリエラーが発生した箇所の付近で新たなメモリエラーが発生してしまい、データの誤りを訂正できなくなることがあるため、ＥＣＣを利用してデータの誤りを訂正した際、データの誤りを訂正したデータを故障が発生していない領域へ移設できることが望ましい。
【０００９】
そこで、本発明は、ＥＣＣを利用してデータの誤りを訂正した際、データの誤りを訂正したデータを他の領域へ移設することのできるセキュリティトークン、方法及びコンピュータプログラムを提供することを目的とする。
【課題を解決するための手段】
【００１０】
上述した課題を解決する第１の発明は、所定ビット長のブロック単位でデータを記憶する電気的に書き換え可能な不揮発性メモリ（ＮＶＭ）と、前記ＮＶＭにデータを書き込む際に、該データの記憶に利用するブロック毎にＥＣＣ（Error Correction Code）を演算し、該データの記憶に利用する前記ブロックに対応付けてＥＣＣを前記ＮＶＭに記憶し、電源が投入されて活性化されると、前記ＮＶＭに記憶されているＥＣＣを前記ブロック毎に検証し、前記ブロックに対応付けて検証結果を記憶するＥＣＣ制御手段と、前記ＮＶＭに記憶されているデータにアクセスするアクセス命令を受信すると、アクセス対象となるデータの記憶に利用されている前記ブロックに対応するＥＣＣの検証結果を参照し、該検証結果によりデータの誤りを訂正したことが示されていた場合、アクセス対象となるデータを前記ＮＶＭの空き領域に移設してから前記アクセス命令を実行する命令実行手段を備えていることを特徴とするセキュリティトークンである。
【００１１】
更に、第２の発明は、第１の発明に記載したセキュリティトークンにおいて、前記ＮＶＭに書き込むデータにはＥＤＣが付加され、前記セキュリティトークンの前記命令実行手段は、前記アクセス命令を実行する前に、データに付加されたＥＤＣを検証し、ＥＤＣが異常の場合、前記アクセス命令の実行を中止することを特徴とする。
【００１２】
更に、第３の発明は、第１の発明または第２の発明に記載したセキュリティトークンにおいて、アクセス対象となるデータは、前記ＮＶＭに配置されたファイル内に記憶されているレコードであって、前記命令実行手段は、アクセス対象となるレコードの記憶に利用されている前記ブロックに対応するＥＣＣの検証結果によってデータの誤りを訂正したことが示されていた場合、アクセス対象となるレコードを該レコードが記憶されているファイル内の空き領域に移設することを特徴とする。
【００１３】
更に、第４の発明は、電源が投入されて活性化されると、所定ビット長のブロック単位でデータを記憶する電気的に書き換え可能な不揮発性メモリ（ＮＶＭ）に記憶されているＥＣＣをブロック毎に検証し、前記ブロックに対応付けて検証結果を記憶するＥＣＣ検証工程と、前記ＮＶＭに記憶されているデータにアクセスするアクセス命令を受信すると、アクセス対象となるデータの記憶に利用されている前記ブロックに対応するＥＣＣの検証結果を参照し、該検証結果によりデータの誤りを訂正したことが示されていた場合、アクセス対象となるデータを前記ＮＶＭの空き領域に移設してから前記アクセス命令を実行する命令実行工程が少なくとも実行されることを特徴とするセキュリティトークンにおける命令の実行方法である。
【００１４】
更に、第５の発明は、電源が投入されて活性化されると、所定ビット長のブロック単位でデータを記憶する電気的に書き換え可能な不揮発性メモリ（ＮＶＭ）に記憶されているＥＣＣをブロック毎に検証し、前記ブロックに対応付けて検証結果を記憶するＥＣＣ検証工程と、前記ＮＶＭに記憶されているデータにアクセスするアクセス命令を受信すると、アクセス対象となるデータの記憶に利用されている前記ブロックに対応するＥＣＣの検証結果を参照し、該検証結果によりデータの誤りを訂正したことが示されていた場合、アクセス対象となるデータを前記ＮＶＭの空き領域に移設してから前記アクセス命令を実行する命令実行工程をセキュリティトークンに実行させるためのコンピュータプログラムである。
【発明の効果】
【００１５】
このように、本発明によれば、アクセス対象となるデータの記憶に利用されているブロックに対応するＥＣＣの検証結果によりデータの誤りを訂正したことが示されていた場合、アクセス対象となるデータをＮＶＭの空き領域に移設してからアクセス命令が実行されるため、ＥＣＣを利用してデータの誤りを訂正した際、データの誤りを訂正したデータを故障が発生していない領域へ移設することができるようになる。
【図面の簡単な説明】
【００１６】
【図１】本実施形態に係るＩＣカードの構造を説明する図。
【図２】ＩＣモジュールに実装されているＩＣチップの構造を説明する図。
【図３】ＩＣチップのＮＶＭに記憶されるデータを説明する図。
【図４】ファイル管理データを説明する図。
【図５】ファイルを説明する図。
【図６】レコード管理データを説明する図。
【図７】ＩＣカードに備えられた機能を説明する図。
【図８】ＩＣカードの動作を説明する図。
【図９】ＥＣＣ検証工程を説明する図。
【図１０】命令実行工程を説明する第１図。
【図１１】命令実行工程を説明する第２図。
【発明を実施するための形態】
【００１７】
ここから、本発明にかかるセキュリティトークンの好適な実施形態について、図面を参照しながら詳細に説明する。なお、これから説明する実施形態は本発明の一実施形態にしか過ぎず、本発明は，これから説明する実施形態に限定されることなく、種々の変形や変更が可能である。
【００１８】
図１は、本実施形態に係るＩＣカード１の構造を説明する図である。本実施形態に係るＩＣカード１にはＩＣモジュール２が実装され、このＩＣモジュール２には、ISO/IEC 7816-1に準じて接触端子２ｂが設けられた接続基板２ａ上にＩＣチップ３がモールドされた状態で実装され、ＩＣチップ３のそれぞれ入出力端子は、ＩＣチップ３の入出力端子に対応する接続基板２ａ上の接触端子２ｂとワイヤボンディング２ｃで接続している。
【００１９】
なお、本実施形態では、本発明にかかるセキュリティトークンをＩＣカード１にしているが、セキュリティトークンの他の形態としては、ＵＳＢキーや、携帯電話・スマートフォンに実装されるモバイル用非接触ＩＣモジュールなどが考えられる。
【００２０】
また、図１において、ＩＣカード１の形状をISO/IEC 7816-2で規格化されているＩＤカード型として図示しているが、ＩＣカード１の形状は、ISO/IEC 7816-2で規格化されているＰｌｕｇ-ｉｎ型でもよく、また、Ｍｉｎｉ型であってもよい。
【００２１】
図２は、ＩＣモジュール２に実装されているＩＣチップ３の構造を説明する図で、図２では本発明に係る内容のみを記載している。
【００２２】
図２に示したようにＩＣチップ３には、演算機能等を有するＣＰＵ３３（Central Processing Unit）、データの転送経路となるデータバス３４及びアドレスを指定するためのアドレスバス３５に加え、所定ビット長のブロック単位でデータを記憶する電気的に書換え可能な不揮発性メモリ３０（以下、単に「ＮＶＭ」と記す。NVM: Non Volatile Memory）と、ＮＶＭ３０にデータを書き込む際に、該データの記憶に利用するブロック毎にＥＣＣ（Error Correction Code）を演算し、該データの記憶に利用するブロックに対応付けてＥＣＣをＮＶＭ３０に記憶し、電源が投入されて活性化されると、ＮＶＭ３０に記憶されているＥＣＣをブロック毎に検証し、ブロックに対応付けて検証結果を記憶するＥＣＣコントローラ３１と、ＥＣＣの検証結果を読み出す際に利用されるＥＣＣレジスタ３２を備え、ＮＶＭ３０はＥＣＣコントローラ３１を介してデータバス３４に接続している。
【００２３】
ＮＶＭ３０とは、ＥＥＰＯＭ（Electrically Erasable & Programmable Read Only Memory）のように、電気的にデータの書き込み／消去が可能で、かつ、データの保持に電力を必要としないメモリで、本実施形態のＮＶＭ３０は、データを記憶するデータ領域３０ａ、ＥＣＣを記憶するＥＣＣ領域３０ｂ及びＥＣＣの検証結果を記憶する検出結果領域３０ｃを有する。
【００２４】
ＮＶＭ３０のデータ領域３０ａは、所定ビット長のブロックに分割されて管理され、ＥＣＣ領域３０ｂには、ブロック内のデータから演算された所定ビット長のＥＣＣがブロックに対応するように記憶される。ブロックのビット長はデータバス３４のビット長と同じであることが一般的で、ＥＣＣのビット長はブロックのビット長に対応した値になる。例えば、データバス３４のビット長が３２ビットならばＥＣＣのビット長は７ビットになる。
【００２５】
また、ＮＶＭ３０の検出結果領域３０ｃには、ＥＣＣ領域３０ｂに記憶されたＥＣＣがＥＣＣコントローラ３１により検証された際、ＥＣＣの検証結果がブロックに対応付けられて記憶される。ブロック内のデータに１ビットの誤りがある場合、誤りのある１ビットが訂正されるため、１ビットを訂正したことを示す検証結果が検出結果領域３０ｃに記憶される。また、ブロック内のデータに２ビット以上の誤りがある場合、誤りは訂正されず、２ビット以上の誤りがあることを示す検証結果が検出結果領域３０ｃに記憶される。
【００２６】
本実施形態において、ＥＣＣコントローラ３１は、ＮＶＭ３０のデータ領域３０ａにデータを書き込む際、該データをブロックのビット長に分割し、指定されたアドレスに対応するブロックから順にブロック単位でデータを書き込む処理を実行し、ブロックにデータを書き込む毎に、ブロック内のデータからＥＣＣを演算し、データを書き込んだブロックに対応付けてＥＣＣをＥＣＣ領域３０ｂに書き込む処理を実行する。
【００２７】
また、ＥＣＣコントローラ３１は、電源が投入されて活性化されると、ＮＶＭ３０のデータ領域３０ａのブロック毎にＥＣＣを検証する動作を行い、ＥＣＣの検証結果をブロックに対応付けて検出結果領域３０ｃに記憶する。ＮＶＭ３０の検出結果領域３０ｃに記憶されたＥＣＣの検証結果は、アドレスを指定することで読み取ることができ、ＥＣＣコントローラ３１は、アドレスが指定されてＥＣＣの検証結果を読み出す指示を受けると、指定されたアドレスで特定されるブロックに対応したＥＣＣの検証結果をＥＣＣレジスタ３２に格納する。
【００２８】
図３は、ＩＣチップのＮＶＭ３０に記憶されるデータを説明する図である。本実施形態において、ＩＣカード１に実装されたＩＣチップのＮＶＭ３０には、データを格納するためのファイル３０２が配置されるファイル領域３００と、そのファイル３０２を管理するためのファイル管理データ３０３が配置されるディレクトリ領域３０１に分割される。
【００２９】
図４は、ディレクトリ領域３０１に配置されるファイル管理データ３０３を説明する図である。ファイル管理データ３０３は、ファイル領域３００に配置された個々のファイル３０２に対してそれぞれ割り当てられて配置され、ファイル管理データ３０３には、ファイル識別子、アクセス権設定データ、ファイル開始アドレス、ファイルサイズ及びレコード数が含まれている。
【００３０】
ファイル識別子は、ファイル領域３００に配置されたそれぞれのファイル３０２を識別するためのデータで、ファイル３０２を選択する際に用いられる。また、アクセス権設定データは、ファイル３０２へのアクセスが許可される条件を示すデータで、ファイル３０２へのアクセスが許可される条件としては、ユーザ認証の成功に代表されるセキュリティに係る条件や所定の通信プロコルによる動作に代表されるＩＣカード１の通信に係る条件が利用されることが多い。また、ファイル開始アドレスは、ファイル３０２が記憶されている領域の先頭のアドレスを、ファイルサイズはファイル３０２のサイズを、そして、レコード数は、ファイル３０２に含まれるレコードの数をそれぞれ示している。
【００３１】
図５は、ファイル領域３００に配置されるファイル３０２を説明する図である。ファイル３０２には、１つもしくは複数のデータをまとめて格納でき、レコード番号により識別可能なレコード３０４と、レコード３０４を管理するためのレコード管理データ３０５によって少なくとも構成され、レコード３０４及びレコード管理データ３０５には、データの誤りを検出するためのＥＤＣ(Error Detection Code)が付加されている。また、本実施形態では、１つのレコード３０４よりもサイズの大きい空き領域をファイル３０２に設け、データの誤りが発生したレコード３０４を空き領域に移設できるようにしている。
【００３２】
図６は、ファイル３０２に配置されるレコード管理データ３０５を説明する図である。図６に図示したように、レコード管理データ３０５は、レコード３０４が記憶されていない空き領域の先頭のアドレスである空き領域アドレスと、レコード３０４が記憶されている領域の先頭のアドレスであるレコード開始アドレスと、これらのデータの正当性を検証するためのＥＤＣによって構成されている。
【００３３】
図７は、ＩＣカード１に備えられた機能を説明する図である。図７に図示したように、ＩＣカード１は、所定ビット長のブロック単位でデータを記憶するＮＶＭ３０と、ＮＶＭ３０にデータを書き込む際に、該データの記憶に利用するブロック毎にＥＣＣを演算し、該データの記憶に利用するブロックに対応付けてＥＣＣをＮＶＭ３０に記憶し、電源が投入されて活性化されると、ＮＶＭ３０に記憶されているＥＣＣをブロック毎に検証し、ブロックに対応付けて検証結果を記憶するＥＣＣ制御手段１１と、ＮＶＭ３０に記憶されているデータ（ここでは、レコード３０４）にアクセスするアクセス命令を実行する前に、アクセス対象となるデータ（ここでは、レコード３０４）の記憶に利用されているブロックに対応するＥＣＣの検証結果を参照し、該ＥＣＣの検証結果によりデータの誤りを訂正したことが示されていた場合、データをＮＶＭ３０の空き領域に移設してからアクセス命令を実行する命令実行手段１０を備えている。
【００３４】
ＩＣカード１に備えられたＮＶＭ３０についてはすでに説明しているため説明を省く。また、ＩＣカード１に備えられたＥＣＣ制御手段１１は、本実施形態では、これまでに説明したＩＣチップのＥＣＣコントローラ３１によりハードウェア的に実現しているが、ソフトウェア的に実現することも可能である。
【００３５】
ＩＣカード１に備えられた命令実行手段１０とは、ＩＣチップ３のＣＰＵ２２を動作させるコンピュータプログラムにより実現され、ＮＶＭ３０に記憶されているデータを利用するアクセス命令に対応するモジュールを呼び出してアクセス命令を実行する手段で、アクセス命令とは、ＮＶＭ３０に記憶されているデータを読み出す命令や、ＮＶＭ３０にデータを書き込む命令を意味する。
【００３６】
ここから、ＩＣカード１の動作について説明する。図８は、ＩＣカード１の動作を説明する図である。図８に図示したように、ターミナル（図示していない）によりＩＣカード１に電源が投入されてＩＣカード１が活性化されると（Ｓ１）、ＮＶＭ３０のＥＣＣ領域３０ｂに記憶されているＥＣＣを検証するＥＣＣ検証工程（Ｓ２）が実行され、ＥＣＣ検証工程（Ｓ２）を実行した後にＩＣカード１はターミナルからの命令待ちになり（Ｓ３）、ターミナルからアクセス命令を受信すると、受信したアクセス命令を実行する命令実行工程（Ｓ４）を実行した後に命令待ちになる。
【００３７】
図９は、ＥＣＣ検証工程（Ｓ２）を説明する図である。ＥＣＣ検証工程（Ｓ２）において作動する手段はＥＣＣ制御手段１１で、ＩＣカード１のＥＣＣ制御手段１１は、ＩＣカード１が活性化されると、ＮＶＭ３０のブロック毎に、ブロック内のデータからＥＣＣを演算した後（Ｓ１０）、ブロックに対応付けられたＥＣＣと演算したＥＣＣを照合することで、ブロックに対応付けられたＥＣＣを検証し（Ｓ１１）、検証結果をブロックに対応付けて検出結果領域３０ｃに記憶する処理（Ｓ１２）を行う。
【００３８】
なお、ブロック内のデータに１ビットの誤りがある場合、誤りのある１ビットを訂正した後、１ビットを訂正したことを示す検証結果が検出結果領域３０ｃに記憶され、ブロック内のデータに２ビット以上の誤りがある場合、２ビット以上の誤りがあることを示す検証結果が検出結果領域３０ｃに記憶される。
【００３９】
図１０は、命令実行工程（Ｓ４）を説明する第１図、図１１は、命令実行工程（Ｓ４）を説明する第２図である。ファイル３０２内のレコード３０４にアクセスするアクセス命令をターミナルから受信すると（Ｓ２０）、ＩＣカード１の命令実行手段１０は、アクセス対象となるファイル３０２のファイル識別子と、レコード３０４のレコード番号をアクセス命令から抽出する（Ｓ２１）。
【００４０】
そして、ＩＣカード１の命令実行手段１０は、ターミナルから受信したアクセス命令から抽出したファイル識別子を含むファイル管理データ３０３をＮＶＭ３０のディレクトリ領域３０１から検索し（Ｓ２２）、このファイル管理データ３０３が検索できたか確認する（Ｓ２３）。ファイル管理データ３０３が検索できなかった場合には、図１１のＳ３７に進み、異常終了メッセージを応答して処理を終了し、次の命令を待つ。
【００４１】
次に、ＩＣカード１の命令実行手段１０は、ＮＶＭ３０のディレクトリ領域３０１から検索したファイル管理データ３０３からアクセス権設定データを取得し（Ｓ２４）、この時点のＩＣカード１の状態が、ファイル管理データ３０３から取得したアクセス権設定データで示される条件を満たしているか判定し（Ｓ２５）、アクセス権設定データで示される条件を満たしていない場合には、図１１のＳ３７に進み、異常終了メッセージを応答して処理を終了し、次の命令を待つ。
【００４２】
この時点のＩＣカード１の状態が、アクセス命令から抽出したファイル識別子を含むファイル管理データ３０３から取得したアクセス権設定データで示される条件を満たしていれば、ＩＣカード１の命令実行手段１０は、該ファイル管理データ３０３からファイル開始アドレスとファイルサイズを抽出し（Ｓ２６）、アクセス対象となるファイル３０２の領域を特定する（Ｓ２７）。
【００４３】
次に、ＩＣカード１の命令実行手段１０は、アクセス対象となるファイル３０２の領域と、アクセス命令から抽出したファイル識別子を含むファイル管理データ３０３から取得したレコード数を参照し、アクセス対象となるファイル３０２のレコード管理データ３０５を取得する（Ｓ２８）。
【００４４】
次に、ＩＣカード１の命令実行手段１０は、アクセス対象となるファイル３０２のレコード管理データ３０５に付加されているＥＤＣが正常であることを確認し（Ｓ２９）、該ＥＤＣが異常であれば、図１１のＳ３７に進み、異常終了メッセージを応答して処理を終了し、次の命令を待つ。
【００４５】
ここから、図１１の説明になる。アクセス対象となるファイル３０２のレコード管理データ３０５に付加されているＥＤＣが正常であったなら、ＩＣカード１の命令実行手段１０は、アクセス命令から抽出したレコード番号に該当するレコード３０４のレコード開始アドレスをレコード管理データ３０５から抽出することで、アクセス対象となるレコード３０４のレコード開始アドレスを特定する（Ｓ３０）。
【００４６】
ＩＣカード１の命令実行手段１０は、アクセス対象となるレコード３０４にアクセスする前に、アクセス対象となるレコード３０４のレコード開始アドレスとレコード長に対応したオフセット値を指定して、ＥＣＣの検証結果を読み出す指示をＥＣＣ制御手段１１に出すことで、レコード３０４の記憶に利用されているブロックに対応するＥＣＣの検証結果を読み取る動作を行った後（Ｓ３１）、ＥＣＣレジスタ３２の内容を確認し（Ｓ３２）、アクセス対象となるレコード３０４に発生したデータの誤りが訂正されたことを示されている場合、アクセス対象となったレコード３０４を、該レコード３０４が格納されているファイル３０２内の空き領域へコピーした後、該ファイル３０２のレコード管理データ３０５内にある該レコード３０４のレコード開始アドレスをコピー先のアドレスへ変更することで、アクセス対象となるレコード３０４を空き領域に移設する（Ｓ３３）。
【００４７】
このように、本実施形態のセキュリティトークンによれば、アクセス対象となるデータの記憶に利用されているブロックに対応するＥＣＣの検証結果によりデータの誤りを訂正したことが示されていた場合、アクセス対象となるデータをＮＶＭ３０の空き領域に移設してからアクセス命令が実行されるため、ＥＣＣを利用してデータの誤りを訂正した際、データの誤りを訂正したデータを故障が発生していない領域へ移設することができるようになる。
【００４８】
アクセス対象となるレコード３０４を空き領域に移設した後、または、ＩＣチップ３のＥＣＣレジスタ３２により、アクセス対象となるレコード３０４に発生したデータの誤りが訂正されたことを示されていない場合、ＩＣカード１の命令実行手段１０は、アクセス対象となるレコード３０４のＥＤＣを検証する（Ｓ３４）。なお、ここで、アクセス対象となるレコード３０４のＥＤＣを検証するのは、ＥＣＣの能力を超えた数のビット（ここでは、２ビット）に誤りが発生していないか確認するためである。
【００４９】
ＩＣカード１の命令実行手段１０は、アクセス対象となるレコード３０４のＥＤＣを検証し、ＥＤＣが異常ならば、図１１のＳ３７に進み、異常終了メッセージを応答して処理を終了し、次の命令を待ち、ＥＤＣが正常ならば、アクセス対象となるレコード３０４にアクセスし、アクセス命令に対応する処理を実行した後（Ｓ３５）、正常終了メッセージを応答して（Ｓ３６）、次の命令を待つ。
【００５０】
なお、アクセス命令が書き込み命令の場合、ＮＶＭ３０にレコード３０４の内容を書き込む際に、レコード３０４の記憶に利用するブロック毎にＥＣＣ（Error Correction Code）がＥＣＣ制御手段１１により演算され、レコード３０４の記憶に利用するブロックに対応付けてＥＣＣがＮＶＭ３０のＥＣＣ領域３０ｂに記憶される。
【００５１】
また、アクセス命令が読み出し命令の場合、ＮＶＭ３０からレコード３０４の内容を読み出す際に、レコード３０４の記憶に利用するブロック毎にＥＣＣ（Error Correction Code）がＥＣＣ制御手段１１により検証され、レコード３０４の記憶に利用するブロックに対応付けてＥＣＣの検証結果がＮＶＭ３０の検出結果領域３０ｃに記憶される。
【符号の説明】
【００５２】
１    ＩＣカード
１０  命令実行手段
１１  ＥＣＣ制御手段
３    ＩＣチップ
３０  ＮＶＭ
３０ａ  データ領域
３０ｂ  ＥＣＣ領域
３０ｃ  検証結果領域
３１    ＥＣＣコントローラ
３２    ＥＣＣレジスタ
３０２  ファイル
３０３  ファイル管理データ
３０４  レコード
３０５  レコード管理データ
【図１】
0005786702.tif 000002
【図２】
0005786702.tif 000003
【図３】
0005786702.tif 000004
【図４】
0005786702.tif 000005
【図５】
0005786702.tif 000006
【図６】
0005786702.tif 000007
【図７】
0005786702.tif 000008
【図８】
0005786702.tif 000009
【図９】
0005786702.tif 000010
【図１０】
0005786702.tif 000011
【図１１】
0005786702.tif 000012