JP5225071B2 - 埋め込みシステム、特にスマートカードにロードされる疑似コードの検証方法 - Google Patents
埋め込みシステム、特にスマートカードにロードされる疑似コードの検証方法 Download PDFInfo
- Publication number
- JP5225071B2 JP5225071B2 JP2008507033A JP2008507033A JP5225071B2 JP 5225071 B2 JP5225071 B2 JP 5225071B2 JP 2008507033 A JP2008507033 A JP 2008507033A JP 2008507033 A JP2008507033 A JP 2008507033A JP 5225071 B2 JP5225071 B2 JP 5225071B2
- Authority
- JP
- Japan
- Prior art keywords
- verification
- code
- ram
- dictionary
- context
- 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 - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44589—Program 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)
- Storage Device Security (AREA)
- Test And Diagnosis Of Digital Computers (AREA)
- Debugging And Monitoring (AREA)
Description
本発明は、これに限らないが、より詳しくは、スマートカードにロードされるバイトコード(疑似コード)タイプのインタープリタ型言語のアプリケーションの分野に関する。
バイトコードの列毎において、完全性検証は、多くの情報が格納されることを必要とする。ただジャンプターゲットのために、この格納を遂行することが十分であることが明らかになった。さらに、アルゴリズムは、命令ポインタまたは‘プログラムカウンタ’(現在の検証位置でのコード列上のポインタ)のような付加情報、ワークリスト(その後に検証されるコード列のリスト)、および現在フレーム(装置のRAMに記録される、調べられる位置でのレジスタのタイプ及びスタックのタイプのセット)を格納する必要がある。
カードを媒介とするソリューションには、特に、過度なRAMの占有のような欠点がある。
特定の実施において、前記方法は、前記サブプログラムに対する呼び出しが検出された時、呼び出されたサブプログラムのコードの即時チェックの実行をさらに備えている。
より詳しくは、前記方法はコード区画のための従来のステップを含んでいない。
1つの実施において、前記方法は、電源以外に、前記装置外部のリソースの使用を含んでいない。
特に、前記コンテキストは命令ポインタと現在フレームとを備えている。
1つの実施において、全部または一部の同一フレームが1つのアドレス下で辞書と呼ばれる前記RAMのあるゾーンにバックアップされる。
特定の実施において、同一フレームは1つのアドレス下でバックアップされ、バックアップされるフレームを含む辞書が作成される。
本発明は、下記の発明の実施に関する説明により容易に理解することができ、添付の図面を参考にする。
前記ROM4は、バイトコード検証器コンピュータプログラム41と、バイトコード実行を可能にするバーチャルマシン42とを格納する。‘バーチャルマシン’は、バイトコードの実行中に、スタック51およびレジスタ52を前記RAM5で管理するマシンを意味する。前記スタック51は、データが積み重なる、また引き出されるトップアクセスメモリである。前記レジスタ52は、索引アクセスまたはフリーアクセスを有するメモリレジスタである:レジスタのいかなる情報もアクセス可能である。
その後、検証アルゴリズムは、バイトコードB7、B8およびB9に適用され、メモリのコンテキストデータが更新される。
検証器が第10行のバイトコードRETと出会うと、対応JSRの後者で単一化が確立され、検証される次の要素が現在コンテキストのワークリストで探される。ワークリストが空いている時、バイトコード検証ソリューションに遍在するサブルーチン画定問題は、この例では、一般検証アルゴリズムにより当然に取扱われる:サブルーチンのエンドを示す、新コンテキストのワークリストは、空いている。
それからサブルーチンは終わり、図7に示すように、先行コンテキストが114で復旧される。
方法Mで、ある方法が呼び出される場合には、現在タイプが呼び出された方法のタイプと合致するか確認するために前記方法のパラメータの検証を行う。この方法の検証は、前述の通り方法Mとは独立に行われる。
B2でサブプログラム呼び出し中に、現在フレームをRAM5の‘辞書’と呼ばれる部分にバックアップすることができる。RAM5に現在コンテキストをバックアップする場合、現在フレームを指すポインタptr1を使用する。
B6でサブプログラム呼び出し中に、現在フレームをバックアップするためにジャンプ時の現在フレームと同じ辞書のスタックフレームと関連するポインタptr1を使用する。
このようなスタックフレームが辞書53に存在しない時は、新しいエントリptr2が辞書で作成される(サブプログラム呼び出しBtの場合)。
Claims (10)
- 少なくとも1つのプロセッサ(2)と、ランダムアクセスメモリすなわち‘RAM’(5)とを備える携帯用電子装置(1)にロードされ、バーチャルマシン(42)で解釈されて実行されるバイトコードタイプのアプリケーションコード(31)の検証方法であって、一旦前記アプリケーションコード(31)を前記装置(1)にロードし、前記アプリケーションのコード(31)の全ての可能な実行パスを前記プロセッサ(2)によって静的にチェックする前記検証方法において、前記プロセッサ(2)は、
−サブプログラムの呼び出し中に、前記RAM(5)に現在の検証コンテキスト(200ないし203)をバックアップし、
−前記サブプログラム用の新検証コンテキスト(206ないし209)を作成して前記サブプログラムの検証を行い、
−前記サブプログラムの検証終了時に、以前にバックアップされた前記検証コンテキスト(200ないし203)を復旧し、
前記検証コンテキストは命令ポインタとフレームとを備え、
前記命令ポインタは前記フレームに関連付けられ、
全部またはいくつかの複数のフレームが1つのアドレス下で辞書(53)と呼ばれる前記RAM(5)のあるゾーンにバックアップされ、
前記RAM(5)にバックアップされる新フレームに対して、全部またはいくつかの前記新フレームが前記辞書(53)に存在しているか否かが検証され、存在する場合、それらのフレームに関連付けられた命令ポインタ(ptr1)が使用され、存在しない場合、それらのフレームは前記辞書(53)へ記録され、それらのフレームに関連付けられた命令ポインタ(ptr2)が使用されることを特徴とする検証方法。 - 前記サブプログラムの検証中に、前記新検証コンテキスト(206ないし209)が初期化されることを特徴とする請求項1記載の検証方法。
- 前記装置(1)には、電源以外の外部リソースの使用を含んでいないことを特徴とする請求項1記載の検証方法。
- 前記検証コンテキストは、前記アプリケーションコード(31)のすべての実行パスを探索するためのワークリスト(202)を備えていることを特徴とする請求項1記載の検証方法。
- 複数のコード列からなる前記アプリケーションコード(31)のある列のチェック中に、前記ワークリスト(202)を前記ある列から到達できる他のコード列のワークリストで更新することを特徴とする請求項4記載の検証方法。
- 前記辞書(53)は複数のセクションに分割され、前記セクションの1つはレジスタ(52)に対応することを特徴とする請求項1記載の検証方法。
- 前記辞書(53)は複数のセクションに分割され、前記セクションの1つはスタック(51)に対応することを特徴とする請求項1記載の検証方法。
- 前記辞書(53)は複数のセクションに分割され、前記セクションの1つはバイトコードタイプが可変しないレジスタ(52)に対応することを特徴とする請求項1記載の検証方法。
- 少なくともRAM(5)とプロセッサ(2)とを備え、請求項1乃至8の何れかに記載の方法を実行することを特徴とするスマートカード。
- RAM(5)と、プロセッサ(2)と、Java(登録商標)バーチャルマシン(42)と、前記バーチャルマシンで解釈され、コードの一貫性が検証されるべき少なくとも1つのJavaアプレット(31)とを備え、請求項1乃至8の何れかに記載の方法を実行することを特徴とするスマートカードタイプのJavaカード。
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 JP2008537240A (ja) | 2008-09-11 |
JP5225071B2 true 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) |
Families Citing this family (8)
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 |
KR101583133B1 (ko) * | 2014-03-26 | 2016-01-07 | 단국대학교 산학협력단 | 스택 기반 소프트웨어 유사도 평가 방법 및 장치 |
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 | Акционерное общество "Актив-софт" (АО "Актив-софт") | Способ восстановления и обновления программного обеспечения на смарт-карте |
Family Cites Families (6)
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 |
FR2797963B1 (fr) * | 1999-08-23 | 2002-11-29 | Trusted Logic | Protocole de gestion, procede de verification et de transformation d'un fragment de programme telecharge et systemes correspondants |
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 |
-
2005
- 2005-04-22 FR FR0551036A patent/FR2884994A1/fr active Pending
-
2006
- 2006-03-14 US US11/918,973 patent/US7991953B2/en not_active Expired - Fee Related
- 2006-03-14 JP JP2008507033A patent/JP5225071B2/ja not_active Expired - Fee Related
- 2006-03-14 EP EP06725034A patent/EP1880282A2/fr not_active Withdrawn
- 2006-03-14 WO PCT/EP2006/060676 patent/WO2006111441A2/fr not_active Application Discontinuation
Also Published As
Publication number | Publication date |
---|---|
JP2008537240A (ja) | 2008-09-11 |
WO2006111441A2 (fr) | 2006-10-26 |
FR2884994A1 (fr) | 2006-10-27 |
US20090049258A1 (en) | 2009-02-19 |
WO2006111441A3 (fr) | 2007-12-21 |
EP1880282A2 (fr) | 2008-01-23 |
US7991953B2 (en) | 2011-08-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5225071B2 (ja) | 埋め込みシステム、特にスマートカードにロードされる疑似コードの検証方法 | |
US6298353B1 (en) | Checking serialization compatibility between versions of java classes | |
US6745385B1 (en) | Fixing incompatible applications by providing stubs for APIs | |
AU771699B2 (en) | Token-based linking | |
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 | |
US7913265B2 (en) | Method of loading software with an intermediate object oriented language in a portable device | |
US20080104441A1 (en) | Data processing system and method | |
CN105378663A (zh) | 更新引导代码 | |
US9129137B2 (en) | Method, computer program and device for providing security for intermediate programming code for its execution by a virtual machine | |
CN101366035B (zh) | 用于执行中间代码编译的应用程序的方法 | |
US8407678B2 (en) | Method of array interception using data-flow analysis | |
CN102193804B (zh) | 一种单板驱动的加载方法和通信设备 | |
US6779732B2 (en) | Method and apparatus for linking converted applet files | |
JP2005532622A (ja) | 特にスマートカードにおけるダウンロードしたアプリケーションの機密保護化 | |
US11500982B2 (en) | Systems and methods for reliably injecting control flow integrity into binaries by tokenizing return addresses | |
JP2003186675A (ja) | Javaコンピューティング環境におけるタイプチェック | |
US8458790B2 (en) | Defending smart cards against attacks by redundant processing | |
CN111258617B (zh) | 一种电子设备 | |
US6856994B2 (en) | System and method for condensing application software | |
US20050252977A1 (en) | Code verification method for limited resource microcircuits | |
US8949868B2 (en) | Methods, systems and computer program products for dynamic linkage | |
CN112182516A (zh) | 基于relro安全保护的检测方法、终端及存储介质 | |
JP2004287618A (ja) | オペレーティングシステム起動制御方法、およびその方法をコンピュータに実行させるプログラム、ならびにオペレーティングシステム起動制御装置 |
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 |