(57)【特許請求の範囲】
【請求項１】
情報処理手段（９）並びにプログラム、プログラムを実行するための一般データ、およびプログラムの実行の特定セッションに関する少なくとも１組のセッション固有データを記憶するための情報の主要記憶手段（10、14）を含むチップカードであって、情報処理手段が、
動作の実行が不可能である一定の情報量を主要記憶手段（10、14）が含むことをチップカードの動作中に検出するための手段と、
アンロードによって、前記動作の実行を可能にするのに十分なスペースを主要記憶手段内に空けることができる少なくとも１組のセッション固有データを、主要記憶手段（10、14）内で選択するための選択手段と、
第２の記憶手段（23〜25;42;53）が前記選択された少なくとも１組のセッション固有データを含まない場合に、前記第２の記憶手段内に前記少なくとも１組のセッション固有データをアンロードするための手段と、
を含むことを特徴とするチップカード。
【請求項２】
主要記憶手段に保存され、少なくとも１組のセッション固有データについて、このセッション固有データが主要記憶手段内に保存されているか否かを示す保存表示部を含む、ロードテーブル（TAB_APPLI）を含み、セッション固有データの組に情報処理手段（９）がアクセスしなければならないときに前記保存表示部を検索するようにし、
セッション固有データの組が保存されていることを保存表示部が示す第１の場合、情報処理手段がセッション固有データの組にアクセスし、
セッション固有データの当該組が保存されていないことを保存表示部が示す第２の場合、情報処理手段がこのセッション固有データの組のロードコマンドを第２の記憶手段（23〜25;42;53）に送る、請求項１に記載のチップカード。
【請求項３】
保存表示部が、
対応するセッション固有データの組が第２の記憶手段（23〜25;42;53）からチップカードにロードされたことを示す《ロード》状態と、
セッション固有データの組がチップカードから第２の記憶手段にアンロードされたことを示す《アンロード》状態と、
を含む請求項２に記載のチップカード。
【請求項４】
主要記憶手段（10、14）に保存され、第２の記憶手段（23〜25;42;53）からチップカードに第１のバージョンがロードされた少なくとも１組のセッション固有データについて、この第１のバージョンがチップカード内で変更されたか否かを示す変更表示部を含む、ロードテーブル（TAB_APPLI）を含み、
このセッション固有データの組を第２の記憶手段にアンロードしなければならないときに、この第１のバージョンが変更されている場合だけ実際にアンロードするようにする、請求項１に記載のチップカード。
【請求項５】
同じプログラムおよびプログラム実行のための同じ一般データ（ｐ−cod）と、セッション固有データのそれぞれの異なる組（ｐ−dat）とからなる情報の複数の組を検出する手段を有しており、前記プログラムと前記一般データを一回だけ主要記憶手段（10、14）に記憶し、セッション固有データの組の各々を前記プログラムと前記一般データに関連付けるようにする、請求項１に記載のチップカード。
【請求項６】
主要記憶手段に保存され、保存された各プログラムについて、主要記憶手段に保存可能である関連付けられたセッション固有データの組の最大数（ｓ）を含む、ロードテーブル（TAB_APPLI）を含む請求項５に記載のチップカード。
【請求項７】
主要記憶手段（10、14）に、第２の記憶手段（23〜25;42;53）に以前にアンロードされたセッション固有データの組を再ロードするための手段を含む、請求項１に記載のチップカード。
【請求項８】
主要記憶手段に保存され、装置により処理される少なくとも１組のセッション固有データについて、主要記憶手段内に保存された署名キー（SWAP）により、場合によってはセッション固有データの組をアンロードする前に情報処理手段（９）により計算されたこのセッション固有データの組の第１の署名（SGN−Ｋ）を含む、ロードテーブル（TAB_APPLI）を含み、処理手段が、再ロードされたセッション固有データの組の第２の署名を計算し、この第２の署名を第１の署名と比較し、２個の署名が同じである場合にはセッション固有データの組の再ロードを有効であると認め、２個の署名が異なる場合にはセッション固有データの組の再ロードを無効にするように構成される、請求項７に記載のチップカード。
【請求項９】
情報処理手段（９）並びにプログラム、プログラムを実行するための一般データ、およびプログラムの実行の特定セッションに関する少なくとも１組のセッション固有データを記憶するための情報の主要記憶手段（10、14）を含むチップカード内のメモリ管理方法であって、
動作の実行が不可能である一定の情報量を主要記憶手段（10、14）が含むことを、チップカードの動作中に検出するステップと、
アンロードによって、前記動作の実行を可能にするのに十分なスペースを主要記憶手段内で空けることができる少なくとも１組のセッション固有データを、主要記憶手段（10、14）内で選択するための選択ステップと、
第２の記憶手段（23〜25;42;53）が前記選択された少なくとも１組のセッション固有データを含まない場合に、第２の記憶手段に前記少なくとも１組のセッション固有データをアンロードするステップとを含むことを特徴とする管理方法。
【請求項１０】
以前にアンロードした所定のセッション固有データの組の追加保存が可能である一定の情報量を主要記憶手段（10、14）が含むことを、チップカードの動作中に検出するステップと、
前記アンロードされたセッション固有データの組を主要記憶手段内に再ロードするステップとを含む、請求項９に記載の方法。
【請求項１１】
以前にアンロードした所定のセッション固有データの組の追加保存が不可能である一定の情報量を主要記憶手段（10、14）が含むことを、チップカードの動作中に検出するステップと、
アンロードによって、以前にアンロードした前記セッション固有データの組の保存を可能にするのに十分なスペースを主要記憶手段内に空けることができるアンロードすべきセッション固有データの組（Ｊ）を、主記憶手段内で選択する選択ステップと、
第２の記憶手段（23〜25;42;53）がアンロードすべき前記セッション固有データの組を含まない場合、前記第２の記憶手段にアンロードすべきセッション固有データの組（Ｊ）をアンロードするステップと、
以前にアンロードされた前記セッション固有データの組を主要記憶手段に再ロードするステップとを含む、請求項９に記載の方法。
【請求項１２】
前記第２の記憶手段が、チップカードから離れていて、かつデータ伝送ネットワーク（26）によりチップカードに接続されるデータバンク（23〜25）を含む、請求項９に記載の方法。
【請求項１３】
前記第２の記憶手段が、チップカード（21）と協働する情報処理装置（20）に属する、請求項９に記載の方法。
【請求項１４】
前記第２の記憶手段（42;53）が、チップカードに属する、請求項９に記載の方法。
【請求項１５】
情報処理手段（９）並びにプログラム、プログラムを実行するための一般データ、およびプログラムの実行の特定セッションに関する少なくとも１組のセッション固有データを記憶するための情報の主要記憶手段（10、14）を含むチップカードと、チップカードの読み取り装置との通信方法であって、
読み取り装置が、動作の実行命令をカードに伝送するステップと、
この動作を実行するために、主要記憶手段内に十分な場所を持っているかどうかを、カードがサーチするステップと、
肯定の場合には、カードが前記動作を実行し、読み取り装置に実行報告を伝送するステップと、
否定の場合には、アンロードによって、前記動作の実行を可能にするのに十分なスペースを主要記憶手段内に空けることができる少なくとも１組のセッション固有データを、カードが主要記憶手段内で選択し、次いで、第２の記憶手段（23〜25;42;53）がアンロードすべき前記少なくとも１組のセッション固有データを含まない場合には、カードが、読み取り装置にアンロード命令を伝送することにより前記第２の記憶手段内に少なくとも１組のセッション固有データをアンロードし、その後、カードが、前記動作を実行し、最後に読み取り装置に実行報告を伝送するステップ
とを含むことを特徴とする通信方法。
【請求項１６】
前記動作が、保存すべきセッション固有データの組（Ｊ）のロードであり、読み取り装置が、前記セッション固有データの組（Ｊ）のロード命令をカードに伝送するステップと、
このロード命令を実行するために、主要記憶手段に十分な場所を持っているかどうかを、カードがサーチするステップと、
肯定の場合には、カードがロード命令を実行し、読み取り装置に実行報告を伝送するステップと、
否定の場合には、カードが、
ロードの停止命令を伝送し、
アンロードによって、ロード命令の実行を可能にするのに十分なスペースを主要記憶手段内で空けることができるアンロードすべき少なくとも１組のセッション固有データ（Ｋ）を主要記憶手段内で選択し、
第２の記憶手段（23〜25;42;53）がアンロードすべき前記少なくとも１組のセッション固有データを含まない場合には、読み取り装置にアンロード命令を伝送することにより第２の記憶手段内に選択された少なくとも１組のセッション固有データ（Ｋ）をアンロードし、
ロード再開命令を読み取り装置に伝送し、
前記ロードを実行し、読み取り装置に実行報告を伝送するステップと、
を含む請求項15に記載の方法。
【請求項１７】
前記動作の実行命令が、読み取り装置に対して、カードの電気エネルギー供給を開始することからなる、請求項15に記載の方法。
【発明の詳細な説明】
本発明は、仮想メモリを管理するための手段を含むチップカードに関する。
チップカードは20年ほど前から、日常生活で重要な位置を占めている。最初にマイクロ回路カードに関心を持ったのは銀行の分野である。その主な長所は不正行為を減らすことにあった。有料テレビや無線電話会社は、有料放送の暗号化および復号化の役目をするキーの生成手段としてチップカードを用いている。安全性を保証するには、新しいIC構造を形成することが必要であった。電子財布型のカードは、一定の金額の電子マネーを含む。また別のカードは、いわゆる特典カードであって、所有者に金銭上の利点を与えるものである。
このように、マイクロ回路カード、特にマイクロプロセッサカードに関連する装置は、ますます多数のアプリケーションで使用できることが分かる。当初、カードのオペレーションシステム、すなわちROMに配置されるプログラムは、単一のアプリケーションしか管理することができなかった。オペレーションシステムは、マイクロ回路の製造時に書き込まれる。プログラムメモリ（ROM）や不揮発性プログラマブルメモリ（EPROMおよびEEPROM、今日のFeRAM）のサイズを大型化すれば、オペレーションシステムは、より多くの機能を実行することができる。しかしながら、これらの機能の数は、ROMのサイズにより常に制限される。しかも、ROMに追加機能を付加することは、新しいマスクの製造を意味する。こうした製造は非常に高価であり、大量のカードを製造する場合しか真の収益性がない。
ROMに関係なくこれらの機能の数を増加する手段は、実行可能なプログラムならびにこのプログラムを動作可能なデータを、プログラマブルメモリに書き込むことからなる。かくして最初は機能数が固定したオペレーションシステムに追加機能を付加することが可能である。フランス特許出願第2748134号は、プログラマブルメモリにプログラムをロードする手段を記載している。だが、プログラマブルメモリのサイズは制限されている。つまり１個のプログラムを充填すると、もはや機能を付加することはできない。そのうえ、このプログラムの保存は、プログラマブルメモリ内のデータに充てられたメモリの場所を犠牲にして行われる。この方法は、ROMに配置されるプログラムの幾つかの欠陥を修正し、または別の幾つかの機能を付加するために使用される。１つのカードがきわめて大型サイズのプログラムを実行しなければならない場合、この特許に記載された方法は不十分であることが分かる。
本発明は、カードからなる情報処理装置のための応用プログラムおよびまたはデータに関する必要性に応じて、プログラマブルメモリをロードおよびアンロードする方法を提案することにより、上記の問題を解決することを目的とする。従ってカードが、電子財布、銀行用、GSM電話、または現在フランスで実験されている健康用といった、非常に多様なアプリケーションを実行できるようになる。本発明を用いれば、このように列挙されたアプリケーションが仮想としてカード内にある。カードの所有者は、こうしたアプリケーションを予めロードする。かくしてカードは、所有者固有の必要性に応じて構成される。
本発明はまた、別の問題を解決することもできる、ユーザは、同一アプリケーションを同時に２回開かなければならないことがある。カードなどの情報処理装置で、このようなアプリケーションを実行するには一定の時間がかかる。処理を早めるためには、最初のアプリケーションの実行が終わる前に二番目のアプリケーションの実行を始められるようにすることが有利である。こうすれば、同じプログラムを同時に２回展開できる。
この目的は、少なくとも次の３つの機能を含むオペレーションシステムをカードが備えることによって達せられる。
−応用情報のロード
−応用情報のアンロード
−応用情報の実行
新しいアプリケーションを得る場合、カードは、そのプログラマブルメモリに応用情報を受容し、情報を検査する。
アプリケーションを実行するためにカードと協働する読み取り装置からコマンドを受ける場合、カードのオペレーションシステムは、メモリのコンテクストを分析し、メモリの一部をアンロードするためにネットワークを呼び出す理由があるかどうか、およびまたは以前にアンロードされた応用情報を再ロードする理由があるかどうか決定する。
応用情報を再ロードする場合、カードのオペレーションシステムは、ロードされる情報が過去にシステムによって有効と認められたことがあるかどうかチェックする。次いで、これらの情報を実行する。
ネットワークは、カードのプログラマブルメモリの延長とみなすことができる。カードは、ネットワークに、カード固有のメモリに保存できないものを送る。カードは、再ロード時に、ネットワークから受けた情報が確かにカードが予め送った情報であるか検査する。カードのROMは、数を制限したアプリケーションをロードおよび実行できるようにするプログラマブルメモリの管理機構を備えなければならない。従って、カードのROMとプログラマブルメモリのサイズは、実行可能なアプリケーション数に制限がなく、アプリケーションを付加するときに新たにマスキングを実行する必要性はない。
要するに、本発明は、情報処理手段および情報の主要記憶手段を含むチップカードに関し、処理手段が、
−動作の実行が不可能である一定の情報量を主要記憶手段が含むことをチップカードの動作中に検出するための手段と、
−アンロードすべき情報の集合を主要記憶手段内で選択し、アンロードによって、前記動作の実行を可能にするのに十分なスペースを主要記憶手段内に空けられる選択手段と、
−第２の記憶手段がアンロードすべき情報の集合を含まない場合に、前記第２の記憶手段内に前記アンロードすべき情報の集合をアンロードするための手段とを含むことを特徴とする。
本発明はまた、関連する方法に関する。本発明はさらに、情報処理手段および情報の主要記憶手段を含むチップカードと、チップカードの読み取り装置との通信プロトコルに関し、
−読み取り装置が動作の実行命令をカードに伝送するステップと、
−この動作を実行するために、主要記憶手段内に十分な場所を持っているかどうかカードがサーチするステップと、
−肯定の場合には、カードが前記動作を実行し、読み取り装置に実行報告を伝送するステップと、
−否定の場合には、カードが主要記憶手段内でアンロードすべき情報集合を選択し、アンロードによって、前記動作の実行を可能にするのに十分なスペースを主要記憶手段内に空けることができ、次いで、第２の記憶手段がアンロードすべき前記情報集合を含まない場合には、カードが、読み取り装置にアンロード命令を伝送することにより前記第２の記憶手段内にアンロードすべき情報集合をアンロードし、その後、カードが、前記動作を実行し、最後に読み取り装置に実行報告を伝送するステップとを含むことを特徴とする。
本発明の他の詳細および長所は、添付図面に関して限定的ではないが好適な幾つかの実施形態の以下の説明を読めば明らかになるだろう。
第１図は、本発明により用いられるデータ処理網を示す。
第２図は、第１図で用いられてチップカードと協働する情報処理装置を示す。
第３図は、情報処理装置がチップカードの様々な機能性を組み込んだ、第２図の変形実施形態を示す。
第４図は、情報処理装置が光学トラックの読み取り装置を備えた、第２図の変形実施形態である。
第５図は、第３図の変形実施形態である。
第１図では、チップカードを読みとることができる端末20またはチップカードの機能性を組み込んだ端末22が、離れていてデータ通信網26により結合されるデータバンク23〜25と協働する。データ通信網26は特に、電話網、インターネット網、または他のあらゆるデータ通信網である。各データバンクは、メモリを管理するデータ処理CPUを含む。本発明によれば、後述するように、カード21または端末22は、カード21または端末22への新しいアプリケーションのロードがメモリの場所がないために不可能であるとき、データバンク23〜25の１つに向けて別のアプリケーションをアンロードするように決定できる。このアンロードにより、新しいアプリケーションを収容するのに十分なメモリスペースが空けられる。アンロードされたアプリケーションが後で必要になるとき、カード21または端末22は、場合によってアプリケーションのアンロードによりメモリの場所を新たに空けた後で、アプリケーションを再ロードするために対応するデータバンクにコマンドを送る。
端末20およびカード21の構成を第２図に詳しく示す。端末は、それ自体既知の方法でマイクロプロセッサ２を含み、このマイクロプロセッサ２に、ROM3と、RAM4と、物理的な接触を伴うまたは伴わないチップカード21への協働手段５と、端末が第１図のデータ通信網26に通信できるようにする伝送インターフェース７とが接続されている。端末20はさらに、着脱式または非着脱式のディスケットまたはディスク等の保存手段と、（キーボードおよびまたはマウス型のポインティングデバイス等の）入力手段と、表示手段とを備えることができ、こうした様々な手段は第２図では省いている。
端末は、個人または公共用地に設置されて情報管理手段あるいは各種の財またはサービスの送信手段を提供できるあらゆる情報処理機器から構成でき、こうした情報処理機器は、固定して設置しても、携帯式であってもよい。この機器は特に、電気通信専用機器であってもよい。
さらに、カード21は、情報処理手段９、不揮発性メモリ10、揮発性の作動メモリRAM14、および端末20との協働手段13を含むチップを支持する。このチップは、いったん記録した情報にチップの外部からアクセスすることはできないで処理手段９によってのみアクセス可能である秘密ゾーン11と、情報の読み取りおよびまたは書き込みのためにマイクロプロセッサ９によりチップ外部からアクセス可能になるアクセスゾーン12とを、メモリ10内に決定するように構成される。不揮発性メモリ10の各ゾーンは、変更不能な部分ROMと、変更可能な部分EPROM、EEPROMとを含むか、この変更可能な部分を、「フラッシュ」型のRAMすなわちFRAM（FRAMは、強磁性材料のRAMである）、つまり従来のRAMとアクセス時間が同じである上にEEPROMの特徴を有するメモリから構成することもできる。
チップとしては特に、本出願人名義の米国特許第4382279号に記載されたような不揮発性メモリの自動プログラマブルマイクロプロセッサを用いることができる。この特許のコラム１、13〜25行目に記載されているように、チップの自動プログラマブル特性は、ROMに配置されるプログラムfiに対して、プログラマブルメモリに配置される別のプログラムfjを一定のプログラムgjに変更する可能性に対応する。変形実施形態では、チップのマイクロプロセッサを、ICチップに設置される論理回路に交換し、または少なくとも補完している。事実、このような回路は、マイクロプログラムしたのではなく接続された電子手段によって、計算、特に認証および署名を実行することができる。こうした回路は特にASIC（「Application  Specific  Integrated  Circuit」）型である。ASICの例としては、SLE4436として商品化されているシーメンス社の構成部品や、ST1335として商品化されているSGS−トムソン社のものが挙げられる。有利には、チップはモノリシック形に構成される。
第２図の変形実施形態を第３図に示している。ここでは第１図の端末22が、端末20の諸要素に加えて、モジュール15に配置されたカード21の諸要素と、第２図および第３図に共通で参照数字が同じ諸要素とを含む。しかしながら、第２図の協働手段５、13は、マイクロプロセッサ２とマイクロプロセッサ９との間の常設接続に代えられている。
第３図の変形実施形態を第５図に示す。ここでは、端末50が、RAM52または不揮発性メモリ53に接続される１個のマイクロプロセッサ51または同等物だけを含む。不揮発性メモリ53は、マイクロプロセッサ51により端末外部からアクセス可能なゾーン54と、マイクロプロセッサ51だけからアクセス可能な秘密ゾーン55とを含む。マイクロプロセッサ51は、第２図に関連して説明した、マイクロプロセッサ９の自動プログラマブル特性を有する。さらに端末50が、第１図のデータ通信網26との通信を可能にする伝送インターフェース56を有する。
以下の説明は、限定的ではないが、第２図の実施形態に関して行われ、端末20は、カード21の読み取り機能を理由として「読み取り装置」と称される。
カードのメモリは、ROM型のメモリ、RAM型の作動メモリ、およびEEPROMまたはFLASH型の不揮発性プログラマブルメモリのように組織される。テーブル１に示したように、ROMは、サブルーチンまたは、入力／出力およびメモリの書き込み／読み取りといったルーチンを最低限含む基本オペレーションシステムゾーンと、仮想メモリのオペレーションシステムゾーンとを含み、仮想メモリは、データバンク23〜25のメモリから構成される。基本オペレーションシステムおよび仮想メモリのオペレーションシステムが一緒になって、以下「カードのオペレーションシステム」と称するシステムを形成する。
仮想メモリのオペレーションシステムは、好適には少なくとも９個のコマンドを管理できる。少なくとも以下の４個のコマンドが、読み取り装置によりカードに向けてスタートされる。
−カードへのアプリケーションのロード
−先にロードしたアプリケーションの、カードにおける実行
−カードにおけるアプリケーションの消去
−カードにおけるアプリケーションの有無のチェック
また、次のような他の５個のコマンドが、カードにより読み取り装置に向けてスタートされる。
−通信網へのアプリケーションのアンロード
−通信網からのアプリケーションの再ロード
−ロードプロセスの停止
−ロードプロセスの再開
−通信網におけるアプリケーションの消去
特定の実施形態では、仮想メモリのオペレーションシステムが、プログラマブルメモリでロードしたアプリケーションプログラムに、外部から受けてこのプログラムで処理しなければならない全ての命令をフィルタ処理して伝送する。
本明細書では、「情報」という表現は、実行可能なプログラムまたは一般には実行不能なデータの全てを示す。「アプリケーション」という表現は、サービスまたは製品のプロバイダのアプリケーションを実施するための特定プログラムと、それに関連付けられたアプリケーションデータとを示す。
同じくテーブル１によれば、プログラマブルメモリは、最低、次の３つのゾーンを含む。
−カードを識別するコード「Ｃ」を含み、「システムデータ」と称される第１のゾーン
−アプリケーション管理データ、すなわち各カードに特定の「SWAP」と称される署名キー、場合に応じてアプリケーションのプロバイダや特定のアプリケーションに関連付けられた１つまたは複数の暗号化キー、および「TAB_APPLI」と称されるテーブルを含み、「管理データ」と称される第２のゾーン。
−アプリケーション情報、すなわち実行可能なプログラムおよびまたはこのプログラムの動作に必要なデータを受容するのに用いられ、「ロード」と称される第３のゾーンである。
最初は、空のロードゾーンとテーブルTAB_APPLIとを備えたカードを所持者に与えることができる。少なくともSWAPキーは、カードの不揮発性メモリ10の秘密ゾーン11に配置される。
0003575697.tif 000002
テーブルTAB_APPLIは、カードで使用できるアプリケーションに対応する情報を含む。このアプリケーションは、物理的にカードに含まれていても、あるいは通信網にアンロードされたためにカードに仮想として含まれていてもよい。テーブルは、次のような構造を有する。
0003575697.tif 000003
テーブルTAB_APPLI2は、カードによって使用可能にされたアプリケーションと同数の行と、各行に対して５個の列を含む。第１の列は、アプリケーションの識別コードＩ、Ｊ、Ｋを決定する。第２の列は、カードにアプリケーションを保存する保存アドレスADR−Ｉ、ADR−Ｊ、ADR−Ｋを決定する。第３の列は、アプリケーションの情報量を示すオクテット数を決定する。第４の列は、アプリケーションのオクテットの集合を対象とする署名を決定する。この署名は、一定のアルゴリズムと、秘密キーとしてのカードのSWAPキーとを用いることにより計算される。アルゴリズムとしては、D.E.S.（Data  Encryption  Standard）のような対称アルゴリズムまたはR.S.A.（考案者Rivest、Shamir、Adleman）のような非対称アルゴリズムを使用することができる。しかし有利には、MD5またはSHA等の刻みファンクションのようなもっと簡単なファンクション、または「排他的or」等のファンクションを使用するだけで十分である。何故なら、本発明の範囲では、署名はカードには属さず、従って保護されているからである。さらに第５の列は、関与するアプリケーションがカードに《ロード》状態にあるか、もしくはデータバンクに《アンロード》状態にあるかを決定する。
第１の段階で、カードの所持者またはアプリケーションのプロバイダが、識別コード「Ｋ」を有する第１のアプリケーションをカードにロードすることを望む。ロードコマンドの実行は、カードの所持者またはアプリケーションのプロバイダの認証が首尾良く行われるかどうかによって左右される。カードの所持者またはアプリケーションのプロバイダにとって、それ自体既知の認証メカニズムは、資格を与えられた対話者と対話できるようにする情報をカードに供給することからなる。
ロードコマンドは、ロード命令すなわち、カードのコードＣ、アプリケーションのコードＫ、および、このアプリケーションに対応する情報オクテット数ｎを含み、これによって次のようなコマンドフォーマットが得られる。
0003575697.tif 000004
カードがコマンドを受けると、カードのオペレーションシステムは、送られたコードＣが、システムのデータゾーンの記録されたものと確かに同じであるかどうか確認する。同じでない場合には、カードは、エラーメッセージを通信網に返送する。同じである場合には、アプリケーションの情報は確かにこのカードに宛てられたものである。すなわち、その場合にはカードのオペレーションシステムが、管理データゾーンにおけるテーブルTAB_APPLIを読みとって、初期ロードに関するものであるかどうか判断する。最初は、TAB_APPLIが、アプリケーションＫについての情報を含まない。そうでない場合、カードは、《アプリケーションは既にロード済み》というメッセージにより読み取り装置に応答する。もしそうである場合は、これが初期ロードに関するものである。カードのオペレーションシステムは、ｎオクテットがメモリに収容可能であるかどうか判断する。可能である場合、カードは、ロードゾーンで使用可能なｎオクテットの第１のブロックの開始アドレス「ADR−Ｋ」を計算する。不可能である場合は、《メモリ不十分》というメッセージを返送する。さらに、カードは読み取り装置に対して、読み取り装置が「OK_Chargement」という応答によりｎオクテットのアプリケーションを送信できることを示す。その場合、読み取り装置は、ｎオクテットのアプリケーションを送信する。
アプリケーションの情報がプログラマブルメモリに保存されると、カードのオペレーションシステムが、これらの情報の署名《SGN−Ｋ》を計算する。カードのオペレーションシステムは、その場合、テーブルTAB_APPLIに、アプリケーションコードＫ、保存アドレスADR−Ｋ、オクテット数ｎ、および署名SGN−Ｋを入力する。この操作が実行されると、《ロード／アンロード》表示部は、《ロード》になる。テーブルTAB_APPLIの更新が終了すると、カードのオペレーションシステムは、読み取り装置を介して、カードの所持者またはアプリケーションのプロバイダに、アプリケーションのロードが正しく行われたことを示す報告を送る。テーブルTAB_APPLIは、その場合次のような構造を有する。
0003575697.tif 000005
第１の変形実施形態によれば、カードのオペレーションシステムは、ロード直後に、応用情報すなわちアプリケーション情報に含まれる実行可能なプログラムをスタートすることができる。これによって、応用情報を初期化可能である。たとえば、電子財布のアプリケーションの場合、プログラムの第１の実行により、メモリに書き込まれた財布の残高を０フランに初期化することができる。第２の変形実施形態によれば、実行可能なプログラムは、読み取り装置がカードに送る第１のコマンドの時にスタートされ、考慮されたアプリケーションを用いる。アプリケーションの実行開始アドレスは、簡単には《ADR−Ｋ》であるが、間接的なアドレッシングを使用してもよい。すなわち、そのとき指定されるアドレスは、マイクロプロセッサの領域ではそれ自体既知の方法で、実行アドレスを含むメモリのコンテクスト［ADR−Ｋ］である。
読み取り装置は、アプリケーションのタイプを特定することによりコマンドをカードに送る。たとえば、このタイプが規格ISO7816−３に従って５オクテットのコマンドを最初にコード化できるとか、このオクテットが前記規格では《CLA》と称されるとかである。カードの仮想メモリのオペレーションシステムは、読み取り装置がカードの送信するコマンドを検証し、アプリケーションコードがコマンドに対応するかどうか判断する。次に、システムは、コードが書き込まれているかどうかテーブルTAB_APPLIで読みとる。書き込まれている場合には、カードはアプリケーションＫを実行できる。書き込まれていない場合には、アプリケーションＫを実行できない。カードは、エラーメッセージを送ることによって応答する。コードＫがTAB_APPLIに書き込まれている場合は、次いで表示部《ロード／アンロード》がテストされる。表示部が《ロード》になっている場合、応用情報は、確かにカードのプログラマブルメモリにある。この場合、カードのオペレーションシステムは、アドレスADR−Ｋまたは［ADR−Ｋ］に配置されるアプリケーションプログラムに協力する。次に、応用情報が既にアンロードされてしまったためにカードのプログラマブルメモリが応用情報を含まない場合に発生することについて説明する。
カードの所持者またはアプリケーションのプロバイダが、たとえば《Ｊ》と示される第２のアプリケーションの情報をそのカードが含むようにしたいと仮定する。これは、カードのプログラマブルメモリに応用情報《Ｊ》をロードすることによって可能になる。先に述べた例と同様に、カードの所持者またはアプリケーションのプロバイダは、次のような応用情報のロードコマンドを備えた秘密を有することにより認証される。
0003575697.tif 000006
このロードコマンドは、アプリケーションＫのロードに関する先の例と同様である。ここではアプリケーションのオクテット数がｍになっている。
カードのオペレーションシステムは、コードＣを確認し、プログラマブルメモリ内で空いているｍオクテットの第１のブロックをサーチする。プログラマブルメモリが、アプリケーションＫおよびＪからなる２個の応用情報ブロックを物理的に含むことはできないが、アプリケーションＫの全部または一部をアンロードすればアプリケーションＪを含むことができると仮定する。カードは読み取り装置に送られる特定コマンドを用いて、アプリケーションＪのロードプロセスを停止することを読み取り装置に知らせ、カードの仮想メモリとみなすことができるデータバンク内にアプリケーションＫをアンロードする決定をする。このアンロードにより、アプリケーションＪをロードするためのメモリの場所が空けられる。
アンロードは、特に現行のカードのための通信網のデータバンク23〜25の１つに、このカードに特有の応用情報を移すことからなる。ロード時に行われる署名の計算から、カードは、後の再ロード時にその固有の情報の完全性および信憑性を検証できるようにされる。さらに、最初のロード時に既に署名の計算を行っているため、アンロードコマンドの実行時間が最適化される。カードは、読み取り装置に次のようなコマンドを送る。
0003575697.tif 000007
このコマンドは、ロードコマンドと同様に、カードのコードＣ、アンロードするアプリケーションのコードＫ、アプリケーション情報のオクテット数ｎを含む。さらに、アンロード命令と同時に読み取り装置に伝送される、こうしたｎオクテットの情報のコンテクストそのものを含む。アプリケーションの一部が既に実行され、その一方でアプリケーションのアンロードが介在する場合、アプリケーションの実行が遮断された場所で、この実行を後で再開できるコンテクスト情報は、カードのプログラマブルメモリに保存されるか、ｎオクテットのアプリケーション情報に付加されてそれらと同時に通信網にアンロードされる。
通信網のアドレスとして受信者の識別子を指示することができる。有利には、各カードを特にそのカードに宛てられたデータバンクのアドレスに関連付ける対応テーブルを通信網が所有する。これによってカードは、前記アドレスまたは前記識別子を保存する必要はなくなり、同一カードからアンロードされる全ての情報を同一のデータバンクに集めることができる。
読み取り装置はコマンドを受信するが、コマンドが通信網宛であることを認識する。従って、このコマンドを、コマンドがアドレスされるデータバンクに再送する。通信網が複数のデータバンクを有する場合、カードのコードＣに応じて選択を実施できる。データバンクは、ｎオクテットの応用情報を受信し、読み取り装置を介してカードに、保存がうまく行われたことを示す受領通知を再送する。その場合、カードはロード／アンロード表示部を「アンロード」にしてテーブルTAB_APPLIを変更する。それまでアプリケーションＫの応用情報によって占有されていたメモリの場所が使用可能になる。するとアプリケーションＪのロード操作が再開され、カードは読み取り装置にロードプロセスの再開コマンドを送信する。ロード操作はＫのロード操作と同様に行われる。カードのオペレーションシステムは、ｍオクテットのアプリケーションＪの保存アドレスADR−Ｊを決定し、《OK_Chargement》というメッセージによりｍオクテットの応用情報を送信可能であることを読み取り装置に示す。
読み取り装置は、アドレス「ADR−Ｊ」から書き込まれたｍオクテットの応用情報を送信する。アプリケーションＪの情報がプログラマブルメモリに保存されると、カードのオペレーションシステムが、SWAPキーを用いて暗号計算を実施しながらカードの署名を計算する。最後に、オペレーションシステムは、コードＪ、値ADR−Ｊ、ｍおよびSGN−Ｊを書き込むことによってテーブルTAB_APPLIを更新し、表示部「ロード／アンロード」を「ロード」にする。その場合、オペレーションシステムは、ロードが正しく行われたことを示す報告を読み取り装置に送ることができる。
この場合、テーブルTAB_APPLIは、次の値を有する。
0003575697.tif 000008
テーブルTAB_APPLIの更新が終了すると、カードのオペレーションシステムは、アプリケーションＫをスタートしたのと同じ方法でアプリケーションＪをスタートでき、カードは、読み取り装置がカードに送信した実行コマンドを実行する。
カードの所持者またはアプリケーションのプロバイダが、読み取り装置にカードを接続してアプリケーションＫをもう一度実行したい場合、カードのオペレーションシステムは、テーブルTAB_APPLIのコンテクストを分析して、このカードでこのアプリケーションにアクセス可能かどうか判断する。この場合、アプリケーションＫはテーブルTAB_APPLIに確かに記録されているが、通信網にアンロードされている。別のアプリケーションすなわちＪが、メモリ内にあり、ｍオクテットを占有している。オペレーションシステムは、メモリでｎオクテットを占有するアプリケーションＫが、メモリでまだ空いているものの中にロードできるかどうかテストする。上に仮定したように、このテストの応答は否定である。そこでオペレーションシステムは、アプリケーションＫを再ロードできるように現行のアプリケーションＪをアンロードする決定をする。
Ｊの通信網にカードから送られるアンロードコマンドは、次の通りである。
0003575697.tif 000009
操作が行われるとTAB_APPLI内のアプリケーションＪのロード表示部が「アンロード」位置にされる。今やメモリの場所が空いているので、オペレーションシステムは、読み取り装置に、通信網からのアプリケーションＫの再ロードコマンドを送る。このコマンドのフォーマットは次のようになる。
0003575697.tif 000010
読み取り装置は、コマンドを受信し、カードＣに関連付けられたデータバンクへこれを再送する。カードＣの情報を所有するデータバンクは、コマンドを受信し、このカードのファイル内で、アプリケーションＫに関するｎオクテットの応用情報をサーチする。データバンクは、カードの最終コマンドの応答である次のメッセージを作成する。この応答は、読み取り装置を介してカードに伝送される。
0003575697.tif 000011
カードのオペレーションシステムは、コードＣ、Ｋおよび受信したｎ個の値が、前に送信ししたアンロードコマンドのコードと確かに同じであるかどうか確かめることができる。同じである場合、アドレスADR−Ｋからロードゾーンに書き込まれたｎオクテットのデータを受信するとコマンドが続行される。そのため、このアドレスは、オペレーションシステムによりテーブルTAB_APPLIで読み込まれるか、または再ロードされるコンテクスト情報から収集される。同時にオペレーションシステムは、SWAPキーの値を用いた暗号計算により、書き込まれたｎオクテットの署名を計算する。再計算された署名は、テーブルTAB_APPLIに書き込まれた値と比較される。通信網から受信したデータが、前にアンロードしたデータと同じでないときは、２個の署名値は等しくない。その場合には、受信した情報の信憑性または完全性に疑いがある。従ってロードされた情報は実行することが不可能である。カードは、最終ロード操作中にエラー情報を受信したのでアプリケーションＫは実行できないことを示すエラーメッセージを読み取り装置に再送する。オペレーションシステムは、ロード表示部を「ロード」位置にしない。場合によってはアプリケーションＫのコンテクストを消去可能である。
反対に、２個の署名値が等しい場合、受信した情報は、前にカードにロードしたアプリケーションＫの情報に確かに一致する。検証が実行されると、カードのオペレーションシステムは、アプリケーションのロード表示部を「ロード」位置にすることによってテーブルTAB_APPLIを更新する。
そのときテーブルTAB_APPLIは、次のような値をとる。
0003575697.tif 000012
TAB_APPLIの更新が終了すると、オペレーションシステムは、先の例と同様にアプリケーションＫをスタートし、カードは、読み取り装置から送られる応用型の最終コマンドを実行することができる。
前述のように、現在は保存されていないアプリケーションのロードコマンドをカードから受信すると、カードのオペレーションシステムは、メモリで空いている場所をテストする。場所が十分であれば、現在メモリにあるアプリケーションをアンロードせずにロードすることができる。カードには、２個のアプリケーションがある。テーブルTAB_APPLIは、次のような構成になる。
0003575697.tif 000013
この例では、２個のアプリケーションＩとＫがカードに共存する。つまり、２個のアプリケーションを直接実行可能である。第３のアプリケーションＪは、このカードを用いてアクセス可能であるが、通信網からこの第３のアプリケーションを再ロードしなければならない。カードの不揮発性メモリは、以下の情報を含む。
0003575697.tif 000014
このテーブルは、前出のテーブル１に対応しており、ロードゾーンは次のように細分されている。つまり、応用情報のロードゾーンが、アプリケーションＫの情報を受信するゾーンと、アプリケーションＩの情報を受信するゾーンと、ｍ未満の寸法の空の残留ゾーンとの３個の下位ゾーンを含む。
この例に照らし合わせて、本発明の特徴がよりよく理解される。カードは、最小のオペレーションシステムを備えており、このシステムは、メモリの場所を管理し、アプリケーションをロードまたはアンロードし、通信網にアンロードすべき応用情報に署名し、署名を比較することにより通信網からアンロードされて受信した応用情報を確認し、メモリにロードしたアプリケーションをスタートすることができる。署名は、データバンクに保存される応用情報がこのカードに予め確かにロードされたのかどうか確認することができる。読み取り装置は、カードのアンロードおよび再ロードコマンドを認識するプログラムと、通信網に前記コマンドを伝送する手段とを備えている。さらに通信網は、データバンクを備えており、データバンクのメモリは、カードのプログラマブルメモリの延長とみなすことができる。
前置きで示したように、ROMにあるプログラムの動作を変更するためのプログラマブルメモリへのルーチンの書き込みは、このプログラムを知っている人だけが実施できるものである。こうしたルーチンへの飛び越しや、ROMにあるプログラムにルーチンを戻すには、これらのルーチンのアドレスや入出力パラメータ、作動メモリの使用などについて詳しく知っていなければならない。本発明は、こうしたルーチンを使用せず、従って、これらのルーチンの特定化を明確にせずに、多数のアプリケーションを実行可能にしながら、この問題を解決している。応用プログラムは、ROMにおけるプログラムをできるだけ使用しないで実行される。このプログラムの設計者は、オクテット受信、オクテット送信、プログラマブルメモリへのｎオクテットの書き込み、暗号計算などの、いわゆる基本的な幾つかのルーチンの入力ポイントを示すことができる。
本発明の第１の改善は、応用情報を暗号化することからなり、それによって、アプリケーションを受け入れるための情報処理装置（第１図のカード21または端末22のような）と通信網との間で各種の伝送がある場合や、カード21または端末22の外で応用情報を保存する場合に、この応用情報を保護する。
アプリケーションの第１の暗号化は、アプリケーションのプロバイダによるアプリケーションの最初のロードに関するものであり、情報処理装置と通信網に配置されるアプリケーションのプロバイダとが所持する秘密基本キーを使用する。情報処理装置がカードである場合、その読み取り装置は、基本キーを知らない。有利には、各アプリケーションが、基本キーと、アプリケーションの特定パラメータ、たとえばプログラマブルメモリ内のコードＫまたは保存アドレスADR−Ｋから構成される多様化子（diversifiant）とから得られる多様な固有のキーにより暗号化される。この多様化子は、ロード／アンロードコマンドの際にオペレーションシステムが見つけやすいように、テーブルTAB_APPLIに保存可能である。
アプリケーションのプロバイダによりアプリケーションを最初に情報処理装置21または22にロードする場合、プロバイダは、このアプリケーションに関連付けられた多様化キーを計算し、これによってアプリケーションを暗号化してから通信網に送信する。情報処理装置は受信時に、このアプリケーションにに関連付けられた多様化キーを計算し、このキーによってアプリケーションを復号化してから、プログラマブルメモリのロードゾーンにこれを保存する。
アプリケーションの第２の暗号化は、情報処理装置21、22によって実施されるアンロードおよび再ロードに関するものである。情報処理装置21、22によりデータバンクに向けてアプリケーションをアンロードする場合、アプリケーションは再び情報処理装置により暗号化される。情報処理装置は、アプリケーションのプロバイダといった他のあらゆる対話者と、使用する暗号化キーを共有する必要はない。つまり情報処理装置が発生する如何なるキーも適しており、何故なら、後で復号化を実行するのはこの同じ情報処理装置であり、この装置だけであるからである。
有利には、カードは、米国特許第4907270号によって記載された方法を使用することができ、この特許の目的は、暗号化されたメッセージの信憑性および完全性を確保するための方法を提供することにある。
上記の暗号化により、応用情報が不正行為者によって発見されることはなく、応用プログラムの不正なコピーを回避できる。
上記のコマンドに加えて、アプリケーションの消去コマンドと、カードにおけるアプリケーションの有無の検証コマンドとの２個の追加コマンドを設定可能である。
アプリケーションの消去コマンドは、カードの所持者またはアプリケーションのプロバイダが、カードに、もはや使用しないアプリケーションを削除するためのコマンドを送ることからなる。そのフォーマットは次の通りである。
0003575697.tif 000015
このコマンドは、アプリケーションの消去命令、関与するカードのコードＣ、アプリケーションのコードＫ、また場合によってはアプリケーションの情報オクテット数ｎを含む。関与するアプリケーションがカードにロードされている場合、カードのオペレーションシステムは、それまでアプリケーションＫ専用であったメモリスペースを空にする。その反対にアプリケーションＫがデータバンクにアンロードされていた場合は、カードがデータバンクに、上記と同じフォーマットを有する消去命令を送る。また、消去命令が実行されると、オペレーションシステムが、このアプリケーションに関するテーブルTAB_APPLIの行を消去する。
カードにおけるアプリケーションの有無の検証コマンドは、２個の異なる形態をとることができる。第１のコマンドの形態において、カードの所持者またはアプリケーションのプロバイダは、カードが特定のアプリケーションを有するかどうかカードに問い合わせることができる。そのフォーマットは次の通りである。
0003575697.tif 000016
このコマンドは、アプリケーションの有無の検証命令、関与するカードのコードＣ、アプリケーションのコードＫ、また場合によってはアプリケーションの情報オクテットの数ｎを含む。
第２のコマンド形態では、カードの所持者またはアプリケーションのプロバイダは、そのテーブルTAB_APPLIの行全体をカードに問い合わせることができる。但し、署名および場合によってはオクテット数ｎやロード識別子は、もちろんこの限りではない。コマンドのフォーマットは次の通りである。
0003575697.tif 000017
本発明の第２の改善は、通信網へのアプリケーションのアンロードを必要なときだけ開始することからなる。メモリを空けなければならないとき、ロードされているアプリケーションが変更されておらず、しかも通信網が既にこのアプリケーションの同じ応用情報を所有している場合、これらの情報をアンロードするのは有効ではない。第２の改善の目的は、通信網で同じ値の応用情報を何度も保存しないようにすることにある。
この改善を設定するために、テーブルTAB_APPLIを変更しなければならない。以下が新しい構成である。
0003575697.tif 000018
テーブルには、「変更」と記された識別子を含む第６の列が付加されており、この識別子は、イエスまたはノーの２個の値をとることができる。一定のアプリケーションを最初にロードする場合、識別子は「イエス」に配置される。この値は、対応するメモリの場所を空けるために通信網に応用情報をアンロードしなければならないことを示す。反対に、通信網からの再ロードコマンドの後で、識別子は「ノー」に配置される。この値は、情報処理装置（第１図のカード21または端末22）のプログラマブルメモリに保存される応用情報が、通信網のデータバンクに記憶された情報と同じである。識別子が「ノー」のままでいる限り、情報処理装置のオペレーションシステムは、アプリケーションのアンロードコマンドを実行しない。システムはただ、ロード識別子を「アンロード」位置にして、別のアプリケーションがメモリでその位置を占有できるようにするだけである。応用情報を変更するとき、識別子は「イエス」に置かれる。従って、そのとき署名値は、もはや正確ではない。そのため、再ロード時に計算し直さなければならない。
この変更は、少なくとも２つの場合に介在する。第１の場合は、追加ファンクションを付加することにより性能をもっと高くするため、あるいは欠陥を修正するための、応用プログラムの更新である。第２の場合は、情報処理装置21または22のプログラマブルメモリ内でデータが応用プログラムと混ざってしまうときに頻繁に起きる。たとえば電子財布のアプリケーションが、借方と貸方を管理するためのソフトウェアだけでなく残高データも同時に含むときがそうである。使用のたびに、一般にはこの値が変化するので、「変更」表示部が殆どいつも「イエス」の位置にある。
上記の例から、本発明の第３の改善が導かれる。応用情報には、実行可能なプログラムと、段階をおって頻繁に変化する応用データ値とが同時に存在することが分かる。後述する第３の改善で示される手段では、２つのタイプの情報を分離することができる。その場合、情報処理装置は、実際に変更した情報だけを通信網に向けてアンロードするように選択する。
このような第３の改善を実現するには、不揮発性メモリの組織を改良しなければならない。これは、次のように概略化される。
0003575697.tif 000019
テーブル９は、プログラマブルメモリのロードゾーンの構造によって、前述のテーブル１とは異なる。これは以下のように示される。
−次のような２個の下位ブロックを含む、そのようなものとしてのアプリケーションに関するブロック
−「アプリケーションプログラム」と記される、アプリケーションの実行可能なプログラムに関するブロック
−「アプリケーションデータ」と記される、アプリケーションの（実行不能な）変化データに関するブロック
−実行可能なプログラムの特定の実行に対応する、一定数の（実行不能な）変化データブロック数。以下、こうした実行を「シーケンス」と称する。定義上、１つのシーケンスのデータは一時的であり、すなわち、このシーケンスの時だけ使用され、前のシーケンスや次のシーケンスでは使用されない。これは、全てのシーケンスの間使用される上記の「アプリケーションデータ」と区別される点である。テーブル９では、「変化データ  シーケンス１」と「変化データ  シーケンス２」と記された２個のシーケンスデータブロックが示されている。これらの異なる情報ブロックの役割については、次の例で説明する。
この第３の改善を実現するには、テーブルTAB_APPLIを変更する。このテーブルは次のような構造を有する。
0003575697.tif 000020
前記TAB_APPLI  ２に比べると、このテーブルは、次のような相違点を有する。第１列は、アプリケーションコードに加えて、関与するシーケンスの番号《ｉ》を特定している。処理される情報は、実行可能なプログラムおよびアプリケーションデータに関する情報と、シーケンスの変化データに関する情報との２つのグループに分けられる。それぞれの情報グループに対して、テーブルTAB_APPLI  ２の次の４列、すなわち保存アドレス、オクテット数、署名、ロード識別子が再び見られる。テーブルの各行は、双方とも一定のアプリケーションＰに関するデータシーケンスP/1またはP/2、もしくは、双方とも別のアプリケーションＪに関するシーケンスJ/1またはJ/2に対応する。テーブルのいくつかの欄で、アプリケーションコードが記載されており、考慮されている値が所定のアプリケーションに関するものであることを示している。たとえば
・ADR−Cod−P:アプリケーションＰに関する保存アドレス
・ｊ−cod:アプリケーションＪに関するオクテット数である。
さらに記号《Cod》は、考慮された値が《application》型の情報に関することを示し（第１グループのプログラムまたはデータ）、一方で《Dat》は、考慮された値が《シーケンス》型の情報に関することを示す（第２のグループのデータ）。たとえば
・SGN−cod−P:アプリケーションＰに関する情報の署名（プログラムまたはデータ）
・SGN−dat−J/2:アプリケーションＪのシーケンスＮ゜２に関するデータの署名
提起されている問題と、本発明を用いることによってこれを解決する方法とを、１つの例によって、よりよく説明する。
情報処理装置（この場合はカード21）は、アプリケーションＰの最初のロードコマンド、つまり電子財布型の支払いアプリケーション（PME）を受信したばかりである。プログラマブルメモリに保存された応用情報は、実行可能なプログラムと、アプリケーションに関するデータとである。一定のシーケンスに対応する変化データはまだない。これらの情報は、アドレスADR−Cod−Ｐから保存されたｎ−Codオクテットを含む。ロード識別子は《ロード》に置かれる。実行可能なプログラムおよびアプリケーションデータに関する情報に加えて、コマンドの際に伝送される情報は、シーケンスｉに関する一定数のオクテットの変化データ《ｐ−dat》を含む。テーブルTAB_APPLIは、そのとき次の値をとる。
0003575697.tif 000021
トランザクションまたは商取引は、セキュリティモジュールと称される電子回路によって有効化される。このモジュールは、第１図のカードの読み取り端末20にあるか、または、最大の安全性を望む場合には、端末20から離れて配置可能な銀行認可センター内に配置することができる。PME型の商取引は、カード、端末およびセキュリティモジュール間の通信を必要とする複数の段階で展開される。購入は、モジュールをもつ端末を備えた商人のもとで行うことができるが、端末がモジュールを備えないカードの所持者の自宅で行うことも可能である。
カードは、商取引初期化の命令により購入を実施するように働きかけられる。カードのオペレーションシステムは、応用型の命令を認識する。その場合、システムは、TAB_APPLIに質問する。テーブルの質問はシステムに、命令に対応するアプリケーションが確かにロードされていて、如何なるシーケンスも割り当てられていないことを示す。するとオペレーションシステムは、たとえば番号《１》を割り当てることにより一定のシーケンスを初期化する。システムは、アドレスADR−Dat−P/1からこのシーケンスに《ｎ−dat》オクテットのメモリ場所を割り当てる。このシーケンスに対応するロード識別子は、《ロード》に置かれる。テーブルTAB_APPLIは、そのとき次の値をとる。
0003575697.tif 000022
次に、カードのオペレーションシステムが、アドレスADR−Cod−Ｐに飛び越しを実行することにより応用プログラムをスタートする。システムは、使用すべき一時的なデータのアドレスADR−Dat−P/1を特定し、これによってアプリケーションは、シーケンスのデータが記憶される場所を知ることができる。これらのデータは特に、商取引の額、商取引の対象、販売組織および商取引の日付である。反対に、電子財布の残高などのデータは、一時的なシーケンスデータではない。何故なら、その存続期間が一定のシーケンスを越えるからである。このデータは、応用型であるため、アプリケーションプログラムと共に記憶される。
第１の製品の購入は進行中である。すなわちカードは、ネットワークがアクセス可能な支払いセンターのもとで商取引の認証を得るためのメッセージを読み取り装置20に送る。この通信は、一定時間続くことがある。実際、通信が妨害されて、銀行認可センターが送信データを分析するのに時間がかかることがある。こうした全てによって商取引の持続時間全体が長引く。この間に、ユーザは、第２の購入の実行を決める。本発明は、第２の商取引を始めるために第１の商取引が終わるのを待たなくてもよい。
この第２の購入を行うために、カードは、新しい商取引の初期化命令によって２回目の働きかけを受ける。先の場合と同様に、カードのオペレーションシステムは、アプリケーションPMEの実行可能なプログラムがプログラマブルメモリにロードされているかどうか確かめる。こうした確認は、テーブルTAB_APPLIに問い合わせることによって行われる。するとオペレーションシステムは、プログラムと現行のシーケンス（１）との存在を認識する。そのため、システムは、新しいシーケンス番号（２）をこの第２の実行に割り当てて、テーブルTAB_APPLIに新しい行を付加することにより、このテーブルTAB_APPLIを初期化する。次に、実行不能なデータ型情報のためにｎ−datオクテットをプログラマブルメモリに割り当てるのに十分な場所が存在するかどうか確かめる。場所が十分である場合、新しいアドレスADR−Dat−P/2を決定し、第２の商取引をスタートすることができる。テーブルTAB_APPLIは、次のような値をとる。
0003575697.tif 000023
その場合、２つの商取引は、通信網を介さずにカードで並行して実施される。読み取り装置は、カードに送られる応用コマンドで、どの商取引に関するものかを示さなければならない。
場所が不十分である場合、カードのオペレーションシステムは、第１の商取引（シーケンス番号１）に対応する変化データだけをアンロードする決定をする。そこで第１のシーケンスの前記データの署名《SGN−dat−P/1》を計算し、これをテーブルTAB_APPLIに記入する。実行不能な新しいデータは、かくしてアンロードデータと同じ場所にあり、すなわち２個のシーケンスに共通なアドレスADR−Dat−Ｐにある。次に、カードは読み取り装置に次のようなコマンドを送る。
0003575697.tif 000024
このコマンドの構造は、先のコマンドと同じであるが、次のような相違点を有する。つまり第３の枠は、アプリケーションコードＰを特定するだけではなく（《データ》という表現により）シーケンス型データに関するものであることを特定するパラメータと、関与するシーケンスの番号１とを含む。
このコマンドの後でテーブルTAB_APPLIは、次のような値をとる。
0003575697.tif 000025
この操作に続いて、シーケンス番号２を持つ第２の商取引が続けられる。この新しい商取引もまた、支払いセンター側の認証を必要とする。従ってセキュリティモジュールに一定の問い合わせが送られる。このときカードが第１の商取引の認証メッセージを受信すると仮定する。カードのオペレーションシステムは、シーケンス番号を用いて、このメッセージが現行の商取引とは別の商取引に関するものであることを認識し、テーブルTAB_APPLIの読み取りによって、第１の商取引を認識する。従って、これを処理するために、第１の商取引の実行不能なデータをロードしなければならない。
メモリの場所が２個のデータブロックに対して不十分であることが分かると、カードのオペレーションシステムは、第２の商取引のデータをアンロードしなければならない。そこで前記データの署名《SGN−dat−P/2》を計算し、これをテーブルTAB_APPLIに記入する。次に、カードは読み取り装置に次のようなコマンドを送信する。
0003575697.tif 000026
テーブルTAB_APPLIは、このとき次の値をとる。
0003575697.tif 000027
カードのオペレーションシステムは、読み取り装置に次のようなコマンドを送る。
0003575697.tif 000028
このコマンドは、第３の枠が、アプリケーションコードＰを特定するだけではなく（《データ》という表現により）シーケンス型データに関することを特定するパラメータと、関与するシーケンス番号１とを含むことで、既に記載された再ロードコマンドとは異なる。
読み取り装置は、コマンドを受信して、これを特にカードＣに割り当てられたデータバンクに向けて再送する。データバンクは、このカードのファイル内で、アプリケーションＰ、シーケンス番号１に関するｎ−datオクテットの実行不能なデータをサーチする。データバンクは、カードの最終コマンドへの応答である次のメッセージを作成する。この応答は、読み取り装置を介してカードに伝送される。
0003575697.tif 000029
このコマンドは、第２の枠がアプリケーションコードＰを特定するだけではなく（《データ》という表現により）シーケンス型データに関するものであることを特定するパラメータと、関与するシーケンス番号１とを含むことにおいて、既に記載した再ロードコマンドへの応答とは異なる。
カードのオペレーションシステムは、コードＣ、Ｐ、シーケンス番号および受信値ｎ−datが前に送信したコマンドと確かに同じであるかどうかを確認する予備操作を実行することができる。同じである場合には、テーブルTAB_APPLIで読み込まれたアドレスADR−dat−Ｐから、受信したｎ−datオクテットを記憶する。最終オクテットを記憶すると、オペレーションシステムは、SWAPキーの値を使用した暗号計算によりデータの署名を再計算する。再計算された署名は、テーブルTAB_APPLIに書き込まれた値《SGN−dat−P/1》と比較される。２個の署名値が等しくない場合、通信網から受信したデータは、前にアンロードしたデータと同じでないものとみなされる。従って、受信データの信憑性および完全性に疑いがある。カードは読み取り装置に対して、最終ロード操作中に誤ったデータを受信し、商取引の続行ができないことを示すエラーメッセージを返送する。
２個の値が同じである場合、受信データは、カードにより予めアンロードされたデータと同じであるとみなされる。従って、第１の商取引を続けることができる。次にカードのオペレーションシステムは、アプリケーションP/1のデータ識別子を《ロード》にすることによりテーブルTAB_APPLIを更新する。
0003575697.tif 000030
テーブルTAB_APPLIの更新が終了すると、オペレーションシステムは、第１の商取引を続行するアプリケーションＰをスタートする。
第１の商取引が終了すると、アプリケーションのプログラムの実行は、仮想メモリを管理するオペレーションシステムに戻って終了する。オペレーションシステムは、シーケンス《１》の終了を認識し、前記シーケンスのデータに対応するメモリの場所を空ける決定をする。そのため、《保存アドレス》、《署名》情報を消去し、ロード／アンロード識別子がそれらをリセットする。
そのときテーブルTAB_APPLIは、次のような値をとる。
0003575697.tif 000031
カードが、第２の商取引の認証を受信すると、カードのオペレーションシステムは、シーケンス番号により、このメッセージが、ロードされていない別の商取引に関するものであることを認識する。第１の商取引が終了すると、実行不能な対応データはもはや有効ではない。従って、これらをアンロードする必要はない。そのため、第２の商取引に対応する実行不能なデータをロードするだけで十分である。オペレーションシステムは、読み取り装置に次のようなコマンドを送る。
0003575697.tif 000032
シーケンス１のロードと同様に、読み取り装置がコマンドを受信してこれをデータバンクに再送する。データバンクは、このカードのファイル内で、アプリケーションＰ、シーケンス番号２に関する実行不能なｎ−datオクテットのデータをサーチする。データバンクは、読み取り装置を介してカードに伝送される次のようなメッセージを作成する。
0003575697.tif 000033
カードのオペレーションシステムは、コードＣ、Ｐ、シーケンス番号および受信値ｎ−datを確認する予備操作を実行することができる。この確認が適合する場合、オクテットが書き込まれる。次に、実行システムは、データの署名を計算および確認する。２個の値が等しい場合、受信データは、カードが前にアンロードしたものと同じであるものとみなされる。従って第２の商取引を続行できる。オペレーションシステムは、アプリケーションP/2のロード識別子を《ロード》にすることによりテーブルTAB_APPLIを更新する。
0003575697.tif 000034
テーブルTAB_APPLIの更新が終了すると、オペレーションシステムは、第２の商取引を続行するアプリケーションＰをスタートする。
第２の商取引が終了すると、アプリケーションのプログラムは、仮想メモリを管理するオペレーションシステムへ戻る指示によって終了する。オペレーションシステムは、それによって、シーケンス《２》が終了したことを推論する。そのときメモリの場所が空になる。このため、テーブルTAB_APPLIにおける《保存アドレス》、《署名》およびロード／アンロード識別子の場所がゼロにリセットされる。テーブルはそのとき次のような値をとる。
0003575697.tif 000035
この段階で、カードのオペレーションシステムは、テーブルTAB_APPLIの行を完全に消すことができる。テーブルTAB_APPLIの行の管理は、必要に応じて動的に実施される。
テーブルを管理するもう１つの静的な方法は、１つのアプリケーションに対して実行可能な最大シーケンス数を最終的に《ｓ》と決めてしまうことにある。《ｓ》は、アプリケーションの最初のロードコマンドの時に伝送される。オペレーションシステムは、テーブルTAB_APPLIに、こうした《ｓ》個のシーケンスに対応する場所をとっておく。たとえばｓを値２とする。
アプリケーションＫのロードコマンドは、次の値をとる。
0003575697.tif 000036
このコマンドは、パラメータｓの値を決定する第５の枠を含むことで先に記載したコマンドとは異なる。ここで、コマンドが、コマンドから送信される、アプリケーションに関するｎ−codオクテットという数と、この用途に宛てられた、将来の各シーケンスに関するｎ−datオクテットという数を特定していることが分かる。変形実施形態では、ｎ−datオクテットという数をこの段階で伝送せずに、もっと後になってから、ロードされるアプリケーションによりカードのオペレーションシステムに伝送することができる。
このコマンドの後で、オペレーションシステムは、次の値によりテーブルTAB_APPLIを更新する。
0003575697.tif 000037
今やアプリケーションＫを実行できる。２つのシーケンスが可能になる。
カードは、複数のシーケンスをそれぞれが備えた複数のアプリケーションを仮想で完全に含むことができる。たとえば以下は、テーブルTAB_APPLIの特定の構成である。
0003575697.tif 000038
この例に対応して、カードは、ＫおよびＪと記された２個のアプリケーションを仮想で有する。アプリケーションＫの実行可能なプログラムは、ロードゾーンにはない。このアプリケーションの３個のシーケンス１、２、３は、同時に実行可能である。第１のシーケンスが終了すると、他の２個のシーケンスが実行中になる。シーケンス２はアンロードされている。従って、シーケンス２を終了するには、これを再ロードしなければならない。さらに、シーケンス２、３を終了するには、実行可能なプログラムとアプリケーションＫのデータを再ロードすることが必要である。
アプリケーションＪのプログラムはロードゾーンにある。このアプリケーションは、実行中の２個のシーケンス１、２を同時に実行可能である。シーケンス２はアンロードされている。従ってシーケンス２を終了するには、これを再ロードしなければならない。
この例から、空のメモリ場所をしっかりと管理する必要性が明らかになる。ロードゾーンをできるだけ占有することにより、アンロードおよび再ロードコマンドをできる限り回避しなければならない。
もちろん、アンロード時に署名に加えてデータを暗号化し、ロード／再ロード時にこれを復号化することからなる改善は、この第３の改善にも適用できる。
カードへのアプリケーションの最初のロード手順の改善は、アプリケーションのプロバイダキーから計算した応用情報をカードに入力することからなる。この署名は、応用情報の完全性を確保し、これらの応用データの出所を認証可能にするものである。
こうした改善による最初のロードは、アプリケーションのプロバイダにカードを提示することからなる。この操作は、アプリケーションのプロバイダの建物で実施することが勧められる。アプリケーションのプロバイダは、プロバイダキーと、応用情報の署名と、アプリケーションコード、たとえば《Ｋ》をカードに入力する。カードの所持者は、アプリケーションＫの最初のロード要求を実行する。この要求は、前に書き込まれたものであり、所持者の自宅で行うことができる。アプリケーションの最初のロードを完全に実行するための方法は、フランス特許第2748134号に記載されている。
本発明の変形実施形態によれば、カードに保存されているアプリケーションは、通信網から離れたデータバンクにはアンロードされない。これらのアプリケーションを受信して保存するのは第２図の読み取り装置20である。読み取り装置はこのために、不揮発性のプログラマブルメモリを有し、アプリケーションはこのメモリに保存される。ロードおよびアンロードコマンドは不変である。この変形実施形態は、同じ読み取り装置、たとえばカード所持者の自宅に置かれた読み取り装置に常に挿入される場合に有効である。
本発明の別の変形実施形態は、第４図のカード読み取り装置40とチップカード41とを用いており、第４図と第２図の共通要素は同じ参照数字で示している。カード41と第２図のカード21との相違点は、カード41が光学トラック42、たとえばレーザ光線による読み書きトラックを支持していることにある。カード読み取り装置40に関しては、この装置40が、マイクロプロセッサ２およびメモリ３、４に接続された、光学トラック42に情報を読み書きできる光学トラック読み取り装置43を含むことにおいて読み取り装置20と異なっている。
本発明によれば、光学トラック42は、第１図の遠隔データバンク23〜25の代わりにデータバンクとして使用される。実際には、カード41からアプリケーションをアンロードするときに、カードがカード読み取り装置40にアンロードコマンドを伝送する。トラック読み取り装置43は、アプリケーションの情報を受信し、これを光学トラック42に書き込む。再ロードコマンド時に、カード読み取り装置は、トラック読み取り装置43を作動して、トラック読み取り装置43が光学トラック42でアプリケーションの情報を収集するようにする。次に、カード読み取り装置はこれらの情報をカードのマイクロプロセッサ９に伝送し、マイクロプロセッサが情報をロードゾーンに保存するようにする。しかしながら、ロードおよびアンロードコマンドは不変である。
変形実施形態では、光学トラックが、たとえば磁気トラックなどの他の大量保存媒体に代えられている。
上記の実施形態では、情報処理装置から、この装置の外部へのアプリケーションのアンロードについて説明した。すなわち第２図の場合には、カード21が、第１図の読み取り装置20またはデータバンク23〜25に向けてアンロードを行っている。第４図の場合には、マイクロプロセッサ９およびそのメモリ10、14からなる情報処理装置が、光学トラック42に向けてアンロードを行っている。本発明のもう１つの変形実施形態によれば、情報処理装置が、この装置の複数のメモリ間でアンロードを実施している。たとえば、この情報処理装置は、第２図のカード21から構成され、マイクロプロセッサ９がRAM14から不揮発性メモリ10にアプリケーションをアンロードする。
たとえば複数のアプリケーションＫ、Ｊが不揮発性メモリ10に保存されている。まず第１に、アプリケーションＫが実行される。この機会に、アプリケーションＫに関する動作情報ItKがRAMで処理され、一方でアプリケーションＫのプログラムは、不揮発性メモリ10に留まる。これらの作動情報は、特に以下を含む。
−計算に介在する一時的な作動変数
−遮断されたアプリケーションの実行をカードが後で再開できるようにするコンテクスト変数
−下位プログラム
所定の瞬間に、カードは別のアプリケーションＪを実行しなければならず、そのため、RAMに作動情報ItJをロードする。動作情報ItJを受信するのにRAMにおける空きスペースが不十分であることをカードが認めると、カードは、アプリケーションＫの実行を停止し、不揮発性メモリ10にアプリケーションＫの動作情報ItKをアンロードすることを決定する。次にカードは、RAMにに関連付けられた動作情報ItJをロードすることによってアプリケーションＪを実行する。アプリケーションＪを実行後、カードは、RAMに動作情報ItKを再びロードすることによって、アプリケーションＫが遮断された場所でアプリケーションＫの実行を再開する。
この変形実施形態では、ロードおよびアンロードコマンドは使用されない。何故なら関与する情報処理装置は、メモリのロードおよびアンロード操作を実施するために外部装置に知らせる必要がないからである。情報処理装置はまだテーブルTAB_APPLIを有するが、このテーブルは、上記のテーブル２よりも簡略化されている。《情報の署名》というパラメータがなくなっているからである。事実、情報は、情報処理装置から送られないので、それらのアンロード中に劣化する恐れはない。
以上のように、カードが、別の情報集合のロード命令を受信した後で、一定の情報集合をアンロードする決定を下すことについて特に説明した。しかし本発明は、カードから受けた命令が、情報集合のロードとは別の操作の実行に適用される場合もまたカバーすることに留意されたい。たとえばカードに求められる特定処理が、カードのメモリで現在空いているスペースを越えるメモリ場所を必要とすることがある。これは特に暗号化計算に関する。この場合、カードは、この操作を実行可能にするために一定の情報集合をアンロードする。別の例は、カードが受けた命令が、カードから前にアンロードしたアプリケーションＫの実行命令である場合である。従ってカードは、この命令を実行するために、このアプリケーションを再ロードしなければならない。こうした再ロードに対してメモリ場所が不十分である場合、カードは、別のアプリケーションＪをアンロードし、次いでアプリケーションＫを再ロードするという決定を下す。
【図１】
0003575697.tif 000039
【図２】
0003575697.tif 000040
【図３】
0003575697.tif 000041
【図４】
0003575697.tif 000042
【図５】
0003575697.tif 000043