[go: up one dir, main page]

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

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

Info

Publication number
JP3766052B2
JP3766052B2 JP2002263319A JP2002263319A JP3766052B2 JP 3766052 B2 JP3766052 B2 JP 3766052B2 JP 2002263319 A JP2002263319 A JP 2002263319A JP 2002263319 A JP2002263319 A JP 2002263319A JP 3766052 B2 JP3766052 B2 JP 3766052B2
Authority
JP
Japan
Prior art keywords
card
microcontroller
application
instruction
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.)
Expired - Lifetime
Application number
JP2002263319A
Other languages
English (en)
Other versions
JP2003141488A (ja
Inventor
ジェイ.ウィルキンソン ティモシー
ビー.グスレイ スコット
クリシュナ クシーラブディ
エイ.モントゴメリー マイケル
Original Assignee
シュルンベルジェ システーム
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
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=JP3766052(B2) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by シュルンベルジェ システーム filed Critical シュルンベルジェ システーム
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

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR 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; CALCULATING OR 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; CALCULATING OR 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; CALCULATING OR 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; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/52Binary to binary
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44557Code layout in executable memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/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; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/34Payment architectures, schemes or protocols characterised by the use of specific devices or networks using cards, e.g. integrated circuit [IC] cards or magnetic cards
    • G06Q20/355Personalisation of cards for use
    • G06Q20/3552Downloading or loading of personalisation data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/34Payment architectures, schemes or protocols characterised by the use of specific devices or networks using cards, e.g. integrated circuit [IC] cards or magnetic cards
    • G06Q20/356Aspects of software for card payments
    • G06Q20/3563Software being resident on card
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/34Payment architectures, schemes or protocols characterised by the use of specific devices or networks using cards, e.g. integrated circuit [IC] cards or magnetic cards
    • G06Q20/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; CALCULATING OR 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; CALCULATING OR 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)
  • Business, Economics & Management (AREA)
  • Computer Hardware Design (AREA)
  • Signal Processing (AREA)
  • Microelectronics & Electronic Packaging (AREA)
  • General Business, Economics & Management (AREA)
  • Strategic Management (AREA)
  • Accounting & Taxation (AREA)
  • General Health & Medical Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Bioethics (AREA)
  • Databases & Information Systems (AREA)
  • Mathematical Physics (AREA)
  • Devices For Executing Special Programs (AREA)
  • Microcomputers (AREA)
  • Storage Device Security (AREA)
  • Electrophonic Musical Instruments (AREA)
  • Credit Cards Or The Like (AREA)

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 specification);(3)ジェームス・ゴスリング、ヘンリーマックギルトン「Java言語使用環境:ホワイトペーパー」、サン・マイクロシステムズ、1995(ウェブサイト:http://java.sun.com/doc/language environment/);(4)ティム・リンドホルム、フランク・イェリン「Java仮想マシン仕様」、アディソン-ウェズレー1997;これらのテキストその他多くのテキストにおいてJavaを用いたプログラム作成方法が記述されている。
【0005】
特定プラットフォームにおいてJavaアプリケーションを実行するために、プラットホームの制約条件下において動作しうるJava仮想マシン実装プログラムが記述されていなければならず、また、当該プラットフォーム上に使用するJavaアプリケーションを当該プラットホームの制約条件下においてロードできる仕組みが提供されていなければならない。
【0006】
Javaをサポートする従来のプラットホームは、比較的容量の大きいメモリとハードディスクを利用する通常のマイクロプロセッサベースのコンピュータである。そのようなマイクロプロセッサ実装は、デスクトップコンピュータ、パーソナルコンピュータにおいて広く用いられている。しかしながら、スマートカードに使用されているようなマイクロコントローラ上で動作するJava実装は従来にはなかった。
【0007】
マイクロコントローラは多く点においてマイクロプロセッサとは異なっている。例えば、マイクロプロセッサは典型的には、中央演算処理装置(CPU)を備えており、CPUは正常な動作をするためには外部周辺装置(例えばメモリ、入力制御装置、出力制御装置)を必要とする。典型的なマイクロプロセッサは、メガバイトからギガバイトのメモリアクセスが可能であり、1命令で16ビット、32ビット、64ビットまたはそれ以上の情報が処理できる。マイクロプロセッサとは対照的に、マイクロコントローラは、中央演算処理装置(CPU)、メモリ、その他の機能要素すべてを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 microcircuit and programming procedure for said maicrocircuit)」、公開番号2667171号に記載されている。しかし、この特許出願には、データセキュリティに関する記載、スマートカード上のデータと情報に関する権限のないアクセスを如何に防ぐか、プログラマがJavaなどの表現豊かなプログラミング言語を用いてスマートカード用のプログラムを作ることができるプログラミング環境を如何に提供するか、さらに、スマートカードの実行制約条件内で動作するインタプリタを使ってプログラムを如何に実行するかについて記載されていない。
【0014】
ICカードは、ロバスト性、タンパー耐性、格納データの可搬性が確保されなければならない。ICカードは、そのサイズの小型性、ICカードならではのハード的とソフト的なセキュリティの高さによって、パーソナルコンピュータ中のもっともパーソナル用途のものと位置付けられている。
【0015】
ICカードおよびICカードのマイクロコントローラの最重要なタスクは、カードに記録されたデータの保護である。それゆえ、1974年のICカードの発明以来、セキュリティを理由にICカード技術は閉鎖的にガードされてきた。ICカードは、最初にフランスの銀行によりデビットカード(即時決済方式カード)として利用された。このアプリケーションでは、ICカードをベースとした金融関係のトランザクションが認証されるためには、ICカード利用者は当該ICカードを所有しているという事実に加え、さらにICカード内に記録されている4桁の個人認証番号(PIN)を示さなければならない。紛失または盗難されたICカードのPIN番号を割り出すために役立ちうるあらゆる情報は、公開されないように秘密に付されている。事実、誰もどんな情報が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カードに関する情報、ICカードと端末との通信方法およびプログラム方法に関し、公開された情報が少なく、ICカード用の汎用アプリケーションの広がりを阻害していた。しかし、公衆デジタルネットワーク網(例えば、インターネット、ワールドワイドウェブ)の出現により、ICカード用のアプリケーションに対する新たな領域が開かれた。特に、公衆デジタルネットワーク網の広がりにより、他のプロバイダに関する明確な知識なしに、かつICカードのセキュリティ低下の可能性を許すことなく、ICカード上に新しいアプリケーションのロードをすることが必要となった。しかしながら、低レベルプログラミング言語を用いてプログラミングされた従来のICカードを用いた場合は上記課題解決の実現が困難であった。
発明の開示
一面において、本発明は、マイクロコントローラ、例えば、ICカードやスマートカードを開示する。説明の便宜上、この発明の開示の欄に続く詳細な説明の欄において、本発明を端末と共に用いられるICカードのアプリケーション例として記述した。しかしながら、本発明は他のスモールコンピュータプロセッサに関するアプリケーションに適用できるものである。例えば、マイクロコントローラを埋め込んだシステムなどである。
【0020】
本発明のマイクロコンローラのマイクロプロセッサは、インタプリタを格納するメモリと、高級プログラミング言語形式を持っている少なくとも一つのアプリケーションとを含んでいる。メモリの少なくとも一部分はマイクロプロセッサ内に設けられている。マイクロプロセッサは、アプリケーションをインタプリタ処理するためのインタプリタを利用するように構成されている。
【0021】
本発明の優位点として、以下のものが含まれている。本発明によれば、スマートカードやマイクロコントローラのセキュリティ低下を招くことなくスマートカードやマイクロコントローラを持つ他のシステムへの新しいアプリケーションのダウンロードが可能となる。これらアプリケーションは、様々な会社により提供され、様々な端末装置を利用して様々なタイミングでロードされうる。アプリケーションは、Java仮想マシンにより提供されるセキュリティ機能により、如何なるアプリケーションコードやデータへの権限なきアクセスに対して保護されているので、カードのセキュリティは構成されない。アプリケーションは、強力で主流となっているプログラム開発ツールを用いてJavaやEiffelなどの高級プログラミング言語により作成される。新しいアプリケーションは、ソフトマスクを施すことなく数時間により即座にプロトタイプが作成され、スマートカードにダウンロードされる。
【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(スマートカードなど)は、Javaベースのマルチアプリケーション高級プログラミング言語および実行環境を提供するように構成されている。ICカード10は、端末装置14の通信部12bと通信できるように構成されている通信部12aを有している。いくつかの実施形態において、ICカード10は、8ビットマイクロコントローラ、512バイトのRAM、4KバイトのEEPROM、20KバイトのROMを持つスマートカードであり、端末装置の通信部12bは、従来タイプのスマートカードリーダであり、端末装置14は、パーソナルコンピュータスマートカード(PC/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(Java20a)、ファイルB(Java20b)、ファイルC(Java20c)を含んでいる。これらのソースコードファイルは取り揃えられ、Javaアプリケーション開発環境22の中でコンパイルされる。Javaアプリケーション20が開発環境22によりコンパイルされたとき、アプリケーションクラスファイル24が生成され、また、Javaソースコード20a、20b、20cのそれぞれに対応するクラスファイルA(クラス24a)、ファイルB(クラス24b)、ファイルC(クラス24c)が生成される。アプリケーションクラスファイル24は、ティム・リンドホルムとフランク・イェリン著書の「Java仮想マシン仕様」アディソン-ウェズレー1996年版の第4章に記載されているスタンダードクラスファイル形式に従って記述されている。これらアプリケーションクラスファイル24は、ファイルを集約し、圧縮して単一のカードクラスファイル27を生成するカードクラスファイルコンバータ26に渡される。カードクラスファイル27は、通常のカードローダ28によりICカード10にロードされる。
【0069】
図3の例では、カードクラスファイルコンバータ26は、クラスファイルのポストプロセッサであり、標準Javaクラスファイル形式にコード化されたクラスファイル24を処理し、オプションとしてIDインプットマップファイルのストリング30を利用し、Javaカードクラスファイル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)42、クラスとフィールド生成とインタフェースとメソッドに関する情報43、様々な属性情報44を含み、前記したJava仮想マシン仕様として詳述されている。ここで、属性情報44の多くは、この実施形態には必要ではなく、カードクラスファイルコンバータ26による除去部分45となっている。除去される属性は、ソースファイル、定数値、例外処理、ライン番号テーブル、ローカル変数テーブル、その他のオプションのベンダ属性を含んでいる。付属ドキュメントAとして記述されている典型的なカードクラスファイル27は、以下のアプリケーションクラスファイル24から生成される。カードクラスファイル情報46は、全てのアプリケーションクラスファイル24a、24b、24cのクラスファイル情報41の集合から生成される。カードクラスファイルコンスタントプール47(card class file constant pool 47)は、全てのアプリケーションクラスファイル24a、24b、24cのクラスコンスタントプール42の集合から生成される。カードクラスとフィールド生成と参照インタフェースとメソッドに関する情報48は、全てのアプリケーションクラスファイル24a、24b、24cのクラスとフィールド生成と参照インタフェースとメソッドに関する情報43の集合から生成される。この実施形態のカード属性情報49は、全てのアプリケーションクラスファイル24a、24b、24cの属性情報44の集合のコード属性のみから生成される。
【0072】
カード内でのダイナミックリンキングを避けるため、アプリケーション24からJavaクラスファイル24a、24b、24cをまたがって配布されるすべての情報は、図5に示すフローチャートに示されたプロセスにより、1つのカードクラスファイル27内に隠蔽されている。まず、処理される第1のクラスファイルとして選択される(51a)。コンスタントプール42は、以下の方法によりコンパクト化される(51b)。Javaクラスファイル24aにおいて参照されるすべてのオブジェクト、クラス、フィールド、メソッドは、クラスファイル24aのコンスタントプール42にあるストリングを利用することにより、特定される。カードクラスファイルコンバータ26は、Javaクラスファイル24aにあるコンスタントプール42をコンパクト処理し、最適化したものとする。コンパクト処理は、クラスファイルコンスタントプール42にある全てのストリングを整数にマッピング処理することにより達成される(当該整数の大きさはマイクロコントローラと採用アーキテクチャに依存する)。この整数が、ID識別子として参照される。各ID識別子は、アプリケーション20の特定オブジェクト、クラス、フィールド、メソッドをユニークに特定する。このように、カードクラスファイルコンバータ26は、Javaクラスファイルコンスタントプール42のストリングを、対応するユニークなID識別子に置き換える。付属ドキュメントBは、ハロースマートカードJava(HollowSmartCard.java)というアプリケーション例を、以下の本アプリケーションのクラスファイルのコンスタントプールに見られるストリングに対応するID識別子を説明するテーブルと共に示している。ID識別子は、本実施形態では16ビットの符号無し整数として使用されている。
【0073】
次に、カードクラスファイルコンバータ26は、入力されたJavaクラスファイル24aのコード属性に、未サポートの部分51Cがあるか否かをチェックする。カードJVM16は、付属ドキュメントCに示すように、Javaバイトコード全体のうちのサブセットのみサポートしている。このため、カードクラスファイルコンバータ26は、未サポートのバイトコードがJavaクラスファイル24aのコード属性の中にあるか否かをチェックする。もし、未サポートのバイトコードが見つかった場合52は、カードクラスファイルコンバータはエラーフラグを立て、変換53を停止する。付属ドキュメントDにおいて“A”とマークされたプログラムコードフラグメントは、これら未サポートのバイトコードが如何に検出されるかを示している。他のレベルのチェックは、標準Java開発環境22の要求に応じて、アプリケーション20は“-g”フラグとともにコンパイルして実行される。上記したJava仮想マシン仕様に基づいて、このオプション処理は、クラスファイル24aのローカル変数テーブル属性中にあってJavaアプリケーション20において使用される変数に関する情報を定めるためにJavaコンパイラを必要とする。カードクラスファイルコンバータ26は、Javaクラスファイル24aがJavaカードによりサポートされていないデータ型を参照しているか否かをチェックするために、この情報を使用する。
【0074】
次に、カードクラスファイルコンバータ26は、Javaクラスファイル24aのうちインタプリタ実行に必要とされないすべての不必要な部分を破棄する。Javaクラスファイル24aは、Javaクラスファイルの属性セクション44のクラスファイル中のバイトコードに含まれている情報を格納する。ソースファイル、定数値、例外処理、ライン番号テーブル、ローカル変数テーブルなどのカードJVMによるインタプリタ実行に必要とされない属性情報は、安全な方法により破棄される45。結局、保持される属性は、コード属性のみとなる。コード属性は、Javaクラスファイル24aのメソッドに対応するバイトコードを含んでいる。
【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などの短い単一のスぺシフィックバイトコードをより一般的なバイトコードへの変換処理を伴う。例えば、ILOAD0は、バイトコード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は、Javaクラスファイルコンスタントプール42のエントリを参照しているが、当該エントリはカードクラスファイルコンスタントプール47内の新しいロケーションを反映するように変更されている。変更されたオペランド94は、この変換処理を示している。付属ドキュメントDの中に“D”でマークされたプログラムコード部分は、如何にこれら変換が実行されるかを示している。
【0080】
ひとたび、定数参照がリンク付けされると、オプションのバイトコード変更処理が実行されない場合は、カードクラスファイルコンバータは、最後の第5のパス67に進む。オプションバイトコード変更処理がされた場合は、カードクラスファイルコンバータは、オリジナルバイトコードを、利用されている特定のカードJVM16でサポートできる異なるバイトコードセットに変換する。1つの想定される変更処理は、オリジナルバイトコード60をカードJVM16のバイトコードにリナンバリングする処理である(図10参考)。このリナンバリング処理は、オリジナルバイトコード60のバイトコード100をリナンバリングバイトコード102へ変換する処理である。値21により識別されるバイトコードILOADは、値50によって識別されるようにリナンバリングされる。この変更処理は、カードJVM16の中での型テスト(第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を生成する57。もし必要であれば、カードクラスファイルコンバータ26は、IDアウトプットマップファイル32のストリングを生成する。これには、変換処理中にJavaクラスファイル24のコンスタントプール42に対応するストリングとして割り当てられるすべての新しいID識別子のリストを含んでいる。
【0085】
図12を参照して説明する。端末装置14にあるカードローダ28は、ISO7816規格のコマンドを利用して、カードクラスファイルをICカード10のローディング・実行制御部120に送る。ローディング・実行制御部120は、カードオペレーティングシステム122と共に、複数のカードアプリケーション126を格納するために使われる。このカードオペレーティングシステム122は、カードファイルシステム124のサポートを含み必須のシステムリソースを提供するものである。通常のカードローダの多くは、低レベル言語で記述され、カードオペレーティングシステム122によってサポートされている。好ましい実施形態において、ブートストラップローダは、Java言語で記述され、ICカード10は、当該アプリケーションを実行できるようにJava仮想マシンが含まれている。ローディング・実行制御部120のJava実装は、付属ドキュメントEに示されている。ローディング・実行制御部120は、カードクラスファイル26を受け取って、ICカード10のEEPROMのカードファイルシステムに格納されるJavaカードアプリケーション126Xを生成する。このように、複数のJavaカードアプリケーション126X、126Y、126Zは1枚のカードに格納することができる。ローディング・実行制御部120は、端末装置14がJavaカードアプリケーションを選択して速やかに実行でき、カードリセットができるコマンドをサポートしている。
【0086】
図13に示すように、ローディング・実行制御部120からリセットコマンドを受け取るか、実行コマンドを受け取ると、カードJava仮想マシン(カードJVM)16は、選択されたJavaカードアプリケーション126Zの選択されたクラスの所定のメソッド(例えば、メインメソッド)で実行する。カードJVM16は、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スマートカードサービスプロバイダ(SSP)ソフトウェアである。データは、その後、端末装置アプリケーション136に渡される。端末装置アプリケーション136は、特定のカードアプリケーション126Zの実行処理ができるように提供されている機能を扱えるものとなっている。このように、コマンドとレスポンスが、端末装置アプリケーション136と選択したカードアプリケーション126Zの間を行き来する。端末装置アプリケーションは、ユーザとのやり取りにより、ユーザから入力されるコマンドを受け取り、そのうちいくつかは、Javaカードアプリケーション126Zに渡され、ユーザに返されるJavaカードアプリケーション126Zからのレスポンスを受け取る。
【0088】
図14に示すように、カードJVM16は、カードアプリケーション126Xをインタプリタ実行するインタプリタである。カードJVMに影響を与えるマイクロコントローラのメモリリソースは、カードROM140、カードRAM141、カードEEPROMにある。カードROM140は、カードJVM16とカードオペレーティングシステム122を格納するために利用される。カードROM140は、ROMに固定記憶するカードアプリケーション140aとクラスライブラリ140bを格納するために利用される。ロード可能なアプリケーション141a、141b、ライブラリ141cは、カードRAM141に格納されうる。カードJVM16は、カードアプリケーション141a、141b、140aをインタプリタ実行する。カードJVM16は、カードRAMを使って、VMスタック144aとシステム状態変数144bを記憶する。カードJVM16は、VMスタック144aにより実行される処理過程を記憶する。カードJVM16により生成されたオブジェクトは、RAMヒープ144c、EEPROMヒープ146a、ファイルシステム147のいずれかに格納される。
【0089】
カードJVM16により扱われるすべてのヒープは、RAMヒープ144cとしてカードRAM141に格納されるか、EEPROMヒープ146aとしてカードEEPROM142に渡され格納される。カードRAM141は、システムスタック148の状態を記録するために使われる。システムスタック148はマイクロコントローラのネイティブコードで記述されたルーチンによって利用される。カードJVM16は、カードEEPROM142を利用してアプリケーションデータを、EEPROMヒープ146aまたはファイルシステム147のいずれかに格納される。ファイルに格納されたアプリケーションデータは、カードオペレーティングシステム122のインタフェースを介して扱うことができる。このインタフェースは、カードROM140に格納されるクラスライブラリ140b、またカードEEPROM142に格納されるロード可能なクラスライブラリ141cにより提供される。インタフェースの一例を、付属ドキュメントFに示す。カード内のアプリケーションとデータはファイアウォール機構149により互いに隔離される。
【0090】
マイクロコントローラの限られた利用可能なリソースによって動作させるために、カードJVM16は、Javaプログラミング言語の絞り込んだサブセットを実装している。したがって、Javaアプリケーション20は、Javaバイトコードの絞り込んだサブセットを含んだクラスファイルとしてコンパイルされることとなる。このサブセットにより、アプリケーションプログラマーは、絞り込んだJavaのサブセットによりプログラムを作成することができ、現行のJava仮想マシンと互換性を維持することができる。カードJVM16によりインタプリタ実行されるJavaバイトコードのセマンティックは、上述したJava仮想マシン仕様により記述される。カードJVM16によりインタプリタ実行されるバイトコードのサブセットを付属ドキュメントCに示されている。カードクラスファイルコンバータ26は、Javaアプリケーション20をチェックし、当該サブセットにおいて利用可能な特性(features)のみを使用するものであるか確かめ、カードJVM16により理解され、インタプリタ実行できる形式に変換する。
【0091】
いくつかの実施形態において、カードJVM16は、異なるサブセットまたはバイトコード116の引数セットをインタプリタ実行できるようにデザインされている。Javaの絞り込んだサブセットは、オリジナルJavaバイトコードにより提供されるセキュリティの観点、または、主流のJava開発ツールとの互換性の観点からは好ましくないが、異なるバイトコードセットを使用することは、いくつかの処理性能の改善をもたらしうる。
【0092】
すべてのカードJVM16のアプリケーション126は、クラスとクラスのメソッドにより定義されるエントリポイントを持っている。エントリポイントは、IDインプットマップ30のストリングとしてマッピングされ、カードクラスファイルコンバータ26により割り当てられる。Javaアプリケーション20内のクラス、メソッド、フィールドは、カードクラスファイルコンバータ26によりID識別子が割り当てられる。例えば、メインアプリケーションクラスに対応するID識別子は、F001として定義され、“main( )V”などのメインメソッドに対応するID識別子は、F002として定義される。
【0093】
カードJVMの実行アーキテクチャ全体は図15のフローチャートに記述されている。カードJVMにおける実行は、実行制御120において開始され、実行するカードアプリケーション126Zを選択する。カードJVM16のカードアプリケーションでインタプリタ処理されるエントリポイント(メソッド)を見つけ出し、割り当てる(152)。カードJVM16は、メソッドをインタプリタ処理する(153)。インタプリタ処理がうまく成功すると(154)、カードJVM16は成功を報告し(155)、実行制御120に制御を返す。インタプリタ処理153において、カードJVM16が処理できないエラーや例外処理(典型的には、リソース制限、セキュリティ違反)が発生すると、カードJVMは停止し156、端末装置14に適切なエラー報告を行なう。
【0094】
カードJVM16の本質的部分は、バイトコードの実行を処理するサブルーチンである。このサブルーチンは、図16により示されている。与えられたメソッド160は、バイトコードを当該メソッド中で実行する。サブルーチンは、メソッドのパラメタが準備されると開始される(161)。この処理は、VMスタック144aポインタおよびVMスタック144aフレームリミットの設定処理、メソッドの第1のバイトコードのプログラムカウンタの設定処理を含む。
【0095】
次に、メソッドフラグがチェックされる(162)。もし、メソッドのフラグがネイティブであると、メソッドは実際にネイティブメソッドコード(マイクロコントローラのネイティブプロセッサコードで記述されたサブルーチン)をコールする。この場合、カードJVM16は、実行効率の高いコールを用意し(163)、ネイティブコードサブルーチンに戻る。ネイティブメソッドのパラメタは、直接またはシステムスタック148を介してVMスタック144aに渡される。適切なセキュリティチェックが実行され、ネイティブメソッドサブルーチンがコールされる。ネイティブメソッドサブルーチン処理の結果(もし結果があれば)は、次の実行処理されるバイトコードがアクセスできるようにVMスタック144aに入れられる。
【0096】
次に、カードJVM16のディスパッチループに入る(164)。バイトコードディスパッチループは、それぞれのバイトコードの実行準備、実行、終了処理を行なう。メソッド160におけるバイトコードのインタプリタ処理が終了したとき、またはカードJVM16においてリソース制限、セキュリティ違反が発生した場合、ループ処理が終了する。
【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スタック144aのデータ型が正しいものであることを保証するための実行前チェックに利用される。テーブル格納に用いる256バイトのROMは、カードJVM16上で実行するオリジナルJavaバイトコードに割り当てられ、カードにロードされるJavaクラスファイルに要求される変更を最小限にする。追加Javaバイトコードは、比較的適切にテーブルエントリを更新するのが簡単であるので、サポートしやすい。
【0100】
他の実施形態において、図10に示すように、メソッドにおけるJavaバイトコードは、再配置処理において付属ドキュメントHのテーブルに格納されるバイトコード型情報、レングス情報を暗示するようにリナンバリングされる。付属ドキュメントHを参照して説明する。その結果、VMスタック144aの状態と処理されたバイトコードに関して行なわれるチェック処理は、テーブルルックアップを含む必要はない。チェック処理は、付属ドキュメントIに示されるように単純比較のセットにより実行される。この実施形態は、256バイトのテーブルを設けないので、ROM容量の面で有利である。しかし、新たなバイトコードを、サポートするバイトコードセットに加えることは、注意して行なう必要がある。なぜなら新たなバイトコードをサポートするバイトコードの暗示ナンバリング処理スキーム(implicit numbering scheme)に適合させる必要があるためである。
【0101】
他の実施形態において、カードJVM16は、実行スピードを考慮してあらゆるセキュリティチェックを実行しないものとすることができる。この処理は、図18のフローチャートにより示される。図18のフローチャートは、図16のフローチャートからセキュリティチェック処理を除いたものと同じものとなっている。このオプションは、バイトコードのセキュリティが保証されていない場合には、セキュリティの面からは好ましいものではない。
【0102】
カードJVM16は、他のセキュリティチェックを強化する。バイトコードがローカル変数を参照する場合、カードJVM16は、当該参照が有効なものであるか否かをチェックし、有効でない場合はエラーを返す。参照が有効である場合、カードJVM16は、その後のチェック処理に用いるローカル変数の型を格納する。VMスタック144aのポインタは、参照がまだ有効範囲にあるか否かチェックする。もし有効範囲にない場合は、例外処理を実行する。バイトコード番号をチェックする。もし、サポートされていないものであれば、例外処理を実行する。
【0103】
最後に、バイトコード自体がディスパッチされる165d。カードJVM16により変換されたバイトコードは、付属ドキュメントCにリストアップされている。バイトコードのセマンティックは、バイトコードのディスパッチ処理前後のVMスタック144aの状態とともに、上述のJava仮想マシン仕様に記述されている。いくつかのバイトコード(INVOKESTATIC、INVOKESPECIAL、 INVOKENONVIRTUAL、INVOKEVIRTUALのバイトコード)は、カードJVM16にリエントリされ、要求する処理が開始されるサブルーチン161にエントリされる。図17は、バイトコード実行ルーチンのフローチャートを示している。このルーチンは、与えられたバイトコード171を実行する。カードJVM16は、バイトコードが要求するインストラクションを実行する(172)。カードJVM16は実行処理される中でルーチン制限が発生すると(173)、エラーを返す(156)。エラーがカードJVM16により端末装置に返される。もし、バイトコード実行が正常処理されると、正常(success)を返す(175)。
【0104】
実行後、VMスタック144a状態を正しく設定するために結果の型が正しく利用され、適切にVMスタック144aのデータ型のフラグ処理が行なわれる。バイトコード情報テーブルから先行処理165bで集められたバイトコード情報は、当該実行直後のバイトコードに関するVMスタック144aの状態を設定するために利用される。
【0105】
他の実施形態において、実行されたバイトコードに関するVMスタック144aの出力状態の設定処理は、バイトコードがリナンバリング処理されると簡単になる。この処理は、付属ドキュメントIによって示されている。
【0106】
さらに、他の実施形態において、カードJVM16は、カードJVM16の実行スピードを考慮して、VMスタック144aの出力状態の設定処理を省略することができる。このオプションは、バイトコードのセキュリティが保証されていない場合には、セキュリティ面から好ましいものではない。
【0107】
バイトコードが実行された後、バイトコード165fは破棄される。この処理は、引数をVMスタック144aから除去する処理を含む。ひとたび、バイトコード処理が完了すると、次のメソッドのバイトコード処理のループ164が繰り返される。
【0108】
ひとたび、ディスパッチループ164が終了すると、VMスタック144aの内容がクリアされる(166)。これにより、あらゆるオブジェクトリファレンスが他のカードJVM16インボケーションに対してアクセスすることを防ぎ、カードJVM16のセキュリティを破ることを防いでいる。バイトコードのディスパッチループ164の終了(167)は、カードJVM16が要求されたメソッド実行が完了したことを意味する。
【0109】
ICカード10のデータとアプリケーションを相互に隔離するために、ICカード10はカードJVM16が提供するファイアウォール機構149を利用する。カードJVM16には標準パス3とパス4のベリファイアチェックが実装されているので、アプリケーションが他のアプリケーションのデータ領域、コード領域を参照しようとすれば検知することができ、セキュリティエラー156フラグを立てる。例えば、通常の低レベルアプリケーションは、非参照データ型であっても参照データとして扱うことができて、その結果、権限のないメモリ領域へのアクセスを可能とし、セキュリティ違反を起こすことができる。本発明によれば、カードアプリケーション126Zが非参照型データを参照データとして使おうとすると、セキュリティエラー156を起こしてしまうこととなる。通常のJavaによれば、この保護アプリケーション環境は、サンドボッスクアプリケーション−インタプリタ実行環境として規定されている。
【0110】
しかし、これらファイアウォール構成は、独立した動作はしない。事実、このファイアウォール構成は、通常のアクセス制御リストおよび暗号機構とオーバラップし、また、相互に強化し合う関係にあり、以下のテーブルに示されるものである。
【0111】
【表1】
Figure 0003766052
【0112】
これらを併せて利用することにより、ICカードのデータとアプリケーションを隔離し、カードアプリケーション126が権限を持つICカード10のリソースのみにアクセスできるようにする。
【0113】
図19に示すように、カードアプリケーション126X、126Y、126Zはカードアプリケーション126が実行されるときに特定の特権を与えられる。例えば、これら特権は、カードアプリケーション126がどのデータファイルにアクセスでき、カードアプリケーション126がファイルシステム147においてどの処理が実行できるかを規定するものである。カードアプリケーション126に認められる特権は、通常は、特定のカードアプリケーション126Zが端末装置14を介してユーザにより開始されときに設定される。
【0114】
ICカード10は、暗号ID識別認証メソッド(cryptographic identification verification methods)が、ID190(例えば、190a、190b、190c)と関係付けられ、カードアプリケーション126を実行する特権のセットが設定される。特定のID190cのカードアプリケーション126Zとの関連性は、カードアプリケーション126Zの実行が開始されると設定され、それゆえ図20に示すように特定の実行アプリケーション200が生成される。ID190は、IDトークンと関連付けられた、ユニークで読みやすいテキストストリングである。IDトークン(例えば、個人認証番号(personal identification number (PIN))、または、RSA暗号方式の秘密鍵)は、暗号方式の鍵である。
【0115】
図20に示すように、特定のカードアプリケーション126Zを実行するため、カードアプリケーション126ZのID190cは、認証されなけらばならない。ID190cは、ID190cと関連付けられたIDトークンのデモンストレーション知識(demonstrating knowledge)により認証される。カードアプリケーション126Zが実行されるためには、エージェント(例えば、カードホルダー、その他アプリケーションを実行したい者)は、アプリケーションのID暗号鍵を所有していること、または知っていることを示さなければならない。
【0116】
暗号鍵を所有していることをデモンストレーションする一つの方法は、単にその鍵自体を提示すれば良い。PIN認証方式が、この認証方式の例である。実際に鍵自体を提示することなく暗号鍵を所有していることをデモンストレーションする他の方法は、平文を当該鍵により暗号化または復号化することができることを示せば良い。
【0117】
このように、ICカード10上の特定の実行アプリケーション200は、カードアプリケーション126Zに加えて認証されたID190cを含んでいる。カードアプリケーション126は、これらの要素すべてが揃っていないと実行することができない。カードアプリケーション126Zは、実行するデータ処理を定義し、権限を与えられたID190cが、どのオブジェクトのオペレーションを実行するのかを規定する。例えば、特定のアプリケーション126Zは、特定のID190cに関連付けられたファイルシステム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 : permissions)
型フィールドは、以下のID(IDフィールド内)、例えば、ユーザ(ジョンスミスなど)、グループなどのID型を示している。許可フィールドは、オブジェクトを利用するIDが実行できる処理のリスト(例えば、読み取り、付加、更新など)を示している。
【0121】
例として、ACLエントリを持つデータファイルは、
“USER、 AcmeAirlines、RAU”
であるので、IDが“AcmeAirlines”であるあらゆるアプリケーションは、データファイルの読み取り“R”、付加“A”、更新“U”を実行することができる。加えて、ACLは、データファイルの生成と消去を選択的に許可できる。さらに、ACLは、アプリケーションの実行を選択的に許可できる。
【0122】
オブジェクトは実行アプリケーション200によってアクセスするときにはいつでも、アクセスは、カードJVM16により遮断でき、カードオペレーションシステム122に渡され、オブジェクトに関連付けられたACLがあるかないかが決定される。もし、関連付けられたACLが存在する場合には、実行アプリケーション200と関連付けられたID190cがACLによりマッチングが採られる。もし、IDが見つからない場合、または、要求されているアクセスの型が許可できないものである場合には、アクセスが拒否される。それ以外は、アクセスが認められ、処理が実行される。
【0123】
図13に示すように、ICカード10と端末装置14の間の単一のデータパスが形成されることによる潜在的な問題を回避するため、通信チャンネルの隔離化が、カードアプリケーション126Zと端末装置アプリケーション136間で実施されるワンタイムセッションキーの交換によるID認証プロセスによって達成される。当該キー209は、後続の認証する端末装置136と認証されるアプリケーション126Z間のトラフィックを暗号化するために利用される。ワンタイムセッションキー209が設定されると、不正な端末装置アプリケーションは、認証された端末装置14とICカード間の通信を“読み込む”ことも、認証を受けていない処理をカードアプリケーション上で実行させるように“だます”こともできない。
【0124】
カード・端末間トラフィックの暗号化と復号化は、カードオペレーティングシステム122、カードアプリケーション126Z自体のいずれによっても扱うことができる。前者のケースでは、端末装置14との通信では、アプリケーションに対してトランスペアレント(復号可能)に暗号化されており、メッセージトラフィックは複合化されて、アプリケーションのデータ領域に渡される。後者のケースでは、カードアプリケーション126Zは、セキュリティ用のエクストラ階層を提供する暗号化、複合化を実行するか否かを選択でき、アプリケーションにより、データ生成されれば即座に暗号化しておき、当該データが利用される場面になったときのみに複合化する。それ以外は、データが、セッションキー209をもって暗号化されたままの状態である。
【0125】
このように、アプリケーションのファイアウォールは、3つのソフトウェア機能セットにより相互強化が図られている。データファイルは、認証されたIDアクセス制御リストにより保護されている。アプリケーション実行領域は、カードJVM16により保護されている。通信チャンネルは、ワンタイムセッションキー209の暗号処理により保護されている。
【0126】
他の実施形態において、上記技術は、マイクロコントローラ(プロセッサ12)で利用され、ICカード以外の各種デバイス(例えば、車のエンジン)の制御を実行できる。これらアプリケーションにおいては、マイクロコントローラが高級プログラミング言語の格納と実行を行なうための小規模なプラットフォーム(例えば、半導体基板上に配置された中央演算処理ユニット、メモリ)を提供することとなる。マイクロコントローラを利用する、現存するデバイスの多く、新しく作られるデバイスは、本発明を利用して、高級プログラミング言語を用いてマイクロコントローラのプログラムをすることができ、これらデバイスのアプリケーションを含めることができる。
【0127】
端末装置アプリケーションは、Javaアプリケーション、Javaアプレット(applets)、Javaアグレット(aglets)、Javaサーブレット(servlets)、Javaコムレット(commlets)、以下に示されるクラスファイルの結果であるJavaコンポーネントと、他の非Javaプログラムなどあらゆるプログラムが含まれる。
【0128】
クラスファイルは、Javaプログラムファイル以外のソースファイルを含んでいる。Java以外のいくつかのプログラミング言語は、それぞれのソースファイルからクラスファイルを生成するためのコンパイラまたはアセンブリを備えている。例えば、プログラミング言語EIFFELは、JVMバイトコードを生成するEIFFELコンパイラであるPIRMINカルベラ(kalberer)の“J−EIFFEL”を利用してクラスファイルを生成することができる(ウェブサイト:http//www.spin.ch/〜kalberer/jive/index.htm)。Ada95からJavaバイトコードへのトランスレータは、以下の参考文献(Taft, S. Tucker, “Programming the Internet in Ada 95”proceedings of Ada Europe 96, 1996)に記述されている。ジャスミン(Jasmin)は、Javaバイトコードアセンブラであり、クラスファイルを生成するために利用される。ジャスミン(Jasmin)は、以下の参考文献に記述されている。“Meyer, Jon and Troy Downing, "Java Virtual Machine", O'Reilly, 1997。クラスファイルのソースにかかわらず、インタプリタ処理されるためのコードを生成するため、上記の記述は、Java以外の言語に適用される。
【0129】
図21に示すように、マイクロコントローラ210を含むICカード、スマートカードは、プラスティックカード212上に搭載されている。このプラスティックカード212は、典型的なクレジットカードと同様の形状を持つものである。通信部12aは、通信チャンネルを確立するための接触式パッド214か、または、無線通信システムを備えている。
【0130】
他の実施形態において、図22に示すように、マイクロコントローラ210は、携帯電話または設置型電話220に搭載され、電話にスマートカードの機能を効率的に持たせることができる。
【0131】
他の実施形態において、マイクロコントローラ210は、図23に示すように、キーリング230に組み込まれる。これにより、キーリング230のマイクロコントローラ210と関連付けられているIDを認識するための仕組みが装備されている自動車に対して、高いセキュリティのもと、アクセスすることが可能となる。
【0132】
時計や指輪などの貴重品類240は、図24に示すように、高いエルゴノミックス性をもってマイクロコントローラ210を埋め込むことができる。これら実施形態は、典型的には、通信チャンネルを確立するため無線通信システムを利用し、また、ユーザに対して最小限の手間でアクセス制御のための実装を可能とする方法を提供する。
【0133】
図25は、自動車254の電気回路サブシステム252に搭載されるマイクロコントローラ210を示している。この実施形態では、マイクロコントローラは、自動車へのアクセス制御処理(例えば、IDチェック、自動車のイグニッションシステムの起動制御など)、無線通信による有料道路料金徴収システム、自動車の通行位置を検知する位置決めシステム(GPS)のインタフェース提供など、多様な目的に利用される。
【0134】
本発明の特定の実施形態を説明したが、本発明の開示に基づいて、他の様々な変更や置換が、当業者にとって明らかである。このような変更や置換は、本発明の範疇に入るものであり、特許請求の範囲に記載された内容に基づいて、本発明の技術的範囲に含まれる。
付属ドキュメントA(APPENDIX A)
好ましい実施形態におけるカードクラスファイル形式
カードクラスファイルは、オリジナルクラスファイルの圧縮形式である。カードクラスファイルは、オリジナルクラスファイルからJavaプログラムをインタプリタ処理するために必要とされるセマンティック情報のみを含んでいる。オリジナルクラスファイルの間接参照は、コンパクト表現の結果、直接参照により置き換えられる。カードクラスファイル形式は、以下の原則に基づいている。
標準クラスファイル形式に近づけること。
【0135】
カードクラスファイル形式は、標準クラスファイル形式に可能な限り近づけるべきである。クラスファイルのJavaバイトコードを変更しない。バイトコードを変更せず、バイトコードに対する構造的、静的な制約条件がそのままであることを確実にする。
実装を容易にすること。
【0136】
カードクラスファイル形式を、Java仮想マシンの実装を行なうものに対して十分シンプルなものとする。異なるが等価に振舞う実装を認める。
フィージビリティ
カードクラスファイル形式が、スマートカード技術に適合するためにコンパクトにされたものでなければならない。現在の技術的制約に適合し、さらに、将来の技術革新の適合性を失わないものであること。
この記載は、「Java仮想マシン仕様“The JavaTM Virtual Machine 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.Datainput、 java.io.DataOutputのインタフェース、java.io.DatainputStream、java.io.DataOutputStreamなどのクラスによりサポートされている。Javaクラスファイルデータを表わすデータ型と同じセットを定義して用いる。U1、U2、U4の型は、それぞれ、割り当てられていない1、2、4バイト量を表わしている。Javaにおいて、これら型は、リードアンサインドバイト(readUnsignedByte)、リードアンサインドショート(readUnsignedByte)、“java.io.Datainput”のインタフェースのリードイント(readint)などのメソッドにより読み込みされる。カードクラスファイル形式は、C言語のような構造分類記号法で書かれている擬構造を使用して表現される。Javaカード仮想マシンのクラスとクラスインスタンスのフィールドの混乱を避けるために、カードクラスファイル形式を記述する構造内容はアイテムと呼ばれる。C構造のフィールドとは異なって、連続したアイテムはカードクラスファイルの中にパディングもアライメントもなしで連続して格納されている。変数サイズのアイテムから成る変数サイズのテーブルは、いくつかのクラスファイル構造で使用されるている。C言語のようなテーブルアイテムを参照する配列シンタックスを使っても、テーブルが可変サイズ構造のストリームであるという事実は、テーブルインデックスをテーブルのバイトオフセットとして直接変換できることを意味する。ここで配列と呼んでいるデータ構造は、文字通り配列構造を持っている。カードクラスファイル構造と標準のクラスファイル構造を見分けるために、大文字を加える。例えば、オリジナルのクラスファイルの中のfield_infoをカードクラスファイルの中では、FieldInfoに改名する。
【0141】
カードクラスファイル(Card Class File)
カードクラスファイルは単一のCardClassFile構造を含んでいる:
Figure 0003766052
CardClassFile構造のアイテムは以下の通りである:
minor_version, major_version
minor_versionとmajor_versionアイテムの値は、このカードクラスファイルを作り出した、オフカードJavaカード仮想マシン(off-card Java card virtual machine)のマイナーおよびメジャーバージョンの番号である。通常、Javaカード仮想マシンの実装は、与えられたメジャーバージョン番号と、0から幾つかの特定番号のマイナーバージョン番号を持っているカードクラスファイルをサポートする。Javaカードフォーラムのみが、カードクラスファイルバージョン番号の意味を定義することができる。
name_index
name_indexアイテムの値は、有効なJavaクラス名を表さなければならない。name_indexによって表されたJavaクラス名は、カードを実行するメインアプリケーションに対応するちょうど同じ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からconst_sizeまでの各constant_Poolのテーブルのエントリは、可変長の構造()を持っている。
class[]
クラスは、カードにロードされるアプリケーションを構成するmax_classクラスのテーブルである。
コンスタントプール(Constant Pool)
すべてのconstant_poolのテーブルのエントリには, 以下の一般形式がある:
Figure 0003766052
constant_poolテーブルの中の各アイテムは、cp_infoエントリの種類を示す1バイトのタグで始めなければならない。info 配列の内容はタグの値に従って異なる。有効なタグとそれらの値はレッドブックで指定されたものと同じである。
それぞれのタグバイトの後には、特定の定数に関する情報を与える2またはそれ以上のバイトが続く。追加情報の形式はタグ値に従って異なる。
現時点で含まれる必要があるのタグは、CONSTANT_Class、CONSTANT_FieldRef、CONSTANT_MethodRefおよびCONSTANT_InterfaceRefのみである。そのままの形で追加される他のタグのサポートは、仕様書に含まれている。
CONSTANT_Class
CONSTANT_Class_info構造は、クラスまたはインタフェースを表現するために使用される:
Figure 0003766052
CONSTANT_Class_info構造のアイテムは以下である:
tag
タグアイテムには、CONSTANT_Class(7)の値を持っている。
name_index
name_indexアイテムの値は、有効なJavaクラス名を表さなければならない。name_indexによって表されたJavaクラス名は、オリジナルクラスファイルのconstant_Poolの対応するCONSTANT_Classエントリによって記述されるJavaクラス名とまったく同じものである。CONSTANT_Fieldref, CONSTANT_Methodref, CONSTANT_InterfaceMethodref Fields, メソッド, およびインタフェースメソッドは、同様の構造によって表される:
Figure 0003766052
これらの構造のアイテムは以下の通りである:
tag
CONSTANT_FieldrefInfo構造のタグアイテムは、CONSTANT_Fieldref(9)の値を持っている。
CONSTANT_MethodrefInfo構造のタグアイテムは、CONSTANT_Methodref(10)の値を持っている。
CONSTANT_InterfaceMethodrefInfo構造のタグアイテムは、CONSTANT_InterfaceMethodref(11)の値を持っている。
classs_index
class_indexアイテムの値は、有効なJavaクラスまたはインタフェース名を表さなければならない。class_indexによって表された名前はオリジナルのクラスファイルのccnstant_Poolの対応するCONSTANT_Class_infoエントリによって記述される名前とまったく同じものである。
name_sig_index
name_sig_indexアイテムの値は、有効なJava名と型を表さなければならない。
name_sig_indexによって表わされた名前と型は、オリジナルクラスファイルのconstant_pool構造のCONSTANT_NameAndType_infoエントリによって記述される名前と型とまったく同じものである。
【0142】
クラス(Class)
各クラスは固定長レコードClassInfo構造によって記述される。
この構造の形式は以下の通りである.
Figure 0003766052
ClassInfo構造のアイテムは以下の通りである:
name_index
name_indexアイテムの値は、有効なJavaクラス名を表さなければならない。name_indexによって表されたJavaクラス名は、オリジナルクラスファイルの対応するClassFile構造で記述されるJavaクラス名とまったく同じものである。
max_field
max_fieldアイテムの値は、このクラスまたはインタフェース型によって宣言されたインスタンス変数を表すフィールドテーブルの中のFieldInfo()構造の番号を与える。この値は、カードクラスファイルの非静的フィールドの番号を参照する。
クラスがインタフェースを表すならば、max_fieldの値は0である。
max_sfield
max_sfieldアイテムの値は、このクラスまたはインタフェース型によって宣言されたクラス変数を表すフィールドテーブルの中のFieldInfo構造の番号を与える。
この値は、カードクラスファイルの静的フィールドの番号を参照する。
max_method
max_methodアイテムの値は、メソッドテーブルの中のMethodInfo()構造の番号を与える。
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】
Figure 0003766052
FieldInfo構造のアイテムは以下の通りである:
name_index
name_indexアイテムの値は、有効なJavaフィールド名を表さなければならない。
name_indexによって表されたJavaフィールド名はオリジナルクラスファイルの対応するfield_info構造で記述されるJavaフィールド名とまったく同じものである。
signature_index
signature_indexアイテムの値は、有効なJavaフィールドディスクリプタを表さなければならない。署名(signature)インデックスによって表されるJavaフィールドディスクリプタはオリジナルクラスファイルの対応するfield_info構造で記述されるJavaフィールドディスクリプタとまったく同じもである。access_flags
access_flagsアイテムの値は、アクセス許可を記述することに使用された変更子のマスクとフィールドのプロパティである。access_flags変更子とそれらの値は、access_flags変更子とオリジナルクラスファイルの対応するfield_info構造のものと同じである。
【0145】
メソッド(Methods)
各メソッドは、可変長のMethodInfo構造によって記述される。
MethodInfo構造は、Java仮想マシンのインストラクションと、単一のJavaメソッド、インスタンス初期化メソッド、クラスまたはインタフェース初期化メソッドの補助情報を含む可変長データ構造である。
構造は、以下の形式を持つ:
Methodinfo [ u2 name_index; u2 signature_index; ul max_local; ul max_arg; ul max_stack; ul access_flags; u2 code_length; u2 exception_length; u1 code[code_length]; [ u2 start_pc; u2 end_pc; u2 handle_pc; u2 catch_type;]einfo[exception_length];] MethodInfo構造のアイテムは以下の通りである:
name_index
name_indexアイテムの値は、特別な内部のメソッド名(<init>か<clinit>のどちらかの1つ)か、有効なJavaメソッド名のどちらかを表さなければならない。name_indexによって表されたJavaメソッド名はオリジナルクラスファイルの対応するmethod_info構造で記述されるJavaメソッド名とまったく同じものである。
signature_index
signature_indexアイテムの値は、有効なJavaメソッドディスクリプタを表さなければならない。signature_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 item値以下でなければならない。
catch_type
catch_typeアイテムの値がノンゼロならば、それは有効なJavaクラス型を表現しなければならない。catch_typeによって表わされたJavaクラス型は、オリジナルクラスファイルの対応するmethod_info構造のcatch_typeによって記述されるJavaクラス型とまったく同じでなければならない。このクラスはクラスThrowableまたはそのサブクラスの1つに違いない。例外処理ハンドラは、投げられた例外処理が与えられたクラスのインスタンスまたはそのサブクラスの1つであれば、コールされる。catch_typeアイテムの値がゼロならば、この例外処理ハンドラはすべての例外処理のためにコールされる。これは、最後に実装される。
【0146】
属性(Attributes)
オリジナルクラスファイルの中で使用された属性は、コンパクションのために消去されるかまたは再グループ化される。Javaバイトコードのインタプリタ処理に必要であるどんな情報も犠牲にすることなく、事前に定義された属性であるSourceFile、ConstantValue、Exceptions、LineNumberTableおよびLocal-VariableTableは消去されうる。特定のメソッドのためバイトコードを含む事前に定義された属性Codeが、対応するMethodInfo構造に移動される。
【0147】
Javaカード仮想マシンコードの制約条件(Constraints on Java Card Virtual Machine Code)
Javaカード仮想マシンコードのメソッド、インスタンス初期化メソッド, クラスまたはインタフェース初期化メソッドがカードクラスのMethodInfo構造の配列コードに格納される。このコード配列の静的と構造的な制約条件の両方とも、レッドブックで記述したものと同じものである。
【0148】
Javaカード仮想マシンとJavaカードクラスファイル形式の制限(Limitations of the Java Card Virtual Machine and Java Card class File Format)
Javaカード仮想マシンでの以下の制限は、Java Card Virtual Machine仕様書のこのバージョンによって規定されている。
【0149】
カードクラスファイルコンスタントプールあたり、CardClassFile構造()の16ビット定数サイズフィールドによって65535のエントリ数に制限される。これは、単一のカードクラスファイルの総合複雑度(total complexity)に対する内部制限として機能する。また、このカウントは、カードのアプリケーションに利用可能なクラス階層のコンスタントプールに対応するエントリを含む。
【0150】
メソッドあたりのコード量は、MethodInfo構造のインデックスのサイズによって65535バイトに制限される。
【0151】
メソッドにおけるローカル変数の数は、MethodInfo構造()の最大ローカルアイテムのサイズによって255に制限される。
【0152】
クラスのフィールドの数は、最大フィールドのサイズとClassInfo構造()のmax_sfieldアイテムによって510に制限される。
【0153】
クラスのメソッドの数は、ClassInfo構造()の最大メソッドアイテムのサイズによって255に制限される.
オペランドスタックのサイズは、MethodInfo構造()の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 INMapの定義によって制御される。このテキストファイルは、以下に示されたものを基礎として、ネーム領域(namespace)の領域が何の目的を使用されるかを宣言している。このマップの1つの可能なアレンジメントは、カードJVMインタプリタによる内部利用のためにいくつかのID識別子をリザーブすることができることであり、残りはカードJVMアプリケーションに割り当てられる。
【0155】
【数1】
Figure 0003766052
【0156】
【数2】
Figure 0003766052
【0157】
本質的には、スマートカードにロードされることになっているすべてのアプリケーションは自らのID識別子を、Ox4000からOx7FFFの間に割り当てる。如何なるロードされたアプリケーションも他のアプリケーションにアクセスするのは許可されていないので、この領域は各アプリケーションが自由に利用できる。
【0158】
プリロードされたクラスライブラリのためにID識別子を管理するときには注意を要する。これらのID識別子の管理は、ID識別アウトプットファイルString-ID OUTMapのオプション生成により補助される。このマップは、新しいString-ID割り付け処理(bindings)により増えて行く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/Object”など)は、事前割り当てされている値(F002)であり、いくつかのストリング(“()V”など)は、新しい値(4004)となっている。
【0159】
【数3】
Figure 0003766052
【0160】
付属ドキュメントC(APPENDIX C)
好ましい実施形態におけるカードJVMがサポートするバイトコード
【0161】
【数4】
Figure 0003766052
【0162】
好ましい実施形態においてサポートされるバイトコードに対する標準Javaバイトコード番号
【0163】
【数5】
Figure 0003766052
【0164】
【数6】
Figure 0003766052
【0165】
【数7】
Figure 0003766052
【0166】
【数8】
Figure 0003766052
【0167】
付属ドキュメントD(APPENDIX D)
カードクラスファイルコンバータのバイトコード変換プロセス
【0168】
【数9】
Figure 0003766052
【0169】
【数10】
Figure 0003766052
【0170】
【数11】
Figure 0003766052
【0171】
【数12】
Figure 0003766052
【0172】
【数13】
Figure 0003766052
【0173】
【数14】
Figure 0003766052
【0174】
【数15】
Figure 0003766052
【0175】
【数16】
Figure 0003766052
【0176】
【数17】
Figure 0003766052
【0177】
付属ドキュメントE(APPENDIX E)
ローディング・実行制御プログラムの例
【0178】
【数18】
Figure 0003766052
【0179】
【数19】
Figure 0003766052
【0180】
【数20】
Figure 0003766052
【0181】
【数21】
Figure 0003766052
【0182】
付属ドキュメントF(APPENDIX F)
好ましい実施形態におけるカードオペレーティングシステム機能へのアクセスメソッド
【0183】
【数22】
Figure 0003766052
【0184】
【数23】
Figure 0003766052
【0185】
【数24】
Figure 0003766052
【0186】
【数25】
Figure 0003766052
【0187】
付属ドキュメントG(APPENDIX G)
バイトコード属性テーブル
Javaバイトコードの型グループ分け
各バイトコードは、型に関して5ビットが割り当てられている。これは、似通った動作をするコードをセットとしてグループ化するために使われる。一般にこの動作は、バイトコードの型がスタック上でどのように処理されるかを反映しているが、型0、13、14、15は、コメントセクションで定義された特定種類のインストラクションを反映するものである。
【0188】
下記のテーブルは、各インストラクション型の実行前後のスタックの状態を示したものである。
【0189】
【数26】
Figure 0003766052
【0190】
使用する標準Javaバイトコード(再配置なし)−属性ルックアップテーブル/*
*バイトコードデコード情報テーブル。これは、バイトコード型とバイトコード長を含んでいる。コード0から201(202のコードがある)の現時点のすべてのバイトコードをサポートしている(例、no quicks)。*/
【0191】
【数27】
Figure 0003766052
【0192】
【数28】
Figure 0003766052
【0193】
【数29】
Figure 0003766052
【0194】
【数30】
Figure 0003766052
【0195】
【数31】
Figure 0003766052
【0196】
【数32】
Figure 0003766052
【0197】
【数33】
Figure 0003766052
【0198】
【数34】
Figure 0003766052
【0199】
【数35】
Figure 0003766052
【0200】
付属ドキュメントH(APPENDIX H)
型ごとのJavaバイトコードに行なわれるチェック処理
インストラクションのデコード。これは、次のPC(プログラムカウンティング)の長さとインストラクション型を与えるものである。
【0201】
【数36】
Figure 0003766052
【0202】
下記に基づくいくつかの先実行のチェック処理を実装する。
【0203】
【数37】
Figure 0003766052
【0204】
最後に、いくつかの後実行のチェック処理を実装する
【0205】
【数38】
Figure 0003766052
【0206】
【数39】
Figure 0003766052
【0207】
付属ドキュメントI(APPENDIX I)
再番号づけされたJavaバイトコードに行なわれるチェック処理
インストラクションを獲得する。インストラクションの数値はインストラクション型の中に暗示的に含まれている。
【0208】
【数40】
Figure 0003766052
【0209】
下記に基づくいくつかの先実行のチェック処理を実装する。
/*
*インプットスタックの状態をチェックする。バイトコードをリナンバリングし、バイトコードの値(以下、バイトコード)が正しいグループに属しているか否かをテストすることにより、必要なセキュリティチェックが実行で
きる。
【0210】
【数41】
Figure 0003766052
【0211】
最後に、いくつかの後実行のチェック処理を実装する。
【0212】
【数42】
Figure 0003766052
【0213】
【数43】
Figure 0003766052
【0214】
サポートされたJavaバイトコードの型ごとの再配置
【0215】
【数44】
Figure 0003766052
【0216】
【数45】
Figure 0003766052
【0217】
【数46】
Figure 0003766052
【0218】
【数47】
Figure 0003766052
【0219】
【数48】
Figure 0003766052

【図面の簡単な説明】
【図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】 セキュリティチェックを伴うカードJava仮想マシンの実行方法を示すフロー図である。
【図17】 カードJava仮想マシン上でバイトコードを実行する様子を示すフロー図である。
【図18】 セキュリティチェックを伴わないカードJava仮想マシンの実行方法を示すフロー図である。
【図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 自動車

Claims (31)

  1. 第1のインストラクションと前記第1のインストラクションを実行するインタプリタとを記憶するメモリを有するICカードを備えたICカードシステムであって、
    第2のアプリケーションの第2のインストラクションを、第1のアプリケーションの第1のインストラクションに変換するコンバータを有する端末を備え、
    前記コンバータが、前記第2のインストラクションから第1のインストラクションを形成するリナンバリング処理を実行することを特徴とするICカードシステム。
  2. 第1のインストラクションと前記第1のインストラクションを実行するインタプリタとを記憶するメモリを有するICカードを備えたICカードシステムであって、
    第2のアプリケーションの第2のインストラクションを、第1のアプリケーションの第1のインストラクションに変換するコンバータを有する端末を備え、
    前記第2のインストラクションが、定数への参照を含み、
    前記コンバータが、前記第2のインストラクションの定数への参照を定数に置き換えることを特徴とするICカードシステム。
  3. 第1のインストラクションと前記第1のインストラクションを実行するインタプリタとを記憶するメモリを有するICカードを備えたICカードシステムであって、
    第2のアプリケーションの第2のインストラクションを、第1のアプリケーションの第1のインストラクションに変換するコンバータを有する端末を備え、
    前記第2のインストラクションが、参照を含み、
    前記コンバータが、前記参照の位置をシフトする処理を実行し、そのシフト処理後の参照に対して前記第1のインストラクションの再リンク付けを実行することを特徴とするICカードシステム。
  4. インタプリタが記憶されたメモリを有するICカードと、コンバータを有する端末との動作方法であって、
    前記端末が、前記コンバータにより、第2のアプリケーションの第2のインストラクションを第1のアプリケーションの第1のインストラクションに変換するステップと、
    前記端末が前記ICカードへ前記第1のインストラクションを送り、前記ICカードが受け取った第1のインストラクションを前記メモリに格納するステップと、
    前記ICカードが、前記インタプリタに前記第1のインストラクションを実行させるステップとを含み、
    前記コンバータが、前記第2のインストラクションをリナンバリングすることにより前記第1のインストラクションを生成することを特徴とする動作方法。
  5. インタプリタが記憶されたメモリを有するICカードと、コンバータを有する端末との動作方法であって、
    前記端末が、前記コンバータにより、第2のアプリケーションの第2のインストラクションを第1のアプリケーションの第1のインストラクションに変換するステップと、
    前記端末が前記ICカードへ前記第1のインストラクションを送り、前記ICカードが受け取った第1のインストラクションを前記メモリに格納するステップと、
    前記ICカードが、前記インタプリタに前記第1のインストラクションを実行させるステップとを含み、
    前記第2のインストラクションが、定数への参照を含み、
    前記コンバータが、前記第2のインストラクションの定数への参照を定数に置き換えることを特徴とする動作方法。
  6. インタプリタが記憶されたメモリを有するICカードと、コンバータを有する端末との動作方法であって、
    前記端末が、前記コンバータにより、第2のアプリケーションの第2のインストラクションを第1のアプリケーションの第1のインストラクションに変換するステップと、
    前記端末が前記ICカードへ前記第1のインストラクションを送り、前記ICカードが受け取った第1のインストラクションを前記メモリに格納するステップと、
    前記ICカードが、前記インタプリタに前記第1のインストラクションを実行させるステップとを含み、
    前記第2のインストラクションが、参照を含み、
    前記コンバータが、前記参照の位置をシフトする処理を実行し、そのシフト処理後の参照に対して前記第1のインストラクションの再リンク付けを実行することを特徴とする動作方法。
  7. 高級言語で書かれたプログラムを実行可能なマイクロコントローラ(10)であって、
    メモリと、
    前記メモリにロードされて動作するインタプリタ(16)を備え、
    前記インタプリタ(16)は、以下のa)およびb)を備えるプログラミング環境によって生成されて前記メモリにロードされたアプリケーションプログラムをインタプリタ処理できることを特徴とする。
    a)高級言語ソースコードであるアプリケーションソースプログラミング(20)をコンパイル形式(24)にコンパイルするコンパイラ(22)、
    b)前記コンパイル形式(24)を前記インタプリタ(16)によりインタプリタ処理するのに適した形式(27)へと変換する後処理をするコンバータ(26)。
  8. 前記コンパイル形式(24)が、属性情報を含み、前記コンバータ(26)が、前記インタプリタ(16)が必要とする属性情報を含める手段と前記インタプリタ(16)が必要としない属性情報を含めない手段を備えた請求項7に記載のマイクロコントローラ(10)。
  9. 前記コンパイル形式(24)が、標準Javaクラスファイル形式であり、前記コンバータ(26)が、入力を前記標準Javaクラスファイル形式の入力コンパイル形式(24)として受け入れ、前記インタプリタ(16)によるインタプリタ処理に適する形式の出力(27)に変換する請求項7又は8に記載のマイクロコントローラ(10)。
  10. 前記コンパイル形式(24)が、オブジェクト、クラス、フィールド、メソッドを特定するために利用されるストリングの情報を含み、前記コンバータは、前記ストリングをユニークなID識別子(51b)にマッピング処理する手段を含む請求項7から9のいずれか一項に記載のマイクロコントローラ(10)。
  11. 前記それぞれのユニークなID識別子が整数である請求項10に記載のマイクロコントローラ(10)。
  12. 前記マッピング処理は、ストリングのID識別子マップファイル(30、32)への格納である請求項10又は11に記載のマイクロコントローラ(10)。
  13. 前記高級言語は、バイトコードのセットをサポートし、前記インタプリタ(16)は、前記バイトコードのセットのサブセットをサポートし、前記コンバータ(26)は、前記コンパイル形式(24)が前記バイトコードのセットのサブセットのバイトコードのみを含んでいることをベリファイする(51c、52)請求項10から12のいずれか一項に記載のマイクロコントローラ(10)。
  14. 前記コンパイル形式(24)が、バイトコード形式であり、前記コンバータ(26)が、下記のステップを含む処理ステップのうちの少なくとも1つの処理ステップを用いて、前記コンパイル形式(24)のバイトコードを前記インタプリタ(16)によりインタプリタ処理するために適したバイトコード(27)に変換する手段(54)を備えた請求項10から13のいずれか一項に記載のマイクロコントローラ(10)。
    a)オリジナルバイトコードのすべてのジャンプ処理とそのジャンプ先を記録する処理(61)、
    b)スぺシフィックバイトコードを意味的に等価なジェネリックバイトコードに変換する処理(63)、
    c)バイトコードオペランドを、IDストリングを用いた参照からユニークなID識別子を用いた参照に変更する処理(64)
    d)コンパイル形式(24)のバイトコードをインタプリタ処理に適した形式の等価なバイトコードにリナンバリングする処理(66)、
    e)ステップa)、b)、c)、d)の変換処理により影響を受けるジャンプ処理のジャンプ先アドレスに再リンク付けする処理(67)
  15. 前記コンパイル形式(24)が、多様なコンピュータプラットフォームへの移植性があるように規定された請求項10から14のいずれか一項に記載のマイクロコントローラ(10)。
  16. 前記インタプリタ(16)が、さらに、バイトコードから構成されたアプリケーションのインタプリタ処理中に、下記(a)および(b)のうち少なくとも1つのセキュリティ基準に引っかかったか否かを決定するように構成され、
    前記インタプリタが、前記バイトコードの実行がセキュリティ基準の違反を起こさないことを確認するチェック処理を当該バイトコードの実行処理に先行して少なくとも1回実行するように構成された請求項10から15のいずれか一項に記載のマイクロコントローラ(10)。
    (a)前記アプリケーションが権限のないメモリ領域にアクセスすることを認めない、
    (b)前記アプリケーションがアクセス権限のないマイクロコントローラのリソースへにアクセスすることを認めない。
  17. 少なくとも1つのアプリケーションプログラムが、
    前記アプリケーションのローディング処理に先立って、前記アプリケーションが前記セキュリティ基準に違反しないことを確認する処理ステップと、
    セキュリティを維持してローディング処理を行なう処理ステップと、
    を含んでいるプロセスにより生成されたアプリケーションである請求項10から16のいずれか一項に記載のマイクロコントローラ(10)。
  18. 前記セキュリティを維持してローディング処理を行う処理ステップが、ローディングキーを利用してロードされるアプリケーションを暗号化する処理ステップを含む請求項17に記載のマイクロコントローラ(10)。
  19. メモリとプロセッサを持つマイクロコントローラをプログラミングする方法であって、前記方法が、
    第1のプログラミング言語で記述されたアプリケーションプログラム(20)をコンパイラへ入力する処理と、
    前記コンパイラが、前記第1のプログラミング言語で記述されたアプリケーションプログラム(20)を、前記第1のプログラミング言語に対応し、第1の中間コード仮想マシンによりインタプリタ処理できる第1の中間コード(24)にコンパイルする処理(22)と、
    前記第1の中間コード(24)をコンバータへ入力し、前記マイクロコントローラ上の第2の中間コード仮想マシン(16)によりインタプリタ処理できる第2の中間コード(27)に変換する変換処理(26)と、
    前記第2の中間コードを前記マイクロコントローラ(10)のメモリにロードする処理とを含み、
    前記変換処理がさらに、
    オブジェクト、クラス、フィールド、メソッドのIDストリングの関連付け処理と、
    それらストリングをユニークなID識別子(51b)にマッピングするマッピング処理とを含むことを特徴とする方法。
  20. 前記マッピング処理が、ストリングを整数にマッピングする処理を含む請求項19に記載の方法。
  21. 前記変換処理が、
    少なくとも以下のa)〜d)ステップのうちの1つを実行する処理と、
    ステップa)、b)、c)、またはd)の処理により影響を受けるジャンプ処理のジャンプ先アドレスに再リンク付けする処理(67)とを含む、請求項19または20に記載の方法。
    a)オリジナルバイトコードのすべてのジャンプ処理とそのジャンプ先を記録する処理(61)、
    b)スぺシフィックバイトコードを意味的に等価なジェネリックバイトコードに変換する処理(63)、
    c)バイトコードオペランドを、IDストリングを用いた参照からユニークID識別子を用いた参照に変更する処理(64)、
    d)コンパイル形式のバイトコードをインタプリタ処理に適した形式の意味的に等価なバイトコードにリナンバリングする処理(66)。
  22. 前記第2の中間コード(27)を前記マイクロコントローラ(10)のメモリにロードする処理を備えたことを特徴とする方法が、さらに、前記第2の中間コード(27)のロード処理に先立って、前記第2の中間コード(27)が前記第1のプログラム言語に対して定義されたセキュリティモデルに適合するものであるかおよび当該ロード処理がセキュリティプロトコルに従って実行されるものであるかを認証するため前記第2の中間コード(27)をチェックする処理を含む請求項19から21のいずれか一項に記載の方法。
  23. さらに復号鍵の供給処理を含み、前記セキュリティプロトコルが、ロードされた前記復号鍵に対応する鍵を使って前記第2の中間コード(27)が暗号化されていることを要求する請求項19から22のいずれか一項に記載の方法。
  24. メモリと前記メモリにロードされたインタプリタ(16)を備え、インタプリタ処理可能なプログラミング言語により記述されたプログラム(24)を変換することにより得られた変換プログラム(27)を実行しうるマイクロコントローラ(10)であって、前記マイクロコントローラ(10)が以下の(a)および(b)の特徴を持つもの。
    (a)前記マイクロコントローラは、インタプリタ処理できるプログラミング言語で記述されたプログラム(24)をインタプリタ処理するためには不十分な容量のメモリを用いて動作するものである、
    (b)前記メモリが、インタプリタ処理可能な言語のサブセットにより記述された変換プログラム(27)をインタプリタ処理できるインタプリタを含むメモリであって、変換プログラム(27)が、下記の(1)〜(4)のうち少なくとも1つの規則を適用してインタプリタ処理可能なプログラミング言語により記述されたプログラムから得られたもの。
    (1)ストリングを識別子にマッピングすること、
    (2)セキュリティチェック処理を実行すること、
    (3)構造チェックを実行すること、
    (4)セマンティックチェックを実行すること。
  25. 前記変換プログラム(27)がクラスファイルまたはクラスファイルの変換により得られる、請求項24に記載のマイクロコントローラ(10)。
  26. 前記メモリが1メガバイトより少ないことを特徴とする請求項24又は25に記載のマイクロコントローラ(10)。
  27. 変換プログラムの使用を要求する要求元が前記変換プログラム(27)へのアクセス件を持つか否かをアクセス制御リストに基づいて決定する回路を持ち、前記決定に基づいて、前記要求元に対して、前記変換プログラムに対するアクセスを選択的に認める、請求項24から26のいずれか一項に記載のマイクロコントローラ(10)。
  28. 前記変換プログラム(27)がアクセスしようとするメモリの特定領域へのアクセス権限を前記変換プログラム(27)が持っているか否かを決定する回路をさらに備えた請求項27に記載のマイクロコントローラ(10)。
  29. さらに前記マイクロコントローラ(10)が下記の(a)〜(c)のうち少なくとも1つのセキュリティチェックを実行するように構成された請求項24から28のいずれか一項に記載のマイクロコントローラ(10)。
    (a)前記変換プログラム(27)がインタプリタ処理されている間にアクセスセキュリティ規則を実行し、前記変換プログラム(27)が権限の無いメモリ領域または他の権限の無いマイクロコントローラリソースにアクセスすることを防止すること、
    (b)各バイトコードが正しく実行されているか決定する処理に先立って少なくとも1回各バイトコードがチェックされるように前記インタプリタ(16)が構成されていること、
    (c)前記マイクロコントローラにロードされる前に前記変換プログラムの完全性がチェックされ、ロード処理がセキュリティプロトコルに応じて実行されること。
  30. 前記セキュリティプロトコルは、復号鍵を持っており、ロードされた変換プログラム(27)が前記復号鍵に対応する鍵により暗号化されていることを要求することを特徴とする請求項29に記載のマイクロコントローラ(10)。
  31. ファイルシステムを持ち、下記の(a)〜(c)のいずれかの手段を介して前記ファイルシステムへアクセスできるように構成された請求項24から30のいずれか一項に記載のマイクロコントローラ(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 JP2003141488A (ja) 2003-05-16
JP3766052B2 true 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)

Families Citing this family (293)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69519473T2 (de) 1995-08-04 2001-05-10 Belle Gate Investment B.V., Den Haag Datenaustauschlsysteme mit tragbaren Datenverarbeitungseinheiten
US6385645B1 (en) 1995-08-04 2002-05-07 Belle Gate Investments B.V. Data exchange system comprising portable data processing units
EP0825506B1 (en) 1996-08-20 2013-03-06 Invensys Systems, Inc. Methods and apparatus for remote process control
KR100329063B1 (ko) 1996-10-25 2002-03-18 디디어 레묀 마이크로컨트롤러를 이용한 고급 프로그래밍 언어 사용
US6934945B1 (en) * 1997-03-14 2005-08-23 Cardsoft, Inc. Method and apparatus for controlling communications
CZ295686B6 (cs) 1997-06-27 2005-09-14 Swisscom Mobile Ag Způsob transakcí pomocí mobilního telefonu a identifikační prvek pro tento způsob transakcí
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
WO1999049392A1 (en) * 1998-03-23 1999-09-30 International Business Machines Corporation Java runtime system with modified constant pool
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
CN1322430A (zh) 1998-09-29 2001-11-14 太阳微系统公司 在话音上的数据叠加
US6591229B1 (en) 1998-10-09 2003-07-08 Schlumberger Industries, Sa Metrology device with programmable smart card
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
US6609199B1 (en) * 1998-10-26 2003-08-19 Microsoft Corporation Method and apparatus for authenticating an open system application to a portable IC device
US7194092B1 (en) 1998-10-26 2007-03-20 Microsoft Corporation Key-based secure storage
US7139915B2 (en) * 1998-10-26 2006-11-21 Microsoft Corporation Method and apparatus for authenticating an open system application to a portable IC device
ATE287557T1 (de) * 1998-11-03 2005-02-15 Thomson Licensing Sa Verfahren und gerät zur rechnerkodeaktualisierung unter verwendung einer schnittstelle zu einer integrierten schaltung
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カードにおけるデータ読込方法
US6823520B1 (en) * 1999-01-22 2004-11-23 Sun Microsystems, Inc. Techniques for implementing security on a small footprint device using a context barrier
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
US6425003B1 (en) * 1999-01-22 2002-07-23 Cisco Technology, Inc. Method and apparatus for DNS resolution
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
US6581206B2 (en) * 1999-11-12 2003-06-17 Sun Microsystems, Inc. Computer program language subset validation
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
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
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
US6880155B2 (en) * 1999-02-02 2005-04-12 Sun Microsystems, Inc. Token-based linking
WO2000046664A2 (en) * 1999-02-05 2000-08-10 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
EP1179209A1 (en) * 1999-05-11 2002-02-13 Microsoft Corporation Method and apparatus for sharing data files among runtime environment applets in an integrated circuit card
US6547150B1 (en) * 1999-05-11 2003-04-15 Microsoft Corporation Smart card application development system and method
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
US6938244B1 (en) 1999-05-11 2005-08-30 Microsoft Corp. Interlaced protocol for smart card application development
US7089530B1 (en) 1999-05-17 2006-08-08 Invensys Systems, Inc. Process control configuration system with connection validation and configuration
AU5025600A (en) 1999-05-17 2000-12-05 Foxboro Company, The Process control configuration system with parameterized objects
US6546546B1 (en) * 1999-05-19 2003-04-08 International Business Machines Corporation Integrating operating systems and run-time systems
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
FR2794543B1 (fr) * 1999-06-04 2001-08-24 Gemplus Card Int Migration de differents langages sources vers un support d'execution
CA2391826A1 (en) 1999-06-10 2000-12-21 Belle Gate Investment B.V. Arrangements storing different versions of a set of data in separate memory areas and method for updating a set of data in a memory
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
EP1206741A1 (en) * 1999-08-11 2002-05-22 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
US7207037B2 (en) * 1999-11-12 2007-04-17 Sun Microsystems, Inc. Overflow sensitive arithmetic instruction optimization using chaining
US7158993B1 (en) 1999-11-12 2007-01-02 Sun Microsystems, Inc. API representation enabling submerged hierarchy
US8453133B2 (en) * 1999-11-12 2013-05-28 Oracle America, Inc. Optimization of N-base typed arithmetic instructions via rework
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
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
DE59911743D1 (de) * 1999-11-19 2005-04-14 Swisscom Mobile Ag Anpassbare chipkarte
AU1586500A (en) 1999-12-06 2001-06-12 Sun Microsystems, Inc. Computer arrangement using non-refreshed dram
EP1236201B1 (en) 1999-12-07 2007-11-14 Sun Microsystems Inc. Computer-readable medium with microprocessor to control reading and computer arranged to communicate with such a medium
KR100699236B1 (ko) 1999-12-07 2007-03-27 선 마이크로시스템즈 인코포레이티드 안전 사진을 포함한 식별 장치, 이러한 식별 장치를인증하기 위한 수단 및 그 장치의 인증 방법
US6757824B1 (en) * 1999-12-10 2004-06-29 Microsoft Corporation Client-side boot domains and boot rules
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
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
US6981245B1 (en) 2000-09-14 2005-12-27 Sun Microsystems, Inc. Populating binary compatible resource-constrained devices with content verified using API definitions
JP2002091762A (ja) * 2000-09-14 2002-03-29 Denso Corp プログラム生成装置
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
US8103496B1 (en) 2000-10-26 2012-01-24 Cypress Semicondutor Corporation Breakpoint control 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
US6724220B1 (en) 2000-10-26 2004-04-20 Cyress Semiconductor Corporation Programmable microcontroller architecture (mixed analog/digital)
US7765095B1 (en) 2000-10-26 2010-07-27 Cypress Semiconductor Corporation Conditional branching in an in-circuit emulation system
US8176296B2 (en) 2000-10-26 2012-05-08 Cypress Semiconductor Corporation Programmable microcontroller architecture
US20020108054A1 (en) * 2001-02-02 2002-08-08 Moore Christopher S. Solid-state memory device storing program code and methods for use therewith
US6942147B2 (en) * 2001-02-08 2005-09-13 Nokia Corporation Smart card reader
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
JP2005500608A (ja) * 2001-08-13 2005-01-06 クゥアルコム・インコーポレイテッド コンピュータ装置上の記憶領域へのアプリケーションレベルのアクセス特権
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
US7496751B2 (en) * 2001-10-29 2009-02-24 Sun Microsystems, Inc. Privacy and identification in a data communications network
US7085840B2 (en) 2001-10-29 2006-08-01 Sun Microsystems, Inc. Enhanced quality of 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
US7774190B1 (en) 2001-11-19 2010-08-10 Cypress Semiconductor Corporation Sleep and stall in an in-circuit emulation system
US8069405B1 (en) 2001-11-19 2011-11-29 Cypress Semiconductor Corporation User interface for efficiently browsing an electronic document using data-driven tabs
US7770113B1 (en) 2001-11-19 2010-08-03 Cypress Semiconductor Corporation System and method for dynamically generating a configuration datasheet
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
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
WO2003058446A1 (en) * 2002-01-11 2003-07-17 Sierra Wireless, Inc. Host extensible wireless application interface
DE60210416T2 (de) * 2002-02-28 2006-09-07 Matsushita Electric Industrial Co., Ltd., Kadoma Speicherkarte
US20100174717A1 (en) * 2002-02-28 2010-07-08 Olivier Fambon Interative serialisation procedure for structured software objects
US8769517B2 (en) * 2002-03-15 2014-07-01 International Business Machines Corporation Generating a common symbol table for symbols of independent applications
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
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
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
ATE488116T1 (de) 2002-09-16 2010-11-15 Ericsson Telefon Ab L M Sicherer zugang auf ein teilnehmermodul
US20060064458A1 (en) * 2002-09-16 2006-03-23 Christian Gehrmann 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
US7272830B2 (en) 2003-01-16 2007-09-18 Sun Microsystems, Inc. Ordering program data for loading on a device
US20040143739A1 (en) * 2003-01-16 2004-07-22 Sun Mircosystems, Inc., A Delaware Corporation Run time code integrity checks
US7222331B2 (en) 2003-01-16 2007-05-22 Sun Microsystems, Inc. Linking of virtual methods
US7165246B2 (en) 2003-01-16 2007-01-16 Sun Microsystems, Inc. Optimized representation of data type information in program verification
US8121955B2 (en) * 2003-01-16 2012-02-21 Oracle America, Inc. Signing program data payload sequence in program loading
US7281244B2 (en) 2003-01-16 2007-10-09 Sun Microsystems, Inc. Using a digital fingerprint to commit loaded data in a device
US7484095B2 (en) 2003-01-16 2009-01-27 Sun Microsystems, Inc. System for communicating program data between a first device and a second device
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
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
US7230562B1 (en) 2004-02-10 2007-06-12 Zilog, Inc. Sending a script to a virtual machine for immediate interpreting
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
US7140549B2 (en) 2004-02-24 2006-11-28 Sun Microsystems, Inc. Method and apparatus for selecting a desired application on 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
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 セイコーエプソン株式会社 リソース管理システム、プリンタ、プリンタ用ネットワークカードおよびリソース管理プログラム、並びにリソース管理方法
JP4207938B2 (ja) * 2005-02-01 2009-01-14 セイコーエプソン株式会社 ソフトウェア認証システム、ソフトウェア認証プログラム、およびソフトウェア認証方法
JP2006244451A (ja) * 2005-02-01 2006-09-14 Seiko Epson Corp リソース管理システムおよびリソース管理プログラム、並びにリソース管理方法
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
JP4232767B2 (ja) * 2005-03-14 2009-03-04 セイコーエプソン株式会社 ソフトウェア認証システムおよびソフトウェア認証プログラム、並びにソフトウェア認証方法
JP4628149B2 (ja) * 2005-03-14 2011-02-09 株式会社エヌ・ティ・ティ・ドコモ アクセス制御装置及びアクセス制御方法
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
US8026739B2 (en) 2007-04-17 2011-09-27 Cypress Semiconductor Corporation System level interconnect with programmable switching
US9564902B2 (en) 2007-04-17 2017-02-07 Cypress Semiconductor Corporation Dynamically configurable and re-configurable data path
US8040266B2 (en) 2007-04-17 2011-10-18 Cypress Semiconductor Corporation Programmable sigma-delta analog-to-digital converter
US7737724B2 (en) * 2007-04-17 2010-06-15 Cypress Semiconductor Corporation Universal digital block interconnection and channel routing
US8092083B2 (en) 2007-04-17 2012-01-10 Cypress Semiconductor Corporation Temperature sensor with digital bandgap
US8516025B2 (en) 2007-04-17 2013-08-20 Cypress Semiconductor Corporation Clock driven dynamic datapath chaining
US8130025B2 (en) 2007-04-17 2012-03-06 Cypress Semiconductor Corporation Numerical band gap
US8266575B1 (en) 2007-04-25 2012-09-11 Cypress Semiconductor Corporation Systems and methods for dynamically reconfiguring a programmable system on a chip
US8065653B1 (en) 2007-04-25 2011-11-22 Cypress Semiconductor Corporation Configuration of programmable IC design elements
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
JP5262089B2 (ja) * 2007-11-30 2013-08-14 凸版印刷株式会社 Icカードに実装されるコンピュータ装置及びその処理方法
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卡查找类和函数的方法和装置
US8594814B2 (en) 2008-06-20 2013-11-26 Invensys Systems, Inc. Systems and methods for immersive interaction with actual and/or simulated facilities for process, environmental and industrial control
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 フェリカネットワークス株式会社 情報処理装置、プログラム、および情報処理システム
JP5607170B2 (ja) * 2009-11-05 2014-10-15 トラステツド・ロジツク 安全なポータブルオブジェクト
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
US8769518B1 (en) 2010-06-29 2014-07-01 Ca, Inc. Ensuring determinism during programmatic replay in a virtual machine
US8499299B1 (en) 2010-06-29 2013-07-30 Ca, Inc. Ensuring deterministic thread context switching in virtual machine applications
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
US8352749B2 (en) 2010-12-17 2013-01-08 Google Inc. Local trusted services manager for a contactless smart card
US8807440B1 (en) 2010-12-17 2014-08-19 Google Inc. Routing secure element payment requests to an alternate application
US8621168B2 (en) 2010-12-17 2013-12-31 Google Inc. Partitioning the namespace of 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
US8171525B1 (en) 2011-09-15 2012-05-01 Google Inc. Enabling users to select between secure service providers using a central trusted service manager
US8255687B1 (en) 2011-09-15 2012-08-28 Google Inc. Enabling users to select between secure service providers using a key escrow service
US8313036B1 (en) 2011-09-16 2012-11-20 Google Inc. Secure application directory
US9544759B2 (en) 2011-11-01 2017-01-10 Google Inc. Systems, methods, and computer program products for managing states
JP6290090B2 (ja) 2011-11-01 2018-03-07 グーグル エルエルシー 安全要素を管理するためのシステム、方法、およびコンピュータプログラム製品
JP5818695B2 (ja) * 2012-01-04 2015-11-18 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation コード変換方法、プログラム及びシステム
WO2013111490A1 (ja) * 2012-01-25 2013-08-01 ソニー株式会社 情報処理装置、情報処理方法およびコンピュータプログラム
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
EP3410326B1 (en) 2012-09-18 2020-09-16 Google 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
AU2015343181B2 (en) 2014-11-05 2017-06-01 Tabor Mountain 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
JP6275098B2 (ja) * 2015-10-16 2018-02-07 三菱電機株式会社 制御装置およびレジスタの故障復帰方法
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
EP4425328A1 (en) * 2023-02-28 2024-09-04 STMicroelectronics International N.V. Method of executing a java card application

Family Cites Families (106)

* 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
JPS63156255A (ja) 1986-12-19 1988-06-29 Fujitsu Ltd インタプリタにおけるオ−バレイ方法
JPS63156254A (ja) 1986-12-19 1988-06-29 Fujitsu Ltd インタプリタにおける中間テキストの管理方法
US4777355A (en) 1986-12-24 1988-10-11 Mitsubishi Denki Kabushiki Kaisha IC card and system for checking the functionality thereof
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
JPH01243125A (ja) * 1988-03-24 1989-09-27 Fuji Electric Co Ltd 解釈プログラムの実行速度向上方法
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 予約取引処理方法
CA2025120A1 (en) * 1989-09-28 1991-03-29 John W. White Portable and dynamic distributed application 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
FR2667171B1 (fr) * 1990-09-25 1994-08-26 Gemplus Card Int Support portable a micro-circuit facilement programmable et procede de programmation de ce micro-circuit.
US5307492A (en) * 1991-03-07 1994-04-26 Digital Equipment Corporation Mapping assembly language argument list references in translating code for different machine architectures
US5450575A (en) * 1991-03-07 1995-09-12 Digital Equipment Corporation Use of stack depth to identify machine code mistakes
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
DE69332889T2 (de) * 1992-10-26 2004-03-04 Intellect Australia Pty. Ltd. Host-benutzer-transaktionssystem
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
WO1995004328A1 (en) 1993-07-30 1995-02-09 Intellect Australia Pty. Ltd. Device and method for ic cards
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
FR2713803B1 (fr) * 1993-12-07 1996-01-12 Gemplus Card Int Carte à mémoire et procédé de fonctionnement.
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
US5668999A (en) * 1994-12-20 1997-09-16 Sun Microsystems, Inc. System and method for pre-verification of stack usage in bytecode program loops
US5748964A (en) * 1994-12-20 1998-05-05 Sun Microsystems, Inc. Bytecode program interpreter apparatus and method with pre-verification of data type restrictions
US5590331A (en) * 1994-12-23 1996-12-31 Sun Microsystems, Inc. Method and apparatus for generating platform-standard object files containing machine-independent code
SK102897A3 (en) * 1995-02-17 1998-03-04 Europay Int Sa 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 ビー・イー・テクノロジー株式会社 デジタルデータ処理装置
US6181867B1 (en) * 1995-06-07 2001-01-30 Intervu, Inc. Video storage and retrieval system
US5692132A (en) 1995-06-07 1997-11-25 Mastercard International, Inc. System and method for conducting cashless transactions on a computer network
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
EP0896703A4 (en) 1995-12-01 2007-07-04 Lsi Logic Corp INTEGRATED NETWORK WEB SITE CHIP, NETWORKROWSER SYSTEM AND NETWORK DATA COMMUNICATION PROCESS
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
EP0794639A3 (en) * 1996-02-14 2001-01-31 Mitsubishi Denki Kabushiki Kaisha 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
US5764989A (en) * 1996-02-29 1998-06-09 Supercede, Inc. Interactive software development system
US5848274A (en) * 1996-02-29 1998-12-08 Supercede, Inc. Incremental byte code compilation system
JPH09244904A (ja) * 1996-03-12 1997-09-19 Matsushita Electric Ind Co Ltd 仮想コード翻訳系および仮想マシンシステム
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
KR100329063B1 (ko) * 1996-10-25 2002-03-18 디디어 레묀 마이크로컨트롤러를 이용한 고급 프로그래밍 언어 사용
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

Also Published As

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

Similar Documents

Publication Publication Date Title
JP3766052B2 (ja) 高級プログラミング言語を用いたマイクロコントローラ
US6834799B2 (en) IC card with capability of having plurality of card managers installed
US7165727B2 (en) Method and apparatus for installing an application onto a smart card
FI117990B (fi) Tiedonvaihtojärjestelmä, joka käsittää kannettavia tietojenkäsittely-yksiköitä
JP2007226839A (ja) データ構造を記憶するメモリ及び方法
US20020093856A1 (en) File language verification
KR20010103747A (ko) 글로벌 데이터 구조를 사용해서 소형 풋프린트 장치의콘텍스트 배리어를 넘어선 액세스를 허용하기 위한 기술
Faraj et al. Investigation of Java Smart Card Technology for Multi-Task Applications
CN100507797C (zh) 采用文本屏障在小型注脚设备上实施安全的技术
CN100353324C (zh) 使用共享对象接口在小型注脚设备中允许越过文本屏障进行访问的技术
Markantonakis et al. Multi-application smart card platforms and operating systems
Grimaud et al. FACADE: a typed intermediate language dedicated to smart cards
Markantonakis The case for a secure multi-application smart card operating system
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
Ma et al. Implementing FISC IC card specification and developing health care application using Java Card

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