(57)【要約】本発明は、マイクロプロセッサ・カード（ＣＰ）などのリプログラマブル・コンピュータ・オンボード・システムにダウンロードされるオリジナルの実行可能コード（ＣＩ）を管理するための方法に関し、コードは暗号化署名（ＳＩＧＮ）を有し、署名の妥当性がチェックされると、マイクロプロセッサによって実行可能である。本発明の方法は、オフ・カードで、オリジナル・コードに対応し、予め定めた特定用途に適合された、修正済みの実行可能コード（ＣＩ’）が識別されるステップと、オリジナル・コードに適用された場合に修正済みコードを再構築可能にするソフトウェア構成要素（ＣＬ）が計算されるステップと、上記ソフトウェア構成要素が署名されるステップと、署名済みのオリジナル・コードおよび署名済みのソフトウェア構成要素がカードにダウンロードされるステップと、オン・カードで、オリジナル・コードおよびソフトウェア構成要素の署名（ＳＩＧＮ、ＳＩＧＮ’）がチェックされるステップと、マイクロプロセッサを用いて同様に実行するように修正済みコードを再構築するためにソフトウェア構成要素をオリジナル・コードに適用するステップとを含む。
2006522972.tif 000002
【特許請求の範囲】
【請求項１】
マイクロプロセッサ・カード（ＣＰ）などのリプログラマブル・オンボード・コンピュータ・システムにダウンロードすることが意図されたプログラムを形成するオリジナル実行可能コードを管理するための方法であって、前記コードが、暗号化署名（ＳＩＧＮ）を所有し、前記署名の妥当性の後者による検証後に前記オンボード・システムのマイクロプロセッサによって実行可能であって、前記方法が、少なくとも、
オフ・カードで、予め定めた特定用途に適合された、前記オリジナル・コードに対応する修正済みの実行可能コード（ＣＩ’）を識別するステップと、前記オリジナル・コード（ＣＩ）のデータと前記対応する修正済みコード（ＣＩ’）との間での変化から、前記オリジナル・コードに適用された場合に前記修正済みコードの再構築を可能にするソフトウェア構成要素（ＣＬ）を計算するステップと、前記ソフトウェア構成要素（ＣＬ）に署名するステップと、
前記署名されたオリジナル・コードおよび前記署名されたソフトウェア構成要素を前記カードにダウンロードするステップと、
オン・カードで、前記オリジナル・コード（ＣＩ）および前記ソフトウェア構成要素（ＣＬ）のそれぞれの署名（ＳＩＧＮ、ＳＩＧＮ’）を検証するステップと、前記マイクロプロセッサによる実行用に前記修正済みコード（ＣＩ’）を再構築するために前記ソフトウェア構成要素（ＣＬ）を前記オリジナル・コード（ＣＩ）に適用するステップとを含むことを特徴とする方法。
【請求項２】
前記オリジナルの実行可能コード（ＣＩ）が、中間コードを解釈するための仮想マシンを用いて前記オンボード・システム・マイクロプロセッサによって実行可能な中間コードからなることを特徴とする、請求項１に記載の方法。
【請求項３】
前記仮想マシンが実行スタックを備えることと、オン・カードで前記オリジナルの中間コード（ＣＩ）に適用される前記ダウンロードされたソフトウェア構成要素（ＣＬ）が、前記コードの各命令のオペランドがこの命令によって操作されるデータのタイプに属すること、および各ターゲット交換命令で前記仮想マシンの実行スタックが空であることという前記中間コードに関する前記検証基準を先験的に満たす修正済みの中間コード（ＣＩ’）を再構築可能にすることとを特徴とする、請求項２に記載の方法。
【請求項４】
前記ソフトウェア構成要素の適用によって得られる前記修正済みの中間コード（ＣＩ’）が、前記仮想マシンを用いて前記マイクロプロセッサによって実行される前に、前記修正済みの中間コード（ＣＩ’）が前記検証基準を満たすかどうかを検証するプロセスに従って検証されることを特徴とする、請求項３に記載の方法。
【請求項５】
オン・カードで前記オリジナル・コード（ＣＩ）に適用されたダウンロードされたソフトウェア構成要素（ＣＬ）が、実行速度が前記オリジナル・コードのそれに比べて速くなるように、修正済みコードを再構築可能にすることを特徴とする、請求項１または２に記載の方法。
【請求項６】
オン・カードで前記オリジナル・コード（ＣＩ）に適用されたダウンロードされたソフトウェア構成要素（ＣＬ）が、前記オリジナル・コードに比べてサイズに関する最適化が得られるように、修正済みコードを再構築可能にすることを特徴とする、請求項１または２に記載の方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、特にオンボード・マイクロプロセッサ・コンピュータ・システムにダウンロードされるように設計された実行可能コードを管理するための方法に関する。
【背景技術】
【０００２】
一般的に言って、本発明は、オンボード・システムのマイクロプロセッサによって実行可能な一連の命令の形の実行可能コードからなるプログラムをダウンロードすることによってリプログラム可能な任意のオンボード・システムに適用される。本発明は、実行可能コードが、これらの命令によって操作される実行スタックおよびオペランドのレジスタを備えた、一般に仮想マシンと呼ばれる中間コード用のインタープリタを使用し、この中間コードを解釈できるようにすることにより、オンボード・システムのマイクロプロセッサによって実行可能な中間オブジェクト・コードからなる状況で、特に有利に適用される。
【０００３】
より具体的に言えば、以下の説明は、Ｊａｖａ（登録商標）Ｃａｒｄタイプのリプログラマブル・マイクロプロセッサ・カードとの関連における本発明の適用例に関する。
Ｊａｖａ（登録商標）Ｃａｒｄタイプのマイクロプロセッサ・カードは、実際には、英語の専門用語では「アプレット」と呼ばれる小さなプログラムをダウンロードする操作によってリプログラム可能である。
【０００４】
様々なオンボード・コンピュータ・システム間での移植性という理由で、アプレットは標準的な仮想マシン用のコードの形をとる。２進形式で書かれたこのコードは、ソース・コードと実行可能２進コードとの間の中間の役割を果たし、例えば、Ｊａｖａ（登録商標）コンパイラを使用して入手される。したがって、英語の専門用語では「バイトコード」と呼ばれるこの中間コードは、カードのマイクロプロセッサによって直接実行することはできないが、仮想マシンと呼ばれる２進コード・インタープリタによってソフトウェア様式で解釈しなければならない。仮想マシンを構成するプログラムを形成する最小限の特定データ処理リソースを備えるために、中間言語で書かれたアプレットが実行されることになるカードの場合には十分である。Ｊａｖａ（登録商標）Ｃａｒｄタイプのカードの前述の例では、使用される仮想マシンはＪａｖａ（登録商標）仮想マシンのサブアセンブリである。
【０００５】
中間コード・インタープリタを備えたオンボード・コンピュータ・システムにアプレットをダウンロードする操作は、いくらかのセキュリティ問題を引き起こす。それ故、意図せずに不当に書かれたアプレットが、すでにシステム上に存在するデータを不正に修正したり、主プログラムの正しい実行を妨げたり、または以前にダウンロードされた他のアプレットを使用不能または有害にすることによって修正したりする場合がある。
【０００６】
また、悪意の目的で書かれたアプレットを使用すれば、カード内のメモリ領域の複写操作を実行すること、および／またはチップ・カードの正しい機能を危険にさらすことも可能である。次に、例えば銀行カードの場合にアクセス・コードなどの、システム内に格納された機密データまたは無許可のデータへのアクセス、あるいは、カード上に存在する１つまたは複数のアプリケーションの保全性の攻撃も可能になる。最終的に、カードが外界に接続された場合、発生した誤動作がカード外部に伝搬される可能性がある。
【特許文献１】仏国特許出願第２７９７９６３号
【発明の開示】
【発明が解決しようとする課題】
【０００７】
それ故、前述のＪａｖａ（登録商標）Ｃａｒｄの例などの中間コード・インタープリタを備えたオンボード・コンピュータ・システムへの中間コード（バイトコード）のダウンロード操作にかかわるセキュリティ問題を改善するための解決策が提案されてきた。
【課題を解決するための手段】
【０００８】
解決策の１つは、動的アクセスの実行およびアプレット実行中のタイプ・チェックからなる。次に仮想マシンは、以下のように、アプレットの実行中にいくつかのチェックを実施する。
メモリへのアクセスの制御：メモリ領域での読み取りまたは書き込みごとに、仮想マシンは対応するデータへのアプレットのアクセス権をチェックする。
【０００９】
データ・タイプの動的検証：アプレットからの命令ごとに、仮想マシンはデータ・タイプに関する制約が満たされていることを検証する。
仮想マシンの実行スタックのスタック・オーバフローおよび実行スタックへの不正アクセスの検出。
【００１０】
しかし、この解決策には、すべての動的チェックによって生じる、実行時のかなり大幅なスローダウンという欠点がある。こうしたチェックは、操作中のデータに関連付ける必要のあるタイプの追加情報により、システムのランダム・アクセスおよび永続メモリに関する要件も増加させる。
【００１１】
次に、他の解決策は、プログラムが静的に無害であること（すなわち、ダウンロード操作中およびその実行前）がチェックできるように、中間コード（バイトコード）を指定することからなる。これは、ベリファイヤと呼ばれるセキュリティ・デバイスによって実行される。したがって、セキュリティという理由で、Ｊａｖａ（登録商標）Ｃａｒｄカードはオンボード・ベリファイヤを所有していなければならない。
【００１２】
これは、動的検証プロセスに比べて非常に高速な中間コードの実行が可能であるが、こうした静的検証プロセスは、このプロセスを実行するために必要なコード・サイズと、検証の中間結果を含むのに必要なランダム・アクセス・メモリ・サイズの両方、ならびに計算時間に関して、コストがかかるという欠点がある。
【００１３】
後者の解決策で示された原理を発端として、特許出願第ＦＲ  ２  ７９７  ９６３（Ｄ１）号は、ダウンロード中の中間コードの静的検証プロセスに関連付けられたダウンロードされた中間コードを管理するためのプロトコルを提示しており、これによってオンボード・コンピュータ・システムによる後者のセキュアな実行が可能となる。この方法では、必要なコード・サイズに関してかなり単純かつかなり安価なベリファイヤが有利に得られる。
【００１４】
Ｄ１の中心的な考えは、中間コードがダウンロードされカード内に格納されていれば、その検証を簡略化するために、ダウンロードされる前に中間コードをオフ・カードで変換することである。したがって中間コードの変換段階は、オフ・カードで実行され、したがってこれは、Ｊａｖａ（登録商標）コンパイラを使用することで入手されたオリジナルの中間コードではなく、カードにダウンロードされた修正済みの標準化中間コードの場合である。それ故、オフ・カードで変換された中間コードは、Ｄ１の目的である予め定めた検証プロセスの検証基準を先験的に満たす標準化された中間コードに変換されることになるため、予め定めた検証プロセスに従って、静的モードでより容易に検証されることになる。したがって、オフ・カードで実行されたこの以前の変換段階が、検証プロセスを有利に加速させる。この解決策の詳細な説明については、Ｄ１のテキストを参照することができる。
【００１５】
しかし、Ｄ１で提案された方法の欠点の１つは、基になる中間コードの検証プロセスをこの中間コードの署名システムと共存させることが不可能なことである。それ故、Ｄ１では、第１に単純かつ高速な方法で検証可能であり、第２に署名される中間コードを有することができない。これは、Ｄ１によって提案された方法が、中間コードが前述のようにダウンロードされる前にこれをオフ・カードで変換するための準備をし、その結果、中間コード上にオフ・カードで課された変換の前に実行されたコードの開発者（またはコードへの署名を許可された任意の他の人物）の署名が、まさにこの修正という事実によって無効になるからである。その結果、もはやカードによって署名を検証することはできない。
【００１６】
しかし、ダウンロードされた中間コードの署名が検証できるという可能性をカードに残すことは、セキュリティに関しても非常に重要である。これは、中間コードを実行に先立って検証しても、中間コードがいかなる「トロイの木馬」も含まないことを確保できるようにはならないからである。これは、中間コードがたとえ検証に関して正しい場合であっても攻撃的でないことをチェックできるようにするのは、手操作での分析のみであり、このチェックがカードによって実行できないからである。より正確には、実際のところ、カードが検証できるのは、中間コードに関するこの手操作のチェックが正しく実行されたことを証明する署名の妥当性のみである。したがって、有効な署名を有する中間コードのダウンロードを実施できるようにすることが重要である。
【００１７】
これらの様々な発見に基づく本発明の目的は、Ｄ１の目的である検証方法の使用に関する前述の欠点を緩和することである。
この目的に鑑み、より具体的に言えば、本発明の目的は、中間コード・インタープリタを備えたリプログラマブル・オンボード・コンピュータ・システムに中間コードをダウンロードする際に、Ｄ１に従った検証システムによって得られる特に簡略性および速度に関する利点をなくすことなく、Ｄ１によって提案された検証システムと署名システムとを共存させることである。
【００１８】
より一般的に言えば、本発明の１つの目的は、中間であろうとなかろうと、ダウンロードされることになる実行可能コードを管理し、予め定めた特定の使用を目的として実行可能コードの変換を実行する機会を残しながら、このコードの署名を、マイクロプロセッサ・カードなどのオンボード・コンピュータ・システムによって検証できるようにする方法を使用することである。例えば、仮想マシンを用いて実行される中間コードの場合、オリジナル実行可能コードの変換が、Ｄ１に明示された検証プロセスの原理に従ってそのダウンロード時のその検証を向上させること、または、こうした変換が署名の妥当性および、それ故、カードによるその検証の妥当性を損なう可能性なしに、カードのマイクロプロセッサによる実行速度を向上させることを目的とする場合がある。
【００１９】
このため、本発明は、マイクロプロセッサ・カードなどのリプログラマブル・オンボード・コンピュータ・システムにダウンロードすることが意図されたプログラムを形成するオリジナル実行可能コードを管理する方法に関し、上記コードは、暗号化署名を所有し、上記署名の妥当性の後者による検証後にオンボード・システムのマイクロプロセッサによって実行可能であり、上記方法は、少なくとも、
−オフ・カード：予め定めた特定用途に適合されたオリジナル・コードに対応する修正済みの実行可能コードを識別するステップと、オリジナル・コードのデータと対応する修正済みコードとの間での変化から、オリジナル・コードに適用された場合に修正済みコードの再構築を可能にするソフトウェア構成要素を計算するステップと、上記ソフトウェア構成要素に署名するステップと、
−署名されたオリジナル・コードおよび署名されたソフトウェア構成要素をカードにダウンロードするステップと、
−オン・カード：オリジナル・コードおよびソフトウェア構成要素のそれぞれの署名を検証するステップと、マイクロプロセッサによる実行用に修正済みコードを再構築するためにソフトウェア構成要素をオリジナル・コードに適用するステップとを含む。
【００２０】
変形例では、オリジナルの実行可能コードは、中間コードを解釈できるようにする仮想マシンを用いてオンボード・システム・マイクロプロセッサによって実行可能な中間コードからなる。
【００２１】
第１の実施形態では、上記変形例に関して、仮想マシンは実行スタックを備え、オン・カードでオリジナルの中間コードに適用されるダウンロードされたソフトウェア構成要素は、上記コードの各命令のオペランドがこの命令によって操作されるデータのタイプに属すること、および各ターゲット交換命令で仮想マシンの実行スタックが空であることという上記中間コードの検証基準を先験的に満たす修正済みの中間コードを再構築可能にする。
【００２２】
好ましくは、ソフトウェア構成要素の適用によって得られる修正済みの中間コードは、仮想マシンを用いてマイクロプロセッサによって実行される前に、修正済みの中間コードが検証基準を満たすかどうかを検証するプロセスに従って検証される。
【００２３】
他の実施形態によれば、オン・カードでオリジナル・コードに適用されたダウンロードされたソフトウェア構成要素は、実行速度がオリジナル・コードのそれよりも速くなるように、修正済みコードを再構築することができる。
他の実施形態によれば、オン・カードでオリジナル・コードに適用されたダウンロードされたソフトウェア構成要素は、オリジナル・コードに比べてサイズに関する最適化が得られるように、修正済みコードを再構築することができる。
本発明の他の特徴および利点は、以下の図面を参照しながら限定的ではなく例示的に示された以下の説明によってさらに明白となろう。
【発明を実施するための最良の形態】
【００２４】
以下の説明は、とりわけ、オープン・システムの状況における本発明の適用例を対象としており、また、とりわけ、図２に示されたようなＪａｖａ（登録商標）Ｃａｒｄ  ＣＰタイプのリプログラマブル・マイクロプロセッサ・カードのそれを対象としているものであって、ダウンロードされたオリジナル・コードは、仮想マシンを用いてマイクロプロセッサによって実行される。しかし、本発明に従った方法が、ダウンロードされたカードが中間コードではなく、オンボード・システムのマイクロプロセッサによって直接実行可能なコードであるという状況にも適用されるということを忘れてはならない。
【００２５】
したがって、こうしたリプログラマブル・システムは、システムが使用開始された後に、アプレットのダウンロード操作によって実行可能プログラムを機能強化する可能性を追加する。ダウンロードされることになるアプレットは、この例では、仮想マシン用の中間コード、典型的にはカードのメモリに常駐するＪａｖａ（登録商標）仮想マシンのサブアセンブリからなるオリジナルの実行可能コードＣＩの形を取る。それ故、中間コードＣＩが生成されると、中間コードＣＩがトロイの木馬を含んでいないかどうかを検証するために、監査プログラムが実行開始される。
【００２６】
中間コードＣＩが実際にこの種のどのような悪意あるプログラムも含んでいない場合、監査プログラムは中間コードＣＩに署名する。暗号化署名ＳＩＧＮは、当業者が使用可能ないずれかの電子署名機構を使用して実行することができる。次に、署名された中間コードＣＩは任意のＪａｖａ（登録商標）Ｃａｒｄ上で使用可能となり、したがって、その無害性を証明し、ダウンロード時にカードによって検証可能な署名ＳＩＧＮを所有する。電子署名の検証は、署名が有効であるかどうかの検証からなる。
【００２７】
本発明の必須の特徴の１つは、オリジナルの、すなわち修正されていない中間コードＣＩをカードＣＰにダウンロードすること、およびこれをソフトウェア構成要素ＣＬに追加して、オリジナル中間コードに適用された場合に、予め定めた特定用途に適合された修正済みの中間コードＣＩ’を計算できるようにすることからなる。図では、オリジナル中間コードＣＩは、実線のコード・ラインによって図式的に示され、対応する修正済みの中間コードＣＩ’は、実線および破線のコード・ラインによって図式的に示される。
【００２８】
本発明によれば、署名済みのオリジナル中間コードＣＩに適用されることになる補足ソフトウェアＣＬは、オリジナル中間コードＣＩおよび予め定めた特定用途向けに識別された対応する修正済み中間コードに従って、オフ・カードで計算される。オリジナル中間コードＣＩの場合と同様に、ソフトウェア構成要素ＣＬは署名され、検証可能な署名ＳＩＧＮ’を有する。
【００２９】
本発明の主な適用例は、中間コードのカードへのダウンロード時に、Ｄ１によって提案された署名システムと検証システムとを共存できるようにすることである。それ故、この適用例の状況では、中間コードＣＩ’は、Ｄ１の目的である検証プロセスに関する検証基準を先験的に満たすことからなる予め定めた特定用途に適合された修正済みの中間コードである。それ故、本発明の主な適用例では、ソフトウェア構成要素は、オリジナル中間コードＣＩに適用されると、Ｄ１の目的である検証プロセスの検証基準を先験的に満たすために、Ｄ１の教示に従って標準化された修正済み中間コードＣＩ’が得られるように計算される。特に、Ｄ１に従って標準化された中間コードでは、各命令のオペランドがこの命令によって操作されるデータのタイプに属し、各ターゲット交換命令で仮想マシンの実行スタックが空である。より詳細な説明については、Ｄ１のテキストを効果的に参照されたい。しかし、当業者には周知である記載のソフトウェア構成要素で終わらせることが可能な計算について本明細書で詳述することは、本明細書の範囲から逸脱することになろう。
【００３０】
次に、オリジナル中間コードＣＩおよび関連する構成要素ＣＬはカードＣＰにダウンロードされる（図２参照）。したがって、ソフトウェア構成要素ＣＬは、オリジナル中間コードＣＩと共に移動し、カードの再書き込み可能永続メモリ内に後者と共に格納されると、オン・カードでオリジナル中間コードに適用されることが意図される。
【００３１】
第１に、カードは、中間コードＣＩがどのようなトロイの木馬も、あるいは同じ種類の任意の他の悪意あるコードも含んでいないことを確保するために、中間コードＣＩの署名ＳＩＧＮが有効であるかどうかを検証する。カードは、ソフトウェア構成要素ＣＬも同様にトロイの木馬を含んでいないことを確実にするために、この署名ＳＩＧＮ’の妥当性も検証する。
【００３２】
これらの事前署名検証操作が首尾よく実行されると、カードは、本発明の主な実施形態では、Ｄ１の目的である検証プロセスの検証基準を先験的に満たすことからなる予め定めた特定用途に適合された修正済みのコードＣＩ’を再構築するために、ソフトウェア構成要素ＣＬをオリジナル中間コードＣＩに適用する（図３参照）。
【００３３】
次に、カードは、Ｄ１の目的であるプログラムの一部の静的検証プロセスで採用された検証技法を使用して、修正済みの中間コードが仮想マシンを用いてマイクロプロセッサによって実行される前に、修正済みの中間コードを検証することができる。それ故、この検証プロセスは、修正済みの中間コードＣＩ’が前述の検証基準を満たすかどうか、すなわち、修正済みコードの各命令のオペランドがこの命令によって操作されるデータのタイプに属するかどうか、および、各ターゲット交換命令で仮想マシンの実行スタックが空であるかどうかを検証することからなる。本明細書の読者には、本明細書の場合では不必要となるようなより詳細な説明については、Ｄ１のテキストを参照することが求められる。
【００３４】
次に、Ｄ１の目的であるベリファイヤの原理に従って修正済みの中間コードの検証が実行されると、修正済みの中間コードは仮想マシンを用いてマイクロプロセッサによって実行される。
【００３５】
それ故、本発明の方法は、リプログラマブル・オンボード・コンピュータ・システムへの中間コードのダウンロード時に、Ｄ１によって提案された署名システムと検証システムとを有利に共存できるようにするものである。したがって、署名済みアプレットをカードにダウンロードすること、および、カードがＤ１で開示された検証プロセスを実行しながらこの署名を検証できるようにすることが可能である。これは、ソフトウェア構成要素を署名済みのオリジナル中間コードと同時にダウンロードすること、およびそれによって、オン・カードでオリジナル中間コードに適用された場合、Ｄ１で開示された単純な高速ベリファイヤの原理に準拠する修正済み中間コードを取得できるようにすることによって可能となる。
【００３６】
本発明に従ってカードにダウンロードされる中間コードはオリジナル中間コードであり、その署名は、オフ・カードで実行されるいかなる修正プロセスによっても無効とされないため、カードはその実行前にその署名を検証することができる。
しかし、提示された主な適用例は、Ｄ１で開示された原理に従った中間コードの検証の目的で適合されたソフトウェア構成要素に関連しているが、本発明はこうした適用例に限定されるものではない。
【００３７】
一般的に、本発明は、中間またはシステムに従わないオリジナル実行可能コードおよび関連するソフトウェア構成要素の、リプログラマブル・オンボード・システムへのダウンロードに適用され、オン・カードでオリジナル・コードに適用された場合、ソフトウェア構成要素は、予め定めた特定用途向けに適合された修正済みコードを再構築できるようにする。したがって、この目的は、Ｄ１に従った検証プロセスの適用例を許可する修正済みコードの取得以外とすることができる。
【００３８】
特に、修正済みコードが応答する予め定めた特定用途は、コードの実行時間に関する最適化に対応するものとすることができる。それ故、オリジナル・コードと共にダウンロードされるソフトウェア構成要素は、オリジナル・コードが構成要素の適用によってオン・カードで修正されると、より高速に実行されるように計算することができる。したがって、本発明のこの適用例では、ダウンロードされてオリジナル・コードにオン・カードで適用されたソフトウェア構成要素は、その実行がオリジナル・コードに比べてより高速になるように、修正済みコードを再構築できるようにする。
【００３９】
同様に、オリジナル・コードと共にダウンロードされるソフトウェア構成要素は、オリジナル・コードが構成要素の適用によってオン・カードで修正されると、占有するメモリ・スペースをより少なくするように計算することができる。したがって、本発明のこの適用例では、ダウンロードされてオリジナル・コードにオン・カードで適用されたソフトウェア構成要素は、オリジナル・コードに比べてサイズに関する最適化が得られるように、修正済みコードを再構築できるようにする。
【００４０】
以下で例示的に説明する例は、ダウンロードされたオリジナル・コードの実行速度およびサイズに関して最適化を得ることを目的として、オリジナルの中間コードにオン・カードでソフトウェア構成要素を適用する具体的なケースに関する。この例では、ダウンロードされたオリジナルの中間コードは、スタック上に配置された１６ビット語の最下位バイトを回復することからなるチップ・カード・プログラムで実行される通常の操作を記述する。
【００４１】
オリジナル中間コード（記号表記およびＪａｖａ（登録商標）オペレーション・コード）を以下のとおりとする。
０×１１  ｓｓｐｕｓｈ  ２５５
０×００
０×ＦＦ
０×５３  ｓａｎｄ  ；
【００４２】
このコードは、スタック上に配置された１６ビット語の最下位バイトを回復することができる。そのため、最上位バイトが０×００にあり、最下位バイトが０×ＦＦにある１６ビット語をスタック（ｓｓｐｕｓｈ  ２５５）し、次に、スタック（ｓａｎｄ）上で２つの１６ビット語の間で論理ＡＮＤを実行する必要がある。
【００４３】
さらに、対応する置換コードを以下のとおりとする。
０×Ｃ９  Ｘｓａｎｄ＿２５５  ；
【００４４】
この特定の例では、オリジナルの中間コードにオン・カードで適用されることを意図したダウンロードされたソフトウェア構成要素の機能は、同じ操作を実行するが、仮想マシンを用いてマイクロプロセッサによって実行された場合、オリジナルの中間コードに比べて６バイトの節約と、サイズおよび速度に関する最適化とをもたらすための修正済みの中間コードを取得するために、一連の命令０×１１、０×００、０×ＦＦ、０×５３を置換コード０×Ｃ９に置き換えることである。
もちろん、すべてについて本発明の範囲を逸脱することなく他の適用例を想定することも可能である。
【図面の簡単な説明】
【００４５】
【図１】オフ・カードで実行される方法のステップを示す概略図である。
【図２】カードにダウンロードするステップ、オリジナルの中間コード、および予め定めた特定の用途専用の関連するソフトウェア構成要素を示す概略図である。
【図３】オン・カードで実行される方法のステップを示す概略図である。
【図１】
2006522972.tif 000003
【図２】
2006522972.tif 000004
【図３】
2006522972.tif 000005
【国際調査報告】
2006522972.tif 000006
2006522972.tif 000007
2006522972.tif 000008
2006522972.tif 000009
2006522972.tif 000010
2006522972.tif 000011