(57)【特許請求の範囲】
【請求項１】
それぞれの実行メディア（ＳＥ１〜ＳＥＮ）に専用のソース言語（ＬＳ１〜ＬＳＮ）でそれぞれ書かれた複数のプログラム（Ｐ１〜ＰＮ）を、一つのデータ処理手段に移植させる方法であって、以下の過程を含むことを特徴とする方法。
−サーバーが、ソース言語の最小のサブセットを表す中間言語（ＬＩ）で表現されたそれぞれのプログラムに各プログラム（Ｐｎ）をコンパイルし（Ｅ１，Ｅ２；Ｅ１２）、
−前記中間言語で表現されたプログラムをデータ処理手段の所定の実行メディア（ＳＥＵ；ＳＥＳ）内で実行するために、サーバーが、中間言語で表現されたそれぞれのプログラムおよびそれぞれのプログラミング・ライブラリ（ＢＰｎ）を、データ処理手段にロードし（Ｅ３）、該所定の実行メディアは前記中間言語（ＬＩ）専用である。
【請求項２】
コンパイルする過程は以下の過程を含む、請求項１に記載の方法。
−サーバーが、プログラム（Ｐｎ）を、それぞれの実行メディア（ＳＥｎ）に専用の機械語で表現されたコンパイル済プログラム（ＰＣｎ）にコンパイルし、そして
−サーバーが、コンパイル済プログラム（ＰＣｎ）を中間言語（ＬＩ）で表現されたそれぞれのプログラムに変換する。
【請求項３】
ロードする過程（Ｅ３）の前に、それを介してサーバーがプログラムおよびプログラミング・ライブラリをデータ処理手段にロードするような端末が、中間言語（ＬＩ）でのそれぞれのプログラムから妥当性確認情報（ｖａｌｉｄａｔｉｏｎ  ｉｎｆｏｒｍａｔｉｏｎ）を抽出する為の一つの過程と、ロードする過程の後に、データ処理手段が、抽出された妥当性確認情報を所定の実行メディア（ＳＥＵ；ＳＥＳ）で検証する為の一つの過程（Ｅ３）とを更に含む、請求項１または２に記載の方法。
【請求項４】
所定の実行メディア（ＳＥＳ）は、実行メディア（ＳＥ１〜ＳＥＮ）のうちの一つである、請求項１から３のいずれか一つに記載の方法。
【請求項５】
データ処理手段は、チップカード（ＣＵ，ＣＳ）である、請求項１から４のいずれか一つに記載の方法。
【請求項６】
チップカードは，移動無線電話端末（ＴＥ）に内蔵された加入者識別カードである、請求項５に記載の方法。
【発明の詳細な説明】
【０００１】
本発明は、マイクロプロセッサ式カードとも呼ばれるチップカードに関するものであり、更に一般的には、高水準プログラム言語で書かれたアプリケーションによりロードされる、マイクロプロセッサ式のプログラム可能なオープン・データの処理手段に関するものである。
【０００２】
更に詳細には、本発明は、一つの特定の言語でアプリケーションを書くことができず、かつそれをプログラム可能なデータのいかなる処理手段によっても実行させることができないという、これらの様々な言語の不均一性を対象とするものである。従って、本発明は、データ処理手段の開放をも対象としている。本発明は、ＪＡＶＡ（登録商標）カード、ＳＭＡＲＴカード用ＷＩＮＤＯＷＳ（登録商標）、ＭｕｌｔＯＳ（出願商標）等のようなプログラム可能なデータ処理手段用に書かれたアプリケーションの操作互換性に関するものである。操作互換性はセキュリティの面で、制約を伴うものである。
【０００３】
プログラム可能なチップカードの分野では、カードにロードされることになるアプリケーションを書く為に用いられるプログラミングの各ソース言語は、一つの特定の実行メディアに必然的に関連づけられており、該実行メディアは、一般的に仮想マシンのようなソフトウェア的性格のみならず、マイクロプロセッサのようなハードウェア的性格も有している。
【０００４】
一つのプログラムをチップカードにロードできるようにする為には、所定のソース言語で書かれたプログラムをコンパイルし、次に、それを、所定のソース言語で書かれたプログラムを受け入れるような特別の仕様のチップカードにロードする。カードは、コンパイル済プログラムを受け入れ、特殊な実行メディアによってそれを実行するが、実行メディアは、所定のソース言語で最初に書かれたプログラムの実行に専用のものである。
【０００５】
図１に示すように、チップカードＣｎのそれぞれの中にある各実行メディアＳＥｎは、他のチップカードＣ１〜ＣＮの実行メディアＳＥ１〜ＳＥＮとは異なっているが、ここでｎは１を含む整数であり、大文字のＮはソース言語ＬＳ１〜ＬＳＮの所定の数を示すものであって、該チップカードＣｎは、それらがそれぞれのソース言語ＬＳｎでプログラムされている場合にのみ、アプリケーション・プログラムＰｎを実行することができる。ロードするプログラムをコンパイルする前にそれをコード・チェックにかけ、ロードされるプログラムがソース言語ＬＳｎに結びついた実行メディアＳＥｎによって与えられるセキュリティのプロパティに違反していないことを検査する。
【０００６】
実際、そのようなカードのセットにおいては、所定のソース言語ＬＳｎで開発されたプログラムＰｎは、以下の理由から、目的実行メディアＳＥｎに密接に結びついている：
１）ソース言語ＬＳｎによって供給されるデータ構造とオペレーションとは、ソース言語ＬＳｎ専用の実行メディアＳＥｎ用に、最適なサイズと速度で最適化された表現にコンパイルされるように特殊化される。
２）ソース言語ＬＳｎで供給されるプログラミング・ライブラリＢＰｎは、一般的にソース言語と相互関係を有し、しかも、ソース言語専用の実行メディアＳＥｎ用に最適化されている。
３）カードＣｎにロードされる前のプログラムＰｎのチェックは、セキュリティのプロパティに密接に関連するものであり、目的実行メディアＳＥｎにより確保される。
【０００７】
ソース言語ＬＳｎとその実行メディアＳＥｎとの間の強いこの関連性は、検証、コンパイル、そしてロードの一連の工程ＣＶＣＣｎで実現されていく。この工程は、高級ソース言語で書かれたプログラムＰｎを、コンパクトで、かつソース言語ＬＳｎ専用の実行メディアＳＥｎによって効率的に実行されるに適した形式に変換するのを管理する。
【０００８】
本発明の始まりにおける一般的な問題は、様々なソース言語ＬＳ１〜ＬＳＮで書かれたプログラムを、それがどの言語で書かれたかにかかわらず、様々な実行メディアＳＥ１〜ＳＥＭに関連づけるということであり、ここでＭは整数Ｎと等しいか、又は異なる任意の整数である。この一般的な問題は、以下のような三つのサブ問題に分解できる。
【０００９】
第一のサブ問題ＳＰ１によれば、例えば、所定のソース言語ＬＳｍ専用の実行メディアＳＥｍ上で、ソース言語ＬＳｎで書かれたプログラムＰを実行させることであるが、ここでｍは１からＭの間に含まれるサフィックスである。
【００１０】
第二のサブ問題ＳＰ２は、様々のソース言語ＬＳ１〜ＬＳＮでそれぞれ書かれたプログラムＰ１〜ＰＮを、共通の実行メディアＳＥｍにロードすることに関するものであり、該実行メディアは、これらの様々なプログラムに、メモリサイズ、実行速度、それらのプログラミング・ライブラリＢＰ１〜ＢＰＭ、そしてそれらのセキュリティのプロパティの点で有効な環境を与えることができるものである。
【００１１】
第三のサブ問題ＳＰ３は、様々なソース言語ＬＳ１〜ＬＳＮでそれぞれ書かれたプログラムＰ１〜ＰＮを、共通の実行メディアＳＥｍの内部で共存させることを目指すものである。第三のサブ問題については、様々なプログラミング環境から生じ、同一の物理メディア内に置かれたプログラムのセキュリティＰ１〜ＰＮを、処理することを推奨する。
【００１２】
三つのサブ問題ＳＰ１、ＳＰ２及びＳＰ３は、結局のところ、例えばプログラム可能なチップカード用に書かれた様々なアプリケーションの操作互換性の問題を、セキュリティと保護及び相互作用のメカニズムを保ちつつ、解決するということに尽きるのであり、解決するために当業者なら、次のような三種類の解決法を検討することはできるが、それは余り満足のいくものではない。
【００１３】
第一の解決法は、最も単純で、最もよく使われるものであるが、図２の書き込みオペレーションＷ１及びＷＭで示されるように、チップカードＣｎに移植された実行メディアＳＥｎ専用のソース言語ＬＳｎで書かれたプログラムＰｎを、例えばチップカードＣ１及びＣＭに移植される実行メディアＳＥ１及びＳＥＭ専用のソース言語ＬＳ1〜ＬＳＭでそれぞれ書かれるプログラムＰｎ１及びＰｎＭにリライトすることである。
【００１４】
第一の解決法の主な欠点は、プログラマが手作業で引き受けなければならない、重い負担のある退屈な作業で、それが、プログラムＰｎのアルゴリズムをプログラムＰｎ１，ＰｎＭにリライトすることからなり、しかも該リライトは、新しいソース言語ＬＳ１，ＬＳＭの為のデータ構造と、異なるプログラミング・ライブラリＢＰ１，ＢＰＭに適合させなければならない。更にその上、新しい実行メディアＳＥ１とＳＥＭのそれぞれが供給するセキュリティのメカニズムは、リライトされたプログラムＰｎ１，ＰｎＭのコードを再認証する必要がある。
【００１５】
第一の解決法は、サブ問題ＳＰ１だけしか取り扱わず、従って、プログラムの操作互換性の問題の非常に限られた部分しか解決しない。更に、実行メディアＳＥ１，ＳＥｎ及びＳＥＭ以外の実行メディアに関連した他のソース言語が、新しいカードの中に出現する場合には、前記他のソース言語でリライトする為に、最初のソース言語ＬＳｎで書かれた古いプログラムの全てをやり直さなければならない。
【００１６】
第二の解決法は、交差コンパイルである。
【００１７】
図３を参照すると、例えば二つのプログラムＰ１とＰ２はそれぞれのソース言語ＬＳ１とＬＳ２で書かれており、しかも、該それぞれのソース言語は、二枚のチップカードＣ１及びＣ２の中のそれぞれの実行メディアＳＥ１及びＳＥ２にもともと専用のものであるが、検証、コンパイル、そしてロードの工程ＣＶＣＣ１及びＣＶＣＣ２でのコンパイルを経てから、それぞれを従来のように実行メディアＳＥ１及びＳＥ２内で実行することが可能となる。しかしながら、プログラムＰ１とＰ２の実行は、それぞれメディアＳＥ２及びＳＥ１内で実行されなければならず、しかも両方が、第三のチップカードＣ３に保存され、かつ第三のソース言語ＬＳ３に専用の第三の実行メディアＳＥ３内で実行されなければならない。
【００１８】
最初のソース言語ＬＳ１またはＬＳ２専用の、目的実行メディアＳＥ１またはＳＥ２とは別の、目的実行メディアメディアＳＥ２及びＳＥ３、またはＳＥ１及びＳＥ３内でプログラムＰ１、またはＰ２を実行する為には、プログラムＰ１、またはＰ２は、検証、コンパイル、そしてロードの追加の工程ＣＶＣＣ２１及びＣＶＣＣ３１，またはＣＶＣＣ１２及びＣＶＣＣ３２においてコンパイルされる。
【００１９】
第一の解決法と比較すると、第二の解決法では、プログラマが手作業でプログラムのリライトを行う必要はもはやないが、非常に数多くの、検証、コンパイル、そしてロードの工程ＣＶＣＣ１２，ＣＶＣＣ２１，ＣＶＣＣ３１，ＣＶＣＣ３２に従わなければならない。更に一般的には、Ｎ個のソース言語ＬＳ１〜ＬＳＮとＭ個の実行メディアＳＥ１〜ＳＥＭのためには、検証、コンパイル、そしてロードの工程がＮ＊Ｍ本必要となる。これらの工程は、それらの数といい、それらの複雑さといい、ハード面、ソフト面そして人的側面での相当の投資を伴うものである。
【００２０】
このような主な欠点の他にも、第二の解決法には次のような欠点がある；
−プログラムの実行される実行メディアが、データ構造や、オペレーション、及びこれらのプログラムを書くために用いられるソース言語ＬＳ１とＬＳ２のプログラミング・ライブラリに、きちんと前もって適合されていないため、メモリサイズとこのように生成されるプログラムの実行速度の点で性能が悪い。
−検証、コンパイル、そしてロードの工程は、新しいソース言語が一つ現れる場合には、現在の目的実行メディアＳＥ１〜ＳＥＭと同じ数だけ、また、逆に、新しい実行メディアが一つ現れる場合には、現在のソース言語ＬＳ１〜ＬＳＮと同じ数だけ作りだされることになる。
−プログラムを展開するためには、様々な実行メディアＳＥ１〜ＳＥＭごとにコンパイルされ証明されたコードを付与したプログラムを、全ての遠隔ロードサイトに予めロードしておかなければならず、それが第二の解決法を更に複雑で費用のかかるものにしてしまう。
【００２１】
第二の解決法は取り扱うのはサブ問題ＳＰ１だけであるが、第一の解決法と比べると、自動的に取り扱うのであり、従って、プログラムの操作互換性の問題の非常に限られた部分しか解決しない。更に、実行メディアＳＥ１〜ＳＥＭ以外の他の実行メディアに関連した他のソース言語が、新しいカードの中に現われる場合には、最初のプログラムの全てＰ１〜ＰＮを、検証、コンパイル、そしてロードの新しい工程を通過させ、前記他の実行メディアの為に証明されたコードを生成しなければならない。
【００２２】
第三の解決法で提案されるチップカードＣＰは、それぞれの中に、複数の実行メディア、例えば、図４で示されるような、三つの実行メディアＳＥ１，ＳＥ２及びＳＥ３を有している。従って、様々なソース言語ＬＳ１，ＬＳ２及びＬＳ３でそれぞれ書かれたプログラムＰ１，Ｐ２及びＰ３は、それぞれに検証、コンパイル、そしてロードの工程ＣＶＣＣ１，ＣＶＣＣ２及びＣＶＣＣ３を経て、カードＣＰにロードすることができる。カードＣＰは、各プログラムＰ１，Ｐ２，Ｐ３に、それぞれのソース言語ＬＳ１，ＬＳ２，ＬＳ３専用の実行メディアＳＥ１，ＳＥ２，ＳＥ３しか有さない一枚のカードに個別にロードされた場合と全く同じ機能を持たすことができる。
【００２３】
第三の解決法は、ソース言語ＬＳ１，ＬＳ２及びＬＳ３にそれぞれ関連した検証、コンパイル、そしてロードの工程ＣＶＣＣ１，ＣＶＣＣ２及びＣＶＣＣ３を忠実に好適に保全しつつ、しかもサブ問題ＳＰ２も解決できるものである。
【００２４】
にもかかわらず、第三の解決法には大きな欠点があり、それはカードに、移植される様々な実行メディアは、それぞれが大量のコードを記述しており、それらの実行メディアの数が大きくなるので、それだけに事実上実現不可能になってしまうということである。この大きな欠点は、Ｂｅｒｔｉｌ  Ｆｏｌｉｏｔ並びにＩａｎ  Ｐｉｕｍａｒｔａ著の「Ｖｉｒｔｕａｌ  Ｖｉｒｔｕａｌ  Ｍａｃｈｉｎｅｓ」（１９９７年９月）、もしくは同じ著者の「Ａ  Ｄｙｍｉｃａｌｌｙ  Ｃｏｎｆｉｇｕｒａｂｌｅ  Ｍｕｌｔｉ−ｌａｎｇｕａｇｅ  Ｅｘｅｃｕｔｉｏｎ  Ｐｌａｔｆｏｒｍ」（１９９８年）という文献に記載されたＶＶＭタイプのアーキテクチャにも存在する。このタイプのアーキテクチャ（ＶＶＭ）には、メモリに複数の実行メディアが存在し、実行メディアはそれら自体が、低レベルの原始的なシステムの補足的な抽象要素に基礎をおいている。このタイプの解決法に必要なメモリは、実際にはチップカードの中では考えられぬほどのものであり、実用的には、例えば更に多くのデータとプログラムを記憶する為にさらに有益に利用できるはずのものである。
【００２５】
本発明の主な目的は、一つのタイプの実行メディアごとにそれぞれ唯一となるソース言語に、プログラマを拘束させることなく、単一の実行メディアの中で様々なソース言語で書き込まれた複数のプログラムを自動に実行する為の方法を提供することである。この主な目的は、結局のところ、上記に定義された三つのサブ問題ＳＰ１，ＳＰ２及びＳＰ３を解決することであり、つまりは、上記の三つの解決法のいずれも完全には解決していない、様々なソース言語でのプログラムの操作互換性の問題を解決することなのである。
【００２６】
この目的の為に、各実行メディアに専用のソース言語でそれぞれ書かれた複数のプログラムを、データ処理手段の方に移植させる方法は、以下のような過程から成ることを特徴とする。
−サーバーが、ソース言語の最小のサブセットを表す中間言語で表現されたそれぞれのプログラムに各プログラムをコンパイルし、
−前記中間言語で表現されたプログラムをデータ処理手段の所定の実行メディア内で実行するために、サーバーが、中間言語で表現されたそれぞれのプログラムおよびそれぞれのプログラミング・ライブラリを、データ処理手段にロードし、該所定の実行メディアは前記中間言語専用である。
【００２７】
本発明は実行メディアの研究に基礎をおくものであって、該実行メディアは、所定のマイクロプロセッサ式データ処理手段の実行メディア内に存在する最初の最小の共通点である。例えば、実行メディアは、周知の様々なタイプのチップカードの中に保存されており、つまり、それらのプログラムは、様々なソース言語で書かれている。従って、本発明は、前述で示した第三の解決法の利点を、提供するものであり、存在し得る全ての実行メディア全体を、マイクロプロセッサ式データ処理手段の中に設置することを提案する。しかしながら、本発明は、相当なメモリサイズ、つまりは実現不能なメモリサイズを必要としないで、一つの最小限の中間言語専用の、小型化されてはいるが柔軟な実行メディアを一つしか、チップカードのような各データ処理手段内に移植しないものである。そのような場合には、その中間言語は、どの特定のソース言語とも結びついておらず、また複数のソース言語の目的として役立つための基本言語として役割を果たしている。従って、その中間言語を移植する為に必要なメモリは小さくなり、ゆえに、一つのプログラムの実行は上記に提案された第三の解決法による場合よりも速くなる。
【００２８】
従って、本発明は次のようなものを組み合わせを活用する。
−様々な言語から生じるプログラムは勿論のこと、プログラミング・ライブラリや、それらが良好に機能する為に必要な特殊なセキュリティのプロパティをも表現することができる中間言語と、
−その中間言語専用実行メディアではあるが、作業環境面は勿論のこと、アプリケーションのセキュリティ面での各言語の制約によりよく適合する為に再構成も行える実行メディア。
【００２９】
本発明の変形によれば、コンパイルの過程は以下の過程が含まれていてもよい。
−サーバーが、プログラムを、それぞれの実行メディアに専用の機械語で表現されたコンパイル済プログラムに、コンパイルし、そして
−サーバーが、そのコンパイル済プログラムを中間言語で表現されたそれぞれのプログラムに変換する。
【００３０】
この変形は、一つのプログラムのコンパイルされた結果からプログラムを開発する人にとって、中間言語でコードを生成するために、有益なものとなりうる。このオペレーションを可能にするツールは、変換器である。そのソース言語にそれぞれ結びついた実行メディアの命令は、中間言語で書かれたオペレーションで置き換えられることになる。
【００３１】
本発明のもう一つの側面によれば、本方法の過程は、ロードする過程の前に、それを介してサーバーがプログラムおよびプログラミング・ライブラリをデータ処理手段にロードするような端末が、中間言語でのそれぞれのプログラムから妥当性確認情報（ｖａｌｉｄａｔｉｏｎ  ｉｎｆｏｒｍａｔｉｏｎ）を抽出する為の一つの過程と、ロードする過程の後に、データ処理手段が、抽出された妥当性確認情報を所定の実行メディア内で検証する過程を一つ含むことができる。
【００３２】
もう一つの変形によれば、所定の実行メディアは、それらの実行メディアのうちの一つと類似したものにすることもできる。本発明の基礎的な実施例に比べると全体として有利さが劣るものではあるが、ソース言語が、類似の高水準で修正された言語である場合には、この変形も有益なものとなりうる。
【００３３】
所定の実行メディアが拡張可能であろうと拡張不可能であろうと、中間言語は拡張可能なものであることが好ましい。少なくともソース言語の一つと中間言語は、オブジェクト指向言語であるのが好適である。
【００３４】
サーバーは、コンパイルする過程を実行する。
【００３５】
データ処理手段は、例えばチップカードである。そのチップカードは、移動無線電話端末に内蔵される加入者識別カードであってもよい。
【００３６】
本発明の他の特徴と利点は、本発明の望ましい複数の実施例についての以下の説明を、対応する添付図面を参照しつつ、読むことで更に明らかになっていく。
−図１は、既に説明を加えているが、それぞれの実行メディア用の様々なソース言語でそれぞれ書かれた複数のプログラムの生成と実行のダイアグラムである。
−図２、３及び４は、既に説明を加えているが、第一、第二、及び第三の解決法のダイアグラムであり、該解決法は、それぞれ先行技術で提案されたものであり、様々な言語でのプログラムの操作互換性の問題を部分的に解決するものである。
−図５は、本発明の好ましい実施例とその変形例に従う、様々なソース言語で書かれた複数のプログラムの生成と実行のダイアグラムであり、一つの中間言語専用で、かつ一枚のマイクロプロセッサ式カードに保存された一つの実行メディア内で実行される。
−図６は、既知の言語で書かれた一つのプログラムを、本発明による中間言語にコンパイルし変換する過程を示している。
−図７は、図６のプログラムに類似の、既知の言語で書かれた一つのプログラムを中間言語に、直接コンパイルする過程である。
−図８は、第一の実施例による実行の前に、中間言語での一つのシーケンスを適合させる過程を示している。
−図９と１０は、仮想マシン言語で書かれた一つのシーケンスを、複数のシーケンスに変換する際に、中間言語の拡張がある場合と無い場合とをそれぞれ示している。
−図１１は、実行前に、本発明の変形により、中間言語での一つのシーケンスを適合させるところを示している。
【００３７】
図５を参照すると、Ｎ個のアプリケーション・プログラムＰ１〜ＰＮは、アプリケーション・サーバーＳＥＲ内での一見して異なるソース言語ＬＳ１〜ＬＳＮでそれぞれ書かれる可能性がある。ソース言語は「高水準言語」や、「高級言語」と呼ばれることがある。
【００３８】
本発明の好ましい実施例によると、本移植方法の目的は、本発明の汎用実行メディアＳＥＵにそれぞれのソース言語ＬＳｎで書かれた任意のプログラムＰｎを、移植させることであり、該汎用実行メディアは、後述する「汎用」プログラム可能チップカードＣＵのような、対応するデータ処理手段に保存されている。
【００３９】
図５の左に示されているように、本移植方法は、１≦ｎ≦Ｎでの、それぞれのソース言語ＬＳｎでの一つのプログラムＰｎの開発と供給の最初の過程Ｅ０の後に、基本的に四つの過程Ｅ１〜Ｅ４を含む。
【００４０】
プログラムＰ１〜Ｐｎは、カードＣＵを保存する端末ＴＥに遠隔通信ネットワークＲＥＳを介して接続されたサーバーＳＥＲ内で開発されたものである。例えば、端末ＴＥは、ネットワークＲＥＳの賃貸線または専用線でサーバーに接続された銀行端末である。もう一つの例では、端末ＴＥは、ＧＳＭタイプの移動無線電話端末であり、デジタルセルラー無線電話ネットワークＲＥＳによってサーバーＳＥＲに接続されており、サーバーは、無線電話ネットワークの信号ネットワークを介して移動サービス交換局（ＭＳＣ）に接続され、カードＣＵは、端末ＴＥから取り外し可能なＳＩＭ（加入者識別モジュール）タイプの加入者識別カードである。
【００４１】
過程Ｅ１では、サーバーＳＥＲは、ソース言語ＬＳｎでのプログラムＰｎを、各目的実行メディアＳＥｎに専用の機械語で表現されたコンパイル済プログラムＰＣｎにコンパイルする。過程Ｅ１を行うコンパイラは、サーバーＳＥＲにインストールされた一つのプログラムである。次に、過程Ｅ２では、コンパイル済プログラムＰＣｎを、本発明による中間言語ＬＩに変換する。コンパイラと同様に、言語の変換器も、サーバーＳＥＲにインプリメンテーションされた一つのプログラムであり、過程Ｅ２を実行する。
【００４２】
中間言語ＬＩには、特に次のような二つのプロパティを有する。
−拡張可能性：言語ＬＩは、基本コマンドフィールドを質的に向上させることができ、他の言語から生じたプログラムを効率的に表現することができる。
−強度の類型化：既に知られているように、類型化によるコードのセキュリティのメカニズムはセキュリティチェックの為の可能な限りのきめの細かさを構成するものである。その場合、各言語のセキュリティのプロパティはカードの中にある最初のモデルに基づいて明示されるものである。中間言語ＬＩにより、オブジェクト言語のタイプとクラスに合わせて拡張可能な類型化による検査が可能になる。
【００４３】
中間言語ＬＩの中には、非常に限られた数の命令しか含まれておらず、該命令は、様々な実行メディアＳＥ１〜ＳＥＮの機械語を表す最小限のサブセットである。サーバーＳＥＲに中間言語ＬＩの形態で存在する追加のプログラミング・ライブラリは、過程Ｅ２で言語変換器によって使用されて、実行システムＳＥｎ用の基本的な各オペレーションが、汎用実行メディアＳＥＵ用の一つの命令セットでは置き換えられなくなるというような事態を回避している。このような予防をすることにより、カードＣＵにロードされるプログラムのメモリ容量が大きくなる危険が限られる。
【００４４】
図６が第一の例によって示している過程Ｅ１とＥ２は、ソース言語でのプログラム用の過程であり、該プログラムは、サーバーＳＥＲが伝送するメッセージをカード内に受信することに関して、オブジェクト指向のソース言語ＪＡＶＡ（登録商標）で表現されたコードのセグメントＰＪのようなものである。
【００４５】
過程Ｅ１では、従来のように、セグメントＰＪを擬似コード（バイト・コード）と呼ばれる形式で、コンパイルされるバイナリプログラムＰＪＣにコンパイルするが、該擬似コードは、実行メディアＳＥＪ、つまり仮想マシンの概念ＪＡＶＡ（登録商標）がインプリメンテーションされたマイクロ・コンピュータの下で機能することができる。従来は、ＪＡＶＡ（登録商標）言語の下での各命令により、仮想マシンの言語の複数命令が生み出されてきた。
【００４６】
次に過程Ｅ２では、変換のメカニズムは、各命令ごとに一つ一つＪＡＶＡ（登録商標）の擬似コードを、中間言語ＬＩの擬似コードにより置き換えることにとどまるものではなく、例えば、関数の呼出しの引数を決定しつつ、コンパイル済プログラムＰＪＣ内の基本的なオペレーション・シーケンスを中間言語での異なるシーケンスＰＪＬＩに変換するものである。この変換は、カードＣＵの外で行われるので、コンパイラで用いられる最適化と変換の技術を移植することが可能である。過程Ｅ２での変換により、どのようなソース言語を使うかにかかわらず、カードに伝送される言語ＬＩでのコードは、確実に有効なものになる。更に、言語の変換は、カードＣＵがプログラムの実現可能性を検査する為に用いる言語ＬＩが、うまく機能していることを示す証拠要素を生成するのに寄与する。過程Ｅ２の後で、言語変換器は、そのカードがそのプログラムの実現可能性を検証するのに役立つ類型化の情報を提供する。
【００４７】
第二の例によれば、図７は、図６で示されたＪＡＶＡ（登録商標）言語でのコードのセグメントＰＪに関するのと同様に、Ｃ言語で表現され、かつ作業テーブルの宣言に対応するコードのセグメントＰＣを示している。Ｃ言語でのプログラムを実行することのできる機械語専用の実行メディア用のセグメントＰＣを、従来のようにコンパイルする為のコンパイル過程Ｅ１の後で、過程Ｅ２は、機械語での対応するセグメントを中間言語ＬＩで表現されたシーケンスＰＣＬＩに変換する。
【００４８】
中間言語ＬＩでは、シーケンスＰＣＬＩとシーケンスＰＪＬＩは同じである。それらは、同じ変数と定数を含み、並びに同じように表現されたコマンドとオペレーションを含んでいるが、最初のソース言語に固有のシーケンスの終わりの、一つの例外起動の書き込みは別である。
【００４９】
本発明による中間言語ＬＩは、このように適応性のあるものである。図６と７に示された例によれば、全てのオペレーションまたはコマンドを一つのオブジェクトに適用されるメッセージの形式で表現されている。既に知られたオブジェクト指向言語と同様に、中間言語での新しいメッセージは、いつでも定義することができる。
【００５０】
図５は、第一の実施例の第二の変形を示しており、上と右に点線で示しているのは、例えば最初はソース言語ＬＳＮで表現されたプログラムＰＮの生成に関するものである。この第二の変形については、コンパイルと変換の過程Ｅ１とＥ２は、コンパイル過程Ｅ１２で置き換えられ、該手順Ｅ１２は、ソース言語ＬＳＮでのプログラムＰＮを、中間言語ＬＩで直接表現されたコンパイル済プログラムにコンパイルし、該コンパイル済プログラムは次に、検証されて、過程Ｅ３でチップカードＣＵにロードされる。
【００５１】
図７で示された例によれば、過程１２は、Ｃ言語でのセグメントＰＣを、言語ＬＩでのシーケンスＰＣＬＩに直接変換するものである。
【００５２】
次に、図５での過程Ｅ３に戻ると、中間言語ＬＩで表現されたプログラムは、検証とロードの工程ＣＶＣを経て、目的のチップカードＣＵの中に検証されて遠隔ロードされる。工程ＣＶＣは、少なくともその一部、好ましくはその全部をカードＣＵにインストールされる。工程ＣＶＣの他の部分は、特に、中間言語でのプログラムの実行を動的に検証することに関するものであり、サーバーＳＥＲ内か、あるいはそのカードを受け入れる端末ＴＥ内にインストールされる。
【００５３】
過程Ｅ３でカードＣＵの中での検証及び／または適合化を行うメカニズムは、カード内に受信し、かつ中間言語ＬＩで表現されたコードを、中間言語で直接実行可能なバイナリプログラムの形式に変換する。特にそのセキュリティ、類型化、そして封じ込めに関しての、中間言語でのプログラムの妥当性確認情報は、過程Ｅ３の際に、そのプログラムから抽出されて端末ＴＥに設定されることができ、カードの中にそのプログラムをロードした後で、そのカードによって検証されるものである。検証が失敗すると、プログラムは無効化される。この検証により、プログラムをサブ問題ＳＰ２と同調させて、使用する環境が有効であることが確実になる。
【００５４】
過程Ｅ３でのロードの際に行われる変換は僅かなものにすることが可能であり、チップカードの環境に固有な関連性のエディットのメカニズムに帰着させることができる。
【００５５】
過程Ｅ３の目的は、過程Ｅ１及びＥ２または過程Ｅ１２で行われる作業を、カード内で本来の場所に補完することである。検証及び／又は適合化のメカニズムは、受信したコードを完全に変換し、それをカード内での汎用実行メディアＳＥＵによって、実行可能なプログラムに変換する。この変換の目的は、セキュリティ・チェックを動的に行う場合、プログラムの実行時間の点で、大いに不利益になってしまうが、セキュリティについてはそれを静的に行うことにより、コードをより有効なものにすることである。実際上は、カードＣＵに搭載された適合化のメカニズムにより、実行メディアＳＥＵ、つまりカードの中にあるマイクロプロセッサにより直接実行されるプログラムを生成するという重要な仕事を行うことができる。図８は、適合化されたシーケンスＰＡＤを供給する為のシーケンスＰＪＬＩ，ＰＣＬＩに類似した中間言語ＰＬＩでのシーケンスから、過程Ｅ３で適合化メカニズムにより実行される処理の一例を示している。
【００５６】
過程Ｅ４では、中間言語ＬＩでのプログラムは、中間言語ＬＩを直接サポートする為のカードＣＵの中にインストールされている。カードＣＵは特有の適合化メカニズムを有している。
【００５７】
チップカードＣＵはプログラム可能であり、つまり該カードは、その寿命の全期間にわたってプログラムを受け入れるということであり、その中には中間言語ＬＩ専用の実行メディアＳＥＵがある。従って、多様なソース言語ＬＳ１〜ＬＳＮで書かれたプログラムＰ１〜ＰＮは、同一のカードＣＵの中で共存しており、該カードＣＵ自体は、特にソース言語ＬＳ１〜ＬＳＮのいずれか一つ専用というわけではなくて、様々なソース言語で書かれた様々なプログラムを収容することができ、それが、サブ問題ＳＰ２を解決する。
【００５８】
汎用実行メディアＳＥＵの中には、最初のプログラムＰ１〜ＰＮの実行メディアＳＥ１〜ＳＥＮの限定的なサブセットが一つあるだけである。過程Ｅ３では、中間言語ＬＩでの各プログラムと同時にプログラミング・ライブラリＢＰｎをロードする。そして、最初のプログラムＰｎを中間言語で実行する。その中間言語に特有のセキュリティのプロパティは汎用実行メディアＳＥＵの中に存在するものに「上書き」するかたちでインポートする。カードＣＵ内の汎用実行メディアＳＥＵのアーキテクチャでは、この側面は、セキュリティのプロパティを維持しつつ、メモリサイズと実行速度の面で、搭載されたプログラムにとって効率的な環境を供給するものと考えられており、それが、サブ問題ＳＰ３を解決する。
【００５９】
カードＣＵに設置され、中間言語ＬＩの実行をサポートする汎用実行メディアＳＥＵは、
−サポートされたそれぞれの新しいソース言語につき新しいプログラミング・ライブラリを受け入れて、そのソフトウェア環境の中で新しい言語で最初に書かれたプログラムを実行するのに適しており、
−プログラムによって処理されるタイプのチェックでセキュリティのメカニズムを確実にサポートし、また、新しいタイプの定義も確実に受け入れて、新しいプログラミング・ライブラリをロードする際に、関連したセキュリティのメカニズムを記述するのに適している。
【００６０】
過程Ｅ４において、プログラムの先進的なインタープリタのメカニズムは実行メディアそれ自体を対象にしている。サブ問題ＳＰ２とＳＰ３の問題に対応する為に、実行可能な各プログラムの生成の為の目的として、ソフトウェア及び／またはハードウェアの実行メディアＳＥＵを用いる。最初に活用されるものとは異なった命令セットが、その実行メディアＳＥＵに含まれることが望ましい。この機能により、絶対的に、実行メディアＳＥＵの完全な再定義が可能になり、特定の言語から生じるコードを直接、解釈することができるようになる。過程Ｅ４で目指す拡張のメカニズムは、例えば所定の言語から生じるコードの複数の部分にとって有益であり、特に、カードＣＵの最初の汎用実行メディアＳＥＵによって供給されるセマンティックとは異なるセマンティックを定義するオペレーションを移植することが可能になる。
【００６１】
拡張のメカニズムは、例えば、一つのテーブルにアクセスする基本命令に関するものであり、それがテーブルの限界からはみ出るものである場合は、ＪＡＶＡ（登録商標）言語では一つの例外を起動するが、その一方で、中間言語Ｌ１を最初に移植する際には、基本命令により、そのテーブルのいずれかのセルへのアクセスが可能になる。図９に示されているように、単純な解決法は、オペレーションＯＰＪをＪＡＶＡ（登録商標）言語に変換して、中間言語ＬＩでのオペレーション・シーケンスＯＰＬＩａで、それを拡張することなく、一つのテーブルにアクセスすることにある。コードが無用に膨れ上がることは、カード内部では不利になり、それを避ける為に、ＪＡＶＡ（登録商標）の擬似コード（バイト・コード）と同等のセマンティックを正確に実現する基本的命令を、図１０の一つのオペレーション・シーケンスＯＰＬＩｂ内で線７〜１０で示されているように、汎用実行メディアＳＥＵの中で定義される。
【００６２】
本発明の一つの変形によれば、過程Ｅ３とＥ４は、図５の右に示される過程Ｅ３ｄとＥ４ｄに置き換えられる。目指す目的は、特殊化された実行メディアＳＥＳであり、例えばハードウェアのアーキテクチャと、場合によっては、ソース言語ＬＳ１〜ＬＳＮ専用の最初の実行メディアＳＥ１〜ＳＥＮの一つに類似した既に知られているソフトウェアのアーキテクチャがある。
【００６３】
過程Ｅ３ｄでは検証とロードの工程ＣＶＣｄを質的に向上させるのは、最適化メカニズムＯＰＴであり、それは、そのカードの外部で最適な効率的なネイティブの最終コードを生成するものである。セキュリティの束縛は、できれば緩めるのが望ましいが、それはプログラムを作るのが特定のチップカードＣＳの為であることがはっきりしており、業界で知られた信頼性の検査を通過するものだからである。
【００６４】
図１１は過程Ｅ３ｄでの、中間言語ＬＩでのシーケンスＰＣＩｄと適合化されたシーケンスＰＡｄとの間の適合化を示している。
【００６５】
過程Ｅ４ｄでは、プログラミング・ライブラリＢＰｎ，ＢＰｄｎのセットを、実行メディアＳＥＳに搭載し、ソース言語ＬＳｎでのプログラムＰｎから生じるプログラムがその環境で機能するようにする。
【００６６】
この変形による実行メディアＳＥＳには検証とロードの工程がＭ本必要であり、従って、新しい工程ＣＶＣの書き込みは新しい言語で機能する。
【００６７】
この変形例は「汎用」実行メディアＳＥＵでの実施例よりは利点の少ないものである。実行メディアＳＥＳは所定の実行メディアＳＥｎに依存したままであるし、ソース言語ＬＳｎのプログラミング・ライブラリＢＰｎと最初は別の言語の為にプログラムされた実行メディアＳＥＳについて予想されるプログラミング・ライブラリとの間の不適合により、更に大きなメモリの容量が必要となり、効率も落ちることになる。
【図面の簡単な説明】
【図１】  それぞれの実行メディア用の様々なソース言語でそれぞれ書かれた複数のプログラムの生成と実行のダイアグラムである。
【図２】  第一、第二、及び第三の解決法のダイアグラムであり、該解決法は、それぞれ先行技術で提案されたものであり、様々な言語でのプログラムの操作互換性の問題を部分的に解決するものである。
【図３】  第一、第二、及び第三の解決法のダイアグラムであり、該解決法は、それぞれ先行技術で提案されたものであり、様々な言語でのプログラムの操作互換性の問題を部分的に解決するものである。
【図４】  第一、第二、及び第三の解決法のダイアグラムであり、該解決法は、それぞれ先行技術で提案されたものであり、様々な言語でのプログラムの操作互換性の問題を部分的に解決するものである。
【図５】  本発明の好ましい実施例とその変形例に従う、様々なソース言語で書かれた複数のプログラムの生成と実行のダイアグラムであり、一つの中間言語専用で、かつ一枚のマイクロプロセッサ式カードに保存された一つの実行メディア内で実行される。
【図６】  既知の言語で書かれた一つのプログラムを、本発明による中間言語にコンパイルし変換する過程を示している。
【図７】  図６のプログラムに類似の、既知の言語で書かれた一つのプログラムを中間言語に、直接コンパイルする過程である。
【図８】  第一の実施例による実行の前に、中間言語での一つのシーケンスを適合させる過程を示している。
【図９】  仮想マシン言語で書かれた一つのシーケンスを、複数のシーケンスに変換する際に、中間言語の拡張がある場合と無い場合とをそれぞれ示している。
【図１０】  仮想マシン言語で書かれた一つのシーケンスを、複数のシーケンスに変換する際に、中間言語の拡張がある場合と無い場合とをそれぞれ示している。
【図１１】    実行前に、本発明の変形により、中間言語での一つのシーケンスを適合させるところを示している。
【図１】
0003706065.tif 000002
【図２】
0003706065.tif 000003
【図３】
0003706065.tif 000004
【図４】
0003706065.tif 000005
【図６】
0003706065.tif 000006
【図７】
0003706065.tif 000007
【図８】
0003706065.tif 000008
【図９】
0003706065.tif 000009
【図１０】
0003706065.tif 000010
【図１１】
0003706065.tif 000011
【図５】
0003706065.tif 000012