JP4378459B2 - 特にスマートカードにおけるダウンロードしたアプリケーションの機密保護化 - Google Patents

特にスマートカードにおけるダウンロードしたアプリケーションの機密保護化 Download PDF

Info

Publication number
JP4378459B2
JP4378459B2 JP2004518883A JP2004518883A JP4378459B2 JP 4378459 B2 JP4378459 B2 JP 4378459B2 JP 2004518883 A JP2004518883 A JP 2004518883A JP 2004518883 A JP2004518883 A JP 2004518883A JP 4378459 B2 JP4378459 B2 JP 4378459B2
Authority
JP
Japan
Prior art keywords
random number
data
component
converted
function
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.)
Expired - Lifetime
Application number
JP2004518883A
Other languages
English (en)
Other versions
JP2005532622A (ja
Inventor
ジラール ピエール
ゴンザルボ ブノワ
Original Assignee
ジェムアルト エスアー
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 ジェムアルト エスアー filed Critical ジェムアルト エスアー
Publication of JP2005532622A publication Critical patent/JP2005532622A/ja
Application granted granted Critical
Publication of JP4378459B2 publication Critical patent/JP4378459B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07FCOIN-FREED OR LIKE APPARATUS
    • G07F7/00Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus
    • G07F7/08Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means
    • G07F7/10Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means together with a coded signal, e.g. in the form of personal identification information, like personal identification number [PIN] or biometric data
    • G07F7/1008Active credit-cards provided with means to personalise their use, e.g. with PIN-introduction/comparison system
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/3017Runtime instruction translation, e.g. macros
    • G06F9/30178Runtime instruction translation, e.g. macros of compressed or encrypted instructions
    • 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/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline or look ahead
    • G06F9/3802Instruction prefetching
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/34Payment architectures, schemes or protocols characterised by the use of specific devices or networks using cards, e.g. integrated circuit [IC] cards or magnetic cards
    • G06Q20/355Personalisation of cards for use
    • G06Q20/3552Downloading or loading of personalisation data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Business, Economics & Management (AREA)
  • General Engineering & Computer Science (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Accounting & Taxation (AREA)
  • Strategic Management (AREA)
  • General Business, Economics & Management (AREA)
  • Devices For Executing Special Programs (AREA)
  • Executing Machine-Instructions (AREA)
  • Stored Programmes (AREA)

Description

本発明は、スマートカードのようなポータブル電子タイプのデータ処理デバイスにおいて、仮想機械のようなインタプリタの実行環境の機密保護を可能にすることに関する。
特に、本発明はデータのアイテムが命令(opcode)であるかのように、データのアイテムの実行に対する攻撃から保護することに関する。通常の攻撃は、例えば、データのアイテムを記録しているメモリ・ゾーンへの望ましくないジャンプの実行である。その結果、例えば、データ・フィールド内に「攻撃的な」アプレットを挿入するために、すなわち、データのその部分の方向にジャンプを挿入するために、攻撃者が修正しているアプレットのようなダウンロードしたアプリケーション内に疑似コードができる。この場合、命令とデータとを区別できない仮想機械は、データのアイテムを命令であるかのように実行する。
本発明の1つの目的は、仮想機械の動作をこのような攻撃から保護することであり、もっと正確に言うと、特にダウンロードしたアプリケーションの一部を実行している際に、命令とデータとを区別することである。
本発明のデータ処理デバイスは、最初に中間言語でコンパイルされ、そしてそれぞれが、識別子および命令語を含む複数のアプリケーション・コンポーネントからなる少なくとも1つのダウンロードしたアプリケーションを記憶するための記憶手段と、仮想実行手段とを備える。上記デバイスは、さらに下記のものを備えることを特徴とする。
・乱数をダウンロードしたアプリケーションの所定のアプリケーション・コンポーネントに関連づけるための乱数発生器手段、
・所定のアプリケーション・コンポーネントのダウンロード中に、変換された命令語を記憶するために、所定のアプリケーション・コンポーネント内の各命令語および関連する乱数を変換関数に適用するための仮想実行手段が内蔵する第1の変換装置手段、
・この方法で検索した上記コンポーネントの一部を実行する目的で、上記所定のアプリケーション・コンポーネントからなる命令語を検索するために、変換関数の逆関数に所定のアプリケーション・コンポーネントの一部の変換された各命令語および関連する乱数を適用するための仮想実行手段が内蔵する第2の変換装置手段。
例えば、所定のアプリケーション・コンポーネントは、一連の方法を、動作コード・バイトおよびパラメータ・バイトのようなその命令語が、データ処理デバイス内に永久に記録される前に、組織的に変換された命令語に変換されるコンポーネントの一部として含む。そうすることにより、データから命令を区別することができる。例えば、ダウンロードしたアプリケーション内に不正に挿入されたジャンプは、データの探したアイテムにジャンプすることはできない。何故なら、ジャンプの実行は、変換対象であると見なされ、探したジャンプに対応しないデータのアイテムに対して行われるからである。
さらに、コード命令とデータとの間の区別を強化するために、発生器手段は、仮想実行手段が生成した乱数を生成し、第1の変換装置手段は、例えば、仮想実行手段がオブジェクトを生成している場合、仮想実行手段がデータを生成した際に、変換されたデータのアイテムを記憶手段に書き込むために、データの各アイテムおよび関連する乱数を変換関数に適用するために動作する。変形例の場合には、本発明は、原始データ・タイプの関数として、データのいくつかのアイテムを識別する。この変形例の場合には、発生器手段は、各原始データ・タイプに関連する乱数を生成し、第1の変換装置手段は、データが仮想実行手段により生成された場合に、記憶手段に変換されたデータのアイテムを書き込むために、仮想実行手段が生成したデータの各アイテム、およびデータの原始タイプに関連する乱数を変換関数に適用する。
添付の図面を参照しながら本発明の好適な実施形態の下記の説明を読めば、本発明の他の特徴および利点をよりよく理解することができるだろう。
ホスト端末2のようなホスト・プラットフォームの読取装置21内に取り外し可能に収容されるポータブル電子オブジェクトのような、「マイクロコントローラ・カード」または「集積回路」カードとも呼ばれるスマートカード1について以下に説明する。スマートカード1は、任意の周知のタイプの接点型または無接点型スマートカードであり、クレジットカードであっても、テレホンカードであっても、追加カードであっても、取り外し可能な電話加入者識別モジュール(SIM)であっても、ゲームカード等であってもよい。
ホスト端末2は、パーソナル・コンピュータ(PC)であっても、銀行端末であっても、POS端末であっても、またはそのほかに、携帯電話端末であっても、または携帯情報端末(PDA)または電子パースのようなポータブル電子オブジェクトであってもよい。
データ処理デバイスとして、スマートカード1内のマイクロコントローラは、マイクロプロセッサ3と、読み出し専用メモリ(ROM)タイプの再書込み不能メモリ4と、電気的に消去可能なプログラマブル読み出し専用メモリ(EEPROM)タイプの不揮発性メモリ5と、ランダム・アクセス・メモリ(RAM)6とを備える。スマートカード1内のすべてのコンポーネント3乃至6は、カード内のバス7、および接点型または無接点型リンクLIを通して、ホスト端末2内の読取装置21に接続している通信インタフェースにより相互に接続している。
メモリ4のスペース40および41は、それぞれ、オペレーティング・システム(OS)のネイティブ・コード内、およびオペレーティング・システムが使用する仮想実行手段としての仮想機械(VM)の疑似コード(バイトコード)内に命令を含む。疑似コードは、例えば、Java(登録商標)カード言語のようなオブジェクト指向タイプのハイレベル・ソース言語でプログラムをコンパイルした結果得られたものである。例えば、コンパイラを含むサーバ(図示せず)は、Java(登録商標)カード・ソース言語プログラムを、中間言語、すなわち、複数のバイトでできていて「バイトコード」と呼ばれる命令語であり、スマートカード1内のインタプリタとしての、仮想機械VMが直ちに実行することができる「バイトコード」と呼ばれる疑似コードでコンパイルされたプログラムに変換する。コンパイルされたプログラムは、本発明の意味でスマートカード内にダウンロードされた「アプレット」と呼ばれるアプリケーション(AP)からなる。また、メモリ4も、カード内に少なくとも認証および通信アプリケーションを含む。
不揮発性メモリのスペース50および51は、それぞれ、オペレーティング・システムOSに関連していて、ネイティブ・コードによりアクセスすることができるデータ、および仮想機械VMに関連していて、疑似コードによりアクセスすることができるデータ、および疑似コード、およびカード内にダウンロードしたアプリケーションのデータを含む。メモリ5は、また、スマートカードの所有者に関連する個人データも含む。
RAMタイプのメモリ6は、本質的に、スマートカード1の外部の世界、特にホスト端末TEと交換したデータを含む。
特に、メモリ6は、仮想機械VMにより実行するように、ホスト端末2およびリンクLIを通して、サーバからダウンロードしたアプレットまたはアプリケーションの一部のような1つまたはそれ以上のアプリケーションAPを収容するための固定サイズの所定のスペースを含む。所定のスペースは、3つのメモリ・スペース60、61および62に再分割される。
スペース60は、主としてダウンロードしたアプリケーションAPのような機械データを収容するための、またそれを本発明により仮想機械VMのデータ用に予約されている、メモリ5のメモリ・スペース51内に書き込まれる、変換されたアプリケーションに変換するためのバッファ・メモリとしての働きをする。
他の2つのメモリ・スペース61および62は、局所変数VLを含むアプリケーション内で呼び出した方法の第2の部分、および可変サイズを有し、呼び出した方法のオペランドOPを含む第2の部分のために予約される。プロセッサ3の制御の下でメモリ6内での結果として得られるスタックの一番上に位置する方法を呼び出すと、各フレームは、他の方法のフレームを含むスタックの一番上にスタックされる。上記方法は、次の方法を呼び出す先行する方法を順次呼び出し、スタックの一番上から方法を取り外し、除去することにより、次の方法だけを先行する方法に戻すことができる。それ故、スタックの一番上の方法だけが能動状態になる。
例えば、スタックの幅は1バイトに等しい。すなわち、1つの疑似コードの長さに等しい。
従来技術の場合には、メモリ・スペース61内の1つまたはそれ以上の局所変数VLは、ある方法の実施の際に、そして上記方法が実行される前に宣言される。局所変数は、その数は修正できないが、この方法の実行中その値を修正することができるこの方法を実行する働きをする。一例として以下に説明するように、局所変数は、仮想機械VM内で上記オブジェクトにアクセスするために、その方法が呼び出されるオブジェクトへの参照であってもよいし、またはそのほかに、方法のパラメータまたは他の局所変数であってもよい。
また、従来技術の場合には、メモリ・スペース62内のオペランドは、次の動作を実行するために仮想機械VMが使用する、特に呼び出した方法を呼び出すための引数として使用される値である。ある方法のオペランドは、次の方法の実施の際に次の方法の局所変数となることができ、逆に、ある方法の結果は、上記の直前の方法に戻った場合に、直前の方法のオペランドとなることができる。
アプリケーション(アプレット)は、それぞれが、一連のバイト(バイトコード)を含む、複数のソフトウェア・アプリケーション・コンポーネントCPにコンパイルされ、構造化されたプログラムの形をしている。
各バイトは、命令(IN)自身からなる命令コード(opcode)、またはそのほかに、命令のパラメータ(PA)または「オペランド」のうちの1つを運ぶ。それ故、命令自身は、そうしたい場合には、オプションとしての1つまたはそれ以上のパラメータ・バイトPAが後に続く、命令バイトIN(opcode)からなる。
ダウンロードされ、一例として以下に説明するアプリケーションは、cap.fileタイプのコンパイルされたファイルの形をしていて、特にダウンロードされるアプリケーションAPのすべての方法を含む方法のコンポーネントCP1を含む。各方法は、固定長を有し、それぞれが命令バイトINおよび所定の数のパラメータバイトPAを有する複数の連続グループを含む。アプリケーションAPのもう1つのコンポーネントCP2は、アプリケーションの分類のすべての静的フィールドを含む静的フィールド・コンポーネントであってもよい。静的フィールドは、任意の例から独立している分類に属するフィールドであり、分類のオブジェクトの例ではなく、それ故、分類のすべての例により共有される。静的フィールドは、分類のすべてのオブジェクトに関連する属性に似ている。
本発明によれば、また図1に示すように、スマートカード1は、さらに乱数発生器30および2つの論理変換装置42および43を含む。
図の実施形態の場合には、発生器30は、ハードウェアの形で実施されるか、またはスマートカードのマイクロプロセッサ3に関連して実施される。発生器は、乱数NAを生成するために、バス7を通して、メモリ・スペース40内の仮想機械VMと要求および応答を交換する。例えば、発生器30は、上記アプリケーションをロードする際に、乱数をアプリケーションAP内の所定のアプリケーション・コンポーネントと関連づけるか、またはそのほかに、以下に説明するように、特にオブジェクトを生成するためにデータと関連づける。
もう1つの実施形態の場合には、乱数発生器は、仮想機械VM、すなわちメモリ・スペース40内にソフトウェアの形で内蔵されている。
乱数発生器30が乱数NAを生成する度に、生成した乱数NAが、仮想機械VMからの制御の下で、RAM6内の機械データ・スペース60に内蔵されているレジスタRG内に書き込まれる。仮想機械は、レジスタRGのところで、メモリ6内のポインタの値を、それと乱数NAが関連づけられるコンポーネントCPのヘッダに内蔵されている識別子IDに対応させる。識別子IDとレジスタRGとの間の対応は、EEPROM5内の仮想機械VMに割り当てられたメモリ・スペース51内に書き込まれる。
変換装置42および43は、ROM4のメモリ・スペース41内で、ソフトウェアの形で事前に実行され、それ故仮想機械VMに内蔵される。
第1の変換装置42は、所定のアプリケーション・コンポーネントCP1を、所定のコンポーネントCP1および変換関数FTに適用される、それと関連する乱数NA1からの、変換されたコンポーネントCPT1=FT(CP1,NA1)に変換する。例えば、このような変換は、上記コンポーネントをRAM6内の機械データ・メモリ・スペース60にロードする際に、所定のコンポーネントCP1のすべてのバイトOC1上で、またはオブジェクトを生成している際に、オペランド・スペース62内に、オブジェクト参照REFのようなオペランドを書き込む際に、各オペランド上でバイト単位で行われる。
逆に、ある方法を実行する際に、またはオブジェクトのオペランドをスペース62から読み出す際に、変換FTの逆であり、変換装置43に内蔵されている変換FT−1は、変換されたコンポーネントの方法の変換されたバイトOCT1、または変換されたオブジェクト参照REFTのような変換されたオペランドを、変換されたバイトOCTまたは変換された参照REFTおよび関連する乱数NA1、NADを逆関数FT−1に適用することにより、コンポーネントCPの最初のバイトOC=FT−1(OCT,NA1)、または参照REF=FT−1(REFT,NAD)に変換する。
好適な実施形態の場合には、変換関数FTは排他的OR(XOR)関数であり、それ故、対応する逆関数FT−1も排他的OR関数である。
他の変形例の場合には、本発明を実施するために、多数の他の可逆的論理変換関数FTを選択することができる。例えば、関数FTは、バイトおよび乱数の乗算であってもよいし、その場合、関数FT−1は、対応する除算である。または関数FTは、バイトおよび乱数の加算であってもよいし、その場合、関数FT−1は対応する減算である。または実際には、関数FTは、バイトOC内での一方の方向、右または左への多数のビットのシフトであってもよいし、シフトを決定するビットの数は、そのバイトのビットの数より小さい乱数NAに等しく、この場合、逆関数FT−1は、変換されたバイトOCT内のビットNAの数だけの左方または右方へのシフトである。
もっと一般的に言うと、変換装置42および43は、単に1つのバイトを処理する代わりに、例えば、完全な命令に対応するこのような語に変換するために、複数のバイトからなる一定の長さの命令語を処理することができる。
図2について説明すると、スマートカード1へのアプリケーションAPのダウンロードは、本質的に、ステップC1乃至C8を含む。従来、複数のソフトウェア・コンポーネントCPからなるアプリケーションAPは、RAM6内の機械データ・メモリ・スペース60のレジスタRG1内に順次書き込まれる。次のステップC2乃至C7は、アプリケーションAPがダウンロードされている間に、ステップC7中にその変換されたコンポーネントが、RAM6からEEPROM5に転送されるまで順次行われる。
本発明の変換は、コンポーネントCP1のヘッダ内の識別子ID1が示すように、ダウンロードされるアプリケーションAP内の、少なくとも1つの所定のコンポーネントCP1だけに適用されるものと仮定する。仮想機械VMは、仮想機械がコンポーネントCP1の識別子ID1を検出した場合には、ステップC3に示すように、乱数発生器30をトリガするために、ステップC2において、アプリケーションAPの各コンポーネントCPのスタート時に、識別子IDを検出する。ステップC4において、発生器30は、ROM6のスペース60内のレジスタRG2に書き込まれる乱数NA1を生成し、仮想機械VMは、識別子ID1を、レジスタRG2に関連するポインタ値に関連づけ、一方、この対応をスペース51に書き込む。
ステップC5において、ロード中のコンポーネントCP1内の各バイトOC1に対して、仮想機械VMは、バイトOC1をメモリ・スペース60のバッファ・レジスタRG3内に書き込み、変換装置42は、レジスタRG3から読み出したバイトOC1、およびレジスタRG2から読み出した乱数NA1を、排他的OR関数のような変換関数FTに適用し、その結果OCT1=FT(OC1,NA1)をスペース60のレジスタRG4内に書き込み、最終的には、仮想機械VMは、レジスタRG1内のバイトOC1を、レジスタRG4から読み出した対応する変換されたバイトOCT1により置き換える。すべてのバイトOC1が、バイトOCT1に変換されると、レジスタRG1は、ステップC6に示すように、変換されたコンポーネントCPT1=FT(CP1,NA1)を含む。次に、変換されたコンポーネントCPT1は、レジスタRG1からEEPROM2のスペース51に転送される。
ステップC2乃至C7は、ダウンロードしたアプリケーションAPの変換対象の任意の他のコンポーネントCP2に対して反復して行われる。発生器30は、それをコンポーネントCP2に関連づけ、コンポーネントCP2の各バイトOC2を、変換されたバイトOCT2=FT(OC2,NA2)に変換するために、それをメモリ・スペース60内の他のレジスタ内に書き込む乱数NA2を生成する。例えば、コンポーネントCP2は、アプリケーションAPの分類の静的フィールドを含む静的フィールド・コンポーネントである。
変形例の場合には、変換関数FTを1つのバイトに適用する代わりに、変換関数が所定の数のバイトに適用される。例えば、コンポーネントCP1内においては、各命令が、2つのパラメータ・バイトPAが後に続く1つの命令バイトINを含んでいる場合には、コンポーネントCP1内の各語M1=(IN,PA,PA)は、語M1およびコンポーネントCP1に関連する乱数NA1を変換関数FTに適用することにより得られる変換された語MT1=FT(M1,NA1)に変換される。
それ故、仮想機械VMは、コンポーネントCP1、CP2を、スマートカード1内にロードし、一方それをランダムにマスクする。
変形例の場合には、アプリケーションまたはそのコンポーネントのサイズが比較的大きく、RAM内に全部ロードすることができない場合には、アプリケーションはパケットのような一定のサイズの複数の部分に再分割される。ロード・ステップC4乃至C7は、アプリケーションの複数の部分を順次変換するために、各部分に関連している。1つの部分が2つの連鎖状のコンポーネントの間に遷移を構成している場合には、コンポーネントの終わりまたは始めのところのその部分の各断片がステップC4乃至C7により別々に認識され、処理される。各部分は、ロードされ変換され、最終的には次の部分をRAM6内にダウンロードする前に、EEPROMメモリ5のスペース51内に転送される。
本発明によれば、例えば、図3に示すように、内部アプリケーション内で命令を実行している間に、オブジェクトを生成すると、そのオブジェクトの生成に関連するデータが変換され、特に、生成されたオブジェクトへの少なくとも1つの参照REFが、変換された参照REFTを逆に変換しなくても、変換された参照REFTに変換される。
図3の場合には、図4のアルゴリズムによりステップO2において、オブジェクトOBを生成するために、後に2つのパラメータ・バイト「indexbytes」が続く、命令コード・バイト(opcode)内の第1の命令「new」が最初に実行される。これより先に、ステップO1において、乱数がデータのあるアイテムと関連づけられていない場合には、仮想機械VMは、それをEEPROMメモリ5の機械データ・スペース51が内蔵するレジスタRGD内に書き込むために、発生器30において乱数NADの生成をトリガする。もっと一般的に言うと、この実施形態の場合には、仮想機械VMにより、データのアイテムがRAMスペース61または62に書き込まれる度に、乱数NADは上記データを変換する働きをする。
ステップO2に戻って説明すると、命令「new」に関連するパラメータは、仮想機械VMが生成したオブジェクトOBのために必要なスペースをメモリ5内に予約し、生成するオブジェクトに対するすべての情報を発見するための働きをする。パラメータは、仮想機械が内蔵する「一定のプール」フィールド内に含まれる表から、情報を検索することができるようにする索引を表す。仮想機械内のオブジェクト形成装置は、生成したオブジェクトの記述者に対するアドレスとしての働きをする参照REFを返送する。
本発明によれば、参照REFは、RAM6内のオペランド・スペース62のスタックの一番上に書き込まれる参照REFTに変換される。それ故、次のステップO3においては、仮想機械VMは、変換された参照REFT=FT(REF,NAD)を生成するために、生成したオブジェクトの参照REF、およびデータに関連する乱数NADを変換装置42内の変換関数FTに適用する。
例を挙げて説明すると、次のステップO4、O5およびO6は、変換された参照REFTの操作に関連するもので、仮想機械VMによるRAM6内での参照REFの操作に関連するものではない。ステップO4において、次の命令「dup」は、オペランドのスタックに参照REFTのコピーを追加することにより、メモリ・スペース62内で、変換された参照REFTをコピーする。このコピーは、同じ分類内で生成したばかりのオブジェクトOBと同じ他のオブジェクトの生成に関連する。次のステップO5において、図3に示すように2つのパラメータを有する命令「invokespecial」が、変換された参照REFTを仮想機械VM内で生成したオブジェクトに関連づけるために、生成したオブジェクトOBの形成装置を呼び出す。次に、ステップO6において、命令「astore」が、例えば、上記オブジェクトに適用することができる方法を呼び出す目的で、オブジェクトを操作するために、残りの変換された参照REFTをオペランド・メモリ・スペース62からRAM6内の局所変数メモリ・スペース61に転送する。
それ故、本発明によれば、あるオブジェクトへの任意の参照REFが、乱数NADにより、その変換された形REFTでRAM6内に記憶される。もっと一般的に説明すると、この変換は、オブジェクトのすべてのフィールド、およびデータのすべてのアイテムに適用することができる。
変形例の場合には、乱数発生器30は、各原始データ・タイプに関連する乱数を生成する。例えば、あるオブジェクトを生成している場合には、仮想機械VMは、下記の変換の中の1つまたはそれ以上を、整数タイプのデータINT、文字タイプのCHAR、ブール・タイプのBOOL(真/偽)、参照タイプのREF、およびすべての別のタイプのデータに対するD(浮動(float)、倍(double)等)に適用する。
INTT=FT(INT,NAI);
CHART=FT(CHAR,NAC);
BOOLT=FT(BOOL,NAB);
REFT=FT(REF,NAR);および
DT=FT(D,NAD)
これらの関係において、変換されたデータINTT、CHART、BOOLT、REFTおよびDTは、それぞれ、データの対応する最初のアイテム、および各乱数NAI、NAC、NAB、NARおよびNADを適用することにより、変換装置42での変換FTによるものである。それ故、アプリケーションが列挙される度に、原始データの各アイテムINT、CHAR、BOOL、Ref、D、および関連する乱数NAI、NAC、NAB、NAR、NADが、変換されたデータINTT、CHART、BOOLT、REFT、DTのアイテムをRAM6内に書き込むために、変換装置42により、変換関数FTに適用される。
このことは、望ましくない動作が、いくつかの原始タイプのデータ上で実行しようとするすべての攻撃を防止するのに役立つ。攻撃者は、データのアイテムの記録方法を予測することができないので、上記攻撃者が攻撃を行うのが防止される。例えば、従来技術により、スペース62内で2つの変換していない参照を追加すると、データのアイテム、特に感知データのアイテムにアクセスすることができる。本発明の場合には、2つの変換された参照を追加すると、2つの変換していない最初の参照を追加した場合とは全く異なる結果になり、先験的に、完全にランダムな結果になる。命令も仮想機械でタイプされるので、2つの変換された参照REFTの整数タイプを追加しようとすると、必ず得られた結果と参照タイプの追加オペレータにより入手した2つの最初の参照の合計との間の違いがさらに顕著なものになる。
例を挙げて説明すると、ダウンロードしたアプリケーションAPのある方法を実行するために、スペース51のレジスタRGI内に最初に書き込まれた乱数NAIと関連する整数タイプのデータINTに下記のように参照が行われる。その間、また、操作したデータが、任意の原始データ、CHAR、BOOL、REF、およびDのデータである場合もあるし、乱数NAIが、各乱数、NAC、NAB、NAR、およびNADである場合もあることに気が付く。
図5および図6を参照しながら、例えば、そのバイトがステップC5(図2)において、乱数NA1の関数としてすでに変換されているコンポーネントCP1内に3つの命令を含むある方法に関連するアプリケーション・コンポーネントCP1の一部に対するスマートカードC1内でのダウンロードされたアプリケーションAPの実行について説明する。図5の場合には、メモリ・スペース51内に記憶しているアプリケーションの方法は、6つの変換されたバイトOCTを含む。最初の2つの変換されたバイトは、変換された命令コード、および局所変数メモリ・スペース61内の変換された形、VLT1=FT(VL1,NA1)で記録されている第1の局所変数VL1に関連する整数タイプのロード命令「iload 1」に対応する変換された命令のパラメータを含む。同様に、図5の方法の第3および第4の変換されたバイトOCTは、メモリ・スペース61内に、変換された形、VLT2=FT(VL2,NAI)で記録されている、第2の変数VL2に関連する整数タイプのロード命令「iload 2」に対応する。この方法の第5のバイトは、整数タイプの2つの変数VL1およびVL2の追加を示す、命令「iadd」の変換されたバイトOCTである。
図6に示すように、図5に示す5つの変換されたバイトOCTを含む追加方法の実行は、本質的に、ステップE1乃至E10を含む。
最初に、第1の2つのロード命令を実行するために、仮想機械VMは、ステップE1において、メモリ・スペース60のレジスタRG2から、アプリケーションAPのロード中に、発生器30が最初に生成した乱数NA1を読み出す。
ステップE2において、「iload 1」命令の変換された各バイトが、乱数NA1と一緒に、最初の命令「iload 1」を生成する、変換装置43内の逆関数FT−1に適用される。次に、仮想機械VMは、RAM6のスペース62内のオペランドのスタックの一番上の変換された変数、VLT1=FT(VL1,NAI)をロードすることにより、「iload 1」命令を実行する。
次に、最初に、変換装置43から最初の命令「iload 2」を検索し、次に、変換された変数、VLT2=FT(VL2,NAD)をスペース62内のスタック内において前に変換された変数VLT1に転送するために、命令「iload 2」を実行することにより、ステップE2およびE3で先行する命令「iload 1」を処理したのと同じ方法で、ステップE4およびE5で命令「iload 2」が処理される。
ステップE6は、図5の方法で乱数NA1および第5の変換されたバイトを変換装置43内の逆関数FTに適用することにより、第3の命令「iadd」を検索するための先行するステップE2およびE4に類似のステップである。
追加動作「iadd」は、最初の局所変数上でしか実行することができないので、最初に、メモリ・スペース51内のレジスタRGIから乱数NAIを読み出すことにより、または、変形例の場合には、メモリ・スペース51のレジスタRGD内のデータのすべての原始タイプに関連する乱数NADを読み出すことにより、追加する2つの局所変数、VL1およびVL2が検索される。次に、仮想機械は、スペース62内のスタックの一番上の変換された局所変数、VL2およびVLT1を読み出し、ステップE8において、仮想機械VM内の算術論理ユニットの2つのレジスタ内に書き込まれる最初の局所変数VL1およびVL2を検索するために、変換装置43内の逆関数FT−1にそれぞれを適用する。算術ユニットは、ステップE9において、合計SOMを形成する目的で、局所変数VL1およびVL2を追加するために、命令「iadd」を実行する。変換装置42は、それに乱数NAIを適用することにより、または変形例の場合には、ステップE10で変換された合計SOMTを生成する、変換装置42内の変換関数FTにそれを適用することにより合計SOMを変換する。最後に、変換された合計SOMTは、RAM6のメモリ・スペース62内のスタックの一番上に位置する。
本発明のスマートカード・タイプのデータ処理デバイスのブロック図である。 本発明のデータ処理デバイスにアプリケーションをロードするためのアルゴリズムである。 特にオブジェクトを生成するための一連の命令を示す図である。 図3の命令を使用するオブジェクトを生成するためのアルゴリズムである。 ロードしたアプリケーションにより2つの局所変数の追加を行う方法の変換された命令の図である。 図5の変換された命令により上記方法を実行するためのアルゴリズムである。

Claims (11)

  1. 最初に中間言語でコンパイルされ、それぞれが識別子(ID1)および命令語(OC1)を含む複数のアプリケーション・コンポーネント(CP1)からなる少なくとも1つのダウンロードしたアプリケーション(AP)を記憶するための記憶手段(6)と、中間言語仮想実行手段(VM,4,5)とを備えるデータ処理デバイス(1)であって、
    ・乱数(NA1)を、前記ダウンロードしたアプリケーション(AP)の所定のアプリケーション・コンポーネント(CP1)と関連づけるための乱数発生器手段(30)と、
    ・前記所定のアプリケーション・コンポーネントのダウンロード中、変換された命令語(OCT1)を記憶するために、所定のアプリケーション・コンポーネント(CP1)内の前記各命令語(OC1)、および関連する乱数(NA1)を変換関数(FT)に適用するための前記仮想実行手段が内蔵する第1の変換装置手段(42)と、
    ・この方法で検索した前記コンポーネントの一部を実行する目的で、前記所定のアプリケーション・コンポーネントからなる前記命令語(OC1)を検索するために、前記変換関数(FT)の逆関数(FT−1)に、前記所定のアプリケーション・コンポーネントの一部の各変換された命令語(OCT1)、および前記関連する乱数(NA1)を適用するために、前記仮想実行手段が内蔵する第2の変換装置手段(43)と、をさらに備え
    前記乱数発生器手段(30)は、各原始データ・タイプ毎に関連する乱数を生成し、データが前記仮想実行手段(VM)により生成される際には、前記第1の変換装置手段(42)は、前記仮想実行手段(VM)によって生成された前記データ・タイプ毎のデータと前記関連する乱数とを前記変換関数(FT)に適用し、変換されたデータのアイテムを前記記憶手段(6)に書き込むことを特徴とするデータ処理デバイス。
  2. 前記命令語(OC1)が、命令コード・バイト(IN)およびパラメータ・バイト(PA)であることを特徴とする請求項1に記載のデバイス。
  3. 各命令語が、一定の長さを有し、1つの完全な命令に対応することを特徴とする請求項1に記載のデバイス。
  4. 前記ダウンロードしたアプリケーション(AP)を記憶するためのものであるが、変換された命令語(OCT1)を含む所定のアプリケーション・コンポーネントを含む第2の記憶手段(5)をさらに備えることを特徴とする請求項1乃至3のいずれかに記載のデバイス。
  5. 前記乱数発生器手段(30)が、前記仮想実行手段(VM)が生成した乱数(NAD)を生成し、前記第1の変換装置手段(42)が、データが前記仮想実行手段(VM)により生成された場合に、前記記憶手段(6)内の変換されたデータ(REFT)のアイテムを書き込むために、データの各アイテム(REF)および前記関連する乱数(NAD)を前記変換関数(FT)に適用することを特徴とする請求項1乃至4のいずれかに記載のデバイス。
  6. 前記乱数発生器手段(30)が、各コンポーネント内の前記命令語が、前記コンポーネントに関連する前記乱数を含む前記変換関数(FT)に適用されるように、各乱数(NA1)を異なるタイプのコンポーネント(CP1)の識別子(ID1)に関連づけることを特徴とする請求項1乃至のいずれかに記載のデバイス。
  7. 前記変換関数(FT)および前記逆関数(FT−1)が、排他的OR関数であることを特徴とする請求項1乃至のいずれかに記載のデバイス。
  8. 前記乱数発生器手段(30)が、前記デバイスのプロセッサ(3)に内蔵されているか、それに関連していることを特徴とする請求項1乃至のいずれかに記載のデバイス。
  9. 前記乱数発生器手段が、前記仮想実行手段(VM)に内蔵されていることを特徴とする請求項1乃至のいずれかに記載のデバイス。
  10. 前記記憶手段が、前記デバイス(1)の外部の世界と交換したデータを含むランダム・アクセス・メモリ(6)からなることを特徴とする請求項1乃至のいずれかに記載のデバイス。
  11. スマートカード(1)のようなポータブル電子タイプであることを特徴とする請求項1乃至10のいずれかに記載のデバイス。
JP2004518883A 2002-07-08 2003-07-07 特にスマートカードにおけるダウンロードしたアプリケーションの機密保護化 Expired - Lifetime JP4378459B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
FR0208643A FR2841997B1 (fr) 2002-07-08 2002-07-08 Securisation d'application telechargee notamment dans une carte a puce
PCT/FR2003/002107 WO2004006088A2 (fr) 2002-07-08 2003-07-07 Securisation d'application telechargee notamment dans une carte a puce

Publications (2)

Publication Number Publication Date
JP2005532622A JP2005532622A (ja) 2005-10-27
JP4378459B2 true JP4378459B2 (ja) 2009-12-09

Family

ID=29725301

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004518883A Expired - Lifetime JP4378459B2 (ja) 2002-07-08 2003-07-07 特にスマートカードにおけるダウンロードしたアプリケーションの機密保護化

Country Status (6)

Country Link
US (1) US7168625B2 (ja)
EP (1) EP1522012A2 (ja)
JP (1) JP4378459B2 (ja)
AU (1) AU2003260670A1 (ja)
FR (1) FR2841997B1 (ja)
WO (1) WO2004006088A2 (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4744106B2 (ja) * 2003-08-06 2011-08-10 パナソニック株式会社 セキュアデバイス、情報処理端末、通信システム及び通信方法
JP2006119901A (ja) * 2004-10-21 2006-05-11 Toshiba Corp 携帯可能電子装置および携帯可能電子装置のアプリケーション更新方法
FR2881007B1 (fr) * 2005-01-19 2007-02-23 Gemplus Sa Etablissement d'une communication entre dispositifs sans contact
JP3944216B2 (ja) * 2005-03-11 2007-07-11 株式会社エヌ・ティ・ティ・ドコモ 認証装置、携帯端末、及び、認証方法
JP4575350B2 (ja) * 2006-02-14 2010-11-04 レノボ・シンガポール・プライベート・リミテッド コンピューター・システム内で悪意あるソフトウェアの実行を防止するための方法
GB0621656D0 (en) 2006-10-31 2006-12-06 Hewlett Packard Development Co Data file transformation
JP5041980B2 (ja) * 2007-11-16 2012-10-03 ルネサスエレクトロニクス株式会社 データ処理回路及び通信携帯端末装置
US8762736B1 (en) * 2008-04-04 2014-06-24 Massachusetts Institute Of Technology One-time programs
EP2354128A1 (en) 2010-02-10 2011-08-10 Sandoz Ag Method for the preparation of rivaroxaban
JP2015032201A (ja) * 2013-08-05 2015-02-16 大日本印刷株式会社 情報記憶媒体、バイトコード実行処理プログラム、及びバイトコード実行方法
JP6248518B2 (ja) * 2013-10-01 2017-12-20 大日本印刷株式会社 情報記憶媒体、情報書き込み方法、及び書き込み処理プログラム
JP6203028B2 (ja) * 2013-12-13 2017-09-27 Kddi株式会社 疑似乱数生成装置及び方法、並びにプログラム難読化装置及び方法
JP7067892B2 (ja) * 2016-10-24 2022-05-16 株式会社アドバンス オーナーチェックを行う端末
FR3059119B1 (fr) * 2016-11-21 2018-11-23 Safran Identity & Security Procede de protection d'un dispositif electronique executant un programme contre des attaques par injection de faute et par confusion de type.

Family Cites Families (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE19629856A1 (de) * 1996-07-24 1998-01-29 Ibm Verfahren und System zum sicheren Übertragen und Speichern von schützbaren Informationen
US6357665B1 (en) * 1998-01-22 2002-03-19 Mondex International Limited Configuration of IC card
EP1050028A1 (en) * 1998-01-22 2000-11-08 Mondex International Limited Codelets
AU2289999A (en) * 1998-02-06 1999-08-23 Mondex International Limited Configuration of ic card
EP0949595A3 (en) * 1998-03-30 2001-09-26 Citicorp Development Center, Inc. Method and system for managing applications for a multi-function smartcard

Also Published As

Publication number Publication date
AU2003260670A1 (en) 2004-01-23
US7168625B2 (en) 2007-01-30
WO2004006088A3 (fr) 2004-04-08
FR2841997A1 (fr) 2004-01-09
AU2003260670A8 (en) 2004-01-23
WO2004006088A2 (fr) 2004-01-15
JP2005532622A (ja) 2005-10-27
FR2841997B1 (fr) 2005-11-11
EP1522012A2 (fr) 2005-04-13
US20050218234A1 (en) 2005-10-06

Similar Documents

Publication Publication Date Title
KR100329063B1 (ko) 마이크로컨트롤러를 이용한 고급 프로그래밍 언어 사용
Leroy Bytecode verification on Java smart cards
KR100713740B1 (ko) 자원-제약 장치를 위한 객체지향 명령어 세트
US7444631B2 (en) Token-based linking
EP0964370B1 (en) Method and device for loading instruction codes to a memory and linking said instruction codes
JP4378459B2 (ja) 特にスマートカードにおけるダウンロードしたアプリケーションの機密保護化
US7316007B2 (en) Optimization of n-base typed arithmetic expressions
JPH11327916A (ja) コンパイル済コ―ドにおけるダイナミッククラス初期化チェックのコスト低減技術
AU716558B2 (en) Portable, secure transaction system for programmable, intelligent devices
JP2005501334A (ja) Javaコンピューティング環境におけるJavaマクロインストラクションの生成のためのフレームワーク
CN113760193B (zh) 用于资源受限制装置的数据读写方法、装置及指令集
Deville et al. Building an" impossible" verifier on a java card
US6804681B2 (en) Identifying and tracking object references in a java programming environment
JP3515417B2 (ja) 非持続メモリ内にオブジェクトを作成する方法および装置、ならびにオブジェクトへのアクセス可能性を維持する方法
EP1481320B1 (en) Two tier clusters for representation of objects in java programming environments
US7065747B2 (en) Identifying references to objects during bytecode verification
WO2003001371A2 (en) Storing and retrieving of field descriptors in java computing environments
CN111966443B (zh) 一种智能卡及其工作方法
US20220108003A1 (en) Apparatus and method for kernel runtime randomization
Markantonakis Java card technology and security
CN118821112A (zh) 参数保护方法、装置、设备及存储介质
Choi et al. A novel buffer cache scheme using java card object with high locality for efficient java card applications
Deville et al. Building an£

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20080930

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20081224

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20090113

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20090217

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090617

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20090625

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20090714

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A711 Notification of change in applicant

Free format text: JAPANESE INTERMEDIATE CODE: A712

Effective date: 20090817

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090813

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

Free format text: PAYMENT UNTIL: 20121002

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150