JP2008537240A - 埋め込みシステム、特にスマートカードにロードされる疑似コードの検証方法 - Google Patents

埋め込みシステム、特にスマートカードにロードされる疑似コードの検証方法 Download PDF

Info

Publication number
JP2008537240A
JP2008537240A JP2008507033A JP2008507033A JP2008537240A JP 2008537240 A JP2008537240 A JP 2008537240A JP 2008507033 A JP2008507033 A JP 2008507033A JP 2008507033 A JP2008507033 A JP 2008507033A JP 2008537240 A JP2008537240 A JP 2008537240A
Authority
JP
Japan
Prior art keywords
verification
code
context
ram
dictionary
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
JP2008507033A
Other languages
English (en)
Other versions
JP5225071B2 (ja
Inventor
ゴーテロン ローラン
べノワ アレクサンドル
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Gemplus SA
Original Assignee
Gemplus SA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Gemplus SA filed Critical Gemplus SA
Publication of JP2008537240A publication Critical patent/JP2008537240A/ja
Application granted granted Critical
Publication of JP5225071B2 publication Critical patent/JP5225071B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44589Program code verification, e.g. Java bytecode verification, proof-carrying code

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Test And Diagnosis Of Digital Computers (AREA)
  • Debugging And Monitoring (AREA)
  • Storage Device Security (AREA)

Abstract

本発明は、特にチップカードなどの携帯用電子装置にロードされるバイトコード(疑似コード)タイプのインタープリタ型言語のアプリケーションの検証と、少なくとも1つのプロセッサ(2)と、RAM(5)とを備える携帯用電子装置にロードされる、バーチャルマシン(42)で解釈可能なアプリケーション(31)の検証方法に関する。アプリケーションを装置にロードした後で検証する前に、プロセッサ(2)で実行される処理によりアプリケーションのコードのチェックを実行することからなる検証方法であって、サブプログラムの起動時に、RAM(5)に実検証コンテキスト(200ないし203)をバックアップするステップと、サブプログラム用の新検証コンテキスト(206ないし209)を作成および起動するステップと、以前にバックアップされた検証コンテキスト(200ないし203)を復旧するステップとを含むことを特徴とする。

Description

本発明は、埋め込みシステムのコードの一貫性を検証する方法に関する。
本発明は、これに限らないが、より詳しくは、スマートカードにロードされるバイトコード(疑似コード)タイプのインタープリタ型言語のアプリケーションの分野に関する。
‘埋め込みシステム’は、広義で使用され、特に、あらゆる携帯用電子装置、例えば処理およびストレージリソースが比較的制限されるスマートカード(チップカード)のために設計されたシステムを示す。
同様に、‘インタープリタ型言語’は、複数ラインのコードの実行がコード解釈を可能にする補助手段を必要とする、コンパイルされていない言語である。このような言語の一例は、スマートカードのアプリケーションソリューションにおいて非常に広範囲に使用されているJava(登録商標)言語である。Javaアプリケーションまたは‘アプレット’は、関連Javaバーチャルマシン(JVM)により解釈される。また、前記バーチャルマシンに相当するものを実装するハードウェアソリューションも存在しているが、その例が専用チップである。‘バーチャルマシン’は、以下において関連インタープリタ型言語の解釈を可能にするソフトウェアタイプの補助手段と、ハードウェアタイプの補助手段とを示す。
疑似コード(バイトコード)、これに限らないが、例えばJava、の検証は、Javaプラットフォームのセキュリティにおいて重要な要素である。このような検証は、特に、バーチャルマシン、即ちスタック(スタッキングおよびアンスタッキングアクセスを有するメモリ)とレジスタ(索引アクセスを有するメモリレジスタ)とを有するマシンで解釈されるバイトコードプログラムが完全であり(完全性検証)、それが例えばコードの変数のタイプのような特性に従うということを確認することにある。これらの検証作業は、比較的複雑で、リソースを消費する(ランダムアクセスメモリ(RAM)の高消費、および長い処理時間)。
スマートカードの開発で、Javaソリューションはこのようなスマートカードに組み込まれた。スマートカードの寿命期間中に、新しいアプリケーション、例えばJavaアプレット、が使われるためにカードにロードされる。このようなアプレットは、損傷されるか、または不良になる可能性があり、無許可メモリゾーンを呼び出してバーチャルマシンの故障の原因となる。スマートカードの外観、およびカードに対するプログラムの集積で、このような検証は、利用可能リソースの不足の観点から、全ての埋め込みシステムにおいて極めて複雑になった。
バイトコードタイプのプログラムは他のプログラム、またはサブプログラムを頻繁に呼び出す。呼び出しプログラムと同じ実行コンテキストを共有するプログラムと、特定専用実行コンテキストを有する他の方法のプログラムとは、区別できる。本発明は、特に呼び出しプログラムと同じ実行コンテキストを有するプログラムまたはサブプログラムに対する呼び出しに関する。‘サブプログラム’は、以下において、同じ実行コンテキストを共有するコードの他の部分から、前記コードの一部分が呼び出されたプログラムであるか、または呼び出されたサブプログラム(前記呼び出しプログラムと共通しているコードラインのセット)であるかにかかわらず、到達できる前記コードの一部分を定義するのに使われる。このような呼び出しは、‘Goto’または‘if’タイプの機能で、またはマクロに対する呼び出し中に行うことができる。
注意すべきことは、一例としてJava言語で、サブルーチンまたはサブプログラムを実行させる一対の命令、すなわち、サブルーチンへのジャンプ(Jump to Subroutine、JSR)と、サブルーチンからの復帰(Return from Subroutine、RET)とが存在するということである。図1は、サブプログラム(B7乃至RET)を有するコードの一例を、前記サブプログラム(第4行:JSR B7)に対する呼び出しと共に提案している。サブプログラムの終了時にRET命令が実行されると、バーチャルマシンは、サブプログラムを呼び出したJSRの次に続いてバイトコードを実行する。JSR呼び出し情報を格納するために、情報タイプのいかなるインスタンスもなしに、そのアドレスがバーチャルマシンのスタックに記録される。それは、実行流れによって決まるスタック内の数値である。このような記録の問題は、標準検証器がタイプに基づいて動作し、数値を適切に利用していないということである。したがって、どのコード部分がサブプログラムを呼び出しているのかを静的に判断することができない。
このような検証アルゴリズムは、バイトコード毎に単一化アルゴリズムを適用し、そのアルゴリズムの原理は、以下の通りである:バイトコードで、同じ変数が(例えば、サブプログラムに対する2つの異なるジャンプからの)2つの異なるタイプに収斂される収斂位置で、変数は、前記2つのタイプに共通している第1アンセスタのタイプを取る(共通アンセスタのコンセプトは、Javaタイプのオブジェクト指向言語の継承原理に起因する)。そして、タイプ不適合が発生した場合は、‘TOP’と呼ばれるタイプが変数に割り当てられる。それから、バイトコードのモデリング中に、バイトコードによって予想されるタイプが受取バイトコードに適合しないと、コードは拒絶される。
サブプログラムで、同一サブプログラムに対する2つの異なる呼び出しは、変数が同一のタイプを有しない場合であっても、実行可能である。したがって、タイプの問題がなくても(2つの異なるコンテキストがあるので、バーチャルマシンによるコード実行中に2つのタイプは介入できない)、検証エラー(不適合タイプ)が起こる可能性がある。
Javaカードにおいて疑似コード検証は、違法操作がバイトコードにより使用される要素のタイプに行われないということを確実にする。2つの特性が検証される:バイトコード毎に、スタックの高さは、実行パスに関係なく常に同じである。バイトコード毎に、実行パスに関係なくバイトコードに適合した、変数(レジスタ)、及びスタック段階のタイプが存在する。
この目的のためには、全ての可能な実行パスが静的に調査される。これは、バイトコードの抽象的な実行である。
バイトコードの列毎において、完全性検証は、多くの情報が格納されることを必要とする。ただジャンプターゲットのために、この格納を遂行することが十分であることが明らかになった。さらに、アルゴリズムは、命令ポインタまたは‘プログラムカウンタ’(現在の検証位置でのコード列上のポインタ)のような付加情報、ワークリスト(その後に検証されるコード列のリスト)、および現在フレーム(装置のRAMに記録される、調べられる位置でのレジスタのタイプ及びスタックのタイプのセット)を格納する必要がある。
オフカード処理中にバイトコードが最初に検証される、SUN MICROSYSTEMS(登録商標)ソリューションのような外部検証ソリューションが知られている。一旦確認されると、それはスマートカードにロードされる。このようなソリューションにおける欠点は、バイトコード検証とカードへのロードとの間に、コード不良の可能性があるという事実である。したがって、それらのソリューションは、カードにロードされて実行される初期コードと最終コードとの間で完全性を保証しない。
安全な環境でオフカードで検証が行われる、またプログラムに対する署名を可能にする、SUN MICROSYSTEMS(登録商標)検証器も知られている。カードは、単にプログラムを受け取り次第署名を検証しなければならない。
カードを媒介とするソリューションには、特に、過度なRAMの占有のような欠点がある。
証明つきコードによる検証も知られている。証明つきコードは、オフカードで計算され、プログラムがカードに送信されると、プログラムに付加される。その案は、タイプ情報をコードに挿入することである。その結果、カード上での検証は非常に容易になり、RAMは非常に少ない容量だけを必要とする。
そのソリューションにおける欠点は、オフカード前処理:証明の計算を必要とすることと、送信されて格納されるデータ(バイトコードおよび証明)のサイズが大きいこと、つまり送信時間が長く通過域の消費が増大することである。
フランス特許第2,815,434号で保護されるトラスティドロジック(登録商標)検証器もまた知られている。バーチャルマシンにより使用されるレジスタは、単形分割され、すなわち、各レジスタは1つの可変タイプを有する。したがって、RAMの必要性が減少する。このソリューションの欠点は、方法が2つの要求された追加特性を検証するようその方法を修正するためにオフカードでの計算を必要とすることである。
特定の埋め込みバイトコード検証が実行不可能であることを示す文献がある。特に、「Javaバイトコード検証:アルゴリズムおよび形式化」(http://pauillac.inria.fr/〜xleroy/publi/bytecode−verification−JAR.pdf)は、多変性の従来検証アルゴリズムがJavaカードのような低処理能力の装置では実行できないことを示している。
仏国特許第2,815,434号
本発明の目的は、処理中に消費されるRAMを制限する埋め込みシステムのコードの一貫性を検証する方法を提案することで、従来技術の欠点を改善することである。本発明は、さらに、例えば、スマートカードのような携帯用電子装置外部でのいかなる前処理も、またはアプリケーションのコードにいかなる要素追加も必要としない。本発明のもう1つの目的は、検証段階中に、RAMの管理を最適化することである。
本発明は、より少なくRAMを消費するために、現在フレームの特別な管理でコンテキスト(多変性)によってバイトコード検証を行う。サブプログラム検証中に方法検証状況がくるように規定が作られる。この目的のために、(特に、ジャンプターゲットにおけるスタックフレーム、現在フレーム、およびワークリストを含む)現在データの状態をバックアップすることでコンテキストが変更される。サブプログラムの終了時に、サブプログラムの現在コンテキストの現在フレームが先行コンテキストのバイトコード(例えば、JSR)の呼び出しの後続に対応するフレームと一体化する。それから先行コンテキストが復旧される。
この目的は、インタリーブできるサブプログラムの呼び出し、例えばJSR/RETを管理することを可能にすることである。
さらに、本発明は、バックアップが示すスタックフレーム(例えば、変更コンテキストに格納されるジャンプターゲットでの現在フレーム)の辞書を長い間に確立することで、ジャンプターゲットでのフレームバックアップの間のメモリ消費を最適化する。通常の使用時は、これらのジャンプに対する呼び出しを管理するために多数の追加的、および時々は重複した情報項目を格納しなければならない。このような多くの情報は、大部分の携帯用電子装置の既存メモリサイズには適合しない。辞書の利点は、メモリにバックアップされる不必要な数の同一スタックフレームを増加しないことであり、したがって、バイトコードとコンパイラの特性による良好な圧縮比を得ることができる。辞書の利点は、消費されたメモリの制限されたリソースを有する携帯用電子装置へのはめ込みを可能にすること、大きいRAMリソースを有する装置のためにより小さいRAMリソースを有する携帯用電子装置の使用を可能にすること、及び、このようにして費用を節減することである。
本発明は、RAMの適切な管理で既存のソリューションの能力を高めるために既存ソリューションに容易に結合される。
その結果、最も一般的な意味で、本発明は、少なくともプロセッサと、ランダムアクセスメモリまたは‘RAM’とを備える携帯用電子装置にロードされる、バーチャルマシンで解釈可能なアプリケーションの検証方法であって、一旦前記アプリケーションが前記装置にロードされて検証される前に前記プロセッサで実行される処理で前記アプリケーションのコードをチェックするように動作する前記検証方法において、サブプログラムの呼び出し中に、前記RAMに現在検証コンテキストをバックアップするバックアップステップと、サブプログラム専用の新検証コンテキストを作成および起動する作成および起動ステップと、サブプログラムの終了時、以前にバックアップされた検証コンテキストを復旧する復旧ステップと、を含んでいることを特徴とする検証方法を提供する。
1つの実施において、前記作成および起動ステップにおいて例えば現在フレームだけで前記新検証コンテキストは初期化される。
特定の実施において、前記方法は、前記サブプログラムに対する呼び出しが検出された時、呼び出されたサブプログラムのコードの即時チェックの実行をさらに備えている。
より詳しくは、前記方法はコード区画のための従来のステップを含んでいない。
1つの実施において、前記方法は、電源以外に、前記装置外部のリソースの使用を含んでいない。
1つの実施において、前記コンテキストはアプリケーションコードのツリー構造探索を可能にするワークリストを備えている。前記方法は、前記アプリケーションの一列のコードのチェック中、前記ワークリストを前記コード列の可能な後続で更新する更新ステップをさらに備えている。
特に、前記コンテキストは命令ポインタと現在フレームとを備えている。
1つの実施において、全部または一部の同一フレームが1つのアドレス下で辞書と呼ばれる前記RAMのあるゾーンにバックアップされる。
特定の実施において、同一フレームは1つのアドレス下でバックアップされ、バックアップされるフレームを含む辞書が作成される。
より詳しく言うと、前記RAMにバックアップされる新フレームそれぞれに対して、全部または一部の前記新フレームが前記辞書に存在しているか否かが検証され、存在する場合、関連ポインタ(prt1)が使用され、存在しない場合、前記辞書への記録が行われ、その新しい記録に関連するポインタ(ptr2)が使用される。
ある実施において、前記辞書は、前記フレームの同質部に対応するセクションに分けられる。特に、前記辞書の同質部のうちの1つはレジスタに対応する。変形として、前記辞書の同質部のうちの1つはスタックに対応する。他の変形として、前記辞書の同質部のうちの1つはバイトコードタイプで可変しないレジスタに対応する。
さらに、本発明は、スマートカードと、この検証方法を実行するための、少なくともJavaバーチャルマシンおよび一貫性が検証されるべきである解釈可能なJava言語のJavaアプレットを備えるJavaカードと、を提供する。
本発明は、下記の発明の実施に関する説明により容易に理解することができ、添付の図面を参考にする。
一例としての下記の実施態様で、JSR命令により呼び出されるJavaサブルーチンは、単に一般に呼び出されることが可能で本発明に関連するサブプログラムの一例である。
図2を参照して、カードモジュール1は、例えばフラッシュタイプの不揮発性メモリ3を制御するマイクロプロセッサ2と、ROM4と、RAM5とを備える。
前記ROM4は、バイトコード検証器コンピュータプログラム41と、バイトコード実行を可能にするバーチャルマシン42とを格納する。‘バーチャルマシン’は、バイトコードの実行中に、スタック51およびレジスタ52を前記RAM5で管理するマシンを意味する。前記スタック51は、データが積み重なる、また引き出されるトップアクセスメモリである。前記レジスタ52は、索引アクセスまたはフリーアクセスを有するメモリレジスタである:レジスタのいかなる情報もアクセス可能である。
検証されるプログラムまたはアプリケーション31は、前記不揮発性メモリ3にファイル形式で格納される。このプログラムは、疑似コードまたはバイトコードの形式であり、本発明は前記バーチャルマシン42に関連してその完全性を検証することを提案する。
ファイル31は、前記バーチャルマシン42によりロードされるファイルである変換アプレット(CAP)ファイルである。このファイルは、バイトコード検証が方法毎に発生する場合にJava意味で複数の方法を含むことができる。検証される方法M1で方法M2が呼び出されると、検証器はM2がすでに検証されたか、または後で検証されるか考えて、次のバイトコードへ進む。
図1は、方法Mのバイトコードの一例を示す。このバイトコードは、第4行のサブルーチンへのジャンプ(JSR)と、第11行の復帰(RET)とを含む。JSRにより呼び出されたサブルーチンは、B7からRETまで拡張する。
図3を参照すると、バイトコード検証器は、100で方法Mの検証を開始する。102で第1のバイトコードB1が取られる。104で検証される従来のバイトコードであるので、完全性基準(タイプ)の検証が106でレジスタと現在フレームのスタックとの比較によりバイトコード上で行われ、前記現在フレームはバイトコードの関数(タイプの変更、新しい変数等)として更新される。現在フレームは、調べられる位置でのバーチャルマシンのレジスタおよびスタックのタイプ・セットである。それが第1のバイトコードであるので、図4に示すように現在フレームデータ200をメモリに格納することができる。追加データ、例えばワークリスト202が、さらにメモリにバックアップされる。ワークリストは、検証される次のバイトコードのリストを備え、前記リストは、処理される次のバイトコードが第2行のバイトコードであることを示すために‘第2行’に置かれる。ワークリストは、コードのツリー構造探索を可能にし、各コード列が有することができる複数の後者を考慮することでこの経路の全ての場合をカバーできるようにする。コード列の‘複数の後者’は、前記列から到達できる他のコード列を示す。現在フレームのデータ項目と、追加データ項目(例えば、ジャンプターゲットでスタックフレームのワークリスト202、辞書203、およびリスト201)とのセットは、現在コンテキストを構成する。
それから、更新されるRAMでバイトコードB2およびB3に対する検証がコンテキストデータで再生され、特にワークリストは連続的に‘第3行’に進み、その後‘第4行’に進む。
108で検証器がJSRと第4行で出会うと、ワークリストは‘第5行’で更新される。次に、JSRのアドレス、または例えば‘第4行’のような命令ポインタのアドレスが、フレームのスタックに格納される。このアドレスは、ジャンプが起こった場所の‘格納’を可能にする。その後、検証器は110で現在コンテキストをRAM5にバックアップする。図5は、コンテキストのバックアップ実行を示す。とりわけ、現在フレームのポインタp1、追加データ(ワークリスト等)のポインタp2ないしp4、およびコンテキスト終端ポインタp5がメモリ204に格納される。‘スタックフレーム’または‘フレーム’は、ジャンプターゲットで、即ち前記フレームがバックアップされる時に現在フレームに対応する。バックアップされたコンテキストは、データ項目のセットと方法検証に有用なRAMデータ項目の構造204とで構成されている:特にワークリスト202、スタックフレーム200がそうである。
それから新検証コンテキストが112で作成および起動される。図6に示されているように、新フレーム206と追加データ項目207ないし209が対応ポインタp’1ないしp’5でRAMの残余空間内で作成される。この作成中、新フレーム206は、サブルーチンジャンプ時に現在スタックフレーム200に同じく初期化される。その時、レジスタとスタックは従来のコンテキストに適合するが、新コンテキスト内である。
検証アルゴリズムはそれから再開可能で、サブルーチンの開始時にワークリストが‘第7行’に置かれる。
その後、検証アルゴリズムは、バイトコードB7、B8およびB9に適用され、メモリのコンテキストデータが更新される。
検証器が第10行のバイトコードRETと出会うと、対応JSRの後者で単一化が確立され、検証される次の要素が現在コンテキストのワークリストで探される。ワークリストが空いている時、バイトコード検証ソリューションに遍在するサブルーチン画定問題は、この例では、一般検証アルゴリズムにより当然に取扱われる:サブルーチンのエンドを示す、新コンテキストのワークリストは、空いている。
それからサブルーチンは終わり、図7に示すように、先行コンテキストが114で復旧される。
最後に、検証されるいかなるバイトコードもない時に方法Mの検証が116で終了する。
方法Mで、ある方法が呼び出される場合には、現在タイプが呼び出された方法のタイプと合致するか確認するために前記方法のパラメータの検証を行う。この方法の検証は、前述の通り方法Mとは独立に行われる。
本発明の実施において、スタックフレームの辞書が用いられる。スタックフレームはゆっくり変わる場合が多く、それらの多数が同じコンテンツを有する。
図8を参照すると、コードはサブプログラムに対する呼び出しを3つ含む。
B2でサブプログラム呼び出し中に、現在フレームをRAM5の‘辞書’と呼ばれる部分にバックアップすることができる。RAM5に現在コンテキストをバックアップする場合、現在フレームを指すポインタptr1を使用する。
B6でサブプログラム呼び出し中に、現在フレームをバックアップするためにジャンプ時の現在フレームと同じ辞書のスタックフレームと関連するポインタptr1を使用する。
このようなスタックフレームが辞書53に存在しない時は、新しいエントリptr2が辞書で作成される(サブプログラム呼び出しBtの場合)。
一実施例で、サブプログラムが取り出されるにつれて、辞書で(即ち、関連ポインタがいかなるコンテキストバックアップにも使用されない時の)未使用スタックフレームが空けられる。
任意に、セーブされたRAM空間の圧縮および容量を最適化するために頻発する部分スタックフレームエントリで辞書を構築することができる。一例として、辞書でレジスタとスタックとを分離するか、またはレジスタをいくつかのセットに分離することが可能で、特に‘バイトコードタイプ’で可変しないレジスタ(パラメータと共にJavaソースの方法の初めに示される、前記方法の実行中にタイプを変更しない全体変数)が前記方法の各コンテキストが指すセットを構成することができる。
辞書がスタックフレームに限定されないことと、辞書は前記バックアップの大きさを減らすためにコンテンツバックアップ中に使用されるいかなるタイプのエントリも含むことができることが理解される。
サブプログラムを含んでいるバイトコードの一例を示す。 本発明の実行のためのJavaカードアーキテクチャの一例を示す。 本発明の検証方法を示す。 本発明の検証方法の実施においてRAMがどのように変化するかを示す。 本発明の検証方法の実施においてRAMがどのように変化するかを示す。 本発明の検証方法の実施においてRAMがどのように変化するかを示す。 本発明の検証方法の実施においてRAMがどのように変化するかを示す。 RAMの管理を最適化するための辞書の使用を示す。

Claims (16)

  1. 少なくとも1つのプロセッサ(2)と、ランダムアクセスメモリすなわち‘RAM’(5)とを備える携帯用電子装置(1)にロードされる、バーチャルマシン(42)で解釈可能なアプリケーション(31)の検証方法であって、一旦前記アプリケーションが前記装置にロードされて検証される前に前記プロセッサ(2)で実行される処理で前記アプリケーションのコードをチェックするように動作する前記検証方法において、
    −サブプログラムの呼び出し中に、前記RAM(5)に現在検証コンテキスト(200ないし203)をバックアップするバックアップステップと、
    −サブプログラム専用の新検証コンテキスト(206ないし209)を作成および起動する作成および起動ステップと、
    −サブプログラムの終了時、以前にバックアップされた検証コンテキスト(200ないし203)を復旧する復旧ステップと、
    を含んでいることを特徴とする検証方法。
  2. 前記作成および起動ステップ中、前記新検証コンテキスト(206ないし209)が初期化されることを特徴とする請求項1記載の検証方法。
  3. 前記サブプログラムの呼び出しが検出された時、呼び出されたサブプログラムのコードの即時チェックの実行をさらに備えていることを特徴とする請求項1記載の検証方法。
  4. コード区画のための従来のステップを含んでいないことを特徴とする請求項1記載の検証方法。
  5. 電源以外に、前記装置外部のリソースの使用を含んでいないことを特徴とする請求項1記載の検証方法。
  6. 前記コンテキストはアプリケーションコード(31)のツリー構造探索を可能にするワークリスト(202)を備えていることを特徴とする請求項1記載の検証方法。
  7. 前記アプリケーションの一列のコードのチェック中、前記ワークリスト(202)を前記コード列の有力な後者で更新する更新ステップをさらに備えていることを特徴とする請求項1乃至6のいずれかに記載の検証方法。
  8. 前記コンテキストは命令ポインタと現在フレームとを備えていることを特徴とする請求項1記載の検証方法。
  9. 全部または一部の同一フレームが1つのアドレス下で辞書(53)と呼ばれる前記RAM(5)のあるゾーンにバックアップされることを特徴とする請求項1記載の方法。
  10. 前記RAM(5)にバックアップされる新フレームのそれぞれに対して、全部または一部の前記新フレームが前記辞書(53)に存在しているか否かが検証され、存在する場合、関連ポインタ(prt1)が使用され、存在しない場合、前記辞書(53)への記録が行われ、その新しい記録に関連するポインタ(ptr2)が使用されることを特徴とする請求項1乃至9のいずれかに記載の方法。
  11. 前記辞書(53)は、前記フレームの同質部に対応するセクションに分けられることを特徴とする請求項9記載の方法。
  12. 前記辞書(53)の同質部のうちの1つはレジスタ(52)に対応することを特徴とする請求項11記載の検証方法。
  13. 前記辞書(53)の同質部のうちの1つはスタック(51)に対応することを特徴とする請求項11記載の検証方法。
  14. 前記辞書(53)の同質部のうちの1つはバイトコードタイプで可変しないレジスタ(52)に対応することを特徴とする請求項11記載の検証方法。
  15. 少なくともRAM(5)と、請求項1乃至14の何れかに記載の方法を実行するためのプロセッサ(2)とを備えるスマートカード。
  16. RAM(5)と、プロセッサ(2)と、Java(登録商標)バーチャルマシン(42)と、前記バーチャルマシンで解釈可能なコードの一貫性が検証されるべきである少なくとも1つのJavaアプレット(31)とを備え、請求項1乃至14の何れかに記載の方法を実行するスマートカードタイプのJavaカード。
JP2008507033A 2005-04-22 2006-03-14 埋め込みシステム、特にスマートカードにロードされる疑似コードの検証方法 Expired - Fee Related JP5225071B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
FR0551036 2005-04-22
FR0551036A FR2884994A1 (fr) 2005-04-22 2005-04-22 Procede de verification de pseudo-code charge dans un systeme embarque, notamment une carte a puce
PCT/EP2006/060676 WO2006111441A2 (fr) 2005-04-22 2006-03-14 Procede de verification de pseudo-code charge dans un systeme embarque, notamment une carte a puce

Publications (2)

Publication Number Publication Date
JP2008537240A true JP2008537240A (ja) 2008-09-11
JP5225071B2 JP5225071B2 (ja) 2013-07-03

Family

ID=35229912

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008507033A Expired - Fee Related JP5225071B2 (ja) 2005-04-22 2006-03-14 埋め込みシステム、特にスマートカードにロードされる疑似コードの検証方法

Country Status (5)

Country Link
US (1) US7991953B2 (ja)
EP (1) EP1880282A2 (ja)
JP (1) JP5225071B2 (ja)
FR (1) FR2884994A1 (ja)
WO (1) WO2006111441A2 (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150111610A (ko) * 2014-03-26 2015-10-06 단국대학교 산학협력단 스택 기반 소프트웨어 유사도 평가 방법 및 장치

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2938091B1 (fr) * 2008-10-30 2010-12-31 Caps Entpr Procede de realisation d'un appel d'une instance d'une fonction, dispositif, programme d'ordinateur correspondant
US8626919B1 (en) 2008-11-07 2014-01-07 Google Inc. Installer-free applications using native code modules and persistent local storage
US20120159449A1 (en) * 2010-12-15 2012-06-21 International Business Machines Corporation Call Stack Inspection For A Thread Of Execution
EP2782006B1 (en) * 2013-03-19 2018-06-13 Nxp B.V. Process and system for verifying computer program on a smart card
CN106845225A (zh) * 2016-12-20 2017-06-13 北京中电华大电子设计有限责任公司 一种java卡帧的边界检查方法
CN109144775A (zh) * 2018-06-30 2019-01-04 深圳市文鼎创数据科技有限公司 智能卡的应用数据备份恢复方法、电子设备及存储介质
RU2720254C1 (ru) * 2019-12-05 2020-04-28 Акционерное общество "Актив-софт" (АО "Актив-софт") Способ восстановления и обновления программного обеспечения на смарт-карте

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001014958A2 (fr) * 1999-08-23 2001-03-01 Trusted Logic Protocole de gestion, procede de verification et de transformation d'un fragment de programme telecharge et systemes correspondants

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6092147A (en) * 1997-04-15 2000-07-18 Sun Microsystems, Inc. Virtual machine with securely distributed bytecode verification
US7120572B1 (en) * 2000-01-06 2006-10-10 Sun Microsystems, Inc. Memory efficient program pre-execution verifier and method
FR2840084A1 (fr) * 2002-05-27 2003-11-28 Gemplus Card Int Procede de verification de codes pour microcircuits a ressources limitees
US20040153709A1 (en) * 2002-07-03 2004-08-05 Burton-Krahn Noel Morgen Method and apparatus for providing transparent fault tolerance within an application server environment
US20050277432A1 (en) * 2003-11-26 2005-12-15 Viana Rodrigo B D Dynamic display generation for mobile communication devices

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001014958A2 (fr) * 1999-08-23 2001-03-01 Trusted Logic Protocole de gestion, procede de verification et de transformation d'un fragment de programme telecharge et systemes correspondants

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150111610A (ko) * 2014-03-26 2015-10-06 단국대학교 산학협력단 스택 기반 소프트웨어 유사도 평가 방법 및 장치
KR101583133B1 (ko) * 2014-03-26 2016-01-07 단국대학교 산학협력단 스택 기반 소프트웨어 유사도 평가 방법 및 장치

Also Published As

Publication number Publication date
JP5225071B2 (ja) 2013-07-03
FR2884994A1 (fr) 2006-10-27
EP1880282A2 (fr) 2008-01-23
WO2006111441A2 (fr) 2006-10-26
US7991953B2 (en) 2011-08-02
WO2006111441A3 (fr) 2007-12-21
US20090049258A1 (en) 2009-02-19

Similar Documents

Publication Publication Date Title
JP5225071B2 (ja) 埋め込みシステム、特にスマートカードにロードされる疑似コードの検証方法
US7181725B1 (en) Method for verifying safety properties of java byte code programs
US8060812B2 (en) Methods, systems, and computer program products for class verification
US20060064576A1 (en) Boot systems and methods
CN105378663A (zh) 更新引导代码
JP2008502968A (ja) 中間オブジェクト指向言語を備えるソフトウェアをポータブル・デバイスにロードするための方法
US9129137B2 (en) Method, computer program and device for providing security for intermediate programming code for its execution by a virtual machine
US20090165149A1 (en) Method for Making Secure the Execution of an Intermediate Language Software Code in a Portable Device
US8407678B2 (en) Method of array interception using data-flow analysis
JP4378459B2 (ja) 特にスマートカードにおけるダウンロードしたアプリケーションの機密保護化
US6779732B2 (en) Method and apparatus for linking converted applet files
US20210200862A1 (en) Systems and methods for reliably injecting control flow integrity into binaries by tokenizing return addresses
JP6798157B2 (ja) 電子情報記憶媒体、異常検知方法、及び異常検知プログラム
US8458790B2 (en) Defending smart cards against attacks by redundant processing
CN111258617B (zh) 一种电子设备
US11055202B1 (en) Compilation scheme for tagged global variables
US6856994B2 (en) System and method for condensing application software
US20050252977A1 (en) Code verification method for limited resource microcircuits
JP2011164972A (ja) プログラムローダ、データ処理装置、プログラムロード方法及びロードプログラム
US8949868B2 (en) Methods, systems and computer program products for dynamic linkage
JP7247638B2 (ja) 電子情報記憶媒体、icカード、改竄チェック方法、及びプログラム
US7822953B2 (en) Protection of a program against a trap
JP2004287618A (ja) オペレーティングシステム起動制御方法、およびその方法をコンピュータに実行させるプログラム、ならびにオペレーティングシステム起動制御装置
JP2015115052A (ja) マイクロプロセッサ、コンピュータ、異常対応方法、及び異常対策プログラム
JP6175882B2 (ja) 情報記憶媒体、icカード、バイトコード実行方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100720

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20101020

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20101221

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110418

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20110421

A912 Re-examination (zenchi) completed and case transferred to appeal board

Free format text: JAPANESE INTERMEDIATE CODE: A912

Effective date: 20110610

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20111107

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130128

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130312

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20160322

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees