JP2003141488A - 高級プログラミング言語を用いたマイクロコントローラ - Google Patents

高級プログラミング言語を用いたマイクロコントローラ

Info

Publication number
JP2003141488A
JP2003141488A JP2002263319A JP2002263319A JP2003141488A JP 2003141488 A JP2003141488 A JP 2003141488A JP 2002263319 A JP2002263319 A JP 2002263319A JP 2002263319 A JP2002263319 A JP 2002263319A JP 2003141488 A JP2003141488 A JP 2003141488A
Authority
JP
Japan
Prior art keywords
card
microcontroller
application
bytecode
interpreter
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
JP2002263319A
Other languages
English (en)
Other versions
JP3766052B2 (ja
Inventor
Timothy J Wilkinson
ジェイ.ウィルキンソン ティモシー
Scott B Guthery
ビー.グスレイ スコット
Ksheerabdhi Krishna
クリシュナ クシーラブディ
Michael A Montgomery
エイ.モントゴメリー マイケル
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.)
Axalto SA
Original Assignee
Schlumberger Systemes 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
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=21846980&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=JP2003141488(A) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by Schlumberger Systemes SA filed Critical Schlumberger Systemes SA
Publication of JP2003141488A publication Critical patent/JP2003141488A/ja
Application granted granted Critical
Publication of JP3766052B2 publication Critical patent/JP3766052B2/ja
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/77Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in smart cards
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/52Binary to binary
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/44557Code layout in executable memory
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/356Aspects of software for card payments
    • G06Q20/3563Software being resident on card
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; 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/357Cards having a plurality of specified features
    • G06Q20/3574Multiple applications on card
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/03Protecting confidentiality, e.g. by encryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/06Authentication
    • H04W12/062Pre-authentication
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2141Access rights, e.g. capability lists, access control lists, access tables, access matrices
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2153Using hardware token as a secondary aspect
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/131Protocols for games, networked simulations or virtual reality
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Computer Hardware Design (AREA)
  • Business, Economics & Management (AREA)
  • Signal Processing (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • General Business, Economics & Management (AREA)
  • Strategic Management (AREA)
  • Accounting & Taxation (AREA)
  • Databases & Information Systems (AREA)
  • General Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Mathematical Physics (AREA)
  • Health & Medical Sciences (AREA)
  • Devices For Executing Special Programs (AREA)
  • Microcomputers (AREA)
  • Storage Device Security (AREA)
  • Credit Cards Or The Like (AREA)
  • Electrophonic Musical Instruments (AREA)

Abstract

(57)【要約】 (修正有) 【課題】高級プログラミング言語を用いたスマートカー
ド及びマイクロコントローラを提供する。 【解決手段】端末装置と共に利用されるICカードであ
る。当該ICカードは、インタプリタと高級プログラミ
ング言語形式を持つアプリケーションが記憶されたメモ
リを含んでいる。カードのプロセッサは、実行するアプ
リケーションをインタプリタ処理するためインタプリタ
を利用するように構成され、また、端末装置と通信する
ため通信部を利用するように構成されている。

Description

【発明の詳細な説明】
【0001】この特許出願の開示内容の一部には著作権
保護を受けるものが含まれている。著作権所有者は、特
許庁への特許出願書類または記録として使用されるもの
に限り、何人でも当該特許出願書類の複製を行なうこと
に関して異議を持たないが、その他の場合にはすべての
著作権の権利の保有する。
【0002】米国法35条セクション119(e)に基
づき、本特許出願は1996年10月25日に受理され
た先行する米国特許出願番号60/029,057の優
先権利益を要求する。 発明の背景 この発明は主にプログラミング技術に関し、特に、スマ
ートカードまたはマイクロコントローラに使用する高級
プログラミング言語に関する。
【0003】高級プログラミング言語Javaで記述さ
れたソフトウェアアプリケーションは、そのままで多種
多様なコンピュータブランド、多種多様なコンピュータ
プラットフォーム上で動作できるように作られている。
これは以下の手続きによって達成される。アプリケーシ
ョンがJava言語によって記述された場合、当該アプ
リケーションは、Java仮想マシンと呼ばれる仮想コ
ンピュータに対する命令コードであるバイトコードを含
む“クラス”ファイルにコンパイルされる。サポートさ
れる各々のプラットフォームに対しては当該仮想マシン
の実装プログラムが用意されている。利用者が使用する
プラットフォームにおいて特定のJavaアプリケーシ
ョンを動作させたい場合、動作したいアプリケーション
からコンパイルして生成したクラスファイルを当該プラ
ットフォームにロードする。使用プラットフォーム上で
構築されるJava仮想マシンが動作し、クラスファイ
ル中のバイトコードをインタプリタ実行し、Javaア
プリケーションが効率的に実行される。
【0004】Javaは、以下の参考文献において説明
されている。(1)アーノルド、ケン、およびジェーム
ス・ゴスリング「Javaプログラミング言語」、アデ
ィソン-ウェズレー、1996; (2)ジェームスゴス
リング、 ビル・ジョイ、ガイ・スティール 「Java
言語仕様」、サン・マイクロシステムズ、1996(ウ
ェブサイト:http://java.sun.com/doc/language speci
fication);(3)ジェームス・ゴスリング、ヘンリー
マックギルトン「Java言語使用環境:ホワイトペー
パー」、サン・マイクロシステムズ、1995(ウェブ
サイト:http://java.sun.com/doc/language environme
nt/);(4)ティム・リンドホルム、フランク・イェ
リン「Java仮想マシン仕様」、アディソン-ウェズ
レー1997;これらのテキストその他多くのテキスト
においてJavaを用いたプログラム作成方法が記述さ
れている。
【0005】特定プラットフォームにおいてJavaア
プリケーションを実行するために、プラットホームの制
約条件下において動作しうるJava仮想マシン実装プ
ログラムが記述されていなければならず、また、当該プ
ラットフォーム上に使用するJavaアプリケーション
を当該プラットホームの制約条件下においてロードでき
る仕組みが提供されていなければならない。
【0006】Javaをサポートする従来のプラットホ
ームは、比較的容量の大きいメモリとハードディスクを
利用する通常のマイクロプロセッサベースのコンピュー
タである。そのようなマイクロプロセッサ実装は、デス
クトップコンピュータ、パーソナルコンピュータにおい
て広く用いられている。しかしながら、スマートカード
に使用されているようなマイクロコントローラ上で動作
するJava実装は従来にはなかった。
【0007】マイクロコントローラは多く点においてマ
イクロプロセッサとは異なっている。例えば、マイクロ
プロセッサは典型的には、中央演算処理装置(CPU)
を備えており、CPUは正常な動作をするためには外部
周辺装置(例えばメモリ、入力制御装置、出力制御装
置)を必要とする。典型的なマイクロプロセッサは、メ
ガバイトからギガバイトのメモリアクセスが可能であ
り、1命令で[16ビット、32ビット、64(訳注:
当該部分は第2頁末尾部分より)]ビットまたはそれ以
上の情報が処理できる。マイクロプロセッサとは対照的
に、マイクロコントローラは、中央演算処理装置(CP
U)、メモリ、その他の機能要素すべてを1枚の半導体
基板または1つのIC回路(ICチップ)として備えて
いる。マイクロプロセッサが比較的大容量である外部メ
モリにアクセスするのに対して、典型的なマイクロコン
トローラはかなり小容量のメモリにアクセスする。典型
的なマイクロコントローラは、1キロバイト〜16キロ
バイトの内蔵メモリにアクセス可能であり、特に16キ
ロバイト内蔵メモリのものが広く使われている。
【0008】一般的には、3つの異なるタイプのメモ
リ、ランダムアクセスメモリ(RAM)、リードオンリ
ーメモリ(ROM)、電気的に消去可能なプログラマブ
ルリードオンリーメモリ(EEPROM)が使われてい
る。マイクロコントローラにおいて、利用可能な上記各
種のメモリの容量は、当該メモリに割り当て可能なIC
チップの面積容量の制限を受ける。典型的には、RAM
は多くの面積を必要とし、供給されるメモリ容量はもっ
とも少なくなる。ROMはもっとも少ない面積で済み、
供給容量は大きくなる。EEPROMは、RAMよりも
供給容量は大きくなるが、ROMより供給容量は小さく
なる。
【0009】それぞれのメモリ種類の適する用途は異な
っている。ROMはもっとも安価であるが、例えば、オ
ペレーティングシステムのコードなど書き換えの必要の
ないデータの記憶用途に適している。EEPROMは、
印加電圧がオフされた後も保持する必要のあるデータの
記憶用途に適しているが、書き込み時間が非常に遅い。
RAMはデータ書き込み、読み出しとも高速に実行でき
るが、高価であり、かつ印加電圧除去により記憶データ
が失われてしまう。
【0010】マイクロプロセッサは、典型的には、比較
的少容量のROMとEEPROMを持ち、さらに、1〜
128メガバイトのRAMを備えている。それは、1つ
のICデバイス上に何を搭載するかに関して制約がない
からであり、また、EEPROMより低コストで大容
量、書き換え可能、不揮発性の記憶媒体である外部ディ
スクメモリにアクセスすることが可能であるからであ
る。しかしながら、マイクロコントローラは、典型的に
は、0.1〜2.0キロバイトの小容量のRAMと、2
〜8キロバイトのEEPROMと、8〜56キロバイト
のROMを備えている。
【0011】外部コンポーネントが少なくかつサイズが
小さいため、マイクロコントローラはスマートカードな
どのICカードに広く用いられている。このようなスマ
ートカードには、使用時にカードリーダに挿入する必要
がある接触式カードや、カードリーダに挿入する必要の
ない非接触式カードなど多様な形態がある。実際に、非
接触式通信を行なうマイクロコントローラは、時計や指
輪など特別な形状物に埋め込まれることがあり、エルゴ
ノミックス性が高くかつ魅力的な方法でスマートカード
の機能をそれら形状物に統合させている。
【0012】リソース環境の制約のため、スマートカー
ド用のアプリケーションは、典型的には低レベルプログ
ラミング言語(例えばアセンブリ言語)により記述さ
れ、メモリに格納される。
【0013】高級プログラミング言語を用いてスマート
カードをプログラミングする1つの方法は、フランスの
特許出願番号9011818号、発明の名称「簡単にプ
ログラムが可能なマイクロ回路用の携帯型サポート媒体
および前記マイクロ回路をプログラムする方法(Potable
support medium for an easily programmable microci
rcuit and programming procedure for said maicrocir
cuit)」、公開番号2667171号に記載されてい
る。しかし、この特許出願には、データセキュリティに
関する記載、スマートカード上のデータと情報に関する
権限のないアクセスを如何に防ぐか、プログラマがJa
vaなどの表現豊かなプログラミング言語を用いてスマ
ートカード用のプログラムを作ることができるプログラ
ミング環境を如何に提供するか、さらに、スマートカー
ドの実行制約条件内で動作するインタプリタを使ってプ
ログラムを如何に実行するかについて記載されていな
い。
【0014】ICカードは、ロバスト性、タンパー耐
性、格納データの可搬性が確保されなければならない。
ICカードは、そのサイズの小型性、ICカードならで
はのハード的とソフト的なセキュリティの高さによっ
て、パーソナルコンピュータ中のもっともパーソナル用
途のものと位置付けられている。
【0015】ICカードおよびICカードのマイクロコ
ントローラの最重要なタスクは、カードに記録されたデ
ータの保護である。それゆえ、1974年のICカード
の発明以来、セキュリティを理由にICカード技術は閉
鎖的にガードされてきた。ICカードは、最初にフラン
スの銀行によりデビットカード(即時決済方式カード)
として利用された。このアプリケーションでは、ICカ
ードをベースとした金融関係のトランザクションが認証
されるためには、ICカード利用者は当該ICカードを
所有しているという事実に加え、さらにICカード内に
記録されている4桁の個人認証番号(PIN)を示さな
ければならない。紛失または盗難されたICカードのP
IN番号を割り出すために役立ちうるあらゆる情報は、
公開されないように秘密に付されている。事実、誰もど
んな情報がPIN番号割り出しに役立つ情報か分からな
いし、ICカードに関するすべての情報は秘密にされて
いる。
【0016】セキュリティを考慮して、ICカード用の
アプリケーションは独自仕様で記述されている。例え
ば、各々のアプリケーションは典型的には、特定のカー
ド所有者、特定のID識別主体により識別される。アプ
リケーションがアセンブリ言語などの低レベルプログラ
ミング言語で記述されているため、アプリケーションは
特定種類のマイクロコントローラを対象として記述され
ている。低レベルプログラミング言語の性質により、権
限のないアプリケーションであってもICカード内の格
納データにアクセスすることができる。ICカード用に
記述されたプログラムは特定のID識別子により識別さ
れているので、2つの主体が同じプログラミング機能を
利用を所望した場合、ICカードのマイクロコントロー
ラ上にアプリケーションの当該部分が2つコピーされて
しまうことになる。
【0017】ICカードシステムは、ずっとクローズド
システムとして発展してきた。ICカードは、特定端末
のアプリケーションとともに動作するように手作りされ
た専用アプリケーションを含んでおり、ICカードが使
用されるときのセキュリティチェックは、主にカードア
プリケーションと端末アプリケーションが対応するもの
であるかの確認およびICカード上のデータが有効であ
るかの確認により行なっていた。
【0018】ICカードの利用が広まるにつれて、利用
者がICカードアプリケーションごとに異なるICカー
ドを持ち歩くことを敬遠することが明らかになってき
た。それゆえ、単一プロバイダのICカードを用いた多
目的共用アプリケーションが提供され始めている。例え
ば、現金自動処理装置(ATM)用のカード、デビット
カードが、1枚のICカードプラットフォームが共用さ
れる。しかしながら、端末とカードのすべてのアプリケ
ーションが、他のプロバイダに関する正確な情報のも
と、単一のプロバイダによって作成されるため、依然ク
ローズドシステムとなっていた。
【0019】このように、ICカードに関する情報、I
Cカードと端末との通信方法およびプログラム方法に関
し、公開された情報が少なく、ICカード用の汎用アプ
リケーションの広がりを阻害していた。しかし、公衆デ
ジタルネットワーク網(例えば、インターネット、ワー
ルドワイドウェブ)の出現により、ICカード用のアプ
リケーションに対する新たな領域が開かれた。特に、公
衆デジタルネットワーク網の広がりにより、他のプロバ
イダに関する明確な知識なしに、かつICカードのセキ
ュリティ低下の可能性を許すことなく、ICカード上に
新しいアプリケーションのロードをすることが必要とな
った。しかしながら、低レベルプログラミング言語を用
いてプログラミングされた従来のICカードを用いた場
合は上記課題解決の実現が困難であった。 発明の開示 一面において、本発明は、マイクロコントローラ、例え
ば、ICカードやスマートカードを開示する。説明の便
宜上、この発明の開示の欄に続く詳細な説明の欄におい
て、本発明を端末と共に用いられるICカードのアプリ
ケーション例として記述した。しかしながら、本発明は
他のスモールコンピュータプロセッサに関するアプリケ
ーションに適用できるものである。例えば、マイクロコ
ントローラを埋め込んだシステムなどである。
【0020】本発明のマイクロコンローラのマイクロプ
ロセッサは、インタプリタを格納するメモリと、高級プ
ログラミング言語形式を持っている少なくとも一つのア
プリケーションとを含んでいる。メモリの少なくとも一
部分はマイクロプロセッサ内に設けられている。マイク
ロプロセッサは、アプリケーションをインタプリタ処理
するためのインタプリタを利用するように構成されてい
る。
【0021】本発明の優位点として、以下のものが含ま
れている。本発明によれば、スマートカードやマイクロ
コントローラのセキュリティ低下を招くことなくスマー
トカードやマイクロコントローラを持つ他のシステムへ
の新しいアプリケーションのダウンロードが可能とな
る。これらアプリケーションは、様々な会社により提供
され、様々な端末装置を利用して様々なタイミングでロ
ードされうる。アプリケーションは、Java仮想マシ
ンにより提供されるセキュリティ機能により、如何なる
アプリケーションコードやデータへの権限なきアクセス
に対して保護されているので、カードのセキュリティは
構成されない。アプリケーションは、強力で主流となっ
ているプログラム開発ツールを用いてJavaやEif
felなどの高級プログラミング言語により作成され
る。新しいアプリケーションは、ソフトマスクを施すこ
となく数時間により即座にプロトタイプが作成され、ス
マートカードにダウンロードされる。
【0022】マイクロコントローラが埋め込まれたシス
テムは、新しいアプリケーションのダウンロード、高レ
ベルなプログラミング開発、迅速なプロトタイプ作成に
関して、これらの多くの優位点を得ることができる。
【0023】マイクロコントローラにおいてJavaや
Eiffelなど高級言語を用いる際の困難性は、イン
タプリタやこれら言語により作成されたコンパイル形式
のアプリケーションプログラム双方がメモリを大容量に
必要とすることによる。本発明は、この困難性を、処理
の一環としてコンバータをアプリケーションプログラム
に導入することにより解決している。
【0024】本発明の実装には、以下のものが含まれう
る。アプリケーションの高級プログラミング言語形式
は、クラスファイル形式を持ち、Javaプログラミン
グ言語形式を持ちうる。アプリケーションはJavaバ
イトコードなどのバイトコードを含む。
【0025】本発明を適用したシステムは、高級プログ
ラミング言語で記述されたアプリケーションソースプロ
グラムをコンパイル形式にコンパイルするためのコンパ
イラを含んでいる。本発明は、さらに、コンパイル形式
からインタプリタによるインタプリタ処理に適した形式
に変換するコンバータを含んでいる。
【0026】一面において、本発明において、コンバー
タは、インタプリタが要求したアプリケーションプログ
ラム属性を含ませ、インタプリタが要求しない属性を含
ませないように動作することができる。コンバータは、
さらに、標準高級言語形式におけるコンパイル形式を入
力データとして受け付けることができ、インタプリタに
よるインタプリタ処理に適した形式の出力データを生成
することができる。一面において、コンバータは、ID
ストリングをユニークなID識別子に、例えば整数に、
マッピングする手段を含んでいる。このマッピング処理
は、ストリング−IDマップファイルに記録されうる。
【0027】本発明のインタプリタは、さらに、高級言
語の特徴とデータタイプのフルセットのうちのサブセッ
トをサポートするように制限することができる。この場
合、コンバータはさらに、アプリケーションプログラム
のコンパイル形式がそれらサポートされている特徴とデ
ータタイプのみ含むように確認する。
【0028】一つの実施形態として、コンバータは、次
の処理、つまり、ジャンプと行き先を記録する処理、特
殊バイトコードをジェネリックバイトコードに変換する
処理またはその逆の処理、IDストリングの代わりにユ
ニークなID識別子を用いるためのリファレンスからバ
イトコードのオペランドを変更する処理、バイトコード
を等価なバイトコードへリナンバリングする処理、それ
ら変換ステップにより影響をうけるディスティネーショ
ンアドレスへのジャンプを再リンキングする処理のう
ち、少なくとも一つの処理ステップを用いて、コンパイ
ル形式のバイトコードをマイクロコントローラのインタ
プリタによるインタプリタ処理に適した形式のバイトコ
ードに変換する手段を含んでいる。
【0029】インタプリタは、セキュリティチェックを
実装した構成とすることができる。セキュリティチェッ
クは、ファイヤウォールの構築処理を含み、サンドボッ
クスセキュリティモデルの構築処理を含みうる。例え
ば、インタプリタは、アプリケーションが、メモリのア
クセス権限のない領域へのアクセスを許さない処理、ア
クセス権限のないマイクロプロセッサのリソースへのア
クセスを許可しない処理、バイトコードの実行がセキュ
リティ制限に違反しないものかをチェックする処理など
を含む処理セットから選ばれたセキュリティ基準を満た
しているものであるか否かを決定できる。
【0030】本発明の一つの実施形態において、アプリ
ケーションのロードに先立ち、アプリケーションがどの
セキュリティ制限にも違反していないかを確認し、セキ
ュリティ基準に従ってアプリケーションをロードする処
理を含むことができる。後者のステップの例は、ロード
したIDが、当該アプリケーションをマイクロプロセッ
サ上にロードする許可を持っているかを確認し、ロード
したキーを用いてロードされるアプリケーションを暗号
化する処理を含んでいる。
【0031】他の一面において、本発明は、マイクロコ
ントローラをプログラミングする方法を開示しており、
第1のプログラミング言語で記述されたアプリケーショ
ンを、コンパイラによって生成され第1のバーチャルマ
シンによってインタプリタ処理されるように意図された
第1の中間コードから、第2のバーチャルマシンによっ
てインタプリタ処理可能な第2の中間コードに変換し、
第2の中間コードをマイクロコントローラのメモリ上に
ロードする処理ステップを備えている。
【0032】本発明の方法によれば、変換処理は、さら
に、IDストリングをオブジェクト、クラス、フィール
ド、メソッドに関連付け、それらストリングをユニーク
なID識別子、例えば整数にマッピングする処理を含ん
でいる。
【0033】一つの実施形態において、本発明の方法
は、次の処理、つまり、ジャンプと行き先を記録する処
理、特殊バイトコードをジェネリックバイトコードに変
換する処理またはその逆の処理、IDストリングの代わ
りにユニークなID識別子を用いるためのリファレンス
からバイトコードのオペランドを変更する処理、バイト
コードを等価なバイトコードへリナンバリングする処
理、それら変換ステップにより影響をうけるディスティ
ネーションアドレスへのジャンプを再リンキングする処
理のうち、少なくとも一つの処理ステップを含んでい
る。
【0034】本発明の他の一面において、本発明のマイ
クロコントローラは、インタプリタ可能なプログラミン
グ言語で記述されたプログラムのインタプリタ処理を許
容するには不十分な容量しかないメモリという制限のあ
るリソースセットで稼動するものである。メモリは、高
級プログラム言語から派生したプログラムをインタプリ
タ処理するインタプリタと、ID識別子にストリングを
マッピングする処理、インタプリタ処理に先立ちまたは
インタプリタ処理中にセキュリティチェックを実行する
処理、インタプリタ処理に先立ちまたはインタプリタ処
理中に構造チェックを実行する処理、インタプリタ処理
に先立ちまたはインタプリタ処理中にセマンティックチ
ェックを実行する処理を含む規則セットから選ばれた少
なくとも一つの規則を適用することにより派生した派生
プログラムとを含んでいる。
【0035】これらセキュリティチェックは、複数の派
生プログラムの一つにアクセスする者からリクエストを
受け取るためのロジックを持っている。リクエストの受
領により、派生プログラムが所定のルールセットでコン
パイルされているか否か決定され、この決定に従って、
派生プログラムにアクセスする者を選択的に許可する。
派生プログラムがアクセスしようとするメモリの特別領
域へのアクセス権限を派生プログラムが持っているか否
かを決定することにより、当該派生プログラムがインタ
プリタ処理される間にインタプリタによって当該所定ル
ールが用いられる。
【0036】マイクロコントローラは、さらに、派生プ
ログラムがインタプリタ処理される間、用いられている
セキュリティルールから選ばれた少なくとも一つのセキ
ュリティチェックを実行するように構成されており、イ
ンタプリタは、バイトコードが実行前チェックおよび実
行後チェックに応じて実行されるか否かを決定するため
の処理に先立って少なくとも一度、各バイトコードをチ
ェックするように構成されており、派生プログラムは、
マイクロコントローラにロードされる処理に先立って少
なくとも一度、セキュリティプロトコルに応じて派生プ
ログラムの統合とロードが実行されたことを確認するチ
ェックが実行される。セキュリティプロトコルは、派生
プログラムのカード上へのロードが許可されるように特
別のIDが有効化されていなければならないことを要求
する。セキュリティプロトコルはさらに復号キーを含
み、ロードされる派生プログラムが復号キーに応じがロ
ーディングキーを用いて暗号化されていることを要求す
る。
【0037】マイクロコントローラは、さらに、暗号化
処理、復号化処理、署名処理、署名認証処理、相互認証
処理、鍵配送処理、鍵セッション処理のセットから選ば
れた暗号関連サービスを提供するように構成されてい
る。
【0038】マイクロコントローラは、ファイルシステ
ムを備えており、ファイルを読み取る権限、ファイルに
書き込む権限、ファイルを消去する権限に対するアクセ
スコントロールリストを持つマイクロコントローラによ
る当該ファイルシステムへの安全なアクセス手段を提供
するように構成されている。さらに、マイクロコントロ
ーラは、ファイルへのアクセス権限を確立するため、ま
たは、カード保有者がファイルにアクセスする権限を得
る認証を確認するための鍵有効化を実行する。
【0039】他の優位点および特徴は、以下の説明と特
許請求の範囲の記載により明らかにされている。 図面の簡単な説明 図1は、ICカードシステムのブロック図である。
【0040】図2は、JavaアプリケーションをIC
カードにダウンロードする準備の手順を示すフロー図で
ある。
【0041】図3は、カードクラスファイルコンバータ
から生成され、使用されるファイルのブロック図であ
る。
【0042】図4は、アプリケーションクラスファイル
をカードクラスファイルへ変換する手順を示すブロック
図である。
【0043】図5は、クラスファイルコンバータの動作
を示すフロー図である。
【0044】図6は、バイトコードの変更手順を示すフ
ロー図である。
【0045】図7は、スぺシフィックバイトコードをジ
ェネリックバイトコードへの変換を示すブロック図であ
る。
【0046】図8は、定数参照値の定数への置き換えを
示すブロック図である。
【0047】図9は、参照値の更新値への置き換えを示
すブロック図である。
【0048】図10は、元のバイトコードのリナンバリ
ング手順を示すブロック図である。
【0049】図11は、元のバイトコードを異なる仮想
マシンのアーキテクチャ用へ変換する様子を示すブロッ
ク図である。
【0050】図12は、アプリケーションをICカード
にロードする様子を示すブロック図である。
【0051】図13は、ICカード上のアプリケーショ
ンを実行する様子を示すブロック図である。
【0052】図14は、ROM、RAM、EEPROM
のメモリ構造を示す図である。
【0053】図15は、カードJava仮想マシンのア
ーキテクチャ全体像を示すフロー図である。
【0054】図16は、セキュリティチェックを伴うカ
ードJava仮想マシンの実行方法を示すフロー図であ
る。
【0055】図17は、カードJava仮想マシン上で
バイトコードを実行する様子を示すフロー図である。
【0056】図18は、セキュリティチェックを伴わな
いカードJava仮想マシンの実行方法を示すフロー図
である。
【0057】図19は、カードアプリケーションと識別
子との対応付けを示すブロック図である。
【0058】図20は、特定の実行アプリケーションへ
のアクセス権限を示すブロック図である。
【0059】図21は、スマートカードに用いられたマ
イクロコントローラの斜視図である。
【0060】図22は、電話機に用いられたマイクロコ
ントローラの斜視図である。
【0061】図23は、かぎ型リングに用いられたマイ
クロコントローラの斜視図である。
【0062】図24は、指輪に用いられたマイクロコン
トローラの斜視図である。
【0063】図25は、車に用いられたマイクロコント
ローラの斜視図である。 好ましい実施の形態 図1を参照しつつ、好ましい実施形態を詳しく説明す
る。ICカード10(スマートカードなど)は、Jav
aベースのマルチアプリケーション高級プログラミング
言語および実行環境を提供するように構成されている。
ICカード10は、端末装置14の通信部12bと通信
できるように構成されている通信部12aを有してい
る。いくつかの実施形態において、ICカード10は、
8ビットマイクロコントローラ、512バイトのRA
M、4KバイトのEEPROM、20KバイトのROM
を持つスマートカードであり、端末装置の通信部12b
は、従来タイプのスマートカードリーダであり、端末装
置14は、パーソナルコンピュータスマートカード(P
C/SC)標準仕様をサポートし、またJava開発サ
ポート環境を提供できるウィンドウNTオペレーティン
グシステムが動作する従来タイプのパーソナルコンピュ
ータである。
【0064】いくつかの実施形態において、マイクロコ
ントローラとメモリと通信部は、典型的なクレジットカ
ードと実質的に同じ形状を持つプラスティックカードに
埋め込まれている。他の実施形態において、マイクロコ
ントローラとメモリと通信部は、貴重品類(例えば、時
計、指輪、ブレスレット)、車類、通信機器類(例え
ば、加入者携帯モジュール(SIM)カード)、セキュリ
ティデバイス類(例えば、暗号モジュール)、器具類な
ど、プラスティックカード以外の基板上に搭載されるこ
ともある。
【0065】端末装置14は、端末装置の通信部12b
を用いて、JavaアプリケーションをICカード10
に対して取り揃えて、ダウンロードする。端末装置の通
信部12bは、ICカード10と端末装置14の間に通
信チャンネルを確立することができる通信デバイスであ
る。通信機器オプションとして、接触型カードリーダ、
無線周波数帯を用いた無線通信、または赤外線通信技
術、シリアル通信プロトコル、パケット通信プロトコ
ル、ISO7816通信プロトコルを用いた機器が含ま
れる。
【0066】端末装置14は、また、ICカード10上
で動作するアプリケーションと連携動作することができ
る。いくつかのケースにおいて、目的に応じて異なる端
末装置が用いられうる。例えば、ある種の端末装置が、
アプリケーションを取り揃えるために利用され、他の端
末装置が、アプリケーションをダウンロードするために
利用され、また他の端末装置が多様なアプリケーション
を実行するために利用される。端末装置は、現金自動処
理装置(ATM)、販売時点管理端末(POS端末)、
入退出管理システム、有料道路料金徴収システム、アク
セス管理システム、ICカードやマイクロコントローラ
と通信可能な他のシステムでありうる。
【0067】ICカード10は、ICカード10上にあ
るアプリケーションをインタプリタ実行するように、カ
ードJava仮想マシン(カードJVM)16を備えて
いる。
【0068】図2の例では、Javaアプリケーション
20は、3つのJavaソースコードファイルA(Ja
va20a)、ファイルB(Java20b)、ファイ
ルC(Java20c)を含んでいる。これらのソース
コードファイルは取り揃えられ、Javaアプリケーシ
ョン開発環境22の中でコンパイルされる。Javaア
プリケーション20が開発環境22によりコンパイルさ
れたとき、アプリケーションクラスファイル24が生成
され、また、Javaソースコード20a、20b、2
0cのそれぞれに対応するクラスファイルA(クラス2
4a)、ファイルB(クラス24b)、ファイルC(ク
ラス24c)が生成される。アプリケーションクラスフ
ァイル24は、ティム・リンドホルムとフランク・イェ
リン著書の「Java仮想マシン仕様」アディソン-ウ
ェズレー1996年版の第4章に記載されているスタンダー
ドクラスファイル形式に従って記述されている。これら
アプリケーションクラスファイル24は、ファイルを集
約し、圧縮して単一のカードクラスファイル27を生成
するカードクラスファイルコンバータ26に渡される。
カードクラスファイル27は、通常のカードローダ28
によりICカード10にロードされる。
【0069】図3の例では、カードクラスファイルコン
バータ26は、クラスファイルのポストプロセッサであ
り、標準Javaクラスファイル形式にコード化された
クラスファイル24を処理し、オプションとしてIDイ
ンプットマップファイルのストリング30を利用し、J
avaカードクラスファイル27をカードクラスファイ
ル形式で生成する。上記のカードクラスファイル形式の
1つを、後述する付属ドキュメント(Appendix)Aにおい
て示している。さらに、いくつかの実施形態において、
カードクラスファイルコンバータ26は、カードクラス
ファイルコンバータを引き続き使用するための入力とし
て利用されるIDアウトプットマップファイルのストリ
ング32を生成する。
【0070】いくつかの実施形態において、IDマッピ
ングのストリングが、以前に生成されたカードクラスフ
ァイル(マルチプルクラスファイルが同一のストリング
を参照している場合)と一致するように、カードクラス
ファイルコンバータ26は、以前に定義されたインプッ
トマップファイルのストリング30からIDマッピング
のストリングを受け入れる。このようなファイルがない
場合、IDはカードクラスファイルコンバータ26から
生成される。付属ドキュメントBは、IDインプットマ
ップファイルのストリング30とアウトプットマップフ
ァイルのストリング32を生成する実現可能な方法の1
つを示し、例を通じてマッピングの様子を示している。
【0071】図4の例では、典型的なアプリケーション
クラスファイル24aは、クラスファイル情報41、ク
ラスコンスタントプール(class constant pool 42)4
2、クラスとフィールド生成とインタフェースとメソッ
ドに関する情報43、様々な属性情報44を含み、前記
したJava仮想マシン仕様として詳述されている。こ
こで、属性情報44の多くは、この実施形態には必要で
はなく、カードクラスファイルコンバータ26による除
去部分45となっている。除去される属性は、ソースフ
ァイル、定数値、例外処理、ライン番号テーブル、ロー
カル変数テーブル、その他のオプションのベンダ属性を
含んでいる。付属ドキュメントAとして記述されている
典型的なカードクラスファイル27は、以下のアプリケ
ーションクラスファイル24から生成される。カードク
ラスファイル情報46は、全てのアプリケーションクラ
スファイル24a、24b、24cのクラスファイル情
報41の集合から生成される。カードクラスファイルコ
ンスタントプール47(cardclass file constant pool
47)は、全てのアプリケーションクラスファイル24
a、24b、24cのクラスコンスタントプール42の
集合から生成される。カードクラスとフィールド生成と
参照インタフェースとメソッドに関する情報48は、全
てのアプリケーションクラスファイル24a、24b、
24cのクラスとフィールド生成と参照インタフェース
とメソッドに関する情報43の集合から生成される。こ
の実施形態のカード属性情報49は、全てのアプリケー
ションクラスファイル24a、24b、24cの属性情
報44の集合のコード属性のみから生成される。
【0072】カード内でのダイナミックリンキングを避
けるため、アプリケーション24からJavaクラスフ
ァイル24a、24b、24cをまたがって配布される
すべての情報は、図5に示すフローチャートに示された
プロセスにより、1つのカードクラスファイル27内に
隠蔽されている。まず、処理される第1のクラスファイ
ルとして選択される(51a)。コンスタントプール4
2は、以下の方法によりコンパクト化される(51
b)。Javaクラスファイル24aにおいて参照され
るすべてのオブジェクト、クラス、フィールド、メソッ
ドは、クラスファイル24aのコンスタントプール42
にあるストリングを利用することにより、特定される。
カードクラスファイルコンバータ26は、Javaクラ
スファイル24aにあるコンスタントプール42をコン
パクト処理し、最適化したものとする。コンパクト処理
は、クラスファイルコンスタントプール42にある全て
のストリングを整数にマッピング処理することにより達
成される(当該整数の大きさはマイクロコントローラと
採用アーキテクチャに依存する)。この整数が、ID識
別子として参照される。各ID識別子は、アプリケーシ
ョン20の特定オブジェクト、クラス、フィールド、メ
ソッドをユニークに特定する。このように、カードクラ
スファイルコンバータ26は、Javaクラスファイル
コンスタントプール42のストリングを、対応するユニ
ークなID識別子に置き換える。付属ドキュメントB
は、ハロースマートカードJava(HollowSmartCard.j
ava)というアプリケーション例を、以下の本アプリケー
ションのクラスファイルのコンスタントプールに見られ
るストリングに対応するID識別子を説明するテーブル
と共に示している。ID識別子は、本実施形態では16
ビットの符号無し整数として使用されている。
【0073】次に、カードクラスファイルコンバータ2
6は、入力されたJavaクラスファイル24aのコー
ド属性に、未サポートの部分51Cがあるか否かをチェ
ックする。カードJVM16は、付属ドキュメントCに
示すように、Javaバイトコード全体のうちのサブセ
ットのみサポートしている。このため、カードクラスフ
ァイルコンバータ26は、未サポートのバイトコードが
Javaクラスファイル24aのコード属性の中にある
か否かをチェックする。もし、未サポートのバイトコー
ドが見つかった場合52は、カードクラスファイルコン
バータはエラーフラグを立て、変換53を停止する。付
属ドキュメントDにおいて“A”とマークされたプログ
ラムコードフラグメントは、これら未サポートのバイト
コードが如何に検出されるかを示している。他のレベル
のチェックは、標準Java開発環境22の要求に応じ
て、アプリケーション20は“-g”フラグとともにコ
ンパイルして実行される。上記したJava仮想マシン
仕様に基づいて、このオプション処理は、クラスファイ
ル24aのローカル変数テーブル属性中にあってJav
aアプリケーション20において使用される変数に関す
る情報を定めるためにJavaコンパイラを必要とす
る。カードクラスファイルコンバータ26は、Java
クラスファイル24aがJavaカードによりサポート
されていないデータ型を参照しているか否かをチェック
するために、この情報を使用する。
【0074】次に、カードクラスファイルコンバータ2
6は、Javaクラスファイル24aのうちインタプリ
タ実行に必要とされないすべての不必要な部分を破棄す
る。Javaクラスファイル24aは、Javaクラス
ファイルの属性セクション44のクラスファイル中のバ
イトコードに含まれている情報を格納する。ソースファ
イル、定数値、例外処理、ライン番号テーブル、ローカ
ル変数テーブルなどのカードJVMによるインタプリタ
実行に必要とされない属性情報は、安全な方法により破
棄される45。結局、保持される属性は、コード属性の
みとなる。コード属性は、Javaクラスファイル24
aのメソッドに対応するバイトコードを含んでいる。
【0075】バイトコード54の変更処理は、クラスフ
ァイルのそれぞれのメソッドのコード属性情報44の検
査処理および、カードクラスファイルのコンスタントプ
ール(card class file constant pool)47のエントリ
を反映するJavaクラスファイルコンスタントプール
42のエントリを参照するバイトコードのオペランドの
変更処理を含んでいる。いくつかの実施形態において、
バイトコードも以下に説明されるように変更される。
【0076】バイトコード54の変更処理は、図6のフ
ローチャートにより説明されるように、5つのパス(2
つのオプションパスもある)を含んでいる。オリジナル
バイトコード60は、処理中のJavaクラスファイル
24aのコード属性44中に見られる。第1のパス61
は、オリジナルバイトコードのすべてのジャンプとその
ジャンプ先を記録する。後続のバイトコードの変換にお
いて、いくつかのシングルバイトコードは、デュアルバ
イトもしくはトリプルバイトに変換される。図7は、バ
イトコードILOAD0が2つのバイト、バイトコード
ILOADと引数0に置きかえられる例を示している。
この置き換え処理が実行された場合には、コードサイズ
が変更されることとなり、影響を受けるすべてのジャン
プ先の調整が要求される。それゆえ、これらの変換が実
行される前に、オリジナルバイトコード60は解析さ
れ、あらゆるジャンプバイトコードと、ポジションと行
き先のノート(note)が調べられる。付属ドキュメントD
の中で“B”でマークされているプログラムコードの部
分(fragment)は、如何にこれらジャンプが記録されるか
を示している。
【0077】ひとたびジャンプが記録されると、オプシ
ョンのバイトコードの変換処理が実行されない場合62
でも、カードクラスファイルコンバータ26は、第3の
パス64に進む。
【0078】バイトコードの変換処理が実行される場合
は、カードクラスファイルコンバータは、スぺシフィッ
クバイトコード(specific byte codes)をジェネリック
バイトコード(generic byte codes)に変換する。典型的
には、変換されたバイトコードは、カードJVM16で
はインタプリタ実行されないが、変換されたバイトコー
ドは、当該バイトコードがカードJVM16でインタプ
リタ実行できる等価なバイトコードに変換されることに
よりサポートされる。バイトコード70は、セマンティ
ック的に等価であるが異なるバイトコード72に置きか
えられる。この処理は、一般的に、ILOAD0などの
短い単一のスぺシフィックバイトコードをより一般的な
バイトコードへの変換処理を伴う。例えば、ILOAD
0は、バイトコードILOADと引数0に置きかえられ
うる。この変換は、カードJVM16により変換される
バイトコード数を減らすために実行され、結果として、
複雑さ及びカードJVM16に要求されるコード領域を
減らしている。付属ドキュメントDの中に“C”でマー
クされたプログラムコード部分(fragment)は、如何にこ
れらの変換が実行されるかを示している。このような変
換処理は、生成されるバイトコードのサイズを増やし、
影響されるあらゆるジャンプの再演算を実行することと
なることに注意する必要がある。
【0079】第3のパス64において、カードクラスフ
ァイルコンバータは、これら定数を定義するために使わ
れるストリングの削除を通じて定数参照を再構築する。
図8では、Javaクラスファイル24aのコンスタン
トプール42のインデックスに見られる定数18を参照
するバイトコードLDC80は、BIPUSHバイトコ
ード82に変換されている。このパスにおいて、カード
クラスファイルコンバータ26は、カードクラスファイ
ルコンスタントプール47内の新しいロケーションを示
すJavaクラスファイルコンスタントプール42のエ
ントリを参照するすべてのバイトコードのオペランドを
変更する。図9は、バイトコードの引数の例を示してい
る。インボークスタティック(INVOKESTATIC)90は、J
avaクラスファイルコンスタントプール42のエント
リを参照しているが、当該エントリはカードクラスファ
イルコンスタントプール47内の新しいロケーションを
反映するように変更されている。変更されたオペランド
94は、この変換処理を示している。付属ドキュメント
Dの中に“D”でマークされたプログラムコード部分
は、如何にこれら変換が実行されるかを示している。
【0080】ひとたび、定数参照がリンク付けされる
と、オプションのバイトコード変更処理が実行されない
場合は、カードクラスファイルコンバータは、最後の第
5のパス67に進む。オプションバイトコード変更処理
がされた場合は、カードクラスファイルコンバータは、
オリジナルバイトコードを、利用されている特定のカー
ドJVM16でサポートできる異なるバイトコードセッ
トに変換する。1つの想定される変更処理は、オリジナ
ルバイトコード60をカードJVM16のバイトコード
にリナンバリングする処理である(図10参考)。この
リナンバリング処理は、オリジナルバイトコード60の
バイトコード100をリナンバリングバイトコード10
2へ変換する処理である。値21により識別されるバイ
トコードILOADは、値50によって識別されるよう
にリナンバリングされる。この変更処理は、カードJV
M16の中での型テスト(第3パスのチェックとしても
知られている)を最適化するように実行される。付属ド
キュメントDの中で“E”マークで示されるプログラム
コードの部分は、この実施形態の実装を示している。こ
の変更処理は、カードJVM16がバイトコードをイン
タプリタ実行するために必要となるプログラム領域を減
らすために実行される。本質的に、この変更処理は、似
通ったオペランドを持つバイトコードが同じグループに
なるようにバイトコードをカードJVM16バイトコー
ドにグループ分けし、カードJVM16バイトコード間
にギャップが生じないようにする。この処理により、カ
ードJVM16が、効率的にカードJVM16バイトコ
ードと有効な型のチェックが実行できる。
【0081】いくつかの実施形態において、図11に示
すように、カードクラスファイルコンバータは、オリジ
ナルバイトコード60を異なる仮想マシンアーキテクチ
ャ用に用意された異なるバイトコードセットに変換す
る。ワードスタック114で利用できるように生成され
たJavaバイトコードILOAD112は、バイトス
タック118で利用できるようにカードJVM16のバ
イトコードILOADB116に置きかえられる。ワー
ドスタック114のエレメントは、4バイトのスタック
領域の割り当てを必要とし、バイトスタック118のエ
レメントは1バイトのスタック領域を必要とする。しか
し、このオプションは、実行処理速度を増すことができ
るが、オリジナルバイトコードの状態で得ることができ
たセキュリティ特性を失うというリスクを負う。
【0082】先行するステップ63、ステップ64また
はステップ66では、バイトコード60のサイズが変更
されうるので、カードクラスファイルコンバータ26は
影響されるあらゆるジャンプを再リンク67しておかな
ければならない。そこで、ジャンプ処理は、カードクラ
スファイルコンバータ26の第1ステップ61において
記録され、ジャンプ先を適当な値に固定することで調整
を実行する。付属ドキュメントDの中で“F”でマーク
されたプログラムコードの部分は、如何にこれらジャン
プの固定が実行されるかを示している。
【0083】この段階で、カードクラスファイルコンバ
ータは、オリジナルバイトコード60と等価であるバイ
トコード68を生成し、ロードできる状態に用意でき
た。これにより、Javaクラスファイル24aをカー
ドクラスファイル27への変換が完了する。
【0084】図5に戻り、処理するべきクラスファイル
24が残っている場合55には、当該残っているそれぞ
れのクラスファイルに対してステップ51a、51b、
51c、52、54を繰り返して実行処理する。カード
クラスファイルコンバータ26は、処理されて生成され
たクラスファイル24のマップと変更したバイトコード
を収集56し、カードクラスファイル27を生成する5
7。もし必要であれば、カードクラスファイルコンバー
タ26は、IDアウトプットマップファイル32のスト
リングを生成する。これには、変換処理中にJavaク
ラスファイル24のコンスタントプール42に対応する
ストリングとして割り当てられるすべての新しいID識
別子のリストを含んでいる。
【0085】図12を参照して説明する。端末装置14
にあるカードローダ28は、ISO7816規格のコマ
ンドを利用して、カードクラスファイルをICカード1
0のローディング・実行制御部120に送る。ローディ
ング・実行制御部120は、カードオペレーティングシ
ステム122と共に、複数のカードアプリケーション1
26を格納するために使われる。このカードオペレーテ
ィングシステム122は、カードファイルシステム12
4のサポートを含み必須のシステムリソースを提供する
ものである。通常のカードローダの多くは、低レベル言
語で記述され、カードオペレーティングシステム122
によってサポートされている。好ましい実施形態におい
て、ブートストラップローダは、Java言語で記述さ
れ、ICカード10は、当該アプリケーションを実行で
きるようにJava仮想マシンが含まれている。ローデ
ィング・実行制御部120のJava実装は、付属ドキ
ュメントEに示されている。ローディング・実行制御部
120は、カードクラスファイル26を受け取って、I
Cカード10のEEPROMのカードファイルシステム
に格納されるJavaカードアプリケーション126X
を生成する。このように、複数のJavaカードアプリ
ケーション126X、126Y、126Zは1枚のカー
ドに格納することができる。ローディング・実行制御部
120は、端末装置14がJavaカードアプリケーシ
ョンを選択して速やかに実行でき、カードリセットがで
きるコマンドをサポートしている。
【0086】図13に示すように、ローディング・実行
制御部120からリセットコマンドを受け取るか、実行
コマンドを受け取ると、カードJava仮想マシン(カ
ードJVM)16は、選択されたJavaカードアプリ
ケーション126Zの選択されたクラスの所定のメソッ
ド(例えば、メインメソッド)で実行する。カードJV
M16は、Javaカードアプリケーション126Z
が、カードオペレーティングシステム122にアクセス
できるようにし、付属ドキュメントFに示すように、I
/O、EEPROMサポート、ファイルシステム、アク
セス制御、他のネイティブJavaメソッドを利用する
システム機能の利用を可能とする。
【0087】選択したJavaカードアプリケーション
126Zは、端末装置14との通信チャンネルを確立す
るための通信部12aを利用して端末装置14にある適
切なアプリケーションと通信する。通信部12aから端
末装置14へ入力されるデータは、端末装置の通信ドラ
イバ132を介して端末装置14へ渡される。当該通信
ドライバ132は、通信部12aが利用する通信プロト
コルが扱えるように記述されている。当該データは、利
用されているICカード10の機能の規定が記述された
ICカードドライバ134に渡され、端末装置アプリケ
ーション136に対して高レベルなソフトウェアサービ
スを提供する。好ましい実施形態では、このドライバ
は、PC/SCスマートカードサービスプロバイダ(S
SP)ソフトウェアである。データは、その後、端末装
置アプリケーション136に渡される。端末装置アプリ
ケーション136は、特定のカードアプリケーション1
26Zの実行処理ができるように提供されている機能を
扱えるものとなっている。このように、コマンドとレス
ポンスが、端末装置アプリケーション136と選択した
カードアプリケーション126Zの間を行き来する。端
末装置アプリケーションは、ユーザとのやり取りによ
り、ユーザから入力されるコマンドを受け取り、そのう
ちいくつかは、Javaカードアプリケーション126
Zに渡され、ユーザに返されるJavaカードアプリケ
ーション126Zからのレスポンスを受け取る。
【0088】図14に示すように、カードJVM16
は、カードアプリケーション126Xをインタプリタ実
行するインタプリタである。カードJVMに影響を与え
るマイクロコントローラのメモリリソースは、カードR
OM140、カードRAM141、カードEEPROM
にある。カードROM140は、カードJVM16とカ
ードオペレーティングシステム122を格納するために
利用される。カードROM140は、ROMに固定記憶
するカードアプリケーション140aとクラスライブラ
リ140bを格納するために利用される。ロード可能な
アプリケーション141a、141b、ライブラリ14
1cは、カードRAM141に格納されうる。カードJ
VM16は、カードアプリケーション141a、141
b、140aをインタプリタ実行する。カードJVM1
6は、カードRAMを使って、VMスタック144aと
システム状態変数144bを記憶する。カードJVM1
6は、VMスタック144aにより実行される処理過程
を記憶する。カードJVM16により生成されたオブジ
ェクトは、RAMヒープ144c、EEPROMヒープ
146a、ファイルシステム147のいずれかに格納さ
れる。
【0089】カードJVM16により扱われるすべての
ヒープは、RAMヒープ144cとしてカードRAM1
41に格納されるか、EEPROMヒープ146aとし
てカードEEPROM142に渡され格納される。カー
ドRAM141は、システムスタック148の状態を記
録するために使われる。システムスタック148はマイ
クロコントローラのネイティブコードで記述されたルー
チンによって利用される。カードJVM16は、カード
EEPROM142を利用してアプリケーションデータ
を、EEPROMヒープ146aまたはファイルシステ
ム147のいずれかに格納される。ファイルに格納され
たアプリケーションデータは、カードオペレーティング
システム122のインタフェースを介して扱うことがで
きる。このインタフェースは、カードROM140に格
納されるクラスライブラリ140b、またカードEEP
ROM142に格納されるロード可能なクラスライブラ
リ141cにより提供される。インタフェースの一例
を、付属ドキュメントFに示す。カード内のアプリケー
ションとデータはファイアウォール機構149により互
いに隔離される。
【0090】マイクロコントローラの限られた利用可能
なリソースによって動作させるために、カードJVM1
6は、Javaプログラミング言語の絞り込んだサブセ
ットを実装している。したがって、Javaアプリケー
ション20は、Javaバイトコードの絞り込んだサブ
セットを含んだクラスファイルとしてコンパイルされる
こととなる。このサブセットにより、アプリケーション
プログラマーは、絞り込んだJavaのサブセットによ
りプログラムを作成することができ、現行のJava仮
想マシンと互換性を維持することができる。カードJV
M16によりインタプリタ実行されるJavaバイトコ
ードのセマンティックは、上述したJava仮想マシン
仕様により記述される。カードJVM16によりインタ
プリタ実行されるバイトコードのサブセットを付属ドキ
ュメントCに示されている。カードクラスファイルコン
バータ26は、Javaアプリケーション20をチェッ
クし、当該サブセットにおいて利用可能な特性(feature
s)のみを使用するものであるか確かめ、カードJVM1
6により理解され、インタプリタ実行できる形式に変換
する。
【0091】いくつかの実施形態において、カードJV
M16は、異なるサブセットまたはバイトコード116
の引数セットをインタプリタ実行できるようにデザイン
されている。Javaの絞り込んだサブセットは、オリ
ジナルJavaバイトコードにより提供されるセキュリ
ティの観点、または、主流のJava開発ツールとの互
換性の観点からは好ましくないが、異なるバイトコード
セットを使用することは、いくつかの処理性能の改善を
もたらしうる。
【0092】すべてのカードJVM16のアプリケーシ
ョン126は、クラスとクラスのメソッドにより定義さ
れるエントリポイントを持っている。エントリポイント
は、IDインプットマップ30のストリングとしてマッ
ピングされ、カードクラスファイルコンバータ26によ
り割り当てられる。Javaアプリケーション20内の
クラス、メソッド、フィールドは、カードクラスファイ
ルコンバータ26によりID識別子が割り当てられる。
例えば、メインアプリケーションクラスに対応するID
識別子は、F001として定義され、“main( )V”など
のメインメソッドに対応するID識別子は、F002と
して定義される。
【0093】カードJVMの実行アーキテクチャ全体は
図15のフローチャートに記述されている。カードJV
Mにおける実行は、実行制御120において開始され、
実行するカードアプリケーション126Zを選択する。
カードJVM16のカードアプリケーションでインタプ
リタ処理されるエントリポイント(メソッド)を見つけ
出し、割り当てる(152)。カードJVM16は、メ
ソッドをインタプリタ処理する(153)。インタプリ
タ処理がうまく成功すると(154)、カードJVM1
6は成功を報告し(155)、実行制御120に制御を
返す。インタプリタ処理153において、カードJVM
16が処理できないエラーや例外処理(典型的には、リ
ソース制限、セキュリティ違反)が発生すると、カード
JVMは停止し156、端末装置14に適切なエラー報
告を行なう。
【0094】カードJVM16の本質的部分は、バイト
コードの実行を処理するサブルーチンである。このサブ
ルーチンは、図16により示されている。与えられたメ
ソッド160は、バイトコードを当該メソッド中で実行
する。サブルーチンは、メソッドのパラメタが準備され
ると開始される(161)。この処理は、VMスタック
144aポインタおよびVMスタック144aフレーム
リミットの設定処理、メソッドの第1のバイトコードの
プログラムカウンタの設定処理を含む。
【0095】次に、メソッドフラグがチェックされる
(162)。もし、メソッドのフラグがネイティブであ
ると、メソッドは実際にネイティブメソッドコード(マ
イクロコントローラのネイティブプロセッサコードで記
述されたサブルーチン)をコールする。この場合、カー
ドJVM16は、実行効率の高いコールを用意し(16
3)、ネイティブコードサブルーチンに戻る。ネイティ
ブメソッドのパラメタは、直接またはシステムスタック
148を介してVMスタック144aに渡される。適切
なセキュリティチェックが実行され、ネイティブメソッ
ドサブルーチンがコールされる。ネイティブメソッドサ
ブルーチン処理の結果(もし結果があれば)は、次の実
行処理されるバイトコードがアクセスできるようにVM
スタック144aに入れられる。
【0096】次に、カードJVM16のディスパッチル
ープに入る(164)。バイトコードディスパッチルー
プは、それぞれのバイトコードの実行準備、実行、終了
処理を行なう。メソッド160におけるバイトコードの
インタプリタ処理が終了したとき、またはカードJVM
16においてリソース制限、セキュリティ違反が発生し
た場合、ループ処理が終了する。
【0097】先行処理されるバイトコードが、分岐処理
165を必要としている場合、カードJVM16は分岐
処理の準備をする(165a)。次のバイトコードが検
索される(165b)。それぞれのバイトコードを処理
する処理コストを低く抑えるため、バイトコード引数、
長さ、型などの多くの共通する要素が抽出され、格納さ
れる。
【0098】プログラミング言語のセキュリティモデル
によって提唱されているセキュリティを構築するため、
クラスファイルのバイトコードは、当該モデルの構成内
容を確認して決定されなければならない。これらのチェ
ックは典型的に、公知であるバイトコードベリファイア
に関するプログラムにより実行される。これらバイトコ
ードベリファイアはJava仮想マシン仕様に記述され
る4つのパスを実行処理する。バイトコードベリファイ
アにより保証されるランタイムセキュリティを提供する
ため、カードJVM16はベリファイアの第3パスおよ
び第4パスに含まれるチェック処理を実行する。カード
JVM16によりインタプリタ処理されたバイトコード
60のセキュリティが保証されれば(ほとんど不可能で
あるが)、このチェック処理は、カードJVM16によ
って省略できる。最小限の処理として、オブジェクトリ
ファレンスが偽物ではなく、VMスタック144aとロ
ーカル変数境界が監視できる限り、コードセキュリティ
が維持される。この処理には、実行処理されたバイトコ
ードに関するVMスタック144aの状態のチェック処
理が要求される。
【0099】プログラミング言語のセキュリティモデル
を強化するため、付属ドキュメントGに示す256バイ
トテーブルが生成される。このテーブルは、バイトコー
ド番号によりインデックス化されている。このテーブル
は、バイトコードインデックスに関する型情報とレング
ス情報を含んでいる。コード化された最初の5ビット
は、型を表わし、最後の3ビットはレングスを表わして
いる。バイトコードの型情報とレングス情報は、バイト
コード番号によりテーブルから直接インデックス化され
る。この型情報とレングス情報は、付属ドキュメントH
に示すチェック処理に用いられる。付属ドキュメントH
において、チェック処理は、付属ドキュメントGのテー
ブルから得られるレングス情報と型情報のデコード処理
により開始される。レングス情報は、プログラムカウン
タをカウントアップするために利用される。型情報は、
実行しようとするバイトコードを扱うVMスタック14
4aのデータ型が正しいものであることを保証するため
の実行前チェックに利用される。テーブル格納に用いる
256バイトのROMは、カードJVM16上で実行す
るオリジナルJavaバイトコードに割り当てられ、カ
ードにロードされるJavaクラスファイルに要求され
る変更を最小限にする。追加Javaバイトコードは、
比較的適切にテーブルエントリを更新するのが簡単であ
るので、サポートしやすい。
【0100】他の実施形態において、図10に示すよう
に、メソッドにおけるJavaバイトコードは、再配置
処理において付属ドキュメントHのテーブルに格納され
るバイトコード型情報、レングス情報を暗示するように
リナンバリングされる。付属ドキュメントHを参照して
説明する。その結果、VMスタック144aの状態と処
理されたバイトコードに関して行なわれるチェック処理
は、テーブルルックアップを含む必要はない。チェック
処理は、付属ドキュメントIに示されるように単純比較
のセットにより実行される。この実施形態は、256バ
イトのテーブルを設けないので、ROM容量の面で有利
である。しかし、新たなバイトコードを、サポートする
バイトコードセットに加えることは、注意して行なう必
要がある。なぜなら新たなバイトコードをサポートする
バイトコードの暗示ナンバリング処理スキーム(implic
it numbering scheme)に適合させる必要があるためで
ある。
【0101】他の実施形態において、カードJVM16
は、実行スピードを考慮してあらゆるセキュリティチェ
ックを実行しないものとすることができる。この処理
は、図18のフローチャートにより示される。図18の
フローチャートは、図16のフローチャートからセキュ
リティチェック処理を除いたものと同じものとなってい
る。このオプションは、バイトコードのセキュリティが
保証されていない場合には、セキュリティの面からは好
ましいものではない。
【0102】カードJVM16は、他のセキュリティチ
ェックを強化する。バイトコードがローカル変数を参照
する場合、カードJVM16は、当該参照が有効なもの
であるか否かをチェックし、有効でない場合はエラーを
返す。参照が有効である場合、カードJVM16は、そ
の後のチェック処理に用いるローカル変数の型を格納す
る。VMスタック144aのポインタは、参照がまだ有
効範囲にあるか否かチェックする。もし有効範囲にない
場合は、例外処理を実行する。バイトコード番号をチェ
ックする。もし、サポートされていないものであれば、
例外処理を実行する。
【0103】最後に、バイトコード自体がディスパッチ
される165d。カードJVM16により変換されたバ
イトコードは、付属ドキュメントCにリストアップされ
ている。バイトコードのセマンティックは、バイトコー
ドのディスパッチ処理前後のVMスタック144aの状
態とともに、上述のJava仮想マシン仕様に記述され
ている。いくつかのバイトコード(INVOKESTATIC、INVO
KESPECIAL、 INVOKENONVIRTUAL、INVOKEVIRTUALのバイ
トコード)は、カードJVM16にリエントリされ、要
求する処理が開始されるサブルーチン161にエントリ
される。図17は、バイトコード実行ルーチンのフロー
チャートを示している。このルーチンは、与えられたバ
イトコード171を実行する。カードJVM16は、バ
イトコードが要求するインストラクションを実行する
(172)。カードJVM16は実行処理される中でル
ーチン制限が発生すると(173)、エラーを返す(1
56)。エラーがカードJVM16により端末装置に返
される。もし、バイトコード実行が正常処理されると、
正常(success)を返す(175)。
【0104】実行後、VMスタック144a状態を正し
く設定するために結果の型が正しく利用され、適切にV
Mスタック144aのデータ型のフラグ処理が行なわれ
る。バイトコード情報テーブルから先行処理165bで
集められたバイトコード情報は、当該実行直後のバイト
コードに関するVMスタック144aの状態を設定する
ために利用される。
【0105】他の実施形態において、実行されたバイト
コードに関するVMスタック144aの出力状態の設定
処理は、バイトコードがリナンバリング処理されると簡
単になる。この処理は、付属ドキュメントIによって示
されている。
【0106】さらに、他の実施形態において、カードJ
VM16は、カードJVM16の実行スピードを考慮し
て、VMスタック144aの出力状態の設定処理を省略
することができる。このオプションは、バイトコードの
セキュリティが保証されていない場合には、セキュリテ
ィ面から好ましいものではない。
【0107】バイトコードが実行された後、バイトコー
ド165fは破棄される。この処理は、引数をVMスタ
ック144aから除去する処理を含む。ひとたび、バイ
トコード処理が完了すると、次のメソッドのバイトコー
ド処理のループ164が繰り返される。
【0108】ひとたび、ディスパッチループ164が終
了すると、VMスタック144aの内容がクリアされる
(166)。これにより、あらゆるオブジェクトリファ
レンスが他のカードJVM16インボケーションに対し
てアクセスすることを防ぎ、カードJVM16のセキュ
リティを破ることを防いでいる。バイトコードのディス
パッチループ164の終了(167)は、カードJVM
16が要求されたメソッド実行が完了したことを意味す
る。
【0109】ICカード10のデータとアプリケーショ
ンを相互に隔離するために、ICカード10はカードJ
VM16が提供するファイアウォール機構149を利用
する。カードJVM16には標準パス3とパス4のベリ
ファイアチェックが実装されているので、アプリケーシ
ョンが他のアプリケーションのデータ領域、コード領域
を参照しようとすれば検知することができ、セキュリテ
ィエラー156フラグを立てる。例えば、通常の低レベ
ルアプリケーションは、非参照データ型であっても参照
データとして扱うことができて、その結果、権限のない
メモリ領域へのアクセスを可能とし、セキュリティ違反
を起こすことができる。本発明によれば、カードアプリ
ケーション126Zが非参照型データを参照データとし
て使おうとすると、セキュリティエラー156を起こし
てしまうこととなる。通常のJavaによれば、この保
護アプリケーション環境は、サンドボッスクアプリケー
ション−インタプリタ実行環境として規定されている。
【0110】しかし、これらファイアウォール構成は、
独立した動作はしない。事実、このファイアウォール構
成は、通常のアクセス制御リストおよび暗号機構とオー
バラップし、また、相互に強化し合う関係にあり、以下
のテーブルに示されるものである。
【0111】
【表1】
【0112】これらを併せて利用することにより、IC
カードのデータとアプリケーションを隔離し、カードア
プリケーション126が権限を持つICカード10のリ
ソースのみにアクセスできるようにする。
【0113】図19に示すように、カードアプリケーシ
ョン126X、126Y、126Zはカードアプリケー
ション126が実行されるときに特定の特権を与えられ
る。例えば、これら特権は、カードアプリケーション1
26がどのデータファイルにアクセスでき、カードアプ
リケーション126がファイルシステム147において
どの処理が実行できるかを規定するものである。カード
アプリケーション126に認められる特権は、通常は、
特定のカードアプリケーション126Zが端末装置14
を介してユーザにより開始されときに設定される。
【0114】ICカード10は、暗号ID識別認証メソ
ッド(cryptographic identification verification met
hods)が、ID190(例えば、190a、190b、
190c)と関係付けられ、カードアプリケーション1
26を実行する特権のセットが設定される。特定のID
190cのカードアプリケーション126Zとの関連性
は、カードアプリケーション126Zの実行が開始され
ると設定され、それゆえ図20に示すように特定の実行
アプリケーション200が生成される。ID190は、
IDトークンと関連付けられた、ユニークで読みやすい
テキストストリングである。IDトークン(例えば、個
人認証番号(personal identification number (PIN))、
または、RSA暗号方式の秘密鍵)は、暗号方式の鍵で
ある。
【0115】図20に示すように、特定のカードアプリ
ケーション126Zを実行するため、カードアプリケー
ション126ZのID190cは、認証されなけらばな
らない。ID190cは、ID190cと関連付けられ
たIDトークンのデモンストレーション知識(demonstra
ting knowledge)により認証される。カードアプリケー
ション126Zが実行されるためには、エージェント
(例えば、カードホルダー、その他アプリケーションを
実行したい者)は、アプリケーションのID暗号鍵を所
有していること、または知っていることを示さなければ
ならない。
【0116】暗号鍵を所有していることをデモンストレ
ーションする一つの方法は、単にその鍵自体を提示すれ
ば良い。PIN認証方式が、この認証方式の例である。
実際に鍵自体を提示することなく暗号鍵を所有している
ことをデモンストレーションする他の方法は、平文を当
該鍵により暗号化または復号化することができることを
示せば良い。
【0117】このように、ICカード10上の特定の実
行アプリケーション200は、カードアプリケーション
126Zに加えて認証されたID190cを含んでい
る。カードアプリケーション126は、これらの要素す
べてが揃っていないと実行することができない。カード
アプリケーション126Zは、実行するデータ処理を定
義し、権限を与えられたID190cが、どのオブジェ
クトのオペレーションを実行するのかを規定する。例え
ば、特定のアプリケーション126Zは、特定のID1
90cに関連付けられたファイルシステム147のID
“C”のファイル202のみをアクセスでき、特定のカ
ードアプリケーション126Zは、ID体190c以外
のIDに関連付けられた他のファイル204に対しては
アクセスできない。
【0118】ICカード10は、アプリケーションとデ
ータの隔離を確実にするための追加ステップを採りう
る。ICカード10は、3つのソフトウェア機能のステ
ップを備えている。認証されたIDのアクセス制御リス
トに関するステップ、Javaベースの仮想マシンに関
するステップ、データファイルとアプリケーション実行
とコミュニケーションチェンネルを保護するワンタイム
セッション暗号鍵に関するステップである。まとめる
と、一つの実施形態では、これらソフトウェア機能セッ
トにより、当該実施形態におけるアプリケーションデー
タのファイアウォール149を提供する。以下は、それ
ぞれのソフトウェア機能セットについて説明し、3つの
ソフトウェア機能セットが、ICカード10におけるア
プリケーションとデータの隔離の確保のため、如何に協
同しているかを示している。
【0119】アクセス制御リスト(ACL)は、アクセ
スが制御されて保護されているICカード10上のそれ
ぞれのオブジェクト(例えば、データファイルまたは通
信チャンネル)と関連付けられている。ACL上のエン
トリ(例えば、特定のオブジェクト)は、eテュプルを
参照するデータ形式である。
【0120】型、ID、許可(type : identity : perm
issions) 型フィールドは、以下のID(IDフィールド内)、例
えば、ユーザ(ジョンスミスなど)、グループなどのI
D型を示している。許可フィールドは、オブジェクトを
利用するIDが実行できる処理のリスト(例えば、読み
取り、付加、更新など)を示している。
【0121】例として、ACLエントリを持つデータフ
ァイルは、 “USER、 AcmeAirlines、RAU” であるので、IDが“AcmeAirlines”であるあらゆるア
プリケーションは、データファイルの読み取り“R”、
付加“A”、更新“U”を実行することができる。加え
て、ACLは、データファイルの生成と消去を選択的に
許可できる。さらに、ACLは、アプリケーションの実
行を選択的に許可できる。
【0122】オブジェクトは実行アプリケーション20
0によってアクセスするときにはいつでも、アクセス
は、カードJVM16により遮断でき、カードオペレー
ションシステム122に渡され、オブジェクトに関連付
けられたACLがあるかないかが決定される。もし、関
連付けられたACLが存在する場合には、実行アプリケ
ーション200と関連付けられたID190cがACL
によりマッチングが採られる。もし、IDが見つからな
い場合、または、要求されているアクセスの型が許可で
きないものである場合には、アクセスが拒否される。そ
れ以外は、アクセスが認められ、処理が実行される。
【0123】図13に示すように、ICカード10と端
末装置14の間の単一のデータパスが形成されることに
よる潜在的な問題を回避するため、通信チャンネルの隔
離化が、カードアプリケーション126Zと端末装置ア
プリケーション136間で実施されるワンタイムセッシ
ョンキーの交換によるID認証プロセスによって達成さ
れる。当該キー209は、後続の認証する端末装置13
6と認証されるアプリケーション126Z間のトラフィ
ックを暗号化するために利用される。ワンタイムセッシ
ョンキー209が設定されると、不正な端末装置アプリ
ケーションは、認証された端末装置14とICカード間
の通信を“読み込む”ことも、認証を受けていない処理
をカードアプリケーション上で実行させるように“だま
す”こともできない。
【0124】カード・端末間トラフィックの暗号化と復
号化は、カードオペレーティングシステム122、カー
ドアプリケーション126Z自体のいずれによっても扱
うことができる。前者のケースでは、端末装置14との
通信では、アプリケーションに対してトランスペアレン
ト(復号可能)に暗号化されており、メッセージトラフ
ィックは複合化されて、アプリケーションのデータ領域
に渡される。後者のケースでは、カードアプリケーショ
ン126Zは、セキュリティ用のエクストラ階層を提供
する暗号化、複合化を実行するか否かを選択でき、アプ
リケーションにより、データ生成されれば即座に暗号化
しておき、当該データが利用される場面になったときの
みに複合化する。それ以外は、データが、セッションキ
ー209をもって暗号化されたままの状態である。
【0125】このように、アプリケーションのファイア
ウォールは、3つのソフトウェア機能セットにより相互
強化が図られている。データファイルは、認証されたI
Dアクセス制御リストにより保護されている。アプリケ
ーション実行領域は、カードJVM16により保護され
ている。通信チャンネルは、ワンタイムセッションキー
209の暗号処理により保護されている。
【0126】他の実施形態において、上記技術は、マイ
クロコントローラ(プロセッサ12)で利用され、IC
カード以外の各種デバイス(例えば、車のエンジン)の
制御を実行できる。これらアプリケーションにおいて
は、マイクロコントローラが高級プログラミング言語の
格納と実行を行なうための小規模なプラットフォーム
(例えば、半導体基板上に配置された中央演算処理ユニ
ット、メモリ)を提供することとなる。マイクロコント
ローラを利用する、現存するデバイスの多く、新しく作
られるデバイスは、本発明を利用して、高級プログラミ
ング言語を用いてマイクロコントローラのプログラムを
することができ、これらデバイスのアプリケーションを
含めることができる。
【0127】端末装置アプリケーションは、Javaア
プリケーション、Javaアプレット(applets)、Ja
vaアグレット(aglets)、Javaサーブレット(servl
ets)、Javaコムレット(commlets)、以下に示される
クラスファイルの結果であるJavaコンポーネント
と、他の非Javaプログラムなどあらゆるプログラム
が含まれる。
【0128】クラスファイルは、Javaプログラムフ
ァイル以外のソースファイルを含んでいる。Java以
外のいくつかのプログラミング言語は、それぞれのソー
スファイルからクラスファイルを生成するためのコンパ
イラまたはアセンブリを備えている。例えば、プログラ
ミング言語EIFFELは、JVMバイトコードを生成
するEIFFELコンパイラであるPIRMINカルベ
ラ(kalberer)の“J−EIFFEL”を利用してクラス
ファイルを生成することができる(ウェブサイト:http
//www.spin.ch/〜kalberer/jive/index.htm)。Ada
95からJavaバイトコードへのトランスレータは、
以下の参考文献(Taft, S. Tucker, “Programming the
Internet in Ada 95”proceedings of Ada Europe 96,
1996)に記述されている。ジャスミン(Jasmin)は、J
avaバイトコードアセンブラであり、クラスファイル
を生成するために利用される。ジャスミン(Jasmin)は、
以下の参考文献に記述されている。“Meyer, Jon and T
roy Downing, "Java Virtual Machine", O'Reilly, 199
7。クラスファイルのソースにかかわらず、インタプリ
タ処理されるためのコードを生成するため、上記の記述
は、Java以外の言語に適用される。
【0129】図21に示すように、マイクロコントロー
ラ210を含むICカード、スマートカードは、プラス
ティックカード212上に搭載されている。このプラス
ティックカード212は、典型的なクレジットカードと
同様の形状を持つものである。通信部12aは、通信チ
ャンネルを確立するための接触式パッド214か、また
は、無線通信システムを備えている。
【0130】他の実施形態において、図22に示すよう
に、マイクロコントローラ210は、携帯電話または設
置型電話220に搭載され、電話にスマートカードの機
能を効率的に持たせることができる。
【0131】他の実施形態において、マイクロコントロ
ーラ210は、図23に示すように、キーリング230
に組み込まれる。これにより、キーリング230のマイ
クロコントローラ210と関連付けられているIDを認
識するための仕組みが装備されている自動車に対して、
高いセキュリティのもと、アクセスすることが可能とな
る。
【0132】時計や指輪などの貴重品類240は、図2
4に示すように、高いエルゴノミックス性をもってマイ
クロコントローラ210を埋め込むことができる。これ
ら実施形態は、典型的には、通信チャンネルを確立する
ため無線通信システムを利用し、また、ユーザに対して
最小限の手間でアクセス制御のための実装を可能とする
方法を提供する。
【0133】図25は、自動車254の電気回路サブシ
ステム252に搭載されるマイクロコントローラ210
を示している。この実施形態では、マイクロコントロー
ラは、自動車へのアクセス制御処理(例えば、IDチェ
ック、自動車のイグニッションシステムの起動制御な
ど)、無線通信による有料道路料金徴収システム、自動
車の通行位置を検知する位置決めシステム(GPS)の
インタフェース提供など、多様な目的に利用される。
【0134】本発明の特定の実施形態を説明したが、本
発明の開示に基づいて、他の様々な変更や置換が、当業
者にとって明らかである。このような変更や置換は、本
発明の範疇に入るものであり、特許請求の範囲に記載さ
れた内容に基づいて、本発明の技術的範囲に含まれる。 付属ドキュメントA(APPENDIX A) 好ましい実施形態におけるカードクラスファイル形式 カードクラスファイルは、オリジナルクラスファイルの
圧縮形式である。カードクラスファイルは、オリジナル
クラスファイルからJavaプログラムをインタプリタ
処理するために必要とされるセマンティック情報のみを
含んでいる。オリジナルクラスファイルの間接参照は、
コンパクト表現の結果、直接参照により置き換えられ
る。カードクラスファイル形式は、以下の原則に基づい
ている。標準クラスファイル形式に近づけること。
【0135】カードクラスファイル形式は、標準クラス
ファイル形式に可能な限り近づけるべきである。クラス
ファイルのJavaバイトコードを変更しない。バイト
コードを変更せず、バイトコードに対する構造的、静的
な制約条件がそのままであることを確実にする。実装を
容易にすること。
【0136】カードクラスファイル形式を、Java仮
想マシンの実装を行なうものに対して十分シンプルなも
のとする。異なるが等価に振舞う実装を認める。 フィージビリティ カードクラスファイル形式が、スマートカード技術に適
合するためにコンパクトにされたものでなければならな
い。現在の技術的制約に適合し、さらに、将来の技術革
新の適合性を失わないものであること。この記載は、
「Java仮想マシン仕様“The JavaTM Virtual Machi
ne Specification”[1](以下、レッドブックと呼
ぶ)」というタイトルの本の第4章「クラスファイル形
式」に基づいている。このドキュメントは、レッドブッ
クに記載された標準クラスファイル形式に基づいている
ので、ここでは、レッドブックにはない情報のみ提示す
る。レッドブックは、すべての規則の最終的な権原とし
て扱われる。標準クラス形式との主な違いは、以下であ
る。
【0137】コンスタントプール(constant pool)が、
16ビットのID識別子のみを含むように最適化され、
可能な限り間接参照が直接参照に置き換えられている。
【0138】オリジナルクラスファイルの属性情報は、
削除され、または、再グループされている。
【0139】Javaカードクラスファイル形式(Java
Card class File Format) 当該セクションは、Javaカードクラスファイル形式
を記載している。
【0140】各カードクラスファイルは、1つまたは複
数のJava型を含んでいる。この型は、クラスまたは
インタフェースである。カードクラスファイルは、8ビ
ットバイトストリームにより構成される。16ビット、
32ビット、64ビット量データは、それぞれ、連続す
る8ビットバイトデータを2つ、4つ、8つ読み込むこ
とにより構成される。マルチバイトデータは、常に、ビ
ックエンディアンで格納され、大きなバイトから順にな
っている。Javaでは、この形式は、java.io.Datain
put、 java.io.DataOutputのインタフェース、java.io.
DatainputStream、java.io.DataOutputStreamなどのク
ラスによりサポートされている。Javaクラスファイ
ルデータを表わすデータ型と同じセットを定義して用い
る。U1、U2、U4の型は、それぞれ、割り当てられ
ていない1、2、4バイト量を表わしている。Java
において、これら型は、リードアンサインドバイト(rea
dUnsignedByte)、リードアンサインドショート(readUns
ignedByte)、“java.io.Datainput”のインタフェース
のリードイント(readint)などのメソッドにより読み込
みされる。カードクラスファイル形式は、C言語のよう
な構造分類記号法で書かれている擬構造を使用して表現
される。Javaカード仮想マシンのクラスとクラスイ
ンスタンスのフィールドの混乱を避けるために、カード
クラスファイル形式を記述する構造内容はアイテムと呼
ばれる。C構造のフィールドとは異なって、連続したア
イテムはカードクラスファイルの中にパディングもアラ
イメントもなしで連続して格納されている。変数サイズ
のアイテムから成る変数サイズのテーブルは、いくつか
のクラスファイル構造で使用されるている。C言語のよ
うなテーブルアイテムを参照する配列シンタックスを使
っても、テーブルが可変サイズ構造のストリームである
という事実は、テーブルインデックスをテーブルのバイ
トオフセットとして直接変換できることを意味する。こ
こで配列と呼んでいるデータ構造は、文字通り配列構造
を持っている。カードクラスファイル構造と標準のクラ
スファイル構造を見分けるために、大文字を加える。例
えば、オリジナルのクラスファイルの中のfield_infoを
カードクラスファイルの中では、FieldInfoに改名す
る。
【0141】カードクラスファイル(Card Class Fil
e) カードクラスファイルは単一のCardClassFile構造を含
んでいる: CardClassFile構造のアイテムは以下の通りである: minor_version, major_version minor_versionとmajor_versionアイテムの値は、このカ
ードクラスファイルを作り出した、オフカードJava
カード仮想マシン(off-card Java card virtualmachin
e)のマイナーおよびメジャーバージョンの番号である。
通常、Javaカード仮想マシンの実装は、与えられた
メジャーバージョン番号と、0から幾つかの特定番号の
マイナーバージョン番号を持っているカードクラスファ
イルをサポートする。Javaカードフォーラムのみ
が、カードクラスファイルバージョン番号の意味を定義
することができる。 name_index name_indexアイテムの値は、有効なJavaクラス名を
表さなければならない。name_indexによって表されたJ
avaクラス名は、カードを実行するメインアプリケー
ションに対応するちょうど同じJavaクラス名でなけ
ればならない。カードクラスファイルは、カードにおい
て実行されるアプリケーションを構成するクラスまたは
インタフェースを含んでいる。Javaでは、各クラス
がメインメソッドを含むことが許容されるので、カード
アプリケーションに対応するメインメソッドを含んでい
るクラスファイルを区別する方法がある。 const_size const_sizeの値は、カードクラスファイルコンスタント
プールの中のエントリの番号を与える。constant_pool
インデックスは、ゼロ以上、const_sizeより以下ならば
有効であるとされる。 max_class この値は、カードクラスファイルの中に存在しているク
ラスの番号を参照する。ネームリゾリューション(name
resolution)と、Javaカードのリンキングは、オフ
カードJava仮想マシンにより実行されるので、全て
のクラスファイルとアプリケーションに要求されるクラ
スは、1つのカードクラスファイルにまとめられる。 constant_pool[] constant_poolは、CardClassFile構造とそのサブ構成内
で参照される様々なストリング定数、クラスネーム、フ
ィールドネーム、他の定数を表す可変長の構造()のテー
ブルである。カードクラスファイルにおける最初のエン
トリはconstant_Pool [0]である。インデックス0からc
onst_sizeまでの各constant_Poolのテーブルのエントリ
は、可変長の構造()を持っている。 class[] クラスは、カードにロードされるアプリケーションを構
成するmax_classクラスのテーブルである。 コンスタントプール(Constant Pool) すべてのconstant_poolのテーブルのエントリには, 以
下の一般形式がある: constant_poolテーブルの中の各アイテムは、cp_infoエ
ントリの種類を示す1バイトのタグで始めなければなら
ない。info 配列の内容はタグの値に従って異なる。有
効なタグとそれらの値はレッドブックで指定されたもの
と同じである。それぞれのタグバイトの後には、特定の
定数に関する情報を与える2またはそれ以上のバイトが
続く。追加情報の形式はタグ値に従って異なる。現時点
で含まれる必要があるのタグは、CONSTANT_Class、CONS
TANT_FieldRef、CONSTANT_MethodRefおよびCONSTANT_In
terfaceRefのみである。そのままの形で追加される他の
タグのサポートは、仕様書に含まれている。 CONSTANT_Class CONSTANT_Class_info構造は、クラスまたはインタフェ
ースを表現するために使用される: CONSTANT_Class_info構造のアイテムは以下である: tag タグアイテムには、CONSTANT_Class(7)の値を持ってい
る。 name_index name_indexアイテムの値は、有効なJavaクラス名を
表さなければならない。name_indexによって表されたJ
avaクラス名は、オリジナルクラスファイルのconsta
nt_Poolの対応するCONSTANT_Classエントリによって記
述されるJavaクラス名とまったく同じものである。
CONSTANT_Fieldref, CONSTANT_Methodref,CONSTANT_Int
erfaceMethodref Fields, メソッド, およびインタフェ
ースメソッドは、同様の構造によって表される: これらの構造のアイテムは以下の通りである: tag CONSTANT_FieldrefInfo構造のタグアイテムは、CONSTAN
T_Fieldref(9)の値を持っている。CONSTANT_MethodrefI
nfo構造のタグアイテムは、CONSTANT_Methodref(10)の
値を持っている。CONSTANT_InterfaceMethodrefInfo構
造のタグアイテムは、CONSTANT_InterfaceMethodref(1
1)の値を持っている。 classs_index class_indexアイテムの値は、有効なJavaクラスま
たはインタフェース名を表さなければならない。class_
indexによって表された名前はオリジナルのクラスファ
イルのccnstant_Poolの対応するCONSTANT_Class_infoエ
ントリによって記述される名前とまったく同じものであ
る。 name_sig_index name_sig_indexアイテムの値は、有効なJava名と型
を表さなければならない。name_sig_indexによって表わ
された名前と型は、オリジナルクラスファイルのconsta
nt_pool構造のCONSTANT_NameAndType_infoエントリによ
って記述される名前と型とまったく同じものである。
【0142】クラス(Class) 各クラスは固定長レコードClassInfo構造によって記述
される。この構造の形式は以下の通りである. ClassInfo構造のアイテムは以下の通りである: name_index name_indexアイテムの値は、有効なJavaクラス名を
表さなければならない。name_indexによって表されたJ
avaクラス名は、オリジナルクラスファイルの対応す
るClassFile構造で記述されるJavaクラス名とまっ
たく同じものである。 max_field max_fieldアイテムの値は、このクラスまたはインタフ
ェース型によって宣言されたインスタンス変数を表すフ
ィールドテーブルの中のFieldInfo()構造の番号を与え
る。この値は、カードクラスファイルの非静的フィール
ドの番号を参照する。クラスがインタフェースを表すな
らば、max_fieldの値は0である。 max_sfield max_sfieldアイテムの値は、このクラスまたはインタフ
ェース型によって宣言されたクラス変数を表すフィール
ドテーブルの中のFieldInfo構造の番号を与える。この
値は、カードクラスファイルの静的フィールドの番号を
参照する。 max_method max_methodアイテムの値は、メソッドテーブルの中のMe
thodInfo()構造の番号を与える。 max_interface max_interfaceアイテムの値は、このクラスまたはイン
タフェース型のダイレクトスーパーインタフェースの番
号を与える。 superclass クラスのために、スーパークラスアイテムの値は、有効
なJavaクラス名を表さなければならない。スーパー
クラスによって表されたJavaクラス名は、オリジナ
ルクラスファイルの対応するClassFile構造で記述され
るJavaクラス名とまったく同じものである。スーパ
ークラス、またそのスーパークラスのいずれもは、最終
的なクラスではない。スーパークラスの値が0ならば、
このクラスは、class java.lang.Objectであり、クラス
またはインタフェースをスーパークラスなしで表わさな
ければならない。インタフェースに関しては、スーパー
クラスの値はいつも、Java class java.lang.Objectを
表さなければならない。 access_flags access_flagsアイテムの値は、クラスとインタフェース
宣言とともに利用される変更子(modifier)のマスクであ
る。access_flags変更子とそれらの値は、オリジナルク
ラスファイルの対応するClassFile構造のaccess_flags
変更子と同様のものである。 field[] フィールドテーブルの中の各値は、クラスまたはインタ
フェース型のフィールドの完全な記述を与える固定長レ
コード、FieldInfo()構造でなければならない。フィー
ルドテーブルは、このクラスまたはインタフェースによ
って宣言されるそれらのフィールドのみを含む。スーパ
ークラスまたはスーパーインタフェースから引き継がれ
るフィールドを表すアイテムを含まれていない。 interface[] インタフェース配列における各値は、有効なインタフェ
ース名を表さなければならない。各エントリで表される
インタフェース名は、オリジナルクラスファイルの対応
するインタフェース配列において記述されるインタフェ
ース名とまったく同じものでなければならない。 method[] メソッドテーブルの各値は、クラスまたはインタフェー
スのメソッドに対するJava仮想マシンのコードの完
全な記述を与える可変長MethodInfo () 構造を持ってい
る。MethodInfo構造は、このクラスまたはインタフェー
ス型によって宣言されるすべてのメソッド、インスタン
スメソッド、クラス、クラス(静的)メソッドを表わし
ている。メソッドテーブルは、このクラスによって明ら
かに宣言されるメソッドを含むのみである。インタフェ
ースには、単一のメソッド<clinit>、インタフェース初
期化メソッドのみがある。メソッドテーブルは、スーパ
ークラスまたはスーパーインタフェースから引き継がれ
たメソッドを表わすアイテムが含まれていない。
【0143】フィールド(Fields) 各フィールドは、固定長レコードfield_info構造によっ
て記述されている。この構造の形式は以下のようになっ
ている。
【0144】 FieldInfo構造のアイテムは以下の通りである: name_index name_indexアイテムの値は、有効なJavaフィールド
名を表さなければならない。name_indexによって表され
たJavaフィールド名はオリジナルクラスファイルの
対応するfield_info構造で記述されるJavaフィール
ド名とまったく同じものである。 signature_index signature_indexアイテムの値は、有効なJavaフィ
ールドディスクリプタを表さなければならない。署名(s
ignature)インデックスによって表されるJavaフィ
ールドディスクリプタはオリジナルクラスファイルの対
応するfield_info構造で記述されるJavaフィールド
ディスクリプタとまったく同じもである。 access_flags access_flagsアイテムの値は、アクセス許可を記述する
ことに使用された変更子のマスクとフィールドのプロパ
ティである。access_flags変更子とそれらの値は、acce
ss_flags変更子とオリジナルクラスファイルの対応する
field_info構造のものと同じである。
【0145】メソッド(Methods) 各メソッドは、可変長のMethodInfo構造によって記述さ
れる。MethodInfo構造は、Java仮想マシンのインス
トラクションと、単一のJavaメソッド、インスタン
ス初期化メソッド、クラスまたはインタフェース初期化
メソッドの補助情報を含む可変長データ構造である。構
造は、以下の形式を持つ: MethodInfo構造のアイテムは以下の通りである: name_index name_indexアイテムの値は、特別な内部のメソッド名(<
init>か<clinit>のどちらかの1つ)か、有効なJava
メソッド名のどちらかを表さなければならない。name_i
ndexによって表されたJavaメソッド名はオリジナル
クラスファイルの対応するmethod_info構造で記述され
るJavaメソッド名とまったく同じものである。 signature_index signature_indexアイテムの値は、有効なJavaメソ
ッドディスクリプタを表さなければならない。signatur
e_indexによって表されたJavaメソッドディスクリプタ
はオリジナルクラスファイルの対応するmethod_info構
造で記述されるJavaメソッドディスクリプタとまっ
たく同じものである。 max_local インボケーション(invocation)においてメソッドに渡さ
れたパラメータを除いて、max_localsアイテムの値は、
このメソッドによって使用されるローカル変数の数を与
える。第1のローカル変数のインデックスが0である。
1ワード値のもっとも大きなローカル変数のインデック
スは、max_locals-1である。 max_arg max_argアイテムの値は、引数の最大の数をこのメソッ
ドに与える。 max_stack max_stackアイテムの値は、このメソッド実行中のあら
ゆるポイントにおけるオペランドスタックのワードの最
大数を与える。 access_flags access_flagsアイテムの値は、アクセス許可を記述する
ことに使用された変更子のマスクと、メソッドまたはイ
ンスタンス初期化メソッドのプロパティである。access
_flags変更子とそれらの値は、access_flags変更子とオ
リジナルクラスファイルの対応するmethod_info構造と
同じものである。 code_length code_lengthアイテムの値は、このメソッドのためのコ
ード配列におけるバイト数を与える。code_lengthの値
は、ゼロ以上でなければならず、コード配列は空ではな
い。 exception_length exception_lengthアイテムの値は、exception_infoテー
ブルの中のエントリの数を与える。 code[] コード配列はメソッドを実現するJava仮想マシンコ
ードの実際のバイトを与える。コード配列がバイトアド
レス可能なマシンのメモリに読み込まれるとき、もし配
列の第1バイトが4バイト境界で並べられるならば、テ
ーブルスイッチ(tableswitch)とルックアップスイッチ
(lookupswitch)の32ビットオフセットは4バイトに並
べられ、コード配列配置の結果に関するさらなる情報の
インストラクションの記述を参照する。コード配列の内
容の詳細な制約条件は大規模であり、Java仮想マシ
ン仕様で記述されるものと同じである。 einfo[] einfo配列における各エントリは、コード配列における1
つの例外処理ハンドラを記述する。それぞれのeinfoエ
ントリは以下のアイテムを含んでいる: start_pc, end_pc 2つのアイテム、start_pcおよびend_pcの値は例外処理
ハンドラがアクティブとなるコード配列における範囲を
示す。start_pcの値はインストラクションのオペコード
のコード配列の有効なインデックスでなければならな
い。end_pcの値は、インストラクションのオペコードの
コード配列の有効なインデックスでなければならず、ま
たはcode_lengthのコード配列の長さに等しいものでな
ければならない。start_pcの値はend_pcの値以下でなけ
ればならない。start_pcは包括的で、end_pcは排他的で
ある。すなわち、プログラムカウンタがstart_pc、end_
pcのインターバルにある間は、例外処理ハンドラはアク
ティブである。 handler_pc handler_pcアイテムの値は、例外処理ハンドラの始まり
を示す。アイテムの値は、コード配列への有効なインデ
ックスでなければならず、インストラクションのオペコ
ードのインデックスでなければならず、code_length it
em値以下でなければならない。 catch_type catch_typeアイテムの値がノンゼロならば、それは有効
なJavaクラス型を表現しなければならない。catch_
typeによって表わされたJavaクラス型は、オリジナ
ルクラスファイルの対応するmethod_info構造のcatch_t
ypeによって記述されるJavaクラス型とまったく同
じでなければならない。このクラスはクラスThrowable
またはそのサブクラスの1つに違いない。例外処理ハン
ドラは、投げられた例外処理が与えられたクラスのイン
スタンスまたはそのサブクラスの1つであれば、コール
される。catch_typeアイテムの値がゼロならば、この例
外処理ハンドラはすべての例外処理のためにコールされ
る。これは、最後に実装される。
【0146】属性(Attributes) オリジナルクラスファイルの中で使用された属性は、コ
ンパクションのために消去されるかまたは再グループ化
される。Javaバイトコードのインタプリタ処理に必
要であるどんな情報も犠牲にすることなく、事前に定義
された属性であるSourceFile、ConstantValue、Excepti
ons、LineNumberTableおよびLocal-VariableTableは消
去されうる。特定のメソッドのためバイトコードを含む
事前に定義された属性Codeが、対応するMethodInfo構造
に移動される。
【0147】Javaカード仮想マシンコードの制約条
件(Constraints on Java Card Virtual Machine Cod
e) Javaカード仮想マシンコードのメソッド、インスタ
ンス初期化メソッド,クラスまたはインタフェース初期
化メソッドがカードクラスのMethodInfo構造の配列コー
ドに格納される。このコード配列の静的と構造的な制約
条件の両方とも、レッドブックで記述したものと同じも
のである。
【0148】Javaカード仮想マシンとJavaカー
ドクラスファイル形式の制限(Limitations of the Jav
a Card Virtual Machine and Java Card class File Fo
rmat) Javaカード仮想マシンでの以下の制限は、Java Car
d Virtual Machine仕様書のこのバージョンによって規
定されている。
【0149】カードクラスファイルコンスタントプール
あたり、CardClassFile構造()の16ビット定数サイズ
フィールドによって65535のエントリ数に制限され
る。これは、単一のカードクラスファイルの総合複雑度
(total complexity)に対する内部制限として機能する。
また、このカウントは、カードのアプリケーションに利
用可能なクラス階層のコンスタントプールに対応するエ
ントリを含む。
【0150】メソッドあたりのコード量は、MethodInfo
構造のインデックスのサイズによって65535バイト
に制限される。
【0151】メソッドにおけるローカル変数の数は、Me
thodInfo構造()の最大ローカルアイテムのサイズによっ
て255に制限される。
【0152】クラスのフィールドの数は、最大フィール
ドのサイズとClassInfo構造()のmax_sfieldアイテムに
よって510に制限される。
【0153】クラスのメソッドの数は、ClassInfo構
造()の最大メソッドアイテムのサイズによって255に
制限される.オペランドスタックのサイズは、MethodInf
o構造()のmax_stackフィールドによって255ワードに
制限される。
【0154】参考文献(Bibliography) [1]Tim Lindholm and Frank Yellin, The Java Virtual
Machine Specification, Addison-Wesley, 1996. 付属ドキュメントB(APPENDIX B) IDインプットとアウトプットのストリング カードJVMの訂正処理において、宣言され生成された
ID識別子が正しく管理されることは、非常に重要であ
る。この管理は、IDインプットファイルString-ID IN
Mapの定義によって制御される。このテキストファイル
は、以下に示されたものを基礎として、ネーム領域(nam
espace)の領域が何の目的を使用されるかを宣言してい
る。このマップの1つの可能なアレンジメントは、カー
ドJVMインタプリタによる内部利用のためにいくつか
のID識別子をリザーブすることができることであり、
残りはカードJVMアプリケーションに割り当てられ
る。
【0155】
【数1】
【0156】
【数2】
【0157】本質的には、スマートカードにロードされ
ることになっているすべてのアプリケーションは自らの
ID識別子を、Ox4000からOx7FFFの間に割り当てる。如
何なるロードされたアプリケーションも他のアプリケー
ションにアクセスするのは許可されていないので、この
領域は各アプリケーションが自由に利用できる。
【0158】プリロードされたクラスライブラリのため
にID識別子を管理するときには注意を要する。これら
のID識別子の管理は、ID識別アウトプットファイル
String-ID OUTMapのオプション生成により補助される。
このマップは、新しいString-ID割り付け処理(binding
s)により増えて行くString-lD INMapである。これら割
り付け処理(bindings)は、カードクラスファイルコンバ
ータのアプリケーションが終了したときに生成される。
String-ID OUTMapは、カードにロードされたサポートラ
イブラリとOSインタフェースのために生成される。こ
のマップは、カードにロードされたサポートライブラリ
とOSインタフェースを使用するスマートカードのアプ
リケーション用のString-lD INMapとして使用される。
新しいアプリケーションを割り当てるとき、一般にこの
ファイルは破棄される。例として、以下のJavaプロ
グラム、HelloSmartCard.javaを考える。コンパイルさ
れると、HelloSmartCard.classのクラスファイルが生成
される。このクラスファイルは、それにクラス名、メソ
ッドおよび型情報を表すストリングが埋め込まれてい
る。上記されたString-ID INMapに基づいて、カードク
ラスファイルコンバータは、カードクラスファイルコン
バータによってID識別子が割り当てられたクラスファ
イル中のストリングと置き換えるカードクラスファイル
を生成する。テーブル1は、HelloSmartCard.classの定
数プールの中にあるストリングを、カードクラスファイ
ルコンバータが割り当てたID識別子とともに、リスト
アップしている。いくつかのストリング(“java/lang/O
bject”など)は、事前割り当てされている値(F002)であ
り、いくつかのストリング(“()V”など)は、新しい値
(4004)となっている。
【0159】
【数3】
【0160】付属ドキュメントC(APPENDIX C) 好ましい実施形態におけるカードJVMがサポートする
バイトコード
【0161】
【数4】
【0162】好ましい実施形態においてサポートされる
バイトコードに対する標準Javaバイトコード番号
【0163】
【数5】
【0164】
【数6】
【0165】
【数7】
【0166】
【数8】
【0167】付属ドキュメントD(APPENDIX D) カードクラスファイルコンバータのバイトコード変換プ
ロセス
【0168】
【数9】
【0169】
【数10】
【0170】
【数11】
【0171】
【数12】
【0172】
【数13】
【0173】
【数14】
【0174】
【数15】
【0175】
【数16】
【0176】
【数17】
【0177】付属ドキュメントE(APPENDIX E) ローディング・実行制御プログラムの例
【0178】
【数18】
【0179】
【数19】
【0180】
【数20】
【0181】
【数21】
【0182】付属ドキュメントF(APPENDIX F) 好ましい実施形態におけるカードオペレーティングシス
テム機能へのアクセスメソッド
【0183】
【数22】
【0184】
【数23】
【0185】
【数24】
【0186】
【数25】
【0187】付属ドキュメントG(APPENDIX G) バイトコード属性テーブル Javaバイトコードの型グループ分け 各バイトコードは、型に関して5ビットが割り当てられ
ている。これは、似通った動作をするコードをセットと
してグループ化するために使われる。一般にこの動作
は、バイトコードの型がスタック上でどのように処理さ
れるかを反映しているが、型0、13、14、15は、
コメントセクションで定義された特定種類のインストラ
クションを反映するものである。
【0188】下記のテーブルは、各インストラクション
型の実行前後のスタックの状態を示したものである。
【0189】
【数26】
【0190】使用する標準Javaバイトコード(再配
置なし)−属性ルックアップテーブル/* *バイトコードデコード情報テーブル。これは、バイト
コード型とバイトコード長を含んでいる。コード0から
201(202のコードがある)の現時点のすべてのバ
イトコードをサポートしている(例、no quicks)。*
【0191】
【数27】
【0192】
【数28】
【0193】
【数29】
【0194】
【数30】
【0195】
【数31】
【0196】
【数32】
【0197】
【数33】
【0198】
【数34】
【0199】
【数35】
【0200】付属ドキュメントH(APPENDIX H) 型ごとのJavaバイトコードに行なわれるチェック処
理 インストラクションのデコード。これは、次のPC(プ
ログラムカウンティング)の長さとインストラクション
型を与えるものである。
【0201】
【数36】
【0202】下記に基づくいくつかの先実行のチェック
処理を実装する。
【0203】
【数37】
【0204】最後に、いくつかの後実行のチェック処理
を実装する
【0205】
【数38】
【0206】
【数39】
【0207】付属ドキュメントI(APPENDIX I) 再番号づけされたJavaバイトコードに行なわれるチ
ェック処理 インストラクションを獲得する。インストラクションの
数値はインストラクション型の中に暗示的に含まれてい
る。
【0208】
【数40】
【0209】下記に基づくいくつかの先実行のチェック
処理を実装する。 /* *インプットスタックの状態をチェックする。バイトコ
ードをリナンバリングし、バイトコードの値(以下、バ
イトコード)が正しいグループに属しているか否かをテ
ストすることにより、必要なセキュリティチェックが実
行できる。
【0210】
【数41】
【0211】最後に、いくつかの後実行のチェック処理
を実装する。
【0212】
【数42】
【0213】
【数43】
【0214】サポートされたJavaバイトコードの型
ごとの再配置
【0215】
【数44】
【0216】
【数45】
【0217】
【数46】
【0218】
【数47】
【0219】
【数48】
─────────────────────────────────────────────────────
【手続補正書】
【提出日】平成14年9月10日(2002.9.1
0)
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】請求項32
【補正方法】変更
【補正内容】
【請求項32】 リソース制約条件のセットを有し、高
級言語で書かれたプログラムを実行可能なマイクロコン
トローラ(10)であって、 メモリと、 メモリにロードされ、前記リソース制約条件内で動作す
るインタプリタ(16)を備え、前記インタプリタ(16)は、 内部においてアプリケーションプログラムがプログラミ
ング環境によって生成される前記メモリにロードされた
アプリケーションプログラムをインタプリタ処理できる
ことを特徴とし、以下を備える。 a)高級言語ソースコードであるアプリケーションソー
スプログラミング(20)をコンパイル形式(24)に
コンパイルするコンパイラ(22) b)前記コンパイラ形式(24)を前記インタプリタ
(16)によりインタプリタ処理するのに適した最小化
形式(minimized form)(27)へと変換する後処理を
るコンバータ(26) ─────────────────────────────────────────────────────
【手続補正書】
【提出日】平成14年10月4日(2002.10.
4)
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】図面の簡単な説明
【補正方法】追加
【補正内容】
【図面の簡単な説明】
【図1】 ICカードシステムのブロック図である。
【図2】 JavaアプリケーションをICカードにダ
ウンロードする準備の手順を示すフロー図である。
【図3】 カードクラスファイルコンバータから生成さ
れ、使用されるファイルのブロック図である。
【図4】 アプリケーションクラスファイルをカードク
ラスファイルへ変換する手順を示すブロック図である。
【図5】 クラスファイルコンバータの動作を示すフロ
ー図である。
【図6】 バイトコードの変更手順を示すフロー図であ
る。
【図7】 スぺシフィックバイトコードをジェネリック
バイトコードへの変換を示すブロック図である。
【図8】 定数参照値の定数への置き換えを示すブロッ
ク図である。
【図9】 参照値の更新値への置き換えを示すブロック
図である。
【図10】 元のバイトコードのリナンバリング手順を
示すブロック図である。
【図11】 元のバイトコードを異なる仮想マシンのア
ーキテクチャ用へ変換する様子を示すブロック図であ
る。
【図12】 アプリケーションをICカードにロードす
る様子を示すブロック図である。
【図13】 ICカード上のアプリケーションを実行す
る様子を示すブロック図である。
【図14】 ROM、RAM、EEPROMのメモリ構
造を示す図である。
【図15】 カードJava仮想マシンのアーキテクチ
ャ全体像を示すフロー図である。
【図16】 セキュリティチェックを伴うカードJav
a仮想マシンの実行方法を示すフロー図である。
【図17】 カードJava仮想マシン上でバイトコー
ドを実行する様子を示すフロー図である。
【図18】 セキュリティチェックを伴わないカードJ
ava仮想マシンの実行方法を示すフロー図である。
【図19】 カードアプリケーションと識別子との対応
付けを示すブロック図である。
【図20】 特定の実行アプリケーションへのアクセス
権限を示すブロック図である。
【図21】 スマートカード及び電話機に用いられたマ
イクロコントローラの斜視図である。
【図22】 かぎ型リング及び指輪に用いられたマイク
ロコントローラの斜視図である。
【図23】 車に用いられたマイクロコントローラの斜
視図である。
【符号の説明】 10 ICカード 12a,12b 通信部 14 端末装置 16 カードJava仮想マシン(カードJVM) 20 Javaアプリケーション 20a,20b,20c Javaコード 22 Javaアプリケーション開発環境 24 アプリケーションクラスファイル 24a,24b,24c コンパイルコード 26 カードクラスファイルコンバータ 27 カードクラスファイル 28 カードローダ 30 IDインプットマップのストリング 32 IDアウトプットマップのストリング 70,72,80,82,100 バイトコード 90 インボークスタティック 94 オペランド 102 リナンバリングバイトコード 112 JavaバイトコードILOAD 114 ワードスタック 116 バイトコードILOADB 118 バイトスタック 120 ローディング実行制御部 122 カードオペレーティングシステム 126,126a,126b,126c カードアプリ
ケーション 132 通信ドライバ 134 ICカードドライバ 136 端末装置アプリケーション 140 カードROM 140a 固定化されたアプリケーション 140b クラスライブラリ 141 カードRAM 141a ロード可能アプリケーションA 141b ロード可能アプリケーションB 141c ロード可能クラスライブラリ 142 カードEEPROM 144a VMスタック 144b システム変数 144c RAMヒープ 145 ランタイムサポート 146a EEPROMヒープ 147 ファイルシステム 148 システムスタック 150 インストラクションディスパッチループ 165d インストラクションサポート 209 セッションキー 210 マイクロコントローラ 212 プラスティックカード 214 接触式パッド 220 携帯電話または設置型電話 230 キーリング 240 貴重品類 252 電気回路サブシステム 254 自動車 ─────────────────────────────────────────────────────
【手続補正書】
【提出日】平成14年10月4日(2002.10.
4)
【手続補正1】
【補正対象書類名】明細書
【補正対象項目名】図面の簡単な説明
【補正方法】変更
【補正内容】
【図面の簡単な説明】
【図1】 ICカードシステムのブロック図である。
【図2】 JavaアプリケーションをICカードにダ
ウンロードする準備の手順を示すフロー図である。
【図3】 カードクラスファイルコンバータから生成さ
れ、使用されるファイルのブロック図である。
【図4】 アプリケーションクラスファイルをカードク
ラスファイルへ変換する手順を示すブロック図である。
【図5】 クラスファイルコンバータの動作を示すフロ
ー図である。
【図6】 バイトコードの変更手順を示すフロー図であ
る。
【図7】 スぺシフィックバイトコードをジェネリック
バイトコードへの変換を示すブロック図である。
【図8】 定数参照値の定数への置き換えを示すブロッ
ク図である。
【図9】 参照値の更新値への置き換えを示すブロック
図である。
【図10】 元のバイトコードのリナンバリング手順を
示すブロック図である。
【図11】 元のバイトコードを異なる仮想マシンのア
ーキテクチャ用へ変換する様子を示すブロック図であ
る。
【図12】 アプリケーションをICカードにロードす
る様子を示すブロック図である。
【図13】 ICカード上のアプリケーションを実行す
る様子を示すブロック図である。
【図14】 ROM、RAM、EEPROMのメモリ構
造を示す図である。
【図15】 カードJava仮想マシンのアーキテクチ
ャ全体像を示すフロー図である。
【図16】 セキュリティチェックを伴うカードJav
a仮想マシンの実行方法を示すフロー図である。
【図17】 カードJava仮想マシン上でバイトコー
ドを実行する様子を示すフロー図である。
【図18】 セキュリティチェックを伴わないカードJ
ava仮想マシンの実行方法を示すフロー図である。
【図19】 カードアプリケーションと識別子との対応
付けを示すブロック図である。
【図20】 特定の実行アプリケーションへのアクセス
権限を示すブロック図である。
【図21】 スマートカードに用いられたマイクロコン
トローラの斜視図である。
【図22】 電話機に用いられたマイクロコントローラ
の斜視図である。
【図23】 かぎ型リングに用いられたマイクロコント
ローラの斜視図である。
【図24】 指輪に用いられたマイクロコントローラの
斜視図である。
【図25】 車に用いられたマイクロコントローラの斜
視図である。
【符号の説明】 10 ICカード 12a,12b 通信部 14 端末装置 16 カードJava仮想マシン(カードJVM) 20 Javaアプリケーション 20a,20b,20c Javaコード 22 Javaアプリケーション開発環境 24 アプリケーションクラスファイル 24a,24b,24c コンパイルコード 26 カードクラスファイルコンバータ 27 カードクラスファイル 28 カードローダ 30 IDインプットマップのストリング 32 IDアウトプットマップのストリング 70,72,80,82,100 バイトコード 90 インボークスタティック 94 オペランド 102 リナンバリングバイトコード 112 JavaバイトコードILOAD 114 ワードスタック 116 バイトコードILOADB 118 バイトスタック 120 ローディング実行制御部 122 カードオペレーティングシステム 126,126a,126b,126c カードアプリ
ケーション 132 通信ドライバ 134 ICカードドライバ 136 端末装置アプリケーション 140 カードROM 140a 固定化されたアプリケーション 140b クラスライブラリ 141 カードRAM 141a ロード可能アプリケーションA 141b ロード可能アプリケーションB 141c ロード可能クラスライブラリ 142 カードEEPROM 144a VMスタック 144b システム変数 144c RAMヒープ 145 ランタイムサポート 146a EEPROMヒープ 147 ファイルシステム 148 システムスタック 150 インストラクションディスパッチループ 165d インストラクションサポート 209 セッションキー 210 マイクロコントローラ 212 プラスティックカード 214 接触式パッド 220 携帯電話または設置型電話 230 キーリング 240 貴重品類 252 電気回路サブシステム 254 自動車
【手続補正2】
【補正対象書類名】図面
【補正対象項目名】図21
【補正方法】変更
【補正内容】
【図21】
【手続補正3】
【補正対象書類名】図面
【補正対象項目名】図22
【補正方法】変更
【補正内容】
【図22】
【手続補正4】
【補正対象書類名】図面
【補正対象項目名】図23
【補正方法】変更
【補正内容】
【図23】
【手続補正5】
【補正対象書類名】図面
【補正対象項目名】図24
【補正方法】追加
【補正内容】
【図24】
【手続補正6】
【補正対象書類名】図面
【補正対象項目名】図25
【補正方法】追加
【補正内容】
【図25】
───────────────────────────────────────────────────── フロントページの続き (51)Int.Cl.7 識別記号 FI テーマコート゛(参考) G06K 19/00 R (72)発明者 スコット ビー.グスレイ アメリカ合衆国、マサチューセッツ州 02178−3736、ベルモント、フォスターロ ード19 (72)発明者 クシーラブディ クリシュナ アメリカ合衆国、テキサス州78613、セダ ーパーク、リトルエルムトレイル2831 (72)発明者 マイケル エイ.モントゴメリー アメリカ合衆国、テキサス州78613、セダ ーパーク、ネルソンランチロード906 Fターム(参考) 5B035 AA06 BB09 BB11 CA11 CA23 CA29 CA38 5B058 CA15 CA23 KA01 KA04 5B081 AA09 DD01

Claims (62)

    【特許請求の範囲】
  1. 【請求項1】 スマートカードであって、 Javaインタプリタを格納したメモリと、 Javaアプリケーションをインタプリタ処理するため
    に前記インタプリタを利用するように構成されたプロセ
    ッサを備えたスマートカード。
  2. 【請求項2】 マイクロコントローラであって、 半導体基板と、 前記半導体基板に配置されたメモリと、 前記メモリに格納されセキュリティチェック処理を実装
    するように構成されたプログラミング言語インタプリタ
    と、 前記基板に配置され前記メモリに結合された中央演算処
    理装置を備えたことを特徴とするマイクロコントロー
    ラ。
  3. 【請求項3】 前記インタプリタが、Javaバイトコ
    ードインタプリタを備えた請求項2に記載のマイクロコ
    ントローラ。
  4. 【請求項4】 前記セキュリティチェック処理が、ファ
    イアウォール構築処理を備えた請求項2に記載のマイク
    ロコントローラ。
  5. 【請求項5】 前記セキュリティチェック処理が、サン
    ドボックスセキュリティモデルの実施処理を備えた請求
    項2に記載のマイクロコントローラ。
  6. 【請求項6】 スマートカードであって、 メモリと、 前記メモリに格納されセキュリティチェック処理を実行
    するように構成されたプログラミング言語インタプリタ
    と、 前記メモリに結合された中央演算処理装置を備えたこと
    を特徴とするスマートカード。
  7. 【請求項7】 前記インタプリタが、Javaバイトコ
    ードインタプリタを備えた請求項6に記載のスマートカ
    ード。
  8. 【請求項8】 前記セキュリティチェック処理が、ファ
    イアウォール構築処理を備えた請求項6に記載のスマー
    トカード。
  9. 【請求項9】 前記セキュリティチェック処理が、サン
    ドボックスセキュリティモデルの実施処理を備えた請求
    項6に記載のスマートカード。
  10. 【請求項10】 ICカードを使用する方法であって、 第2のアプリケーションの第2のインストラクションを
    第1のアプリケーションの第1のインストラクションへ
    変換する処理と、 ICカードのメモリに前記第1のインストラクションを
    格納する処理と、 前記第1のインストラクションを実行するため前記IC
    カードのインタプリタを使用する処理を備えたことを特
    徴とする方法。
  11. 【請求項11】 前記第1のアプリケーションが、クラ
    スファイル形式を持つ請求項10に記載の方法。
  12. 【請求項12】 前記第2のアプリケーションが、クラ
    スファイル形式を持つ請求項10に記載の方法。
  13. 【請求項13】 前記第1のインストラクションが、バ
    イトコードを備えた請求項10に記載の方法。
  14. 【請求項14】 前記第2のインストラクションが、バ
    イトコードを備えた請求項10に記載の方法。
  15. 【請求項15】 前記第1のインストラクションが、J
    avaバイトコードを備えた請求項10に記載の方法。
  16. 【請求項16】 前記第2のインストラクションが、J
    avaバイトコードを備えた請求項10に記載の方法。
  17. 【請求項17】 前記第1のインストラクションが、前
    記第2のインストラクションから生成されたものである
    請求項10に記載の方法。
  18. 【請求項18】 前記変換処理が、前記第2のインスト
    ラクションから第1のインストラクションを形成するリ
    ナンバリング処理を含む請求項10に記載の方法。
  19. 【請求項19】 前記第2のインストラクションが、定
    数参照を含み、 前記変換処理が、前記第2のインストラクションの定数
    参照を定数に置き換える処理を含む請求項10に記載の
    方法。
  20. 【請求項20】 前記第2のインストラクションが、参
    照を含み、前記変換処理が、前記参照の格納位置をシフ
    トする処理を含み、さらに、 前記第1のインストラクションを前記変換処理後の参照
    に再リンク付けする請求項10に記載の方法。
  21. 【請求項21】 前記第1のインストラクションが、仮
    想マシンの第1の型のバイトコードを備え、 前記第2のインストラクションが、仮想マシンの第2の
    型のバイトコードを備え、前記第1の型が前記第2の型
    と異なる請求項10に記載の方法。
  22. 【請求項22】 マイクロコントローラであって、 クラスファイル形式を持つアプリケーションとインタプ
    リタとを格納しているメモリと、 前記メモリに結合されたプロセッサであって、前記プロ
    セッサは、前記アプリケーションを実行するためインタ
    プリタを利用するように構成されているものを備えたこ
    とを特徴とするマイクロコントローラ。
  23. 【請求項23】 さらに、端末装置と通信するように構
    成された通信部を備えた請求項22に記載のマイクロコ
    ントローラ。
  24. 【請求項24】 前記端末装置が、カードリーダを備
    え、前記通信部が、前記カードリーダと通信するように
    接点を備えた請求項23に記載のマイクロコントロー
    ラ。
  25. 【請求項25】 前記端末装置は、無線通信デバイスと
    備え、前記通信部は、前記無線通信デバイスと通信する
    ための無線受信部を備えた請求項23に記載のマイクロ
    コントローラ。
  26. 【請求項26】 前記端末装置は、無線通信デバイスを
    備え、前記通信部は、前記無線通信デバイスと通信する
    ための無線送信部を備えた請求項23に記載のマイクロ
    コントローラ。
  27. 【請求項27】 前記クラスファイル形式が、Java
    クラスファイル形式である請求項22に記載のマイクロ
    コントローラ。
  28. 【請求項28】 ICカードを利用する方法であって、 前記ICカードのメモリに第1のアプリケーションを格
    納する処理と、 前記ICカードのメモリに第2のアプリケーションを格
    納する処理と、 前記第2のアプリケーションが前記第1のアプリケーシ
    ョンおよび前記第1のアプリケーションが関連するデー
    タのいずれにもアクセスできないように前記第1のアプ
    リケーションと第2のアプリケーションを隔離するファ
    イアウォールを生成する処理を備えたことを特徴とする
    方法。
  29. 【請求項29】 前記第1のアプリケーションと第2の
    アプリケーションが、Javaバイトコードを含む請求
    項28に記載の方法。
  30. 【請求項30】 前記ファイアウォールの生成方法が、
    Javaインタプリタ利用を含む請求項28に記載の方
    法。
  31. 【請求項31】 前記第1のアプリケーションの格納処
    理が、前記ICカードの製造と関連して実行され、 前記第2のアプリケーションの格納処理が、前記カード
    製造が完了した後に実行される請求項28に記載の方
    法。
  32. 【請求項32】 リソース制約条件セットを持ったマイ
    クロコントローラ(10)であって、 メモリと、 前記メモリにロードされ、前記リソース制約条件内で動
    作するインタプリタ(16)を備え、前記マイクロコン
    トローラ(10)は、 前記インタプリタによりインタプリタ処理するために前
    記メモリにロードされた少なくとも1つのアプリケーシ
    ョンを持ち、前記少なくとも1つのアプリケーションが
    以下のプログラミング環境により生成されたもの。 a)高級言語ソースコードであるアプリケーションソー
    スプログラミング(20)をコンパイル形式(24)に
    コンパイルするコンパイラ(22)、 b)前記コンパイラ形式(24)を前記インタプリタ
    (16)によりインタプリタ処理するために最適化した
    最小化形式(minimized form)(27)に後処理するコン
    バータ(26)。
  33. 【請求項33】 前記コンパイル形式(24)が、属性
    情報を含み、前記コンバータ(26)が、前記インタプ
    リタ(16)が必要とする属性情報を含める手段と前記
    インタプリタ(16)が必要としない属性情報を含めな
    い手段を備えた請求項32に記載のマイクロコントロー
    ラ(10)。
  34. 【請求項34】 前記コンパイル形式(24)が、標準
    Javaクラスファイル形式であり、前記コンバータ
    (26)が、入力を前記標準Javaクラスファイル形
    式の入力コンパイル形式(24)として受け入れ、前記
    インタプリタ(16)によるインタプリタ処理に適する
    形式の出力(27)に変換する請求項32又は33に記
    載のマイクロコントローラ(10)。
  35. 【請求項35】 前記コンパイル形式(24)が、オブ
    ジェクト、クラス、フィールド、メソッドを認証するス
    トリングの関連情報を含み、前記コンバータは、前記ス
    トリングをユニークなID識別子(51b)にマッピン
    グ処理する手段を含む請求項32から34のいずれか一
    項に記載のマイクロコントローラ(10)。
  36. 【請求項36】 前記それぞれのユニークなID識別子
    が整数である請求項35に記載のマイクロコントローラ
    (10)。
  37. 【請求項37】 前記ストリングのユニークなID識別
    子へのマッピングは、ストリングのID識別子マップフ
    ァイル(30、32)への格納である請求項35又は3
    6に記載のマイクロコントローラ(10)。
  38. 【請求項38】 前記高級言語は、特性(feature)の第
    1のセットとデータ型の第1のセットをサポートし、前
    記インタプリタ(16)は、前記特性(feature)の第1
    のサブセットと前記データ型の第1のサブセットをサポ
    ートし、前記コンバータ(26)は、前記コンパイル形
    式(24)が前記特性(feature)の第1のセットのサブ
    セットの特性(feature)のみを含んでいることおよび前
    記データ型の第1のセットのサブセットのデータ型のみ
    を含んでいることをベリファイする(51c、52)請
    求項35から37のいずれか一項に記載のマイクロコン
    トローラ(10)。
  39. 【請求項39】 前記コンパイル形式(24)が、バイ
    トコード形式であり、前記コンバータ(26)が、下記
    のステップを含む処理ステップのうちの少なくとも1つ
    の処理ステップを用いて、前記コンパイル形式(24)
    のバイトコードを前記インタプリタ(16)によりイン
    タプリタ処理するために適したバイトコード(27)に
    変換する手段(54)を備えた請求項35から38のい
    ずれか一項に記載のマイクロコントローラ(10)。 a)オリジナルバイトコードのすべてのジャンプ処理と
    そのジャンプ先を記録する処理(61)、 b)スぺシフィックバイトコードを等価なジェネリック
    バイトコードに、またはその逆方向に変換する処理(6
    3)、 c)バイトコードオペランドを、IDストリングを用い
    た参照からユニークなID識別子を用いた参照に変更す
    る処理(64) d)コンパイル形式(24)のバイトコードをインタプ
    リタ処理に適した形式の等価なバイトコードにリナンバ
    リングする処理(66)、 e)ステップa)、b)、c)、d)の変換処理により
    影響を受けるジャンプ処理のジャンプ先アドレスに再リ
    ンク付けする処理(67)
  40. 【請求項40】 前記アプリケーションプログラムが、
    当該コンパイル形式(24)の実行およびインタプリタ
    処理のために必要とされるリソースが前記マイクロコン
    トローラ上で利用可能なリソースを超えるコンパイル形
    式(24)にコンパイルされた請求項35から39のい
    ずれか一項に記載のマイクロコントローラ(10)。
  41. 【請求項41】 前記コンパイル形式(24)が、多様
    なコンピュータプラットフォームへの移植性(portabili
    ty)があるように規定された請求項35から40のいず
    れか一項に記載のマイクロコントローラ(10)。
  42. 【請求項42】 前記インタプリタ(16)が、さら
    に、アプリケーションのインタプリタ処理中に、下記セ
    ットから選ばれた少なくとも1つの規則を含む規則セッ
    トから定められたセキュリティ基準に引っかかったか否
    かを決定するように構成された請求項35から41のい
    ずれか一項に記載のマイクロコントローラ(10)。前
    記アプリケーションが権限のないメモリ領域にアクセス
    することを認めないか否か、 前記アプリケーションがアクセス権限のないマイクロコ
    ントローラのリソースへにアクセスすることを認めない
    か否かであり、 ここで、前記アプリケーションが、バイトコードから構
    成され、バイトコードの実行がセキュリティ制約条件の
    違反を起こさないことを確認する実行処理を少なくとも
    1回先行して複数のバイトコードのチェック処理をする
    ように構成されているもの。
  43. 【請求項43】 少なくとも1つのアプリケーションプ
    ログラムが、 前記アプリケーションのローディング処理に先立って、
    前記アプリケーションがあらゆるセキュリティ制約条件
    に違反しないことを確認する処理ステップと、 セキュリティを維持してローディング処理を行なう処理
    ステップと、 を含んでいるプロセスにより生成されたアプリケーショ
    ンである請求項35から42のいずれか一項に記載のマ
    イクロコントローラ(10)。
  44. 【請求項44】 前記セキュリティを維持してローディ
    ング処理する処理ステップが、ローディングする主体が
    アプリケーションをマイクロコントローラ上にロードす
    る許可を持つことを確認する処理ステップを含む請求項
    43に記載のマイクロコントローラ(10)。
  45. 【請求項45】 前記セキュリティを維持してローディ
    ングするステップが、ローディングキーを利用してロー
    ドされるアプリケーションを暗号化する処理ステップを
    含む請求項43又は44に記載のマイクロコントローラ
    (10)。
  46. 【請求項46】 メモリと、リソース制限のセットによ
    って動作するプロセッサを持つマイクロコントローラを
    プログラミングする方法であって、前記方法が、 アプリケーションプログラム(20)を第1のプログラ
    ミング言語により入力する処理と、 前記第1のプログラミング言語のアプリケーションプロ
    グラム(20)を前記第1のプログラミング言語に対応
    する第1の中間コード(24)にコンパイルする処理
    (22)であって、 ここで、前記第1の中間コード(24)が、少なくとも
    1つの第1の中間コード仮想マシンによりインタプリタ
    処理できるものであり、 ここで、前記マイクロコントローラをプログラミングす
    る方法が、前記第1の中間コード(24)を第2の中間
    コード(27)に変換する処理(26)であって、 ここで、前記第2の中間コード(27)が少なくとも1
    つの第2の中間コード仮想マシン(16)によりインタ
    プリタ処理できるもの、 である処理と、 前記第2の中間コードを前記マイクロコントローラ(1
    0)のメモリにロードする処理と、 を備えたことを特徴とする方法。
  47. 【請求項47】 前記変換処理ステップがさらに、 オブジェクト、クラス、フィールド、メソッドのIDス
    トリングの関連付け処理と、 それらストリングをユニークなID識別子(51b)に
    マッピングする処理と、 を含む請求項46に記載のマイクロコントローラ(1
    0)をプログラミングする方法。
  48. 【請求項48】 前記マッピング処理が、ストリングを
    整数にマッピングする処理を含む請求項46又は47に
    記載の方法。
  49. 【請求項49】 前記変換処理が少なくとも以下のステ
    ップのうちの1つを含む請求項46から48のいずれか
    一項に記載の方法。 a)オリジナルバイトコードのすべてのジャンプ処理と
    そのジャンプ先を記録する処理(61)、 b)スぺシフィックバイトコードを等価なジェネリック
    バイトコードに、またはその逆方向に変換する処理(6
    3)、 c)バイトコードオペランドを、IDストリングを用い
    た参照からユニークID識別子を用いた参照に変更する
    処理(64) d)コンパイル形式のバイトコードをインタプリタ処理
    に適した形式の等価なバイトコードにリナンバリングす
    る処理(66)、 e)ステップa)、b)、c)、d)の変換処理により
    影響を受けるジャンプ処理のジャンプ先アドレスに再リ
    ンク付けする処理(67)。
  50. 【請求項50】 前記第2の中間コード(27)を前記
    マイクロコントローラ(10)のメモリにロードする処
    理を備えたことを特徴とする方法が、さらに、前記第2
    の中間コード(27)のロード処理に先立って、前記第
    2の中間コード(27)があらかじめ定義したチェック
    内容を満たすものであるかおよび当該ロード処理がセキ
    ュリティプロトコルに従って実行されるものであるかを
    認証するため前記第2の中間コード(27)をチェック
    する処理を含む請求項46から49のいずれか一項に記
    載の方法。
  51. 【請求項51】 前記セキュリティプロトコルが、前記
    第2の中間コード(27)のロード処理に先立ち、特定
    のID識別主体がロード処理を許可するために有効化さ
    れていることを要求する請求項46から50のいずれか
    一項に記載の方法。
  52. 【請求項52】 さらに復号鍵の供給処理を含み、前記
    セキュリティプロトコルが、ロードされた前記復号鍵に
    対応する鍵を使って前記第2の中間コード(27)が暗
    号化されていることを要求する請求項46から51のい
    ずれか一項に記載の方法。
  53. 【請求項53】 メモリと前記メモリにロードされたイ
    ンタプリタ(16)を備え、インタプリタ処理可能なプ
    ログラミング言語により記述されたプログラム(24)
    から派生した派生プログラム(27)を実行しうるマイ
    クロコントローラ(10)であって、前記マイクロコン
    トローラ(10)が以下の特徴を持つもの。 (a)前記マイクロコントローラは、メモリがインタプ
    リタ処理できるプログラミング言語で記述されたプログ
    ラム(24)のインタプリタ処理するためには不十分な
    容量である場合を含む、リソース制約条件セット内で動
    作するものである (b)前記メモリが、インタプリタ処理可能な言語の派
    生により記述された派生プログラム(27)をインタプ
    リタ処理できるインタプリタを含むメモリであって、イ
    ンタプリタ処理可能なプログラミング言語により記述さ
    れた派生プログラム(27)が、下記の規則を含む規則
    セットから選ばれた少なくとも1つの規則を適用してイ
    ンタプリタ処理可能なプログラミング言語により記述さ
    れたプログラム(24)から派生したもの。 (1)ストリングを識別子にマッピングすること (2)インタプリタ処理に先立ってまたはインタプリタ
    処理中にセキュリティチェック処理を実行すること (3)インタプリタ処理に先立ってまたはインタプリタ
    処理中に構造チェックを実行すること (4)インタプリタ処理に先立ってまたはインタプリタ
    処理中にセマンティックチェックを実行すること
  54. 【請求項54】 前記派生プログラム(27)がクラス
    ファイルまたはクラスファイルの派生である請求項53
    に記載のマイクロコントローラ(10)。
  55. 【請求項55】 前記メモリが1メガバイトより少ない
    ことを特徴とする請求項53又は54に記載のマイクロ
    コントローラ(10)。
  56. 【請求項56】 前記マイクロコントローラのセキュリ
    ティチェックが、さらに以下の特徴を持つ請求項53か
    ら55のいずれか一項に記載のマイクロコントローラ
    (10)。 (c)要求元から複数の派生プログラム(27)のうち
    の1つに対するアクセス要求を受け取るロジックを持つ
    こと (d)前記要求を受け取った後、複数の派生プログラム
    (27)のうちの1つがあらかじめ決められた規則セッ
    トと適合するか否かを決定すること (e)前記決定に基づいて、前記要求元に対して、複数
    のアプリケーションのうちの1つに対するアクセスを選
    択的に認めること
  57. 【請求項57】 前記派生プログラム(27)がアクセ
    スしようとするメモリの特定領域へのアクセス権限を前
    記派生プログラム(27)が持っているか否かを決定す
    ることにより前記派生プログラム(27)がインタプリ
    タ処理される間に前記あらかじめ決められた規則が前記
    インタプリタ(16)によって実行される請求項56に
    記載のマイクロコントローラ(10)。
  58. 【請求項58】 さらに前記マイクロコントローラ(1
    0)が下記のものを含むセットから選ばれた少なくとも
    1つのセキュリティチェックを実行するように構成され
    た請求項53から57のいずれか一項に記載のマイクロ
    コントローラ(10)。 (a)前記派生プログラム(27)がインタプリタ処理
    されている間にあらかじめ決められたセキュリティ規則
    を実行し、前記派生プログラム(27)が権限の無いメ
    モリ領域または他の権限の無いマイクロコントローラリ
    ソースにアクセスすることを防止すること (b)各バイトコードが前処理チェックおよび後処理チ
    ェックに従って実行されているか決定する処理に先立っ
    て少なくとも1回各バイトコードがチェックされるよう
    に前記インタプリタ(16)が構成されていること (c)前記派生プログラム(27)の統合を確認するた
    めに前記マイクロコントローラにロードされる前に前記
    派生プログラムの完全性がチェックされ、ロード処理が
    セキュリティプロトコルに応じて実行されること
  59. 【請求項59】 前記セキュリティプロトコルは、派生
    プログラム(27)をカード上にロードできるように特
    定のID識別主体が有効化されていることを要求する請
    求項58に記載のマイクロコントローラ(10)。
  60. 【請求項60】 前記セキュリティプロトコルは、復号
    鍵を持っており、ロードされた派生プログラム(27)
    が前記復号鍵に対応する鍵により暗号化されていること
    を要求することを特徴とする請求項58に記載のマイク
    ロコントローラ(10)。
  61. 【請求項61】 暗号処理、復号処理、署名処理、署名
    照合処理、相互認証、鍵配送および鍵セッション処理を
    含む処理セットから選ばれた暗号サービスが供給できる
    ように構成されたことを特徴とする請求項53から60
    のいずれか一項に記載のマイクロコントローラ(1
    0)。
  62. 【請求項62】 ファイルシステムを持ち、下記のもの
    を含む処理セットから選ばれた手段を介して前記ファイ
    ルシステムへアクセスできるように構成された請求項5
    3から61のいずれか一項に記載のマイクロコントロー
    ラ(10)。 (a)前記マイクロコントローラが、ファイルからの読
    み出し処理、ファイルへの書き込み処理またはファイル
    の消去処理の権限に対するアクセス制御リストを備えて
    いること (b)前記マイクロコントローラが、ファイルへのアク
    セス権限を確立するための鍵有効化が実行できること (c)前記マイクロコントローラが、ファイルへのアク
    セス権限を確立するためのカード保有者主体を認証でき
    ること
JP2002263319A 1996-10-25 2002-09-09 高級プログラミング言語を用いたマイクロコントローラ Expired - Lifetime JP3766052B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US2905796P 1996-10-25 1996-10-25
US60/029,057 1996-10-25

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP10520562A Division JP2000514584A (ja) 1996-10-25 1997-10-22 高級プログラミング言語を用いたマイクロコントローラ

Publications (2)

Publication Number Publication Date
JP2003141488A true JP2003141488A (ja) 2003-05-16
JP3766052B2 JP3766052B2 (ja) 2006-04-12

Family

ID=21846980

Family Applications (2)

Application Number Title Priority Date Filing Date
JP10520562A Pending JP2000514584A (ja) 1996-10-25 1997-10-22 高級プログラミング言語を用いたマイクロコントローラ
JP2002263319A Expired - Lifetime JP3766052B2 (ja) 1996-10-25 2002-09-09 高級プログラミング言語を用いたマイクロコントローラ

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP10520562A Pending JP2000514584A (ja) 1996-10-25 1997-10-22 高級プログラミング言語を用いたマイクロコントローラ

Country Status (14)

Country Link
US (7) US6308317B1 (ja)
EP (1) EP0932865B1 (ja)
JP (2) JP2000514584A (ja)
KR (1) KR100329063B1 (ja)
CN (1) CN1183449C (ja)
AU (1) AU722463B2 (ja)
BR (1) BR9713267A (ja)
DE (1) DE69714752C5 (ja)
ES (1) ES2184066T3 (ja)
MY (1) MY126363A (ja)
PT (1) PT932865E (ja)
TW (1) TW476914B (ja)
WO (1) WO1998019237A1 (ja)
ZA (1) ZA979479B (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009134625A (ja) * 2007-11-30 2009-06-18 Toppan Printing Co Ltd コンピュータ装置及びその処理方法
JP2017076300A (ja) * 2015-10-16 2017-04-20 三菱電機株式会社 制御装置およびレジスタの故障復帰方法

Families Citing this family (292)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6385645B1 (en) 1995-08-04 2002-05-07 Belle Gate Investments B.V. Data exchange system comprising portable data processing units
ATE197743T1 (de) 1995-08-04 2000-12-15 Belle Gate Invest B V Datenaustauschlsysteme mit tragbaren datenverarbeitungseinheiten
EP0825506B1 (en) 1996-08-20 2013-03-06 Invensys Systems, Inc. Methods and apparatus for remote process control
BR9713267A (pt) 1996-10-25 2004-06-15 Schlumberger Systems & Service Cartão de circuito integrado para uso com um terminal, processo para uso com o mesmo, microcontrolador e processo para sua programação
WO1998041918A1 (en) * 1997-03-14 1998-09-24 Ian Charles Ogilvy Method and apparatus for controlling communications
DK0992025T3 (da) 1997-06-27 2002-10-28 Swisscom Mobile Ag Transaktionsfremgangsmåde med et bærbart identifikationselement
US6157966A (en) * 1997-06-30 2000-12-05 Schlumberger Malco, Inc. System and method for an ISO7816 complaint smart card to become master over a terminal
US6230006B1 (en) 1997-09-08 2001-05-08 Acterna, Llc Test system for remotely testing switches within a telecommunications network
US6564995B1 (en) 1997-09-19 2003-05-20 Schlumberger Malco, Inc. Smart card application-selection
US6736325B1 (en) * 1998-01-22 2004-05-18 Mondex International Limited Codelets
US6308270B1 (en) 1998-02-13 2001-10-23 Schlumberger Technologies, Inc. Validating and certifying execution of a software program with a smart card
DE69814174T2 (de) * 1998-03-23 2004-03-04 International Business Machines Corp. Java laufzeitsystem mit veränderter sammlung von konstanten
FR2779018B1 (fr) 1998-05-22 2000-08-18 Activcard Terminal et systeme pour la mise en oeuvre de transactions electroniques securisees
US6808111B2 (en) 1998-08-06 2004-10-26 Visa International Service Association Terminal software architecture for use with smart cards
US7020441B2 (en) 1998-09-03 2006-03-28 Casabyte, Inc. Test system for remotely testing switches within a telecommunications network
EP1118203A1 (en) 1998-09-29 2001-07-25 Sun Microsystems, Inc. Superposition of data over voice
US6591229B1 (en) * 1998-10-09 2003-07-08 Schlumberger Industries, Sa Metrology device with programmable smart card
US7139915B2 (en) * 1998-10-26 2006-11-21 Microsoft Corporation Method and apparatus for authenticating an open system application to a portable IC device
US6609199B1 (en) * 1998-10-26 2003-08-19 Microsoft Corporation Method and apparatus for authenticating an open system application to a portable IC device
US7174457B1 (en) * 1999-03-10 2007-02-06 Microsoft Corporation System and method for authenticating an operating system to a central processing unit, providing the CPU/OS with secure storage, and authenticating the CPU/OS to a third party
US20050060549A1 (en) * 1998-10-26 2005-03-17 Microsoft Corporation Controlling access to content based on certificates and access predicates
US7194092B1 (en) 1998-10-26 2007-03-20 Microsoft Corporation Key-based secure storage
IL142580A0 (en) * 1998-11-03 2002-03-10 Thomson Licensing Sa Method and apparatus for updating computer code using an integrated circuit interface
FR2785695B1 (fr) * 1998-11-06 2003-01-31 Bull Cp8 Procede de compactage d'un programme de type code objet intermediaire executable dans un systeme embarque muni de ressources de traitement de donnees, systeme compacteur et systeme embarque multi-applications correspondants
JP3749798B2 (ja) * 1998-12-01 2006-03-01 株式会社東芝 Icカードにおけるデータ書込方法およびicカードにおけるデータ読込方法
US6922835B1 (en) * 1999-01-22 2005-07-26 Sun Microsystems, Inc. Techniques for permitting access across a context barrier on a small footprint device using run time environment privileges
US6581206B2 (en) * 1999-11-12 2003-06-17 Sun Microsystems, Inc. Computer program language subset validation
US6633984B2 (en) 1999-01-22 2003-10-14 Sun Microsystems, Inc. Techniques for permitting access across a context barrier on a small footprint device using an entry point object
US6425003B1 (en) * 1999-01-22 2002-07-23 Cisco Technology, Inc. Method and apparatus for DNS resolution
US7093122B1 (en) * 1999-01-22 2006-08-15 Sun Microsystems, Inc. Techniques for permitting access across a context barrier in a small footprint device using shared object interfaces
US6823520B1 (en) 1999-01-22 2004-11-23 Sun Microsystems, Inc. Techniques for implementing security on a small footprint device using a context barrier
US6907608B1 (en) * 1999-01-22 2005-06-14 Sun Microsystems, Inc. Techniques for permitting access across a context barrier in a small footprint device using global data structures
SE9900321L (sv) * 1999-02-01 2000-08-02 Mats Iderup Sätt och anordning vid utbyte av information
US6880155B2 (en) * 1999-02-02 2005-04-12 Sun Microsystems, Inc. Token-based linking
US7200842B1 (en) * 1999-02-02 2007-04-03 Sun Microsystems, Inc. Object-oriented instruction set for resource-constrained devices
US6848111B1 (en) * 1999-02-02 2005-01-25 Sun Microsystems, Inc. Zero overhead exception handling
AU3346400A (en) * 1999-02-05 2000-08-25 Cyrus Intersoft, Inc. Instrumenting streamed classes
FR2790629A1 (fr) * 1999-02-19 2000-09-08 Bull Cp8 Procede d'activation d'applications localisees dans une carte a puce par un navigateur du type dit "web"
US7127605B1 (en) * 1999-05-10 2006-10-24 Axalto, Inc. Secure sharing of application methods on a microcontroller
WO2000068902A1 (en) * 1999-05-11 2000-11-16 Microsoft Corporation Method and apparatus for sharing data files among runtime environment applets in an integrated circuit card
US6845498B1 (en) 1999-05-11 2005-01-18 Microsoft Corporation Method and apparatus for sharing data files among run time environment applets in an integrated circuit card
US6547150B1 (en) 1999-05-11 2003-04-15 Microsoft Corporation Smart card application development system and method
US6938244B1 (en) 1999-05-11 2005-08-30 Microsoft Corp. Interlaced protocol for smart card application development
AU5025600A (en) 1999-05-17 2000-12-05 Foxboro Company, The Process control configuration system with parameterized objects
US7089530B1 (en) 1999-05-17 2006-08-08 Invensys Systems, Inc. Process control configuration system with connection validation and configuration
US6668271B1 (en) 1999-05-19 2003-12-23 Richo Company, Ltd. System for distributing, installing and running web applications (agents)
DE29908783U1 (de) * 1999-05-19 1999-09-09 Me Technology Europe GmbH, 04430 Dölzig Eingabegerät für Geschäftsvorfälle
US6546546B1 (en) * 1999-05-19 2003-04-08 International Business Machines Corporation Integrating operating systems and run-time systems
FR2794543B1 (fr) * 1999-06-04 2001-08-24 Gemplus Card Int Migration de differents langages sources vers un support d'execution
JP4596715B2 (ja) 1999-06-10 2010-12-15 サン・マイクロシステムズ・インコーポレーテツド 別個のメモリ領域におけるデータの組の種々のバージョンを記憶する配列及びメモリ内のデータの組を更新する方法
US6788980B1 (en) 1999-06-11 2004-09-07 Invensys Systems, Inc. Methods and apparatus for control using control devices that provide a virtual machine environment and that communicate via an IP network
US6463521B1 (en) * 1999-06-23 2002-10-08 Sun Microsystems, Inc. Opcode numbering for meta-data encoding
FR2795835B1 (fr) * 1999-07-01 2001-10-05 Bull Cp8 Procede de verification de transformateurs de codes pour un systeme embarque, notamment sur une carte a puce
US7908216B1 (en) 1999-07-22 2011-03-15 Visa International Service Association Internet payment, authentication and loading system using virtual smart card
US6684389B1 (en) * 1999-08-05 2004-01-27 Canon Kabushiki Kaisha Compiler that decrypts encrypted source code
US7376583B1 (en) 1999-08-10 2008-05-20 Gofigure, L.L.C. Device for making a transaction via a communications link
WO2001011480A1 (en) * 1999-08-11 2001-02-15 Spinware, Inc. System and method for controlling access to data stored in a portable storage medium
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
US6560774B1 (en) * 1999-09-01 2003-05-06 Microsoft Corporation Verifier to check intermediate language
KR20010050212A (ko) * 1999-09-13 2001-06-15 스테븐 디.피터스 메모리 카드에 기록된 파일에 대한 접근 제어 시스템
GB9921720D0 (en) 1999-09-14 1999-11-17 Tao Group Ltd Loading object-oriented computer programs
US7231411B1 (en) * 1999-09-15 2007-06-12 Koninklijke Philips Electronics N.V. Removable card system with downloadable agent for communicating with a digital television receiver or other host device
WO2001029762A2 (en) * 1999-10-20 2001-04-26 Spyrus, Inc. Method and system for an integrated circuit card interface device with multiple modes of operation
GB9925227D0 (en) 1999-10-25 1999-12-22 Internet Limited Data storage retrieval and access system
GB2356268B (en) 1999-11-10 2004-08-18 Mars Inc Value transaction systems
US7107581B2 (en) * 1999-11-12 2006-09-12 Sun Microsystems, Inc. Overflow predictive arithmetic instruction optimization using chaining
US6363523B1 (en) * 1999-11-12 2002-03-26 Sun Microsystems, Inc. Optimization of N-base typed arithmetic expressions
US8453133B2 (en) * 1999-11-12 2013-05-28 Oracle America, Inc. Optimization of N-base typed arithmetic instructions via rework
US7158993B1 (en) 1999-11-12 2007-01-02 Sun Microsystems, Inc. API representation enabling submerged hierarchy
US7207037B2 (en) * 1999-11-12 2007-04-17 Sun Microsystems, Inc. Overflow sensitive arithmetic instruction optimization using chaining
US7010786B2 (en) 1999-11-12 2006-03-07 Sun Microsystems, Inc. Predictive arithmetic overflow detection
FR2801118B1 (fr) * 1999-11-17 2001-12-21 Bull Cp8 Procede de chargement d'applications dans un systeme embarque multi-application, systeme embarque correspondant, et procede d'execution d'une application du systeme embarque
WO2001039464A1 (de) * 1999-11-19 2001-05-31 Swisscom Mobile Ag Anpassbare chipkarte
WO2001040910A1 (en) 1999-12-06 2001-06-07 De Jong, Eduard, Karel Computer arrangement using non-refreshed dram
US7080261B1 (en) 1999-12-07 2006-07-18 Sun Microsystems, Inc. Computer-readable medium with microprocessor to control reading and computer arranged to communicate with such a medium
AU777437B2 (en) 1999-12-07 2004-10-14 Sun Microsystems, Inc. Secure photo carrying identification device, as well as means and method for authenticating such an identification device
FR2802319B1 (fr) 1999-12-10 2004-10-01 Gemplus Card Int Controle d'acces par capacites pour des applications notamment cooperantes dans une carte a puce
US6757824B1 (en) * 1999-12-10 2004-06-29 Microsoft Corporation Client-side boot domains and boot rules
US20010007146A1 (en) * 1999-12-23 2001-07-05 Uwe Hansmann Method for providing a set of software components
FR2804819B1 (fr) * 2000-02-03 2002-05-03 Gemplus Card Int Gestion de temps au niveau communication pour entite du type carte a puce
FR2805062B1 (fr) 2000-02-10 2005-04-08 Bull Cp8 Procede de transmission de flux de donnees a haut debit sur un reseau de type internet entre un serveur et un terminal a carte a puce, notamment d'un flux de donnees multimedia
US6748592B1 (en) * 2000-02-14 2004-06-08 Xoucin, Inc. Method and apparatus for protectively operating a data/information processing device
WO2001061486A2 (en) * 2000-02-17 2001-08-23 Interactive Video Technologies, Inc. Incremental bootstrap class loader
GB0003920D0 (en) 2000-02-21 2000-04-05 Ncipher Corp Limited Computer system
US6813762B1 (en) * 2000-02-22 2004-11-02 Freescale Semiconductor, Inc. Method for processing program files in a programming language capable of dynamic loading
JP4509291B2 (ja) * 2000-03-30 2010-07-21 大日本印刷株式会社 Icカード、icカードのプログラム更新装置、および、その方法
US6986132B1 (en) 2000-04-28 2006-01-10 Sun Microsytems, Inc. Remote incremental program binary compatibility verification using API definitions
US6651186B1 (en) 2000-04-28 2003-11-18 Sun Microsystems, Inc. Remote incremental program verification using API definitions
US6883163B1 (en) 2000-04-28 2005-04-19 Sun Microsystems, Inc. Populating resource-constrained devices with content verified using API definitions
FR2812101A1 (fr) * 2000-07-24 2002-01-25 Bull Cp8 Protocole d'echange de messages entre applications implantees sur un systeme embarque, et systeme embarque correspondant
US6675338B1 (en) 2000-08-09 2004-01-06 Sun Microsystems, Inc. Internally generated vectors for burnin system
JP2002091762A (ja) * 2000-09-14 2002-03-29 Denso Corp プログラム生成装置
US6981245B1 (en) 2000-09-14 2005-12-27 Sun Microsystems, Inc. Populating binary compatible resource-constrained devices with content verified using API definitions
JP2002117381A (ja) * 2000-10-05 2002-04-19 Dainippon Printing Co Ltd Icカード
FR2815801B1 (fr) * 2000-10-20 2004-10-29 Trusted Logic Protocole de transmission d'une pluralite de flux logiques d'echange multiple de couples de commande/reponse sur un canal physique unique d'echange entre maitre et esclave et systeme de suivi et de controle d'execution d'appliquettes
US8176296B2 (en) 2000-10-26 2012-05-08 Cypress Semiconductor Corporation Programmable microcontroller architecture
US6724220B1 (en) 2000-10-26 2004-04-20 Cyress Semiconductor Corporation Programmable microcontroller architecture (mixed analog/digital)
US8103496B1 (en) 2000-10-26 2012-01-24 Cypress Semicondutor Corporation Breakpoint control in an in-circuit emulation system
US7765095B1 (en) 2000-10-26 2010-07-27 Cypress Semiconductor Corporation Conditional branching in an in-circuit emulation system
US8149048B1 (en) 2000-10-26 2012-04-03 Cypress Semiconductor Corporation Apparatus and method for programmable power management in a programmable analog circuit block
US20020108054A1 (en) * 2001-02-02 2002-08-08 Moore Christopher S. Solid-state memory device storing program code and methods for use therewith
CN1227626C (zh) * 2001-02-08 2005-11-16 诺基亚有限公司 智能读卡器
US7080373B2 (en) * 2001-03-07 2006-07-18 Freescale Semiconductor, Inc. Method and device for creating and using pre-internalized program files
FR2822334A1 (fr) * 2001-03-16 2002-09-20 Schlumberger Systems & Service Module d'idente d'abonne a gestion independante et securisee d'une pluralite de commandes d'au moins une appliquette, notamment pour un equipement mobile de communication
AU2006200734B2 (en) * 2001-05-17 2007-12-13 Accenture Global Services Limited Pipeline architecture for use with net-centric application program architectures
US6971001B1 (en) * 2001-05-17 2005-11-29 Accenture Global Services Gmbh General and reusable components for defining net-centric application program architectures
US8209753B2 (en) * 2001-06-15 2012-06-26 Activcard, Inc. Universal secure messaging for remote security tokens
US20040218762A1 (en) 2003-04-29 2004-11-04 Eric Le Saint Universal secure messaging for cryptographic modules
EP1417602A4 (en) * 2001-08-13 2007-08-22 Qualcomm Inc ACCESS PRIVILEGES FOR A MEMORY AREA IN A COMPUTER DEVICE AT APPLICATION LEVEL
US7155702B2 (en) * 2001-09-13 2006-12-26 Axalto Sa Interface and stub generation for code distribution and synthesis
US7406674B1 (en) 2001-10-24 2008-07-29 Cypress Semiconductor Corporation Method and apparatus for generating microcontroller configuration information
US7085840B2 (en) 2001-10-29 2006-08-01 Sun Microsystems, Inc. Enhanced quality of identification in a data communications network
US7496751B2 (en) * 2001-10-29 2009-02-24 Sun Microsystems, Inc. Privacy and identification in a data communications network
US20030084302A1 (en) * 2001-10-29 2003-05-01 Sun Microsystems, Inc., A Delaware Corporation Portability and privacy with data communications network browsing
US7275260B2 (en) 2001-10-29 2007-09-25 Sun Microsystems, Inc. Enhanced privacy protection in identification in a data communications network
JP4055393B2 (ja) * 2001-10-30 2008-03-05 ソニー株式会社 データ処理装置およびその方法とプログラム
US8078970B1 (en) 2001-11-09 2011-12-13 Cypress Semiconductor Corporation Graphical user interface with user-selectable list-box
US8042093B1 (en) 2001-11-15 2011-10-18 Cypress Semiconductor Corporation System providing automatic source code generation for personalization and parameterization of user modules
US6971004B1 (en) 2001-11-19 2005-11-29 Cypress Semiconductor Corp. System and method of dynamically reconfiguring a programmable integrated circuit
US7844437B1 (en) 2001-11-19 2010-11-30 Cypress Semiconductor Corporation System and method for performing next placements and pruning of disallowed placements for programming an integrated circuit
US7770113B1 (en) 2001-11-19 2010-08-03 Cypress Semiconductor Corporation System and method for dynamically generating a configuration datasheet
US8069405B1 (en) 2001-11-19 2011-11-29 Cypress Semiconductor Corporation User interface for efficiently browsing an electronic document using data-driven tabs
US7774190B1 (en) 2001-11-19 2010-08-10 Cypress Semiconductor Corporation Sleep and stall in an in-circuit emulation system
US7243853B1 (en) 2001-12-04 2007-07-17 Visa U.S.A. Inc. Method and system for facilitating memory and application management on a secured token
CA2472740A1 (en) * 2002-01-11 2003-07-17 Sierra Wireless, Inc. Host extensible wireless application interface
US20100174717A1 (en) * 2002-02-28 2010-07-08 Olivier Fambon Interative serialisation procedure for structured software objects
EP1355268B1 (en) * 2002-02-28 2006-04-05 Matsushita Electric Industrial Co., Ltd. Memory card
US8769517B2 (en) * 2002-03-15 2014-07-01 International Business Machines Corporation Generating a common symbol table for symbols of independent applications
US6912633B2 (en) 2002-03-18 2005-06-28 Sun Microsystems, Inc. Enhanced memory management for portable devices
US6996802B2 (en) 2002-03-18 2006-02-07 Sun Microsystems, Inc. Method and apparatus for deployment of high integrity software using initialization order and calling order constraints
US7010783B2 (en) 2002-03-18 2006-03-07 Sun Microsystems, Inc. Method and apparatus for deployment of high integrity software using reduced dynamic memory allocation
US7181737B2 (en) 2002-03-18 2007-02-20 Sun Microsystems, Inc. Method and apparatus for deployment of high integrity software using static procedure return addresses
US8103497B1 (en) 2002-03-28 2012-01-24 Cypress Semiconductor Corporation External interface for event architecture
DE10216602A1 (de) * 2002-04-15 2003-10-30 Giesecke & Devrient Gmbh Optimierung von compilergeneriertem Programmcode
US7890771B2 (en) 2002-04-17 2011-02-15 Microsoft Corporation Saving and retrieving data based on public key encryption
US7308608B1 (en) 2002-05-01 2007-12-11 Cypress Semiconductor Corporation Reconfigurable testing system and method
US20030212616A1 (en) * 2002-05-09 2003-11-13 Casabyte, Inc. Method, apparatus and article to remotely associate wireless communications devices with subscriber identities and/or proxy wireless communications devices
FR2840084A1 (fr) * 2002-05-27 2003-11-28 Gemplus Card Int Procede de verification de codes pour microcircuits a ressources limitees
NO20023194D0 (no) * 2002-07-01 2002-07-01 Sospita As Fremgangsmåte og apparatur for eksekvering av programvareapplikasjoner i et multiprosessormiljö
US20040122774A1 (en) * 2002-08-02 2004-06-24 Martin Studd Method and system for executing applications on a mobile device
US7761845B1 (en) 2002-09-09 2010-07-20 Cypress Semiconductor Corporation Method for parameterizing a user module
EP1398934B1 (en) 2002-09-16 2008-01-02 Telefonaktiebolaget LM Ericsson (publ) Secure access to a subscription module
AU2003266320A1 (en) * 2002-09-16 2004-04-30 Telefonaktiebolaget Lm Ericsson (Publ) Secure access to a subscription module
US20040139021A1 (en) 2002-10-07 2004-07-15 Visa International Service Association Method and system for facilitating data access and management on a secure token
US6904591B2 (en) * 2002-11-01 2005-06-07 Oz Development, Inc. Software development system for editable executables
FR2846770B1 (fr) * 2002-11-04 2005-01-28 Oberthur Card Syst Sa Carte a microcircuit comportant des moyens de publication de ses objets informatiques
CN1276363C (zh) * 2002-11-13 2006-09-20 深圳市朗科科技有限公司 借助半导体存储装置实现数据安全存储和算法存储的方法
US20040123152A1 (en) * 2002-12-18 2004-06-24 Eric Le Saint Uniform framework for security tokens
US20040143739A1 (en) * 2003-01-16 2004-07-22 Sun Mircosystems, Inc., A Delaware Corporation Run time code integrity checks
US7165246B2 (en) 2003-01-16 2007-01-16 Sun Microsystems, Inc. Optimized representation of data type information in program verification
US7272830B2 (en) 2003-01-16 2007-09-18 Sun Microsystems, Inc. Ordering program data for loading on a device
US7281244B2 (en) 2003-01-16 2007-10-09 Sun Microsystems, Inc. Using a digital fingerprint to commit loaded data in a device
US7222331B2 (en) 2003-01-16 2007-05-22 Sun Microsystems, Inc. Linking of virtual methods
US7484095B2 (en) 2003-01-16 2009-01-27 Sun Microsystems, Inc. System for communicating program data between a first device and a second device
US8121955B2 (en) * 2003-01-16 2012-02-21 Oracle America, Inc. Signing program data payload sequence in program loading
CN100388191C (zh) 2003-04-01 2008-05-14 松下电器产业株式会社 程序连接方法、装置以及终端装置
US20040199787A1 (en) * 2003-04-02 2004-10-07 Sun Microsystems, Inc., A Delaware Corporation Card device resource access control
US20040221174A1 (en) * 2003-04-29 2004-11-04 Eric Le Saint Uniform modular framework for a host computer system
US7328432B2 (en) * 2003-06-02 2008-02-05 Sun Microsystems, Inc. Proximity-based addressing for supporting in-place execution in virtual machines
US7184756B2 (en) * 2003-06-12 2007-02-27 Motorola Inc. Wireless communication device with tamper resistant configuration settings
WO2005007258A1 (en) * 2003-07-23 2005-01-27 Koninklijke Philips Electronics N.V. Device to process program codes
US10437964B2 (en) * 2003-10-24 2019-10-08 Microsoft Technology Licensing, Llc Programming interface for licensing
CH716409B1 (de) * 2003-11-12 2021-01-29 Legic Identsystems Ag Verfahren zum Einschreiben einer Datenorganisation in Identifikationsmedien und zum Einschreiben und Ausführen von Applikationen in der Datenorganisation.
DE10357257A1 (de) 2003-12-08 2005-06-30 Giesecke & Devrient Gmbh Java Smart Card Chip mit für globale Variablen reserviertem Speicherbereich
US7907935B2 (en) * 2003-12-22 2011-03-15 Activcard Ireland, Limited Intelligent remote device
US20050138380A1 (en) * 2003-12-22 2005-06-23 Fedronic Dominique L.J. Entry control system
FR2864398A1 (fr) * 2003-12-23 2005-06-24 France Telecom Terminal de telecommunication a deux espaces d'execution
US7286076B1 (en) 2004-02-10 2007-10-23 Zilog, Inc. Generating a mark/space table and a string of timing information on a remote control device
US7436345B1 (en) * 2004-02-10 2008-10-14 Zilog, Inc. Script instruction for jumping to a location, interpreting a predetermined number of instructions and then jumping back
US7227492B1 (en) * 2004-02-10 2007-06-05 Zilog, Inc. Interpreting a common script block to output various forms of data according to a common protocol
US7259696B1 (en) * 2004-02-10 2007-08-21 Zilog, Inc. Interactive web-based codeset selection and development tool
US7091857B2 (en) * 2004-02-12 2006-08-15 Mi-Jack Products, Inc. Electronic control system used in security system for cargo trailers
US7374099B2 (en) 2004-02-24 2008-05-20 Sun Microsystems, Inc. Method and apparatus for processing an application identifier from a smart card
US7165727B2 (en) 2004-02-24 2007-01-23 Sun Microsystems, Inc. Method and apparatus for installing an application onto a smart card
US7191288B2 (en) 2004-02-24 2007-03-13 Sun Microsystems, Inc. Method and apparatus for providing an application on a smart card
US7140549B2 (en) 2004-02-24 2006-11-28 Sun Microsystems, Inc. Method and apparatus for selecting a desired application on a smart card
WO2005086000A2 (en) * 2004-03-04 2005-09-15 Axalto Sa A secure sharing of resources between applications in independent execution environments in a retrievable token (e.g smart card)
US7295049B1 (en) 2004-03-25 2007-11-13 Cypress Semiconductor Corporation Method and circuit for rapid alignment of signals
US20050263596A1 (en) * 2004-05-12 2005-12-01 Solicore, Inc. Portable charger, including portable sleeve, for an electronically readable card
US20060041854A1 (en) * 2004-07-22 2006-02-23 Steven Schlanger Devices and methods for programming microcontrollers
US8286125B2 (en) 2004-08-13 2012-10-09 Cypress Semiconductor Corporation Model for a hardware device-independent method of defining embedded firmware for programmable systems
US8069436B2 (en) * 2004-08-13 2011-11-29 Cypress Semiconductor Corporation Providing hardware independence to automate code generation of processing device firmware
US7855672B1 (en) 2004-08-19 2010-12-21 Ixys Ch Gmbh Compressed codeset database format for remote control devices
US20060047954A1 (en) * 2004-08-30 2006-03-02 Axalto Inc. Data access security implementation using the public key mechanism
KR100597413B1 (ko) 2004-09-24 2006-07-05 삼성전자주식회사 자바 바이트코드 변환 방법 및 상기 변환을 수행하는 자바인터프리터
US20060080655A1 (en) * 2004-10-09 2006-04-13 Axalto Inc. System and method for post-issuance code update employing embedded native code
FR2877454B1 (fr) * 2004-11-04 2006-12-29 Gemplus Sa Procede de chargement d'un code logiciel en langage intermediaire oriente objet dans un appareil portatif
US7232073B1 (en) 2004-12-21 2007-06-19 Sun Microsystems, Inc. Smart card with multiple applications
JP4215037B2 (ja) * 2004-12-27 2009-01-28 セイコーエプソン株式会社 リソース管理システム、プリンタ、プリンタ用ネットワークカードおよびリソース管理プログラム、並びにリソース管理方法
JP2006244451A (ja) * 2005-02-01 2006-09-14 Seiko Epson Corp リソース管理システムおよびリソース管理プログラム、並びにリソース管理方法
JP4207938B2 (ja) * 2005-02-01 2009-01-14 セイコーエプソン株式会社 ソフトウェア認証システム、ソフトウェア認証プログラム、およびソフトウェア認証方法
US7332976B1 (en) 2005-02-04 2008-02-19 Cypress Semiconductor Corporation Poly-phase frequency synthesis oscillator
JP4311386B2 (ja) * 2005-02-14 2009-08-12 セイコーエプソン株式会社 ファイル操作制限システムおよびファイル操作制限プログラム、ファイル操作制限方法、電子機器並びに印刷装置
US20060203733A1 (en) * 2005-02-17 2006-09-14 Casabyte, Inc. Methods, apparatuses, and articles to remotely test communications networks using digital fingerprints of content
JP4628149B2 (ja) * 2005-03-14 2011-02-09 株式会社エヌ・ティ・ティ・ドコモ アクセス制御装置及びアクセス制御方法
JP4232767B2 (ja) * 2005-03-14 2009-03-04 セイコーエプソン株式会社 ソフトウェア認証システムおよびソフトウェア認証プログラム、並びにソフトウェア認証方法
DE102005019753A1 (de) * 2005-04-28 2006-11-09 Braun Gmbh Blutdruckmessgerät sowie Chipkarte hierfür
US7400183B1 (en) 2005-05-05 2008-07-15 Cypress Semiconductor Corporation Voltage controlled oscillator delay cell and method
US8089461B2 (en) 2005-06-23 2012-01-03 Cypress Semiconductor Corporation Touch wake for electronic devices
US8887295B2 (en) * 2005-06-27 2014-11-11 Safend Ltd. Method and system for enabling enterprises to use detachable memory devices that contain data and executable files in controlled and secure way
US7792289B2 (en) * 2005-06-28 2010-09-07 Mark Ellery Ogram Encrypted communications
US7698703B2 (en) * 2005-06-29 2010-04-13 Gemalto Inc. Imparting digital uniqueness to the types of a programming language using a unique digital sequence
US7647630B2 (en) * 2005-12-15 2010-01-12 International Business Machines Corporation Associating security information with information objects in a data processing system
US20070143601A1 (en) * 2005-12-15 2007-06-21 Arroyo Diana J System and method for authorizing information flows
DE102005061659A1 (de) * 2005-12-22 2007-06-28 Giesecke & Devrient Gmbh Sicherung eines tragbaren Datenträgers gegen Angriffe
FR2895608B1 (fr) * 2005-12-23 2008-03-21 Trusted Logic Sa Procede pour la realisation d'un compteur securise sur un systeme informatique embarque disposant d'une carte a puce
US20070192840A1 (en) * 2006-02-10 2007-08-16 Lauri Pesonen Mobile communication terminal
JP4933292B2 (ja) * 2006-02-28 2012-05-16 キヤノン株式会社 情報処理装置、無線通信方法、記憶媒体、プログラム
US8067948B2 (en) 2006-03-27 2011-11-29 Cypress Semiconductor Corporation Input/output multiplexer bus
US20080052770A1 (en) * 2006-03-31 2008-02-28 Axalto Inc Method and system of providing security services using a secure device
US9092635B2 (en) 2006-03-31 2015-07-28 Gemalto Sa Method and system of providing security services using a secure device
DE102006023436A1 (de) * 2006-05-18 2007-11-22 Giesecke & Devrient Gmbh Authentisierung für entfernte Funktionsaufrufe
EP1860589B1 (en) * 2006-05-26 2013-11-27 Incard SA Method for accessing structured data in IC Cards
EP1881404A1 (fr) * 2006-07-20 2008-01-23 Gemplus Procédé de protection dynamique des données lors de l'exécution d'un code logiciel en langage intermédiaire dans un appareil numérique
US7817799B2 (en) * 2006-09-07 2010-10-19 International Business Machines Corporation Maintaining encryption key integrity
EP1936574A1 (en) * 2006-12-01 2008-06-25 Cassis International PTE Ltd. CAP file for the personalisation of a Java application
US7971061B2 (en) * 2006-12-11 2011-06-28 Pitney Bowes Inc. E-mail system and method having certified opt-in capabilities
US8285329B1 (en) 2007-04-02 2012-10-09 Sprint Communications Company L.P. Mobile device-based control of smart card operation
US8040266B2 (en) 2007-04-17 2011-10-18 Cypress Semiconductor Corporation Programmable sigma-delta analog-to-digital converter
US9564902B2 (en) 2007-04-17 2017-02-07 Cypress Semiconductor Corporation Dynamically configurable and re-configurable data path
US7737724B2 (en) * 2007-04-17 2010-06-15 Cypress Semiconductor Corporation Universal digital block interconnection and channel routing
US8026739B2 (en) 2007-04-17 2011-09-27 Cypress Semiconductor Corporation System level interconnect with programmable switching
US8092083B2 (en) 2007-04-17 2012-01-10 Cypress Semiconductor Corporation Temperature sensor with digital bandgap
US8130025B2 (en) 2007-04-17 2012-03-06 Cypress Semiconductor Corporation Numerical band gap
US8516025B2 (en) 2007-04-17 2013-08-20 Cypress Semiconductor Corporation Clock driven dynamic datapath chaining
US8065653B1 (en) 2007-04-25 2011-11-22 Cypress Semiconductor Corporation Configuration of programmable IC design elements
US8266575B1 (en) 2007-04-25 2012-09-11 Cypress Semiconductor Corporation Systems and methods for dynamically reconfiguring a programmable system on a chip
US9720805B1 (en) 2007-04-25 2017-08-01 Cypress Semiconductor Corporation System and method for controlling a target device
ITMI20070996A1 (it) * 2007-05-17 2008-11-18 Incard Sa Metodo per il controllo di esecuzione di un'applet per una ic card
US8049569B1 (en) 2007-09-05 2011-11-01 Cypress Semiconductor Corporation Circuit and method for improving the accuracy of a crystal-less oscillator having dual-frequency modes
US8249654B1 (en) * 2007-09-27 2012-08-21 Sprint Communications Company L.P. Dynamic smart card application loading
US9883381B1 (en) 2007-10-02 2018-01-30 Sprint Communications Company L.P. Providing secure access to smart card applications
CN101520733B (zh) * 2008-02-27 2014-04-16 国际商业机器公司 装载类的方法和装置及重组类存档文件方法
CN101256612B (zh) * 2008-04-01 2010-11-03 北京飞天诚信科技有限公司 基于.Net卡的程序保护方法和系统
CN101419549B (zh) * 2008-05-13 2012-04-18 飞天诚信科技股份有限公司 基于.Net卡查找类和函数的方法和装置
CN104407518B (zh) 2008-06-20 2017-05-31 因文西斯系统公司 对用于过程控制的实际和仿真设施进行交互的系统和方法
US8806457B2 (en) * 2008-12-15 2014-08-12 Apple Inc. Deferred constant pool generation
US20100211591A1 (en) * 2009-02-16 2010-08-19 Chuan-Hua Chang Apparatus for processing strings simultaneously
US9448964B2 (en) 2009-05-04 2016-09-20 Cypress Semiconductor Corporation Autonomous control in a programmable system
US8463964B2 (en) 2009-05-29 2013-06-11 Invensys Systems, Inc. Methods and apparatus for control configuration with enhanced change-tracking
US8127060B2 (en) 2009-05-29 2012-02-28 Invensys Systems, Inc Methods and apparatus for control configuration with control objects that are fieldbus protocol-aware
US9384063B2 (en) * 2009-06-18 2016-07-05 Microsoft Technology Licensing, Llc Eliding synchronization in a concurrent data structure
JP5449905B2 (ja) * 2009-07-29 2014-03-19 フェリカネットワークス株式会社 情報処理装置、プログラム、および情報処理システム
ES2702470T3 (es) * 2009-11-05 2019-03-01 Gemalto Sa Objeto portátil seguro
KR101054596B1 (ko) * 2009-11-18 2011-08-04 에스케이씨앤씨 주식회사 자바카드용 마이그레이터를 이용한 메모리 절감 방법
US8276188B2 (en) * 2009-12-03 2012-09-25 Condel International Technologies Inc. Systems and methods for managing storage devices
DE102010004446A1 (de) * 2010-01-13 2011-07-14 Giesecke & Devrient GmbH, 81677 Verfahren zum Bereitstellen eines sicheren Zählers auf einem Endgerät
US10305910B2 (en) * 2010-01-15 2019-05-28 Apple Inc. Accessing specialized fileserver
US8538480B2 (en) * 2010-03-30 2013-09-17 Qualcomm Incorporated Methods and apparatus for device applet management on smart cards
EP2397998A1 (fr) * 2010-06-17 2011-12-21 Gemalto SA Procédé et système de contrôle du traitement de plusieurs flux de communication radiofréquence par une carte à circuits intégrés
US8499299B1 (en) 2010-06-29 2013-07-30 Ca, Inc. Ensuring deterministic thread context switching in virtual machine applications
US8769518B1 (en) 2010-06-29 2014-07-01 Ca, Inc. Ensuring determinism during programmatic replay in a virtual machine
US8732670B1 (en) 2010-06-29 2014-05-20 Ca, Inc. Ensuring determinism during programmatic replay in a virtual machine
US8959492B2 (en) * 2010-12-14 2015-02-17 Ngmoco, Llc Communication protocol between a high-level language and a native language
US8335921B2 (en) 2010-12-17 2012-12-18 Google, Inc. Writing application data to a secure element
US8352749B2 (en) * 2010-12-17 2013-01-08 Google Inc. Local trusted services manager for a contactless smart card
US8196131B1 (en) 2010-12-17 2012-06-05 Google Inc. Payment application lifecycle management in a contactless smart card
US8533336B1 (en) * 2011-02-04 2013-09-10 Google Inc. Automated web frontend sharding
JP5329602B2 (ja) * 2011-05-12 2013-10-30 株式会社三菱東京Ufj銀行 端末装置およびプログラム
EP2535832B1 (en) * 2011-06-17 2017-04-26 Simulity Labs Ltd A method for operating a virtual machine over a file system
US8255687B1 (en) 2011-09-15 2012-08-28 Google Inc. Enabling users to select between secure service providers using a key escrow service
US8171525B1 (en) 2011-09-15 2012-05-01 Google Inc. Enabling users to select between secure service providers using a central trusted service manager
US8313036B1 (en) 2011-09-16 2012-11-20 Google Inc. Secure application directory
JP6290090B2 (ja) 2011-11-01 2018-03-07 グーグル エルエルシー 安全要素を管理するためのシステム、方法、およびコンピュータプログラム製品
US9544759B2 (en) 2011-11-01 2017-01-10 Google Inc. Systems, methods, and computer program products for managing states
JP5818695B2 (ja) * 2012-01-04 2015-11-18 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation コード変換方法、プログラム及びシステム
US9372985B2 (en) 2012-01-25 2016-06-21 Sony Corporation Information processing device, information processing method, and computer program
US8385553B1 (en) 2012-02-28 2013-02-26 Google Inc. Portable secure element
JP5953867B2 (ja) * 2012-03-26 2016-07-20 富士ゼロックス株式会社 プログラム、及びプログラム保護装置
ITMI20120561A1 (it) * 2012-04-05 2013-10-06 St Microelectronics Srl Metodo per proteggere un programma applicativo
US8429409B1 (en) 2012-04-06 2013-04-23 Google Inc. Secure reset of personal and service provider information on mobile devices
US20130311382A1 (en) * 2012-05-21 2013-11-21 Klaus S. Fosmark Obtaining information for a payment transaction
US9383448B2 (en) 2012-07-05 2016-07-05 Deca System Co., Ltd. Golf GPS device with automatic hole recognition and playing hole selection
US8676709B2 (en) 2012-07-31 2014-03-18 Google Inc. Merchant category codes in a proxy card transaction
WO2014047069A1 (en) 2012-09-18 2014-03-27 Jvl Ventures, Llc Systems, methods, and computer program products for interfacing multiple service provider trusted service managers and secure elements
CN104182267B (zh) * 2013-05-21 2019-10-25 南京中兴新软件有限责任公司 编译方法、解释方法、装置及用户设备
EP2843605A1 (en) * 2013-08-30 2015-03-04 Gemalto SA Method for authenticating transactions
US9516006B2 (en) * 2013-10-23 2016-12-06 Google Inc. Re-programmable secure cryptographic device
US9280339B1 (en) * 2013-12-12 2016-03-08 Amazon Technologies, Inc. Class replacer during application installation
US9403046B2 (en) 2014-11-05 2016-08-02 WWTemplar LLC Remote control of fire suppression systems
US10176094B2 (en) 2015-06-30 2019-01-08 Renesas Electronics America Inc. Common MCU self-identification information
WO2017066194A1 (en) 2015-10-11 2017-04-20 Renesas Electronics America Inc. Data driven embedded application building and configuration
WO2017209876A1 (en) * 2016-05-31 2017-12-07 Brocade Communications Systems, Inc. Buffer manager
KR101894894B1 (ko) * 2017-06-16 2018-09-05 서울대학교산학협력단 바이트코드 처리 장치 및 동작 방법
CN109840395A (zh) * 2017-11-24 2019-06-04 航天信息股份有限公司 一种基于Java卡下载应用程序的方法和系统
US10698666B2 (en) * 2017-12-29 2020-06-30 Microsoft Technology Licensing, Llc Automatically building software projects
CN108966235B (zh) * 2018-06-20 2021-07-02 融慧金科金融服务外包(北京)有限公司 Ios用户网络身份证rhidfa的运行方法
CN110059499A (zh) * 2019-03-22 2019-07-26 华为技术有限公司 一种文件访问权限认证方法及电子设备
US12216769B2 (en) 2022-04-29 2025-02-04 Oracle International Corporation Secure element enforcing a security policy for device peripherals
US12197974B2 (en) * 2022-06-08 2025-01-14 Oracle International Corporation Logical java card runtime environment
US12538130B2 (en) 2022-09-20 2026-01-27 Oracle International Corporation Systems and methods for running multiple logical secure elements on the same secure hardware
EP4425328A1 (en) * 2023-02-28 2024-09-04 STMicroelectronics International N.V. Method of executing a java card application

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01243125A (ja) * 1988-03-24 1989-09-27 Fuji Electric Co Ltd 解釈プログラムの実行速度向上方法
FR2667171A1 (fr) * 1990-09-25 1992-03-27 Gemplus Card Int Support portable a micro-circuit facilement programmable et procede de programmation de ce micro-circuit.
WO1994010657A1 (en) * 1992-10-26 1994-05-11 Intellect Australia Pty. Ltd. Host and user transaction system
JPH09500469A (ja) * 1993-12-07 1997-01-14 ジェムプリュス カード アンテルナショナル メモリカード及びその作動方法
JPH09244904A (ja) * 1996-03-12 1997-09-19 Matsushita Electric Ind Co Ltd 仮想コード翻訳系および仮想マシンシステム

Family Cites Families (101)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE408455C (de) 1923-07-15 1925-01-19 Georg Koenig Verfahren zur fortlaufenden Bestimmung des Heizwerts von Gasgemischen
FR2386080A1 (fr) 1977-03-31 1978-10-27 Cii Honeywell Bull Systeme de comptabilisation d'unites homogenes predeterminees
US4650975A (en) * 1984-08-30 1987-03-17 Casio Computer Co., Ltd. IC card and an identification system thereof
US4667290A (en) 1984-09-10 1987-05-19 501 Philon, Inc. Compilers using a universal intermediate language
JPS61204741A (ja) 1985-03-06 1986-09-10 Nec Corp ソ−スプログラムの圧縮方法
JPH0635227B2 (ja) 1985-07-31 1994-05-11 トツパン・ム−ア株式会社 更新情報と履歴情報の読出し手段を有するicカ−ド
US4905138A (en) 1985-10-17 1990-02-27 Westinghouse Electric Corp. Meta-interpreter
US4874935A (en) 1986-03-10 1989-10-17 Data Card Coprporation Smart card apparatus and method of programming same
GB2191029B (en) 1986-05-29 1990-12-12 Almex Systems Ltd Electronic pass
JPH07104891B2 (ja) 1986-08-05 1995-11-13 沖電気工業株式会社 取引処理装置
US5133072A (en) 1986-11-13 1992-07-21 Hewlett-Packard Company Method for improved code generation in reduced instruction set computers
JPS63156254A (ja) 1986-12-19 1988-06-29 Fujitsu Ltd インタプリタにおける中間テキストの管理方法
JPS63156255A (ja) 1986-12-19 1988-06-29 Fujitsu Ltd インタプリタにおけるオ−バレイ方法
DE3743639A1 (de) 1986-12-24 1988-07-07 Mitsubishi Electric Corp Ic-karte und system zur ueberpruefung ihrer funktionstuechtigkeit
US4791558A (en) * 1987-02-13 1988-12-13 International Business Machines Corporation System and method for generating an object module in a first format and then converting the first format into a format which is loadable into a selected computer
JPS63231692A (ja) 1987-03-20 1988-09-27 Mitsubishi Electric Corp 機密コ−ド書込装置
FR2626095B1 (fr) 1988-01-20 1991-08-30 Sgs Thomson Microelectronics Systeme de securite pour proteger des zones de programmation d'une carte a puce
US4892974A (en) 1988-03-10 1990-01-09 Air Products And Chemicals, Inc. Process for producing mono-ortho-tert-butyl-aniline using silica-alumina catalysts
US5195130A (en) 1988-05-05 1993-03-16 Transaction Technology, Inc. Computer and telephone apparatus with user friendly computer interface and enhanced integrity features
JP2666847B2 (ja) 1988-06-06 1997-10-22 日本電気株式会社 異種言語間連絡方式
US5313614A (en) * 1988-12-06 1994-05-17 At&T Bell Laboratories Method and apparatus for direct conversion of programs in object code form between different hardware architecture computer systems
US5119465A (en) * 1989-06-19 1992-06-02 Digital Equipment Corporation System for selectively converting plurality of source data structures through corresponding source intermediate structures, and target intermediate structures into selected target structure
JPH0378082A (ja) 1989-08-21 1991-04-03 Hitachi Ltd 予約取引処理方法
CA2025160A1 (en) 1989-09-28 1991-03-29 John W. White Portable and dynamic distributed applications architecture
US5120939A (en) 1989-11-09 1992-06-09 At&T Bell Laboratories Databaseless security system
US5339419A (en) * 1990-06-25 1994-08-16 Hewlett-Packard Company ANDF compiler using the HPcode-plus compiler intermediate language
US5450575A (en) 1991-03-07 1995-09-12 Digital Equipment Corporation Use of stack depth to identify machine code mistakes
US5307492A (en) 1991-03-07 1994-04-26 Digital Equipment Corporation Mapping assembly language argument list references in translating code for different machine architectures
JP3602857B2 (ja) * 1991-04-23 2004-12-15 株式会社日立製作所 多機種対応型情報処理システム、および、方法
JP2690229B2 (ja) 1991-11-26 1997-12-10 三菱電機株式会社 非接触icカード
US5406380A (en) 1991-12-30 1995-04-11 Management Graphics, Inc. Film recorder with interface for user replaceable memory element
US5469572A (en) 1992-12-01 1995-11-21 Taylor; James M. Post compile optimizer for linkable object code
US5367685A (en) 1992-12-22 1994-11-22 Firstperson, Inc. Method and apparatus for resolving data references in generated code
FR2705810B1 (fr) 1993-05-26 1995-06-30 Gemplus Card Int Puce de carte à puce munie d'un moyen de limitation du nombre d'authentifications.
US5519866A (en) 1993-06-28 1996-05-21 Taligent, Inc. Method and apparatus of incrementally linking components of a modeled computer program
CA2168434A1 (en) 1993-07-30 1995-09-02 Quentin Rees Oliver Device and method for programmable functions
US5650761A (en) 1993-10-06 1997-07-22 Gomm; R. Greg Cash alternative transaction system
GB2283349A (en) 1993-10-29 1995-05-03 Ibm Transaction processing system
US5457799A (en) 1994-03-01 1995-10-10 Digital Equipment Corporation Optimizer for program loops
US5537474A (en) * 1994-07-29 1996-07-16 Motorola, Inc. Method and apparatus for authentication in a communication system
US5500517A (en) * 1994-09-02 1996-03-19 Gemplus Card International Apparatus and method for data transfer between stand alone integrated circuit smart card terminal and remote computer of system operator
US5732270A (en) 1994-09-15 1998-03-24 Visual Edge Software Limited System and method for providing interoperability among heterogeneous object systems
US5544086A (en) 1994-09-30 1996-08-06 Electronic Payment Services, Inc. Information consolidation within a transaction network
US5841866A (en) * 1994-09-30 1998-11-24 Microchip Technology Incorporated Secure token integrated circuit and method of performing a secure authentication function or transaction
US5613120A (en) 1994-10-20 1997-03-18 Silicon Graphics, Inc. System and method for enabling, without recompilation, modification of class definitions and implementations in an object-oriented computer program
US5613012A (en) 1994-11-28 1997-03-18 Smarttouch, Llc. Tokenless identification system for authorization of electronic transactions and electronic transmissions
US5748964A (en) * 1994-12-20 1998-05-05 Sun Microsystems, Inc. Bytecode program interpreter apparatus and method with pre-verification of data type restrictions
US5668999A (en) 1994-12-20 1997-09-16 Sun Microsystems, Inc. System and method for pre-verification of stack usage in bytecode program loops
US5590331A (en) 1994-12-23 1996-12-31 Sun Microsystems, Inc. Method and apparatus for generating platform-standard object files containing machine-independent code
SI0819287T1 (en) * 1995-02-17 2000-06-30 Europay International S.A. Integrated circuit controlled transaction management system
US5679945A (en) * 1995-03-31 1997-10-21 Cybermark, L.L.C. Intelligent card reader having emulation features
US5590197A (en) * 1995-04-04 1996-12-31 V-One Corporation Electronic payment system and method
DE19518930A1 (de) 1995-05-23 1996-11-28 Siemens Ag Verfahren zur Verbindungssteuerung für interaktive Dienste
JP3310525B2 (ja) 1995-06-01 2002-08-05 ビー・イー・テクノロジー株式会社 デジタルデータ処理装置
US5692132A (en) 1995-06-07 1997-11-25 Mastercard International, Inc. System and method for conducting cashless transactions on a computer network
US6181867B1 (en) 1995-06-07 2001-01-30 Intervu, Inc. Video storage and retrieval system
US5689565A (en) 1995-06-29 1997-11-18 Microsoft Corporation Cryptography system and method for providing cryptographic services for a computer application
US5675804A (en) 1995-08-31 1997-10-07 International Business Machines Corporation System and method for enabling a compiled computer program to invoke an interpretive computer program
US5663553A (en) * 1995-09-27 1997-09-02 Intel Corporation Mass storage device adapter for smart cards
DE19536169A1 (de) 1995-09-29 1997-04-03 Ibm Multifunktionale Chipkarte
CA2160496A1 (en) 1995-10-13 1997-04-14 Allan M. Brown Electronic funds acceptor for vending machines
CA2236586A1 (en) 1995-12-01 1997-06-05 Lsi Logic Corporation Integrated network browser chip, network browser system, and method for network data communication
US6151618A (en) * 1995-12-04 2000-11-21 Microsoft Corporation Safe general purpose virtual machine computing system
FR2742892B1 (fr) 1995-12-21 1998-02-13 Bull Sa Systeme de protection de logiciel pour ordinateur ecrit en langage interprete
US6526565B1 (en) 1995-12-21 2003-02-25 International Business Machines Corporation Packaging algorithm for providing object oriented applications having reduced footprints
US5835772A (en) 1995-12-29 1998-11-10 Intel Corporation Method and apparatus for providing an interface between a system and a peripheral device
US5811771A (en) 1996-05-22 1998-09-22 Dethloff; Juergen Method and system for paying with a portable data medium having security against over charging and unauthorized use
US6535903B2 (en) 1996-01-29 2003-03-18 Compaq Information Technologies Group, L.P. Method and apparatus for maintaining translated routine stack in a binary translation environment
US6226789B1 (en) 1996-01-29 2001-05-01 Compaq Computer Corporation Method and apparatus for data flow analysis
US5860008A (en) 1996-02-02 1999-01-12 Apple Computer, Inc. Method and apparatus for decompiling a compiled interpretive code
US5742756A (en) * 1996-02-12 1998-04-21 Microsoft Corporation System and method of using smart cards to perform security-critical operations requiring user authorization
TW369753B (en) 1996-02-14 1999-09-11 Mitsubishi Electric Corp Data security method and system
US5761306A (en) 1996-02-22 1998-06-02 Visa International Service Association Key replacement in a public key cryptosystem
US6075863A (en) 1996-02-28 2000-06-13 Encanto Networks Intelligent communication device
US5848274A (en) 1996-02-29 1998-12-08 Supercede, Inc. Incremental byte code compilation system
US5764989A (en) 1996-02-29 1998-06-09 Supercede, Inc. Interactive software development system
US5889941A (en) * 1996-04-15 1999-03-30 Ubiq Inc. System and apparatus for smart card personalization
US5915226A (en) * 1996-04-19 1999-06-22 Gemplus Card International Prepaid smart card in a GSM based wireless telephone network and method for operating prepaid cards
US5815657A (en) * 1996-04-26 1998-09-29 Verifone, Inc. System, method and article of manufacture for network electronic authorization utilizing an authorization instrument
US6151703A (en) 1996-05-20 2000-11-21 Inprise Corporation Development system with methods for just-in-time compilation of programs
US5794049A (en) 1996-06-05 1998-08-11 Sun Microsystems, Inc. Computer system and method for executing architecture specific code with reduced run-time memory space requirements
US5946487A (en) 1996-06-10 1999-08-31 Lsi Logic Corporation Object-oriented multi-media architecture
GB9613450D0 (en) 1996-06-27 1996-08-28 Europay Int Sa Payment system
US5844218A (en) * 1996-07-16 1998-12-01 Transaction Technology, Inc. Method and system for using an application programmable smart card for financial transactions in multiple countries
US5923884A (en) * 1996-08-30 1999-07-13 Gemplus S.C.A. System and method for loading applications onto a smart card
EP0829828A1 (en) 1996-09-13 1998-03-18 Koninklijke KPN N.V. Multiple tickets in smart cards
US5875335A (en) * 1996-09-30 1999-02-23 Apple Computer, Inc. Parameter marshaling techniques for dynamic object-oriented programming languages
US6438573B1 (en) 1996-10-09 2002-08-20 Iowa State University Research Foundation, Inc. Real-time programming method
US6094528A (en) 1996-10-24 2000-07-25 Sun Microsystems, Inc. Method and apparatus for system building with a transactional interpreter
BR9713267A (pt) 1996-10-25 2004-06-15 Schlumberger Systems & Service Cartão de circuito integrado para uso com um terminal, processo para uso com o mesmo, microcontrolador e processo para sua programação
US5905895A (en) 1997-03-07 1999-05-18 International Business Machines Corporation Method and system for optimizing non-native bytecodes before bytecode interpretation
US5966536A (en) 1997-05-28 1999-10-12 Sun Microsystems, Inc. Method and apparatus for generating an optimized target executable computer program using an optimized source executable
US6055211A (en) 1997-07-03 2000-04-25 Microchip Technology Incorporated Force page zero paging scheme for microcontrollers using data random access memory
US6078744A (en) 1997-08-01 2000-06-20 Sun Microsystems Method and apparatus for improving compiler performance during subsequent compilations of a source program
US5987256A (en) 1997-09-03 1999-11-16 Enreach Technology, Inc. System and process for object rendering on thin client platforms
US6233733B1 (en) 1997-09-30 2001-05-15 Sun Microsystems, Inc. Method for generating a Java bytecode data flow graph
US6061520A (en) 1998-04-07 2000-05-09 Sun Microsystems, Inc. Method and system for performing static initialization
US8127121B2 (en) * 1999-01-28 2012-02-28 Ati Technologies Ulc Apparatus for executing programs for a first computer architechture on a computer of a second architechture
US6880155B2 (en) * 1999-02-02 2005-04-12 Sun Microsystems, Inc. Token-based linking
US9086931B2 (en) * 2002-11-20 2015-07-21 Purenative Software Corporation System for translating diverse programming languages
US20080282238A1 (en) * 2007-05-10 2008-11-13 Microsoft Corporation Static type for late binding

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH01243125A (ja) * 1988-03-24 1989-09-27 Fuji Electric Co Ltd 解釈プログラムの実行速度向上方法
FR2667171A1 (fr) * 1990-09-25 1992-03-27 Gemplus Card Int Support portable a micro-circuit facilement programmable et procede de programmation de ce micro-circuit.
WO1994010657A1 (en) * 1992-10-26 1994-05-11 Intellect Australia Pty. Ltd. Host and user transaction system
JPH09500469A (ja) * 1993-12-07 1997-01-14 ジェムプリュス カード アンテルナショナル メモリカード及びその作動方法
JPH09244904A (ja) * 1996-03-12 1997-09-19 Matsushita Electric Ind Co Ltd 仮想コード翻訳系および仮想マシンシステム

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009134625A (ja) * 2007-11-30 2009-06-18 Toppan Printing Co Ltd コンピュータ装置及びその処理方法
JP2017076300A (ja) * 2015-10-16 2017-04-20 三菱電機株式会社 制御装置およびレジスタの故障復帰方法

Also Published As

Publication number Publication date
US7117485B2 (en) 2006-10-03
JP3766052B2 (ja) 2006-04-12
AU4911897A (en) 1998-05-22
WO1998019237A1 (en) 1998-05-07
US6308317B1 (en) 2001-10-23
ZA979479B (en) 1998-05-12
KR100329063B1 (ko) 2002-03-18
MY126363A (en) 2006-09-29
HK1021762A1 (en) 2000-06-30
US8881118B2 (en) 2014-11-04
CN1242086A (zh) 2000-01-19
DE69714752T2 (de) 2003-05-15
AU722463B2 (en) 2000-08-03
EP0932865B1 (en) 2002-08-14
US20080115117A1 (en) 2008-05-15
BR9713267A (pt) 2004-06-15
DE69714752D1 (de) 2002-09-19
TW476914B (en) 2002-02-21
JP2000514584A (ja) 2000-10-31
EP0932865A1 (en) 1999-08-04
KR20000052759A (ko) 2000-08-25
US7818727B2 (en) 2010-10-19
US20110126178A1 (en) 2011-05-26
DE69714752C5 (de) 2015-08-13
ES2184066T3 (es) 2003-04-01
US9400668B2 (en) 2016-07-26
PT932865E (pt) 2002-12-31
US20120254844A1 (en) 2012-10-04
US20140245272A1 (en) 2014-08-28
US8726247B2 (en) 2014-05-13
US8881119B2 (en) 2014-11-04
CN1183449C (zh) 2005-01-05
US20120254843A1 (en) 2012-10-04
US20030023954A1 (en) 2003-01-30

Similar Documents

Publication Publication Date Title
JP3766052B2 (ja) 高級プログラミング言語を用いたマイクロコントローラ
FI117990B (fi) Tiedonvaihtojärjestelmä, joka käsittää kannettavia tietojenkäsittely-yksiköitä
Chen Java card technology for smart cards: architecture and programmer's guide
CN100447745C (zh) 使用进入点对象在小型注脚设备上允许越过文本屏障进行访问的技术
Faraj et al. Investigation of Java Smart Card Technology for Multi-Task Applications
US20050184164A1 (en) Method and apparatus for installing an application onto a smart card
JP2007226839A (ja) データ構造を記憶するメモリ及び方法
KR20010103747A (ko) 글로벌 데이터 구조를 사용해서 소형 풋프린트 장치의콘텍스트 배리어를 넘어선 액세스를 허용하기 위한 기술
CN100507797C (zh) 采用文本屏障在小型注脚设备上实施安全的技术
CN1316360C (zh) 注脚设备及运行注脚设备的方法
CN100353324C (zh) 使用共享对象接口在小型注脚设备中允许越过文本屏障进行访问的技术
Iguchi-Cartigny et al. Developing a Trojan applets in a smart card
JP2005532622A (ja) 特にスマートカードにおけるダウンロードしたアプリケーションの機密保護化
Markantonakis et al. Multi-application smart card platforms and operating systems
Cap et al. Extending the data storage capabilities of a Java-Based smartcard
Bouffard et al. Java Card Virtual Machine Memory Organization: a Design Proposal
HK1021762B (en) Using a high level programming language with a microcontroller
MXPA99003796A (en) Using a high level programming language with a microcontroller
Yakkundi Security Implications of Memory Use on Java Card Platform
Markantonakis Java card technology and security
AU2004200637A1 (en) Techniques for permitting access across a context barrier on a small footprint device using run time environment privileges

Legal Events

Date Code Title Description
A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20040921

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20041116

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20050215

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20050218

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20050516

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20050822

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20051111

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: 20060110

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20060125

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: 20100203

Year of fee payment: 4

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

Free format text: PAYMENT UNTIL: 20110203

Year of fee payment: 5

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

Free format text: PAYMENT UNTIL: 20120203

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20120203

Year of fee payment: 6

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

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

Free format text: PAYMENT UNTIL: 20120203

Year of fee payment: 6

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

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

Free format text: PAYMENT UNTIL: 20120203

Year of fee payment: 6

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

Free format text: PAYMENT UNTIL: 20130203

Year of fee payment: 7

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

Free format text: PAYMENT UNTIL: 20140203

Year of fee payment: 8

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

EXPY Cancellation because of completion of term