(57)【特許請求の範囲】
【請求項１】
マイクロサーキットカード、特に非接触型カードの不揮発性メモリの内容を修正する方法であって、
トランザクション、特にリモートチケッティングトランザクションの実行中に、前記カードが端末装置に一時的に結合され、
前記トランザクションは、前記端末装置が前記カードに複数の修正コマンドを送信することを含み、
前記複数の修正コマンドの各々は前記カード中に特定のデータ項目を記録する操作を定義し、前記特定のデータ項目は、前記コマンドの各々によって前記カードに伝達された識別子又は指標の関数として前記カード中に含まれる複数のデータ項目中から決定され、前記記録された複数のデータ項目は相互依存している、方法において、
前記方法は、前記カードが実行する、
ａ）前記端末装置から対応するそれぞれのコマンドを受け取ることによって、前記相互依存した項目の各々を、前記カード内に暫定的に記録し、その後、
ｂ）前記トランザクションまたはその後のトランザクションにおいて前記カードによって行われる次の操作において、ステップａ）で実行した前記コマンド全てが
ｉ）承認されるか、
ｉｉ）または、放棄されるように、
前記修正を完了させる、各ステップを含み、
前記方法において、
−前記コマンドは、前記カードメモリの内容の修正のためのコマンドであり、
−前記ステップａ）において、前記カードメモリ中への前記データ項目の新しい値の書き込みは、不揮発性メモリ内に保持された前記項目の以前の値を失うことなく前記メモリの内容を暫定的に修正するものであり、かつ、
−前記ステップｂ）において、前記ステップａ）において実行された全てのコマンドが放棄された場合、前記不揮発性メモリ中に含まれるデータが、前記ステップａ）が実行される以前の状態に残るように、前記修正を完了させる、方法。
【請求項２】
ステップｂ）での承認時に、適正な実行を承認するフラグを前記カードのメモリに記録し、さらに
前記カードは、その後で、ステップａ）で書き込まれたデータ項目または読取りおよび／もしくは修正が必要な前記データ項目に対応する値の少なくとも１つを要求するコマンドを受け取る時に、前記カードは、前記フラグの状態を調べることから開始し、前記フラグが記録されていない場合には、ステップａ）で以前に行った前記暫定的な記録を無視するかキャンセルし、前記データ項目に対応する前記以前の値に基づいて前記コマンドを実行する、請求項１に記載の方法。
【請求項３】
前記カードは前記フラグの状態を調べ、前記フラグが記録されている場合には、前記カードは、ステップａ）で行われた前記暫定的書込みをコピーするための操作を実行する請求項２に記載の方法。
【請求項４】
前記カードは、２つのモード、すなわち、
ステップａ）とステップｂ）を実行することにより記録が行われるインセッションモードと、
ステップａ）とステップｂ）との両方に対して記録の実行が承認されないアウトオブセッションモード、における操作に適している、請求項１または２に記載の方法。
【請求項５】
ステップｂ）を完了させる機能と組み合わされた認証機能を含み、前記機能は、認証が失敗した時にステップｂ）を放棄することを強制する、請求項１から４のいずれか一項に記載の方法。
【請求項６】
前記認証を、前記端末装置および／または前記端末装置と前記カードとの間で相互交換されるデータを認証する前記カードによって行い、前記カードは、前記端末装置によって生成され前記カードに伝送される暗号化認可証を検査し、前記認可証が適正であると認識される場合にだけ、ステップｂ）での修正を承認する、請求項５に記載の方法。
【請求項７】
前記メモリの内容を修正するためでかつ暗号化認可証の検証を含むためのコマンドを前記カードが前記端末装置から受け取る時に、前記コマンドをアウトオブセッションで受け取る場合に、前記検証を行い、一方、前記コマンドをインセッションで受け取る場合に、前記検証を行わない、請求項６に記載の方法。
【請求項８】
前記認証を、前記カードおよび／または前記端末装置と前記カードとの間で相互交換される前記データを認証する前記端末装置によって行い、前記カードは、前記修正がステップｂ）で承認済みである場合だけ、条件に応じて暗号化認可証を生成して伝送する、請求項５に記載の方法。
【請求項９】
前記メモリの内容を修正するためでかつ暗号化認可証の生成を含むコマンドを前記端末装置から前記カードが受け取る時に、前記コマンドをアウトオブセッションで受け取る場合に、前記生成を行い、一方、前記コマンドをインセッションで受け取る場合に、前記生成を行わない、請求項８に記載の方法。
【請求項１０】
ステップｂ）において、メモリの内容を修正するためでかつ複数の暗号化認可証の生成を含むコマンドを前記カードが端末装置から受け取る時に、前記認可証をステップｂ）で記憶し、その後、前記修正がステップｂ）で既に承認済みである場合だけ、前記認可証を一括して前記端末装置に伝送する、請求項１または２に記載の方法。
【請求項１１】
コマンドがインセッションで行われるかアウトオブセッションで行われるかを定義する禁止属性を、前記コマンドの少なくとも幾つかが含み、前記カードが前記禁止属性を含むコマンドを実行する場合、前記コマンドによって行われた前記修正が、ステップｂ）の結果とは関わりなく承認される、請求項４に記載の方法。
【請求項１２】
ステップｂ）の後で、かつ、前記修正が承認される時に、
ｄ）前記カードによる承認の後に前記端末装置がアクションを実行するステップと、さらに
ｅ）前記アクションが前記端末装置によって適正に実行された時に、読取りによる後続のアクセスに適した前記カード内に実証情報が記録されるステップ、とを実行するための準備がさらになされる、請求項１または２に記載の方法。
【請求項１３】
ステップｂ）の後に前記カードによって受け取られるあらゆる前記コマンドは、前記カード内に実証情報を記録するための命令として解釈される、請求項１２に記載の方法。
【請求項１４】
後続のステップｂ）による完了を伴わないステップａ）における少なくとも1個の前記修正の実行後に、前記カードを再初期化する場合、以降の全ての操作に対してステップａ）で実行された全てのコマンドが有効化されないように、実行された全ての修正を破棄する予備ステップを準備する、請求項１に記載の方法。
【発明の詳細な説明】
【０００１】
本発明は、マイクロサーキットカードに関し、さらに特に、マイクロプロセッサカード自体の不揮発性メモリに様々な修正を加えるマイクロプロセッサカードに関する。
【０００２】
トランザクションを実行する時に、メモリは一般的に１回または複数の回数にわたって修正され、したがって、当然のことながら、新たに記録された情報を使用する状態になる前に、修正の全てを確実にかつ適正に行う事が必要であり、この新たに記録された情報は、誤りの発生時に、または、レコード破損の発生時に、無視されるか消去されなければならない。
【０００３】
例えば、米国特許第４，８７７，９４５号は、誤りに基づいてトランザクションが継続されることを防止するために、複数のデータ項目に関しての書き込みシーケンス中に生じる異常を検出する方法を開示している。
さらに、異常の発生時には、原状回復することが可能であること、すなわち、誤ったトランザクションを実行する前にカード内に記録された情報値を、後続のトランザクションが操作することが可能であることも望ましい。
【０００４】
誤ったトランザクションの実行中に古い情報値が失われてしまうことがあるので、上述の米国特許第４，８７７，９４５号はこうした利点を提供せず、少なくともカード内に含まれる情報だけに基づいて上記情報をその以前の状態に復元することは不可能である。
【０００５】
ＷＯ−Ａ−８９／０２１４０は、こうした操作の方法の１つを開示しているが、この方法は、単一の情報項目が修正された場合、または、複数の項目が互いに無関係に修正された場合のみ、こうした事態に対して適用可能であるにすぎない。
しかしながら、多くの場合には、単一のトランザクション中に複数の情報項目を修正することが必要であり、かつ、複数の情報項目に対する修正の全てを適正にかつ確実に実行するために、これらの複数の情報項目を一括して処理する必要のある場合には、これらの複数の情報項目は「相互に依存している」と見なされる。
【０００６】
複数の相互依存した情報項目を担う不完全なまたは未完了のトランザクションが生じる危険性は、カードが端末装置の周りで適正に作動することが可能な空間の境界を認知できない、「非接触型」タイプのカードの場合に特に高い。こうした状況では、カードが処理終了前に端末装置の範囲を超えて移動するために、または、例えば金属の塊が近くを通過すると言ったような一時的妨害のために、カードと端末装置との間の通信が偶発的に中断されるという危険性が高い。
【０００７】
一例（当然のことながら、非限定的な事例である）として、リモートチケッティングトランザクション（遠隔発券業務）におけるこうしたカードの使用、すなわち、公共輸送サービスに対するアクセスのためにこうしたカードを使用することがあり、この場合には、カードは２つの役割、すなわち、適正なトラベルチケットの役割と、電子財布の役割とを果たす。
【０００８】
上述の問題点を軽減し、かつ、「不可分な」相互依存したデータ項目に対する複数の書込みまたは他の修正を行うために、幾つかの解決策が既に提案されている。
一例として上述した特定の用途では、既知のシステムは、電子財布に借方記入することによってスタートし、次に、ユーザによって取得された旅行の権利を記録する。このユーザがこの２つの操作の合間にカードを引き抜くと、ユーザはカードを再び挿入するように促され、旅行の権利の書込みが再開始される。しかしながら、ユーザがカードを再挿入することなしに立ち去ってしまう場合には、このユーザは誤った扱いを受けることになる。明らかなことであるが、電子財布の借方記入が完了する前にユーザが故意にカードを引き抜くこともあり得るので、上述の順序とは逆の順序で操作を行うことは不可能である。
【０００９】
この解決策は、中断の発生時に、トランザクションの再開始（リクエストされた端末装置内へのカードの再挿入）を取り扱うための例外処理を起動することを可能にするように端末装置が特別に構成されている、ということを暗に意味している。この解決策は、こうした端末装置のソフトウェアをより複雑にすることに加えて、現時点では完全に満足できるものではなく、上述のようにトランザクションが再開されない場合には、ユーザが間違った取扱を受ける可能性が依然として存在する。
【００１０】
別の解決策は、カード内の財布の状態に関する情報を端末装置が保存し、さらに、これとは反対の処理を行う、データ交差（ｄａｔａ  ｃｒｏｓｓｉｎｇ）にある。しかし、この解決策は、複雑であることに加えて、カードと端末装置との間で相互交換されるデータの量を増大させ、したがって、トランザクションの実行を減速させるので、満足できるものではない。さらに、多回数（例えば、３回以上）の書込みが不可分に行われなければならない時には、この解決策の適用は困難である。
【００１１】
本発明の目的の１つは、カードのメモリ中に不可分的に複数の修正を行うことを可能にする方法を提供することである。
本発明の別の目的は、カードだけで完全に処理されることが可能なこうした方法を提案することである。したがって、この方法は、端末装置を改変することなしに、かつ、端末装置内で例外処理を行う必要なしに、実現されることが可能であり、したがって、この方法は、既存命令の構文（シンタックス）を使用し、選択可能なコマンドにおいて非常に融通性が高い。
【００１２】
本発明の方法は、トランザクション実行中はカードが端末装置に一時的に結合されるタイプであり、このトランザクションは、カードに複数の修正コマンドを与える端末装置を含み、この複数のコマンドの各々は、このコマンドによって指定される個々のデータ項目をカードメモリ中に記録する少なくとも１つの操作を含み、こうして記録された様々なデータ項目は相互依存している。
【００１３】
本発明の特徴的な仕様では、この方法は、カードによって以下のステップを実行することを含んでいる。すなわち，ステップａ）、端末装置から対応する各コマンドをカードが受け取る時に、カードが、相互依存した情報項目のそれぞれを、その情報項目に対応する以前の値を失うことなく、カードメモリ内に暫定的に記録することによって、カードのメモリの内容を修正するステップと、その後のステップｂ）、その修正の全てを承認することによって、またはその修正の全てを放棄することによって、修正を完了し、これによって後続の操作に対して、ステップａ）で実行されたコマンド全てを考慮に入れるか、またはこれらのコマンド全てを実行しないようにするステップを含む。
【００１４】
したがって、本発明が基づいている原理は、単一のステップａ）で不可分な形で行われなければならない複数の修正を一括してグループ化することにあり、その次に、修正の実行完了後に、これらの修正全体をカードが有効化することにある。この有効化が成功である場合には、その次に、（同一のトランザクション中に、または、後続のトランザクション中に）カードによって行われる次の操作の時点で、アクセス可能な内容が、既に行われた修正を必ず反映することになる。
【００１５】
これとは反対に、ステップａ）中にカードの操作に何らかの中断が生じた場合には、この中断は、行われた全ての修正をキャンセルし、不揮発性メモリ内のデータは、ステップａ）の以前の状態のままである。
【００１６】
特定の一実施態様では、ステップｂ）での承認時に、適正な実行を承認するフラグがカードのメモリ内に記録され、このカードが、その後で、ステップａ）で書き込まれたデータ項目または読取りおよび／もしくは修正が必要なこのデータ項目に対応する値の少なくとも１つを要求するコマンドを受け取る時に、このカードは、フラグの状態を調べることによって開始し、そのフラグが記録されていない場合には、ステップａ）で以前に行った暫定的な記録を無視するかキャンセルし、そのデータ項目に対応する以前の値に基づいてコマンドを実行する。このカードがフラグの状態を調べ、フラグが記録されていることを発見した場合には、このカードは、ステップａ）で行われた暫定的書込みをコピーするという操作を実行することが可能である。
【００１７】
非常に有益には、このカードは、２つのモードでの操作に適している。この２つのモードとは、ステップａ）とステップｂ）とを実行することによって記録が行われるインセッションモード（ｉｎ−ｓｅｓｓｉｏｎ  ｍｏｄｅ）と、ステップａ）とステップｂ）との両方において記録の実行が承認されないアウトオブセッションモード（ｏｕｔ−ｏｆ−ｓｅｓｓｉｏｎ  ｍｏｄｅ）である。
【００１８】
セッションは、例えばカードをゼロにリセットすることによって、自動的に開始され、または、予め決められた操作を実行するアクションと、セッションを開始するための命令として解釈されるアクション、の２つのアクションを有するコマンドにしたがって開始される。
例えば、正常に認可された記録が認可証（ｃｅｒｔｉｆｉｃａｔｅ）を伴っていない場合には、このカードは自動的にセッションを開始し、このセッション中への記録を処理する。
【００１９】
同様に、２個のアクションを実行するコマンドに続いて、セッションの終了も自動的に行われる。この２個のアクションは、予め決められた操作を実行するアクションと、セッションを終了させるための命令として解釈されるアクションとである。
【００２０】
例えば、財布の借方記入の操作によってセッションを終了させ、それによって、その結果としての通信延期の必要性を回避し、かつ、セッション認可証と財布トランザクション認可証とを区別ができないようにすることが可能となる。
非常に有益には、本発明の方法は、ステップｂ）を終了させる機能と組み合わされた認証機能を含み、この機能が、認証に失敗した時にステップｂ）の放棄を強制することである。
【００２１】
第１の実施態様では、この認証はカードによって実行され、このカードは端末装置および／または端末装置とカードとの間で相互交換されるデータを認証し、かつ端末装置によって生成されてカードに送られる暗号化認可証をチェックし、この認可証が適正であると認識される場合にだけ、ステップｂ）での修正を承認する。
セッションを伴うモードでは、メモリの内容を修正するためであってかつ暗号化認可証の検証を含むコマンドをカードが端末装置から受け取る場合、このコマンドをアウトオブセッションで受け取る時はこの検証が行われ、一方、このコマンドをインセッションで受け取る時にはこの検証を行わないようにしておくような、準備が可能である。
【００２２】
言い換えると、ステップｂ）でカードによって実行され、かつ、通常（すなわち、アウトオブセッションで）暗号化認可証を検証するコマンドは、インセッションで実行される時には、もはやこの検証を含まず、「端末装置を認証するセッション認可証」が同等の機能を果たす。
【００２３】
第２の実施態様では、上記認証は、カードおよび／または端末装置とカードとの間で相互交換されるデータを認証する端末装置によって行われ、カードは、修正がステップｂ）で承認済みである場合に、かつ、この場合にだけ、条件に応じて暗号化認可証を生成して端末装置に伝送する。
【００２４】
セッションを伴うモードでは、カードが、メモリの内容を修正するためであってかつ暗号化認可証の生成を含むコマンドを端末装置から受け取る場合、このコマンドをアウトオブセッションで受け取る時に前記生成が行われ、一方、このコマンドをインセッションで受け取る時にはこの生成が行われないように、準備が可能である。
【００２５】
言い換えると、ステップｂ）でカードによって実行され、かつ、通常（すなわち、アウトオブセッションで）暗号化認可証を生成するコマンドは、インセッション中で実行される時には、もはやこうした認可証を生成せず、「端末装置を認証するセッション認可証」が同等の機能を果たす。
【００２６】
さらに、カードが、ステップｂ）において、メモリの内容を修正するためであってかつ複数の暗号化認可証の生成を含むコマンドを端末装置から受け取る時に、これらの認可証がステップｂ）で記憶され、その次に、修正がステップｂ）で既に承認済みである場合に、かつ、この場合にだけ、これらの認可証が一括して端末装置に伝送されるように、準備が可能である。
【００２７】
言い換えると、ステップｂ）の命令によって通常生成される暗号化認可証がカードによって通信されることを延期しておくことが可能である。特に、認可された書込みコマンドが特定の書込み認可証を生成する場合には、書込みが取消不可能な形で行われた後にだけ認可証がカードから離れることが望ましい。
【００２８】
特定の実施態様では、ステップｂ）で実行され得るコマンドの少なくとも幾つかが随意の禁止属性を含み、カードがこうしたコマンドをインセッションでステップｂ）で実行する場合には、このコマンドによって行われた修正が、ステップｂ）の結果とは無関係に効果を及ぼす。
【００２９】
言い換えると、上述の属性は、コマンドがインセッションで行われる（すなわち、セッションが終了されない場合にはキャンセルされる）か、アウトオブセッションで行われる（すなわち、時間の経過順に言ってインセッションである場合にさえ、アウトオブセッションで行われたかのように、直ちに有効である）か、を定義する。
【００３０】
もっとも有益には、本発明は、ステップｂ）の後に、かつ、修正が承認される時に、ｄ）カードによる承認の後に端末装置がアクションを実行するステップと、ｅ）このアクションが端末装置によって適正に実行された時に、読取りによる後続のアクセスに適したカード内に実証情報（ｒａｔｉｆｉｃａｔｉｏｎ  ｉｎｆｏｒｍａｔｉｏｎ）が記録されるステップという一連のステップをさらに提供する。
【００３１】
こうしたセッションの「実証」は、端末装置がセッションの実行後に決定を行う（例えば、公共公衆輸送ネットワークに対するアクセスを与えるための用途において障壁を開放する）ことが当然可能であることを、カードに通知する。
この実証が、追加の書込みの必要なしにカードによって処理されることが理解されるであろう（暫定的な書込みのコピーは、いずれにしても遅かれ早かれ行われなければならない操作である）。これに加えて、端末装置端で適正にアクションが実行済みであるという条件下でだけ、すなわち、トランザクション全体が不変である場合にだけ、このコピーがカード端において実行される。
【００３２】
操作の全てがカードによって行われる場合には、ステップｅ）の記録コマンドが暗黙的なコマンドであるようにしておくことが効果的であり、ステップｂ）の後にカードによって受け取られるあらゆるコマンドは、カード内に実証情報を記録するための命令であると解釈される。
【００３３】
本発明の他の特徴と効果は、本発明の後述の２つの実施例の説明から明らかである。
これらの実施例において、および、もちろん本明細書の全文において、術語「指定する（ｄｅｓｉｇｎａｔｅ）」は、「複数の中の１つを特定する」という意味で用いられ、カード内に収容されている様々な情報項目の中の特定の情報項目を特徴付けるアクションに関連する。
【００３４】
こうした指定は、コマンド自体が特定の情報項目を特定するので、暗黙的であり得、例えば、コマンド「財布から金額ｘを借方記入する」は、「財布バランス」データ項目の値を含むメモリ位置を指定する。
例えば、下記の実施例Ｉでは、この指定が明示的であることも可能であり、この場合には、書込みコマンドがアドレスまたはセクタ識別子を有し、かつ、このコマンドが指標ｉで示されるようにしておく。
【００３５】
実施例Ｉ
１００個の８バイト値を記憶しかつ次の命令を行うことが可能なカードを用意する。
・１から１００までの範囲内の指標ｉによって特定される８バイト値ｖを読み取る。
・１から１００までの範囲内の指標ｉによって特定される８バイト値ｖを書き込む。
・セッションを開始する。
・セッションを終了する。
【００３６】
このカードは、単一のセクション中に３回までの書込みを可能にしなければならない。通例では、不揮発性メモリ（例えば、ＥＥＰＲＯＭ）内の値を指定するために大文字を使用し、揮発性メモリ（例えば、給電が断たれると内容を失うＲＡＭ）内の値を指定するために小文字を使用する。
【００３７】
不揮発性メモリ領域を、カードの主データ記憶装置に割り当てる（確定書込み）。
Ｖ［ｉ］、ｉは１から１００まで：１００×８バイト。
別の不揮発性メモリ領域をセッション機構に割り当て、このメモリ領域は、
Ｔ［ｋ］、ｊは１から３まで：セッション中に書き込まれる値（暫定的書込み）を含む３×８バイトと、
Ｉ［ｋ］、ｊは１から３まで：セッション中に書き込まれる値の指標を含む３×１バイトと、
Ｃ：セッションの終わりに書き込まれるカウントバイト
と、を含む。
【００３８】
Ｃは、インセッションで行われる書込みの回数を符号化する。適切な冗長機構（例えば、上記値の補数を連結させて）が、上記カウントバイト内に格納されている値が不確実である場合の検出を可能にする。
【００３９】
操作は次のように行われる。
ステップ０：カードに給電が行われる時点と、第１のコマンドが実行される時点との間に、Ｃを調べる。Ｃが１から３の範囲内の確実な値であるならば、ｋが１からＣに等しい場合に、指標Ｉ［ｋ］における値Ｔ［ｋ］をテーブルＶ［ｉ］からコピーする。その後で、Ｃをゼロにリセットし、（セッションが始まっていないことを示すために）内部変数ｊを−１に設定する。
【００４０】
ステップ１：読取り時に、ｊ＞０であるか調べるためのテストを行う。ｊ＞０であるならば、要求された指標ｉを、ｋが減少順にｊから１である場合のＩ［ｋ］の値と比較する。一致があるならば、Ｔ［ｋ］が戻される。その他の場合は全て、Ｖ［ｉ］が戻される。
ステップ２：セッション開始時に、ｊを０に初期化する（セッションが既に始まっている場合には、キャンセルされる）。
【００４１】
ステップ３：各々の書込み時に、ｊ＝−１である（セッションが始まっていない）ならば、通信された値ｉをＴ［０］に書き込み、通信された指標ｉをＩ［０」に書き込み、その次に、Ｃ＝１を書き込み、その後に、ｖをＶ［ｉ］に書き込み、Ｃ＝０を書き込む。０≦ｊ＜３ならば（セッション中の書込み）、ｊを１だけ増分し、ｖをＴ［ｊ］に書き込み、ｉをＩ［ｊ］に書き込む。ｊ＝３ならば、操作が拒否される（セッション中の書込み制限を越えたので）。
【００４２】
ステップ４：セッションの終了時に、ｊ＞０ならば、ｊをＣに書き込み、その次に、ｊが１からＣであるならば、テーブルＶ［］の指標Ｉ［ｊ］の値Ｔ［ｊ］をコピーする。その次に、Ｃを０に設定し、ｊを−１に設定する。
【００４３】
カードの電源を任意の時点で遮断することが可能であるということと、読み取られる値が適正であること、すなわち、各々の指標ｉの場合に、最後の値がインセッションで書き込まれないか、または、既に終了した（書込みが既に完了しているか、または、非ゼロの値がＣに書き込まれる時点でセッションが終了している）セッションにおいて書き込まれる、ということとが示される。
【００４４】
カードに供給される暗号化認可証が誤っている場合に特定の操作を防止するために暗号文が加えられ、および／または、特定の操作の終了時にカードに対して暗号化認可証が生成されるようにする。
【００４５】
使用された暗号化認可証は、公知のタイプの暗号手法に基づいている。例えば、「カードを認証するセッション認可証」（または端末装置）は、セッション開始時に、カード端と端末装置端における安全ハッシュアルゴリズム（ＳＨＡ）を、カードによって供給されるデータと、端末装置（またはカード）によって供給される乱数とに適用することによって得られる。その結果として得られるメッセージ認証コード（ＭＡＣ）は、カード（または、端末装置）内に含まれる秘密キーを使用してディジタル署名アルゴリズム（ＤＳＡ）によってカード（または端末装置）によって署名される。端末装置（またはカード）は、公開キーを使用してこの署名を承認する。データ暗号化規格のような対称暗号化アルゴリズムも、ＭＡＣの生成および／または署名の生成のために使用可能である。
【００４６】
本発明の随意の選択肢として、ＭＡＣ生成ステップは認証の両方向に共通であり、セッションのデータ全てに関係する。対称暗号化を使用する時には、カードを認証する認可証と端末装置を認証する認可証とが、単一のＭＡＣ暗号化ステップによって得られ、カードと端末装置とに関する別々の認可証が、特定の予め決められたビットを抽出するといった基本的な操作によってそれから導出される。
【００４７】
実施例ＩＩ
この実施例では、メモリのデータをセクタとして編成し、各々のセクタは次の４つのフィールドを含む。
１．データ、
２．識別子（セクタが選択されることを可能にするアクセスキー）、
３．適切性：２つのセグメントが同じ識別子を有する場合にどちらのセクタが適切であるかを判定するためのフィールド、
４．検査：（例えば、パリティタイプの検査を行うことによって）上記３つのフィールドが破損していないことを検査するためのフィールド。
【００４８】
セクタはその識別子によって指定され、この概念はアドレス概念に取って代わる。セクタ内への書込みのためのプロシージャは、識別子との対応付けのために、データと共にパラメータとして識別子を有する。セクタを読み取るためのプロシージャは、そのパラメータとして識別子を有し、この識別子に対応付けられたデータを、この識別子（または、この識別子が以前には使用されたことがない場合には、適切な表示）を使用して書込みが行われた最後の時点に戻す。言い換えると、対応したタイプのアクセスが、指標付きのアクセスの代わりに実行される。
【００４９】
セクタ読取りプロシージャ中は、要求された値を含む識別子を有しかつ（検査フィールドによって判定されるように）破損していないセクタを、カードが探索する。複数のセクタがこの２つの基準を満たす時には、適切性フィールドに基づいて１つのセクタが保持される。
【００５０】
セクタを書き込む時には、カードは、要求されたデータと、識別子と、適切性フィールド（例えば、読取りプロシージャの場合には、このセクタがこの識別子を有する非破損セクタの中で最も適切であるように）と、この３つの先行するフィールドに一致する検査フィールド（言い換えると、後続の読取りが適正に行われることが可能であるように、書込みが取り扱われる）とを、使用可能なセクタの中に書き込む。
【００５１】
書込みプロシージャの後に、書き込まれた新たなセクタによって不適切なものにされたセクタの消去を行い、それによって新たなセクタを利用可能にすることが効果的である。
（追加の）不要情報整理タイプのシステム、すなわち、破損しているか不適切であるために使用不可能なセクタを回復させるためのシステムも備えられることが有利である。
【００５２】
使用されるセクタが常に同じセクタではないことを確保することによって、例えば、使用可能なセクタの中からランダムにセクタを選択することによって、書込みの結果として生じる摩耗を拡散させるシステムも備えられることが有利である。
【００５３】
セクタ探索のためのプロシージャの一般的に有利な変型は、破損していることが発見されているセクタ、および／または、最も適切なセクタではないセクタを消去し、それによって（後続の読取りおよび書込みの速度に有利なように、特定の読取り中の時間を浪費する）空きセクタを再生させるために、探索ステップを利用することにある。破損してはいないが適切ではないことが発見されているセクタを消去する前には、適切なセクタが不適正に書き込まれているかも知れないので、適切なセクタが再び書き込まれる。
【００５４】
メモリの作業サイズは、使用可能なセクタの個数から、消去された状態のままでなければならない１つのセクタを減算したものに等しい。セクタの全て（消去されたセクタを含む）は、メモリ内に動的に分布させられる。
例えば、ＩＳＯ／ＩＥＣ  ７８１６−４規格を適用する場合のように、データがファイルの形に構造化されなければならない場合には、セクタ識別子が、２つのサブフィールド、すなわち、フィールド識別子と、ファイル内のセクタのための識別子とにさらに区分される。
【００５５】
この特定のセクタ構造を使用する読取り／書込み操作の非限定的な具体例は次の通りである。
・検査フィールドは、バイナリコードの形で、その他の３つのフィールド内のゼロビットの個数を含む。書込みまたは消去の中断のような問題がセクタ内の何らかの個数のビットを全て同じ方向に修正させる場合には、検査フィールドの値を検査することによって、その問題が発生したことを常に検出することが可能である。
【００５６】
・適切性フィールドは、２ビットに符号化された０から３の範囲内の整数である。
・読取りプロシージャは、探索対象である識別子を有しかつ破損していない第１のセクタを発見するまで、セクタの全てを逐次的に読み取る。こうしたセクタが発見できない時には、このプロシージャは「セクタを発見できない」というレポートで終了する。第１のそうしたセクタを発見すると、このセクタの位置をそのデータおよび適切性ｐと共に記憶する。この探索が続けられる。探索対象である識別子を有しかつ破損していない第２のセクタを発見すると、その適切性ｑが、３によるｐ＋１の整数除算の剰余であるかどうかを検査する。そうであるならば、この第２のセクタを再び書き込み、第１のセクタを消去し、第２のセクタからのデータを戻す。そうでないならば、第１のセクタを再び書き込み、第２のセクタを消去し、データを第１のセクタから戻す。第２のセクタが発見できず、かつ、第１のセクタの適切性がｐ＝３であるならば、第１のセクタを消去し、「セクタを発見できない」というレポートを与える。そうでない場合には、戻されるデータは、最初に発見したセクタから得られる。
【００５７】
・書込みプロシージャは上述の読取りプロシージャと同様に始まる。特定の識別子のための読取りプロシージャによって既に戻されている以前に記憶されたセクタを発見した場合には、このセクタの位置を、その適切性ｐ（０、１、または、２に等しい）と共に保持する。こうしたセクタを発見できない場合には、（後述のプロシージャを使用して）空きセクタを選択し、識別子、データ、適切性ｐ＝３、および、検査フィールドを上記セクタに書き込み、上記セクタの位置と適切性とを保持する。両方の場合とも、プロシージャは、（後述のプロシージャを使用して）空きセクタを発見することによって継続する。識別子、データ、（３によるｐ＋１の整数除算の剰余として計算される）適切性ｑ、および、検査フィールドをこのセクタに書き込む。その後に、以前に記憶されたセクタがあれば、このセクタを消去する。
【００５８】
・空きセクタを探索するために、発見される空きセクタの個数ｎをゼロに初期化する。セクタを逐次的に検査する。空でなくかつ破損しているセクタの各々に関しては、このセクタを消去して空にする（したがって、上述の不要情報の整理に寄与する）。セクタが破損していない場合に、かつ、その適切性がｐ＝３である場合には、このセクタを消去する（同様に、不要情報の整理に寄与する）。セクタが破損していない場合に、かつ、その適切性がｐ＝３でない場合には、まだ走査し終わっていない区域において、同一の識別子を有する別の非破損セクタを探索し、別の非破損セクタを発見した場合には、不適切なセクタを消去し、読取りの場合と同様に処理を続行する。このプロセスの終わりにセクタが空である場合には、発見した空きセクタの個数ｎを増分し、０からｎ−１の範囲内のランダムな整数を引き出す。この整数が０である場合には、空きセクタの位置を記憶する。全セクタを走査し終わった時には、空いていないセクタの全てが破損しておらず、２つのセクタが同一の識別子を持たず、空きセクタの個数ｎが判明しており、こうしたセクタの１つが、同程度の蓋然性がある形で行われたランダム選択として既に記憶されている。空きセクタを発見しなかった場合には、書込みプロシージャを中断する。
【００５９】
こうした特定のセクタ構造を使用してカードが不可分の修正セッションを操作することが可能な方法を、次で説明する。
不可分の修正を記憶するために、カードは、不揮発性メモリ内に使用可能なＮ個の消去済みセクタを有する（ここで、Ｎは、単一のセクション中に行われる必要があるかも知れない不可分の修正の回数に相当する）。これに加えて、カードは、セッションの操作に専用に使用されかつ「セッション記述子」と呼ばれる不揮発性メモリ領域（セクタ内には含まれない）を操作する。
【００６０】
この具体例は、セッションに固有の認証を行わない。
セッション記述子を次の３つのフィールドで定義する。
・不可分セクタに対する参照のリスト（ＬＲＳＡ）、
・不可分セクタに対する参照のリストを生成する際の検査値（ＶＣＣ）、
・（セッションが既に終了しているかどうかを発見するために）不可分セクタに対する参照のリストを考慮する検査値（ＶＣＰＣ）。
【００６１】
ステップ０：初期化
カード操作の最後の中断以来の最初のデータアクセスの前に、例えば、リセット時に、カードは、セッション記述子が消去されることを確保しなければならない。セッション記述子の状態に応じて、次の通りの幾つかの場合を考慮に入れる必要がある。
【００６２】
・セッション記述子が完全に消去されている場合：カードはこのセッション記述子をそのまま据え置く。
・セッション記述子が完全には消去されておらず、かつ、ＶＣＰＣは適正である場合：カードは、（上述のリストで参照されるセクタから）既に書き込まれているセクタによって陳腐化させられたセクタの全てを探索し（必要に応じて）消去し、その次にセッション記述子を消去する。
【００６３】
・セッション記述子が完全には消去されておらず、かつ、ＶＣＰＣが消去されているか不適正であり、かつ、ＶＣＣが適正である場合：カードは、ＬＲＳＡ内に示されているセクタを消去し、その次に、セッション記述子を消去する。または、
・セッション記述子が完全には消去されておらず、かつ、ＶＣＰＣが消去されているか不適正であり、かつ、ＶＣＣが消去されているか不適正である場合：カードはセッション記述子を消去する。
【００６４】
ステップ１：セッションの開始
カードはＮ個の消去済みセクタを探索し、その次に、この消去済みセクタに対する参照リストを、（消去されると仮定される）セッション記述子内のそのＶＣＣに記録する。
【００６５】
ステップ２：セッションの進行
カードはコマンドを受け取る。コマンドの１つが１つまたは複数の不可分の修正を生じさせる時には、これらの修正を記録するために使用されるセクタは、ＬＲＳＡ内に記録された、合計でＮ個の修正済みセクタまでのセクタである。
【００６６】
ステップ３：セッションの終了
セッションを終了するために、カードは、ＬＲＳＡとそのＶＣＣとが既に計算に入れられていることを確保するＶＣＰＣを書き込む。その後で、カードは、（上述のリストで参照されるセクタから）既に書き込まれているセクタによって陳腐化させられているセクタの全てを探索し消去する。その後で、カードはセッション記述子を消去する。
【００６７】
これに加えて、実証を取り扱うのがカードである場合には、セッションの操作は次の修正を含む。
【００６８】
ステップ０：初期化
セッション記述子が完全には消去されておらず、かつ、ＶＣＰＣが適正である場合には、カードは、（上述のリストで参照されるセクタから）既に書き込まれているセクタによって陳腐化させられたセクタの全てを探索し（必要に応じて）消去するが、セッション記述子は消去しない。
【００６９】
ステップ１：セッションの開始
カードは、揮発性メモリ内に、セッションが始まっているということを記録する。セッション記述子が空でないならば、カードは、先行セッションが実証されていないということを表示し、かつ、ＬＲＳＡを分析することによって、どのデータ項目が実証されていないのかを表示することさえ可能である。いずれにしても、カードはセッション記述子を修正しない。
【００７０】
ステップ２：セッションの進行
不可分の修正を伴う第１のコマンドの際に、カードは、必要に応じてセッション記述子を消去し、Ｎ個の消去済みセクタを探索し、その次に、ＬＲＳＡとそのＶＣＣとを書き込む。
ステップ３：セッションの終了
カードは、揮発性メモリ内に、全セッションが終了しているということを記録する。何が起ころうとも、カードはセッション記述子を消去しない。