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

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

Info

Publication number
JP2000514584A
JP2000514584A JP10520562A JP52056298A JP2000514584A JP 2000514584 A JP2000514584 A JP 2000514584A JP 10520562 A JP10520562 A JP 10520562A JP 52056298 A JP52056298 A JP 52056298A JP 2000514584 A JP2000514584 A JP 2000514584A
Authority
JP
Japan
Prior art keywords
card
application
memory
instruction
access
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.)
Pending
Application number
JP10520562A
Other languages
English (en)
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=JP2000514584(A) "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 JP2000514584A publication Critical patent/JP2000514584A/ja
Pending legal-status Critical Current

Links

Classifications

    • 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
    • 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
    • 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)
  • Stored Programmes (AREA)

Abstract

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

Description

【発明の詳細な説明】 高級プログラミング言語を用いたマイクロコントローラ この特許出願の開示内容の一部には著作権保護を受けるものが含まれている。 著作権所有者は、特許庁への特許出願書類または記録として使用されるものに限 り、何人でも当該特許出願書類の複製を行なうことに関して異議を持たないが、 その他の場合にはすべての著作権の権利の保有する。 米国法35条セクション119(e)に基づき、本特許出願は1996年10 月25日に受理された先行する米国特許出願番号60/029,057の優先権 利益を要求する。 発明の背景 この発明は主にプログラミング技術に関し、特に、スマートカードまたはマイ クロコントローラに使用する高級プログラミング言語に関する。 高級プログラミング言語Javaで記述されたソフトウェアアプリケーション は、そのままで多種多様なコンピュータブランド、多種多様なコンピュータプラ ットフォーム上で動作できるように作られている。これは以下の手続きによって 達成される。アプリケーションがJava言語によって記述された場合、当該ア プリケーションは、Java仮想マシンと呼ばれる仮想コンピュータに対する命 令コードであるバイトコードを含む“クラス”ファイルにコンパイルされる。 サポートされる各々のプラットフォームに対しては当該仮想マシンの実装プログ ラムが用意されている。利用者が使用するプラットフォームにおいて特定のJa vaアプリケーションを動作させたい場合、動作したいアプリケーションからコ ンパイルして生成したクラスファイルを当該プラットフォームにロードする。使 用プラットフォーム上で構築されるJava仮想マシンが動作し、クラスファイ ル中のバイトコードをインタプリタ実行し、Javaアプリケーションが効率的 に実行される。 Javaは、以下の参考文献において説明されている。(1)アーノルド、ケ ン、およびジェームス・ゴスリング「Javaプログラミング言語」、アディソン -ウェズレー、1996;(2)ジェームスゴスリング、 ビル・ジョイ、ガ イ・スティール「Java言語仕様」、サン・マイクロシステムズ、1996(ウ ェブサイト:http://java.sun.com/doc/language specification);(3)ジェ ームス・ゴスリング、ヘンリーマックギルトン「Java言語使用環境:ホワイ トペーパー」、サン・マイクロシステムズ、1995(ウェブサイト:http://ja va.sun.com/doc/language environment/);(4)ティム・リンドホルム、フラ ンク・イェリン「Java仮想マシン仕様」、アディソン-ウェズレー1997; これらのテキストその他多くのテキストにおいてJavaを用いたプログラム作 成方法が記述されている。 特定プラットフォームにおいてJavaアプリケーションを実行するために、 プラットホームの制約条件下において動作しうるJava仮想マシン実装プログ ラムが記述されていなければならず、また、当該プラットフォーム上に使用する Javaアプリケーションを当該プラットホームの制約条件下においてロードで きる仕組みが提供されていなければならない。 Javaをサポートする従来のプラットホームは、比較的容量の大きいメモリ とハードディスクを利用する通常のマイクロプロセッサベースのコンピュータで ある。そのようなマイクロプロセッサ実装は、デスクトップコンピュータ、パー ソナルコンピュータにおいて広く用いられている。しかしながら、スマートカー ドに使用されているようなマイクロコントローラ上で動作するJava実装は従 来にはなかった。 マイクロコントローラは多く点においてマイクロプロセッサとは異なっている 。例えば、マイクロプロセッサは典型的には、中央演算処理装置(CPU)を備 えており、CPUは正常な動作をするためには外部周辺装置(例えばメモリ、入 力制御装置、出力制御装置)を必要とする。典型的なマイクロプロセッサは、メ ガバイトからギガバイトのメモリアクセスが可能であり、1命令で16ビット、 32ビット、64ビットまたはそれ以上の情報が処理できる。マイクロプロセッ サとは対照的に、マイクロコントローラは、中央演算処理装置(CPU)、メモリ 、その他の機能要素すべてを1枚の半導体基板または1つのIC回路(ICチッ プ)として備えている。マイクロプロセッサが比較的大容量である外部メモリに アクセスするのに対して、典型的なマイクロコントローラはかなり小容量のメモ リにアクセスする。典型的なマイクロコントローラは、1キロバイト〜16キロ バイトの内蔵メモリにアクセス可能であり、特に16キロバイト内蔵メモリのも のが広く使われている。 一般的には、3つの異なるタイプのメモリ、ランダムアクセスメモリ(RAM) 、リードオンリーメモリ(ROM)、電気的に消去可能なプログラマブルリードオ ンリーメモリ(EEPROM)が使われている。マイクロコントローラにおいて 、利用可能な上記各種のメモリの容量は、当該メモリに割り当て可能なICチッ プの面積容量の制限を受ける。典型的には、RAMは多くの面積を必要とし、供 給されるメモリ容量はもっとも少なくなる。ROMはもっとも少ない面積で済み 、供給容量は大きくなる。EEPROMは、RAMよりも供給容量は大きくなる が、ROMより供給容量は小さくなる。 それぞれのメモリ種類の適する用途は異なっている。ROMはもっとも安価で あるが、例えば、オペレーティングシステムのコードなど書き換えの必要のない データの記憶用途に適している。EEPROMは、印加電圧がオフされた後も保 持する必要のあるデータの記憶用途に適しているが、書き込み時間が非常に遅い 。RAMはデータ書き込み、読み出しとも高速に実行できるが、高価であり、か つ印加電圧除去により記憶データが失われてしまう。 マイクロプロセッサは、典型的には、比較的少容量のROMとEEPROMを 持ち、さらに1〜128メガバイトのRAMを備えている。それは1つのICデ バイス上に何を搭載するかに関して制約がないからであり、また、EEPROM (より)低コスト、大容量、書き換え可能、不揮発性の記憶媒体となる外部ディス クメモリにアクセスすることが可能であるからである。しかしながら、マイクロ コントローラは、典型的には、0.1〜2.0キロバイトの小容量のRAMと、 2〜8キロバイトのEEPROMと、8〜56キロバイトのROMを備えている 。 外部コンポーネントが少なくかつサイズが小さいため、マイクロコントローラ はスマートカードなどのICカードに広く用いられている。このようなスマート カードには、使用時にカードリーダに挿入する必要がある接触式カードや、カー ドリーダに挿入する必要のない非接触式カードなど多様な形態がある。実際に、 非接触式通信を行なうマイクロコントローラは、時計や指輪など特別な形状物に 埋め込まれることがあり、エルゴノミックス性が高くかつ魅力的な方法でスマー トカードの機能をそれら形状物に統合させている。 リソース環境の制約のため、スマートカード用のアプリケーションは、典型的 には低レベルプログラミング言語(例えばアセンブリ言語)により記述され、メ モリに格納される。 ICカードは、ロバスト性、タンパー耐性、格納データの可搬性が確保されな ければならない。ICカードは、そのサイズの小型性、ICカードならではのハ ード的とソフト的なセキュリティの高さによって、パーソナルコンピュータ中の もっともパーソナル用途のものと位置付けられている。 ICカードおよびICカードのマイクロコントローラの最重要なタスクは、カ ードに記録されたデータの保護である。それゆえ、1974年のICカードの発 明以来、セキュリティを理由にICカード技術は閉鎖的にガードされてきた。I Cカードは、最初にフランスの銀行によりデビットカード(即時決済方式カード )として利用された。このアプリケーションでは、ICカードをベースとした金 融関係のトランザクションが認証されるためには、ICカード利用者は当該IC カードを所有しているという事実に加え、さらにICカード内に記録されている 4桁の個人認証番号(PIN)を示さなければならない。紛失または盗難された ICカードのPIN番号を割り出すために役立ちうるあらゆる情報は、公開され ないように秘密に付されている。事実、誰もどんな情報がPIN番号割り出しに 役立つ情報か分からないし、ICカードに関するすべての情報は秘密にされてい る。 セキュリティを考慮して、ICカード用のアプリケーションは独自仕様で記述 されている。例えば、各々のアプリケーションは典型的には、特定のカード所有 者、特定のIDにより識別される。アプリケーションがアセンブリ言語などの低 レベルプログラミング言語で記述されているため、アプリケーションは特定種類 のマイクロコントローラを対象として記述されている。低レベルプログラミング 言語の性質により、権限のないアプリケーションであってもICカード内の格納 データにアクセスすることができる。ICカード用に記述されたプログラムは特 定のID識別子により識別されているので、2つの主体が同じプログラミング機 能を利用を所望した場合、ICカードのマイクロコントローラ上にアプリケーシ ョンの該当部分が2つコピーされてしまうことになる。 ICカードシステムは、ずっとクローズドシステムとして発展してきた。IC カードは、特定端末のアプリケーションとともに動作するように手作りされた専 用アプリケーションを含んでおり、ICカードが使用されるときのセキュリティ チェックは、主にカードアプリケーションと端末アプリケーションが対応するも のであるかの確認およびICカード上のデータが有効であるかの確認により行な っていた。 ICカードの利用が広まるにつれて、利用者がICカードアプリケーションご とに異なるICカードを持ち歩くことを敬遠することが明らかになってきた。そ れゆえ、単一プロバイダのICカードを用いた多目的共用アプリケーションが提 供され始めている。例えば、現金自動処理装置(ATM)用のカード、デビット カードが、1枚のICカードプラットフォームが共用される。しかしながら、端 末とカードのすべてのアプリケーションが、他のプロバイダに関する正確な情報 のもと、単一のプロバイダによって作成されるため、依然クローズドシステムと なっていた。 このように、ICカードに関する情報、ICカードと端末との通信方法および プログラム方法に関し、公開された情報が少なく、ICカード用の汎用アプリケ ーションの広がりを阻害していた。しかし、公衆デジタルネットワーク網(例え ば、インターネット、ワールドワイドウェブ)の出現により、ICカード用のア プリケーションに対する新たな領域が開かれた。特に、公衆デジタルネットワー ク網の広がりにより、他のプロバイダに関する明確な知識なしに、かつICカー ドのセキュリティ低下の可能性を許すことなく、ICカード上に新しいアプリケ ーションのロードをすることが必要となった。しかしながら、低レベルプログラ ミング言語を用いてプログラミングされた従来のICカードを用いた場合は上記 課題解決の実現が困難であった。 発明の開示 一面において、本発明は、端末で利用されるICカードを開示する。本発明の ICカードは、インタプリタを格納するメモリと、高級プログラミング言語形式 を持っているアプリケーションとを含んでいる。ICカードのプロセッサは、ア プリケーションをインタプリタ処理するためのインタプリタを利用するように構 成され、また、端末と通信するためのカードの通信部(communicator)を利用す るように構成されている。 本発明の優位点として、以下のものが含まれている。本発明によれば、スマー トカードのセキュリティ低下を招くことなく新しいアプリケーションのダウンロ ードが可能となる。これらアプリケーションは、様々な会社により提供され、様 々な端末装置を利用して様々なタイミングでロードされうる。アプリケーション は、Java仮想マシンにより提供されるセキュリティ機能により、如何なるア プリケーションコードやデータへの権限なきアクセスに対して保護されているの で、カードのセキュリティは構成されない。スマートカードアプリケーションは 、強力で主流となっているプログラム開発ツールを用いてJavaやEiffe lなどの高級プログラミング言語により作成される。新しいアプリケーションは 、ソフトマスクを施すことなく数時間により即座にプロトタイプが作成され、ス マートカードにダウンロードされる。マイクロコントローラを使用するシステム は、新しいアプリケーションのダウンロード、高レベルなプログラミング開発、 迅速なプロトタイプ作成に関して、これらの多くの優位点を得ることができる。 本発明の実装には、以下のものが含まれうる。アプリケーションの高級プログ ラミング言語形式は、クラスファイル形式を持ち、Javaプログラミング言語 形式を持ちうる。プロセッサはマイクロコントローラで良い。少なくとも一部の メモリがプロセッサに内蔵されうる。 アプリケーションは、キャラクタストリングである第2のアプリケーションか ら生成され、当該キャラクタストリングは第1のアプリケーションにおいて識別 子(例えば、整数)により表現されている。 プロセッサは、要求元(requester)(例えば、プロセッサまたは端末)からI Cカード要素(例えば、メモリに格納されているアプリケーション、メモリに格 納されたデータ、通信部)の要求を受け付けるように構成されており、要求を受 けた後、要求元のID(identification)を確認するため要求元と交信し、IDに 応じてアクセスを許すカード要素を選定する。 メモリは、各要素へのアクセス制御リストを格納している。アクセス制御リス トは、当該IDに許すアクセス型の指示情報を含み、当該アクセス制御リストに 基づいて、プロセッサは、カードアクセスに関する特定の型(例えば、データ読 み出し、データ書きこみ、データ付加、データ生成、データ消去、アプリケーシ ョン実行)を選択的に許可する。 アプリケーションは、メモリに格納された複数のアプリケーションのうちの一 つであれば良い。プロセッサはさらに、要求元から複数あるアプリケーションの うちの1つにアクセスする要求を受け付ける構成を持っており、当該要求を受け 付けた後、当該複数あるアプリケーションのうちの1つを所定のルールセットに 基づいてコンパイルするか否かを決定し、当該決定に基づいて要求元に対して当 該複数のアプリケーションのうちの1つへのアクセス許可を選択的に与える。当 該所定のルールは、当該1つのアプリケーションが所定のメモリ領域へアクセス できるか否かを決定する情報を提供する。プロセッサはさらに、要求元主体を認 証できるように構成され、当該主体に応じて複数アプリケーションのうち1つの アプリケーションに対するアクセスを許可する。 プロセッサは、IDを認証するために通信部を介して端末と交信し、IDが認 証されたか否かの決定を行ない、当該決定に基づいて端末とICカードとの間の 通信を選択的に許可するように構成されていても良い。 通信部と端末装置は通信チャンネルを介して交信しうる。プロセッサは、プロ セッサが端末装置とICカード間の通信を許可した場合に、通信チャンネルの一 つを当該主体に割り当てるように構成されていても良い。プロセッサは、当該割 り当てた通信チャンネルに対してセッションキーを割り当て、当該割り当て通信 チャンネルを介してプロセッサと端末装置が通信するときに、当該セッションキ ーを利用するように構成されていても良い。 端末装置は、カードリーダを備え、通信部は、カードリーダとの通信コンタク トを含みうる。端末装置は、無線通信デバイスを備え、通信部は、当該無線通信 デバイスと通信するための無線受信部を備えうる。端末装置は、無線通信デバイ スを備え、通信部は当該無線通信デバイスと通信するための無線送信部を備えう る。 一面において、本発明は、ICカードおよび端末において使用される方法を開 示する。当該方法には、インタプリタと少なくとも1つの高級プログラミング言 語形式で記述されたアプリケーションとをICカードのメモリに格納する方法が 含まれている。ICカードのプロセッサは、少なくとも1つのアプリケーション を実行するためにインタプリタを使用し、プロセッサと端末装置間の通信を行な うときにはICカードの通信部を使用する。 一面において、本発明は、スマートカードを開示する。スマートカードは、J avaインタプリタを格納するメモリと、Javaアプリケーションをインタプ リタ実行するため当該インタプリタを利用できるように構成されているプロセッ サを含んでいる。 一面において、本発明は、半導体基板と当該基板上に形成されたメモリを備え たマイクロコントローラを開示する。プログラミング言語インタプリタは、当該 メモリ上に格納され、セキュリティチェックを実行するように構成される。中央 演算処理装置は、当該基板上に形成され、メモリと結合されている。 本発明の実装においては、以下のものが含まれうる。インタプリタは、Jav aバイトコードインタプリタであっても良い。セキュリティチェック処理は、フ ァイアウォールを確立すること、また、サンドボックスセキュリティモデルを実 現することを含みうる。 一面において、本発明は、ICカード上のメモリに格納されたプログラミング 言語インタプリタを備えたスマートカードを開示する。インタプリタは、セキュ リティチェック処理が実行できるように構成されている。ICカード上の中央演 算処理装置は、メモリと結合されている。 一面において、本発明は、端末装置と共に使用されるICカードを開示する。 ICカードは、通信部と、インタプリタと第1のアプリケーション用の第1の命 令セットを格納するメモリとを含んでいる。第1の命令セットは、第2のアプリ ケーションの第2の命令セットから変換されたものである。ICカードは、プロ セッサを含んでおり、当該プロセッサは、メモリに結合され、また、第1の命令 セットを実行するためのインタプリタを使用でき、通信部を介して端末と通信で きるように構成されている。 本発明の実装においては、以下のものが含まれうる。第1、第2アプリケーシ ョンの双方、またはそのうち1つは、クラスファイル形式を持っている。第1、 第2アプリケーションの双方、またはそのうち1つは、Javaバイトコードな どのバイトコードを含んでいる。第1の命令セットは、第2の命令セットの汎用 化バージョンまたは番号を付け換えたバージョンでありうる。第2の命令セット は、定数参照値(constant references)を含み、第1の命令セットは、第2の命 令セットの定数参照値に代入される定数を含んでいる。第2の命令セットは、参 照値を含みうるもので、当該参照値は、第2の命令セットから第1の命令セット へ変換される間にその格納場所(location)が移動しうるものである。第1の命令 セットでは参照値の格納場所が移動した後、当該参照値が再び結び付けられる。 第1の命令セットは、仮想マシンの第1の型のバイトコードを含みうるもので、 第2の命令セットは仮想マシンの第2の型のバイトコードを含みうる。ここで、 上記の第1の型は第2の型とは異なるものである。 一面において、本発明は、ICカード上で使用される方法について開示する。 本発明の方法は、第2のアプリケーションの第2の命令セットを第1のアプリケ ーションの第1の命令セットに変換し、ICカードのメモリに第1の命令セット を格納し、第1の命令セットを実行するためICカード上のインタプリタを利用 するものである。 一面において、本発明は、端末装置と共に使用するICカードを開示する。I Cカードは、端末装置と通信するように構成された通信部と、キャラクタストリ ングを持つ第2のアプリケーションから生成された第1のアプリケーションを格 納するメモリを備えている。キャラクタストリングは、第1のアプリケーション において識別子によって表わされている。ICカードは、メモリに結合されたプ ロセッサを含んでいる。 一面において、本発明は、ICカードと端末装置において用いる方法を開示す る。本発明の方法は、第2のアプリケーションを処理して第1のアプリケーショ ンを生成する方法を含んでいる。第2のアプリケーションはキャラクタストリン グを持っている。キャラクタストリングは、第2のアプリケーションの識別子に より表わされている。インタプリタと第1のアプリケーションは、ICカードの メモリに格納されている。プロセッサは、第1のアプリケーションのインタプリ タ実行のためインタプリタを使用する。 一面において、本発明は、アプリケーションとインタプリタを格納するメモリ を含むマイクロコントローラを開示している。ここで、アプリケーションは、ク ラスファイル形式を持っている。マイクロコントローラのプロセッサは、メモリ に結合され、アプリケーションのインタプリタ実行のためインタプリタを使用で きるように構成されている。 本発明の実装においては、マイクロコントローラは端末装置と通信できるよう に構成された通信部を含みうる。 一面において、本発明は、ICカードにおいて利用される方法を開示している 。本発明の方法は、ICカードのメモリに第1のアプリケーションを格納し、I Cカードのメモリに第2のアプリケーションを格納し、第2のアプリケーション が第1のアプリケーションもしくは第1のアプリケーションに関連するデータの いずれにもアクセスできないように、第1及び第2のアプリケーションを相互に 隔離するためのファイアウォールを生成する方法である。 一面において、本発明は、端末装置において利用するICカードを開示してい る。ICカードは、端末装置、メモリおよびプロセッサと通信するために構成さ れた通信部を含んでいる。当該メモリはアプリケーションを格納し、それぞれの アプリケーションは、高級プログラミング言語形式を持っている。当該メモリは 、インタプリタを格納している。当該プロセッサは、メモリと結合されており、 a)アプリケーションをインタプリタ実行するためインタプリタを使用でき、b )アプリケーションを相互に隔離するためのファイアウォールを生成するためイ ンタプリタを使用でき、c)端末装置と通信するための通信部が使用できるよう に構成されている。 他の優位点および特徴は、以下の説明と特許請求の範囲の記載により明らかに されている。 図面の簡単な説明 図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は、車に用いられたマイクロコントローラの斜視図である。 好ましい実施の形態 図1を参照しつつ、好ましい実施形態を詳しく説明する。ICカード10(ス マートカードなど)は、Javaベースのマルチアプリケーション高級プログラ ミング言語および実行環境を提供するように構成されている。ICカード10は 、端末装置14の通信部12bと通信できるように構成されている通信部12a を有している。いくつかの実施形態において、ICカード10は、8ビットマイ クロコントローラ、512バイトのRAM、4KバイトのEEPROM、20K バイトのROMを持つスマートカードであり、端末装置の通信部12bは、従来 タイプのスマートカードリーダであり、端末装置14は、パーソナルコンピュー タスマートカード(PC/SC)標準仕様をサポートし、またJava開発サポ ート環境を提供できるウィンドウNTオペレーティングシステムが動作する従来 タイプのパーソナルコンピュータである。 いくつかの実施形態において、マイクロコントローラとメモリと通信部は、典 型的なクレジットカードと実質的に同じ形状を持つプラスティックカードに埋め 込まれている。他の実施形態において、マイクロコントローラとメモリと通信部 は、貴重品類(例えば、時計、指輪、ブレスレット)、車類、通信機器類(例えば 、加入者携帯モジュール(SIM)カード)、セキュリティデバイス類(例えば、暗 号モジュール)、器具類など、プラスティックカード以外の基板上に搭載される こともある。 端末装置14は、端末装置の通信部12bを用いて、Javaアプリケーショ ンをICカード10に対して取り揃えて、ダウンロードする。端末装置の通信部 12bは、ICカード10と端末装置14の間に通信チャンネルを確立すること ができる通信デバイスである。通信機器オプションとして、接触型カードリーダ 、無線周波数帯を用いた無線通信、または赤外線通信技術、シリアル通信プロト コル、パケット通信プロトコル、ISO7816通信プロトコルを用いた機器が 含まれる。 端末装置14は、また、ICカード10上で動作するアプリケーションと連携 動作することができる。いくつかのケースにおいて、目的に応じて異なる端末装 置が用いられうる。例えば、ある種の端末装置が、アプリケーションを取り揃え るために利用され、他の端末装置が、アプリケーションをダウンロードするため に利用され、また他の端末装置が多様なアプリケーションを実行するために利用 される。端末装置は、現金自動処理装置(ATMs)、販売時点管理端末(POS 端末)、入退出管理システム、有料道路料金徴収システム、アクセス管理システ ム、ICカードやマイクロコントローラと通信可能な他のシステムでありうる。 ICカード10は、ICカード10上にあるアプリケーションをインタプリタ 実行するように、カードJava仮想マシン(カードJVM)16を備えている 。 図2の例では、Javaアプリケーション20は、3つのJavaソースコー ドファイルA(Java20a)、ファイルB(Java20b)、ファイルC(J ava20c)を含んでいる。これらのソースコードファイルは取り揃えられ、 Javaアプリケーション開発環境22の中でコンパイルされる。Javaアプ リケーション20が開発環境22によりコンパイルされたとき、アプリケーショ ンクラスファイル24が生成され、また、Javaソースコード20a、20b 、20cのそれぞれに対応するクラスファイルA(クラス24a)、ファイルB( クラス24b)、ファイルC(クラス24c)が生成される。アプリケーション クラスファイル24は、ティム・リンドホルムとフランク・イェリン著書の「J ava仮想マシン仕様」アディソン-ウェズレー1996年版の第4章に記載されて いるスタンダードクラスファイル形式に従って記述されている。これらアプリケ ーションクラスファイル24は、ファイルを集約し、圧縮して単一のカードクラ スファイル27を生成するカードクラスファイルコンバータ26に渡される。カ ー ドクラスファイル27は、通常のカードローダ28によりICカード10にロー ドされる。 図3の例では、カードクラスファイルコンバータ26は、クラスファイルのポ ストプロセッサであり、標準Javaクラスファイル形式にコード化されたクラ スファイル24を処理し、オプションとしてIDインプットマップファイルのス トリング30を利用し、Javaカードクラスファイル27をカードクラスファ イル形式で生成する。上記のカードクラスファイル形式の1つを、後述する付属 ドキュメント(Appendix)Aにおいて示している。さらに、いくつかの実施形態に おいて、カードクラスファイルコンバータ26は、カードクラスファイルコンバ ータを引き続き使用するための入力として利用されるIDアウトプットマップフ ァイルのストリング32を生成する。 いくつかの実施形態において、IDマッピングのストリングが、以前に生成さ れたカードクラスファイル(マルチプルクラスファイルが同一のストリングを参 照している場合)と一致するように、カードクラスファイルコンバータ26は、 以前に定義されたインプットマップファイルのストリング30からIDマッピン グのストリングを受け入れる。このようなファイルがない場合、IDはカードク ラスファイルコンバータ26から生成される。付属ドキュメントBは、IDイン プットマップファイルのストリング30とアウトプットマップファイルのストリ ング32を生成する実現可能な方法の1つを示し、例を通じてマッピングの様子 を示している。 図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、2 4b、24cのクラスコンスタントプール42の集合から生成される。カードク ラスとフィールド生成と参照インタフェースとメソッドに関する情報48は、全 てのアプリケーションクラスファイル24a、24b、24cのクラスとフィー ルド生成と参照インタフェースとメソッドに関する情報43の集合から生成され る。この実施形態のカード属性情報49は、全てのアプリケーションクラスファ イル24a、24b、24cの属性情報44の集合のコード属性のみから生成さ れる。 カード内でのダイナミックリンキングを避けるため、アプリケーション24か らJavaクラスファイル24a、24b、24cをまたがって配布されるすべ ての情報は、図5に示すフローチャートに示されたプロセスにより、1つのカー ドクラスファイル27内に隠蔽されている。まず、処理される第1のクラスファ イルとして選択される(51a)。コンスタントプール42は、以下の方法により コンパクト化される(51b)。Javaクラスファイル24aにおいて参照され るすべてのオブジェクト、クラス、フィールド、メソッドは、クラスファイル2 4aのコンスタントプール42にあるストリングを利用することにより、特定さ れる。カードクラスファイルコンバータ26は、Javaクラスファイル24a にあるコンスタントプール42をコンパクト処理し、最適化したものとする。コ ンパクト処理は、クラスファイルコンスタントプール42にある全てのストリン グを整数にマッピング処理することにより達成される(当該整数の大きさはマイ クロコントローラと採用アーキテクチャに依存する)。この整数が、ID識別子 として参照される。各ID識別子は、アプリケーション20の特定オブジェクト 、クラス、フィールド、メソッドをユニークに特定する。このように、カードク ラスファイルコンバータ26は、Javaクラスファイルコンスタントプール4 2のストリングを、対応するユニークなID識別子に置き換える。付属ドキュメ ントBは、ハロースマートカードJava(HollowSmartCard.java)というアプリ ケーション例を、以下の本アプリケーションのクラスファイルのコンスタント プールに見られるストリングに対応するID識別子を説明するテーブルと共に示 している。ID識別子は、本実施形態では16ビットの符号無し整数として使用 されている。 次に、カードクラスファイルコンバータ26は、入力されたJavaクラスフ ァイル24aのコード属性に、未サポートの部分51Cがあるか否かをチェック する。カードJVM16は、付属ドキュメントCに示すように、Javaバイト コード全体のうちのサブセットのみサポートしている。このため、カードクラス ファイルコンバータ26は、未サポートのバイトコードがJavaクラスファイ ル24aのコード属性の中にあるか否かをチェックする。もし、未サポートのバ イトコードが見つかった場合52は、カードクラスファイルコンバータはエラー フラグを立て、変換53を停止する。付属ドキュメントDにおいて“A”とマー クされたプログラムコードフラグメントは、これら未サポートのバイトコードが 如何に検出されるかを示している。他のレベルのチェックは、標準Java開発 環境22の要求に応じて、アプリケーション20は“-g”フラグとともにコン パイルして実行される。上記したJava仮想マシン仕様に基づいて、このオプ ション処理は、クラスファイル24aのローカル変数テーブル属性中にあってJ avaアプリケーション20において使用される変数に関する情報を定めるため にJavaコンパイラを必要とする。カードクラスファイルコンバータ26は、 Javaクラスファイル24aがJavaカードによりサポートされていないデ ータ型を参照しているか否かをチェックするために、この情報を使用する。 次に、カードクラスファイルコンバータ26は、Javaクラスファイル24 aのうちインタプリタ実行に必要とされないすべての不必要な部分を破棄する。 Javaクラスファイル24aは、Javaクラスファイルの属性セクション4 4のクラスファイル中のバイトコードに含まれている情報を格納する。ソースフ ァイル、定数値、例外処理、ライン番号テーブル、ローカル変数テーブルなどの カードJVMによるインタプリタ実行に必要とされない属性情報は、安全な方法 により破棄される45。結局、保持される属性は、コード属性のみとなる。コー ド属性は、Javaクラスファイル24aのメソッドに対応するバイトコードを 含んでいる。 バイトコード54の変更処理は、クラスファイルのそれぞれのメソッドのコー ド属性情報44の検査処理および、カードクラスファイルのコンスタントプール (card class file constant pool)47のエントリを反映するJavaクラスフ ァイルコンスタントプール42のエントリを参照するバイトコードのオペランド の変更処理を含んでいる。いくつかの実施形態において、バイトコードも以下に 説明されるように変更される。 バイトコード54の変更処理は、図6のフローチャートにより説明されるよう に、5つのパス(2つのオプションパスもある)を含んでいる。オリジナルバイ トコード60は、処理中のJavaクラスファイル24aのコード属性44中に 見られる。第1のパス61は、オリジナルバイトコードのすべてのジャンプとそ のジャンプ先を記録する。後続のバイトコードの変換において、いくつかのシン グルバイトコードは、デュアルバイトもしくはトリプルバイトに変換される。図 7は、バイトコードILOAD0が2つのバイト、バイトコードILOADと引 数0に置きかえられる例を示している。この置き換え処理が実行された場合には 、コードサイズが変更されることとなり、影響を受けるすべてのジャンプ先の調 整が要求される。それゆえ、これらの変換が実行される前に、オリジナルバイト コード60は解析され、あらゆるジャンプバイトコードと、ボジションと行き先 のノート(note)が調べられる。付属ドキュメントDの中で“B”でマークされて いるプログラムコードの部分(fragment)は、如何にこれらジャンプが記録される かを示している。 ひとたびジャンプが記録されると、オプションのバイトコードの変換処理が実 行されない場合62でも、カードクラスファイルコンバータ26は、第3のパス 64に進む。 バイトコードの変換処理が実行される場合は、カードクラスファイルコンバー タは、スペシフィックバイトコード(specific byte codes)をジェネリックバイ トコード(generic byte codes)に変換する。典型的には、変換されたバイトコー ドは、カードJVM16ではインタプリタ実行されないが、変換されたバイトコ ードは、当該バイトコードがカードJVM16でインタプリタ実行できる等価な バイトコードに変換されることによりサポートされる。バイトコード70は、セ マンティ ック的に等価であるが異なるバイトコード72に置きかえられる。この処理は、 一般的に、ILOAD0などの短い単一のスペシフィックバイトコードをより一 般的なバイトコードへの変換処理を伴う。例えば、ILOAD0は、バイトコー ドILOADと引数0に置きかえられうる。この変換は、カードJVM16によ り変換されるバイトコード数を減らすために実行され、結果として、複雑さ及び カードJVM16に要求されるコード領域を減らしている。付属ドキュメントD の中に“C”でマークされたプログラムコード部分(fragment)は、如何にこれら の変換が実行されるかを示している。このような変換処理は、生成されるバイト コードのサイズを増やし、影響されるあらゆるジャンプの再演算を実行すること となることに注意する必要がある。 第3のパス64において、カードクラスファイルコンバータは、これら定数を 定義するために使われるストリングの削除を通じて定数参照を再構築する。図8 では、Javaクラスファイル24aのコンスタントプール42のインデックス に見られる定数18を参照するバイトコードLDC80は、BIPUSHバイト コード82に変換されている。このパスにおいて、カードクラスファイルコンバ ータ26は、カードクラスファイルコンスタントプール47内の新しいロケーシ ョンを示すJavaクラスファイルコンスタントプール42のエントリを参照す るすべてのバイトコードのオペランドを変更する。図9は、バイトコードの引数 の例を示している。インボークスタティック(INVOKESTATIC)90は、Javaク ラスファイルコンスタントプール42のエントリを参照しているが、当該エント リはカードクラスファイルコンスタントプール47内の新しいロケーションを反 映するように変更されている。変更されたオペランド94は、この変換処理を示 している。付属ドキュメントDの中に“D”でマークされたプログラムコード部 分は、如何にこれら変換が実行されるかを示している。 ひとたび、定数参照がリンク付けされると、オプションのバイトコード変更処 理が実行されない場合は、カードクラスファイルコンバータは、最後の第5のパ ス67に進む。オプションバイトコード変更処理がされた場合は、カードクラス ファイルコンバータは、オリジナルバイトコードを、利用されている特定のカー ドJVM16でサポートできる異なるバイトコードセットに変換する。1つの想 定される変更処理は、オリジナルバイトコード60をカードJVM16のバイト コードにリナンバリングする処理である(図10参考)。このリナンバリング処理 は、オリジナルバイトコード60のバイトコード100をリナンバリングバイト コード102へ変換する処理である。値21により識別されるバイトコードIL OADは、値50によって識別されるようにリナンバリングされる。この変更処 理は、カードJVM16の中での型テスト(第3パスのチェックとしても知られ ている)を最適化するように実行される。付属ドキュメントDの中で“E”マー クで示されるプログラムコードの部分は、この実施形態の実装を示している。こ の変更処理は、カードJVM16がバイトコードをインタプリタ実行するために 必要となるプログラム領域を減らすために実行される。本質的に、この変更処理 は、似通ったオペランドを持つバイトコードが同じグループになるようにバイト コードをカードJVM16バイトコードにグループ分けし、カードJVM16バ イトコード間にギャップが生じないようにする。この処理により、カードJVM 16が、効率的にカードJVM16バイトコードと有効な型のチェックが実行で きる。 いくつかの実施形態において、図11に示すように、カードクラスファイルコ ンバータは、オリジナルバイトコード60を異なる仮想マシンアーキテクチャ用 に用意された異なるバイトコードセットに変換する。ワードスタック114で利 用できるように生成されたJavaバイトコードILOAD112は、バイトス タック118で利用できるようにカードJVM16のバイトコードILOADB 116に置きかえられる。ワードスタック114のエレメントは、4バイトのス タック領域の割り当てを必要とし、バイトスタック118のエレメントは1バイ トのスタック領域を必要とする。しかし、このオプションは、実行処理速度を増 すことができるが、オリジナルバイトコードの状態で得ることができたセキュリ ティ特性を失うというリスクを負う。 先行するステップ63、ステップ64またはステップ66では、バイトコード 60のサイズが変更されうるので、カードクラスファイルコンバータ26は影響 されるあらゆるジャンプを再リンク67しておかなければならない。そこで、ジ ャンプ処理は、カードクラスファイルコンバータ26の第1ステップ61におい て記録され、ジャンプ先を適当な値に固定することで調整を実行する。付属ドキ ュメントDの中で“F”でマークされたプログラムコードの部分は、如何にこれ らジャンプの固定が実行されるかを示している。 この段階で、カードクラスファイルコンバータは、オリジナルバイトコード6 0と等価であるバイトコード68を生成し、ロードできる状態に用意できた。こ れにより、Javaクラスファイル24aをカードクラスファイル27への変換 が完了する。 図5に戻り、処理するべきクラスファイル24が残っている場合55には、当 該残っているそれぞれのクラスファイルに対してステップ51a、51b、51 c、52、54を繰り返して実行処理する。カードクラスファイルコンバータ2 6は、処理されて生成されたクラスファイル24のマップと変更したバイトコー ドを収集56し、カードクラスファイル27を生成する57。もし必要であれば 、カードクラスファイルコンバータ26は、IDアウトプットマップファイル3 2のストリングを生成する。これには、変換処理中にJavaクラスファイル2 4のコンスタントプール42に対応するストリングとして割り当てられるすべて の新しいID識別子のリストを含んでいる。 図12を参照して説明する。端末装置14にあるカードローダ28は、ISO 7816規格のコマンドを利用して、カードクラスファイルを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カードアプリケーションを選択して速やかに実行でき、カ ードリセットができるコマンドをサポートしている。 図13に示すように、ローディング・実行制御部120からリセットコマンド を受け取るか、実行コマンドを受け取ると、カードJava仮想マシン(カード JVM)16は、選択されたJavaカードアプリケーション126Zの選択さ れたクラスの所定のメソッド(例えば、メインメソッド)で実行する。カードJ VM16は、Javaカードアプリケーション126Zが、カードオペレーティ ングシステム122にアクセスできるようにし、付属ドキュメントFに示すよう に、I/O、EEPROMサポート、ファイルシステム、アクセス制御、他のネ イティブJavaメソッドを利用するシステム機能の利用を可能とする。 選択したJavaカードアプリケーション126Zは、端末装置14との通信 チャンネルを確立するための通信部12aを利用して端末装置14にある適切な アプリケーションと通信する。通信部12aから端末装置14へ入力されるデー タは、端末装置の通信ドライバ132を介して端末装置14へ渡される。当該通 信ドライバ132は、通信部12aが利用する通信プロトコルが扱えるように記 述されている。当該データは、利用されているICカード10の機能の規定が記 述されたICカードドライバ134に渡され、端末装置アプリケーション136 に対して高レベルなソフトウェアサービスを提供する。好ましい実施形態では、 このドライバは、PC/SCスマートカードサービスプロバイダ(SSP)ソフ トウェアである。データは、その後、端末装置アプリケーション136に渡され る。端末装置アプリケーション136は、特定のカードアプリケーション126 Zの実行処理ができるように提供されている機能を扱えるものとなっている。こ のように、コマンドとレスポンスが、端末装置アプリケーション136と選択し たカードアプリケーション126Zの間を行き来する。端末装置アプリケーショ ンは、ユーザとのやり取りにより、ユーザから入力されるコマンドを受け取り、 そのうちいくつかは、Javaカードアプリケーション126Zに渡され、ユー ザに返されるJavaカードアプリケーション126Zからのレスポンスを受け 取る。 図14に示すように、カードJVM16は、カードアプリケーション126X をインタプリタ実行するインタプリタである。カードJVMに影響を与えるマイ クロコントローラのメモリリソースは、カードROM140、カードRAM14 1、カードEEPROMにある。カードROM140は、カードJVM16とカ ードオペレーティングシステム122を格納するために利用される。カードRO M140は、ROMに固定記憶するカードアプリケーション140aとクラスラ イブラリ140bを格納するために利用される。ロード可能なアプリケーション 141a、141b、ライブラリ141cは、カードRAM141に格納されう る。カードJVM16は、カードアプリケーション141a、141b、140 aをインタプリタ実行する。カードJVM16は、カードRAMを使って、VM スタック144aとシステム状態変数144bを記憶する。カードJVM16は 、VMスタック144aにより実行される処理過程を記憶する。カードJVM1 6により生成されたオブジェクトは、RAMヒープ144c、EEPROMヒー プ146a、ファイルシステム147のいずれかに格納される。 カードJVM16により扱われるすべてのヒープは、RAMヒープ144cと してカードRAM141に格納されるか、EEPROMヒープ146aとしてカ ードEEPROM142に渡され格納される。カードRAM141は、システム スタック148の状態を記録するために使われる。システムスタック148はマ イクロコントローラのネイティブコードで記述されたルーチンによって利用され る。カードJVM16は、カードEEPROM142を利用してアプリケーショ ンデータを、EEPROMヒープ146aまたはファイルシステム147のいず れかに格納される。ファイルに格納されたアプリケーションデータは、カードオ ペレーティングシステム122のインタフェースを介して扱うことができる。こ のインタフェースは、カードROM140に格納されるクラスライブラリ140 b、またカードEEPROM142に格納されるロード可能なクラスライブラリ 141cにより提供される。インタフェースの一例を、付属ドキュメントFに示 す。カード内のアプリケーションとデータはファイアウォール機構149により 互いに隔離される。 マイクロコントローラの限られた利用可能なリソースによって動作させるため に、カードJVM16は、Javaプログラミング言語の絞り込んだサブセット を実装している。したがって、Javaアプリケーション20は、Javaバイ トコードの絞り込んだサブセットを含んだクラスファイルとしてコンパイルされ ることとなる。このサブセットにより、アプリケーションプログラマーは、絞り 込んだJavaのサブセットによりプログラムを作成することができ、現行のJ ava仮想マシンと互換性を維持することができる。カードJVM16によりイ ンタプリタ実行されるJavaバイトコードのセマンティックは、上述したJa va仮想マシン仕様により記述される。カードJVM16によりインタプリタ実 行されるバイトコードのサブセットを付属ドキュメントCに示されている。カー ドクラスファイルコンバータ26は、Javaアプリケーション20をチェック し、当該サブセットにおいて利用可能な特性(features)のみを使用するものであ るか確かめ、カードJVM16により理解され、インタプリタ実行できる形式に 変換する。 いくつかの実施形態において、カードJVM16は、異なるサブセットまたは バイトコード116の引数セットをインタプリタ実行できるようにデザインされ ている。Javaの絞り込んだサブセットは、オリジナルJavaバイトコード により提供されるセキュリティの観点、または、主流のJava開発ツールとの 互換性の観点からは好ましくないが、異なるバイトコードセットを使用すること は、いくつかの処理性能の改善をもたらしうる。 すべてのカードJVM16のアプリケーション126は、クラスとクラスのメ ソッドにより定義されるエントリポイントを持っている。エントリポイントは、 IDインプットマップ30のストリングとしてマッピングされ、カードクラスフ ァイルコンバータ26により割り当てられる。Javaアプリケーション20内 のクラス、メソッド、フィールドは、カードクラスファイルコンバータ26によ りID識別子が割り当てられる。例えば、メインアプリケーションクラスに対応 するID識別子は、F001として定義され、“main( )V”などのメインメソッ ドに対応するID識別子は、F002として定義される。 カードJVMの実行アーキテクチャ全体は図15のフローチャートに記述され ている。カードJVMにおける実行は、実行制御120において開始され、実行 するカードアプリケーション126Zを選択する。カードJVM16のカードア プリケーションでインタプリタ処理されるエントリポイント(メソッド)を見つ け出し、割り当てる(152)。カードJVM16は、メソッドをインタプリタ処 理する(153)。インタプリタ処理がうまく成功すると(154)、カードJVM 16は成功を報告し(155)、実行制御120に制御を返す。インタプリタ処理 153において、カードJVM16が処理できないエラーや例外処理(典型的に は、リソース制限、セキュリティ違反)が発生すると、カードJVMは停止し1 56、端末装置14に適切なエラー報告を行なう。 カードJVM16の本質的部分は、バイトコードの実行を処理するサブルーチ ンである。このサブルーチンは、図16により示されている。与えられたメソッ ド160は、バイトコードを当該メソッド中で実行する。サブルーチンは、メソ ッドのパラメタが準備されると開始される(161)。この処理は、VMスタック 144aポインタおよびVMスタック144aフレームリミットの設定処理、メ ソッドの第1のバイトコードのプログラムカウンタの設定処理を含む。 次に、メソッドフラグがチェックされる(162)。もし、メソッドのフラグが ネイティブであると、メソッドは実際にネイティブメソッドコード(マイクロコ ントローラのネイティブプロセッサコードで記述されたサブルーチン)をコール する。この場合、カードJVM16は、実行効率の高いコールを用意し(163) 、ネイティブコードサブルーチンに戻る。ネイティブメソッドのパラメタは、直 接またはシステムスタック148を介してVMスタック144aに渡される。適 切なセキュリティチェックが実行され、ネイティブメソッドサブルーチンがコー ルされる。ネイティブメソッドサブルーチン処理の結果(もし結果があれば)は 、次の実行処理されるバイトコードがアクセスできるようにVMスタック144 aに入れられる。 次に、カードJVM16のディスパッチループに入る(164)。バイトコード ディスパッチループは、それぞれのバイトコードの実行準備、実行、終了処理を 行なう。メソッド160におけるバイトコードのインタプリタ処理が終了した とき、またはカードJVM16においてリソース制限、セキュリティ違反が発生 した場合、ループ処理が終了する。 先行処理されるバイトコードが、分岐処理165を必要としている場合、カー ドJVM16は分岐処理の準備をする(165a)。次のバイトコードが検索され る(165b)。それぞれのバイトコードを処理する処理コストを低く抑えるため 、バイトコード引数、長さ、型などの多くの共通する要素が抽出され、格納され る。 プログラミング言語のセキュリティモデルによって提唱されているセキュリテ ィを構築するため、クラスファイルのバイトコードは、当該モデルの構成内容を 確認して決定されなければならない。これらのチェックは典型的に、公知である バイトコードベリファイアに関するプログラムにより実行される。これらバイト コードベリファイアはJava仮想マシン仕様に記述される4つのパスを実行処 理する。バイトコードベリファイアにより保証されるランタイムセキュリティを 提供するため、カードJVM16はベリファイアの第3パスおよび第4パスに含 まれるチェック処理を実行する。カードJVM16によりインタプリタ処理され たバイトコード60のセキュリティが保証されれば(ほとんど不可能であるが)、 このチェック処理は、カードJVM16によって省略できる。最小限の処理とし て、オブジェクトリファレンスが偽物ではなく、VMスタック144aとローカ ル変数境界が監視できる限り、コードセキュリティが維持される。この処理には 、実行処理されたバイトコードに関するVMスタック144aの状態のチェック 処理が要求される。 プログラミング言語のセキュリティモデルを強化するため、付属ドキュメント Gに示す256バイトテーブルが生成される。このテーブルは、バイトコード番 号によりインデックス化されている。このテーブルは、バイトコードインデック スに関する型情報とレングス情報を含んでいる。コード化された最初の5ビット は、型を表わし、最後の3ビットはレングスを表わしている。バイトコードの型 情報とレングス情報は、バイトコード番号によりテーブルから直接インデックス 化される。この型情報とレングス情報は、付属ドキュメントHに示すチェック処 理に用いられる。付属ドキュメントHにおいて、チェック処理は、付属ドキュメ ントGのテーブルから得られるレングス情報と型情報のデコード処理により開始 される。レングス情報は、プログラムカウンタをカウントアップするために利用 される。型情報は、実行しようとするバイトコードを扱うVMスタック144a のデータ型が正しいものであることを保証するための実行前チェックに利用され る。テーブル格納に用いる256バイトのROMは、カードJVM16上で実行 するオリジナルJavaバイトコードに割り当てられ、カードにロードされるJ avaクラスファイルに要求される変更を最小限にする。追加Javaバイトコ ードは、比較的適切にテーブルエントリを更新するのが簡単であるので、サポー トしやすい。 他の実施形態において、図10に示すように、メソッドにおけるJavaバイ トコードは、再配置処理において付属ドキュメントHのテーブルに格納されるバ イトコード型情報、レングス情報を暗示するようにリナンバリングされる。付属 ドキュメントHを参照して説明する。その結果、VMスタック144aの状態と 処理されたバイトコードに関して行なわれるチェック処理は、テーブルルックア ップを含む必要はない。チェック処理は、付属ドキュメントIに示されるように 単純比較のセットにより実行される。この実施形態は、256バイトのテーブル を設けないので、ROM容量の面で有利である。しかし、新たなバイトコードを 、サポートするバイトコードセットに加えることは、注意して行なう必要がある 。なぜなら新たなバイトコードをサポートするバイトコードの暗示ナンバリング 処理スキーム(implicit numbering scheme)に適合させる必要があるためであ る。 他の実施形態において、カードJVM16は、実行スピードを考慮してあらゆ るセキュリティチェックを実行しないものとすることができる。この処理は、図 18のフローチャートにより示される。図18のフローチャートは、図16のフ ローチャートからセキュリティチェック処理を除いたものと同じものとなってい る。このオプションは、バイトコードのセキュリティが保証されていない場合に は、セキュリティの面からは好ましいものではない。 カードJVM16は、他のセキュリティチェックを強化する。バイトコードが ローカル変数を参照する場合、カードJVM16は、当該参照が有効なものであ るか否かをチェックし、有効でない場合はエラーを返す。参照が有効である場合 、 カードJVM16は、その後のチェック処理に用いるローカル変数の型を格納す る。VMスタック144aのポインタは、参照がまだ有効範囲にあるか否かチェ ックする。もし有効範囲にない場合は、例外処理を実行する。バイトコード番号 をチェックする。もし、サポートされていないものであれば、例外処理を実行す る。 最後に、バイトコード自体がディスパッチされる165d。カードJVM16 により変換されたバイトコードは、付属ドキュメントCにリストアップされてい る。バイトコードのセマンティックは、バイトコードのディスパッチ処理前後の VMスタック144aの状態とともに、上述のJava仮想マシン仕様に記述さ れている。いくつかのバイトコード(INVOKESTATIC、INVOKESPECIAL、INVOKENON VIRTUAL、INVOKEVIRTUALのバイトコード)は、カードJVM16にリエントリさ れ、要求する処理が開始されるサブルーチン161にエントリされる。図17は 、バイトコード実行ルーチンのフローチャートを示している。このルーチンは、 与えられたバイトコード171を実行する。カードJVM16は、バイトコード が要求するインストラクションを実行する(172)。カードJVM16は実行処 理される中でルーチン制限が発生すると(173)、エラーを返す(156)。エラ ーがカードJVM16により端末装置に返される。もし、バイトコード実行が正 常処理されると、正常(success)を返す(175)。 実行後、VMスタック144a状態を正しく設定するために結果の型が正しく 利用され、適切にVMスタック144aのデータ型のフラグ処理が行なわれる。 バイトコード情報テーブルから先行処理165bで集められたバイトコード情報 は、当該実行直後のバイトコードに関するVMスタック144aの状態を設定す るために利用される。 他の実施形態において、実行されたバイトコードに関するVMスタック144 aの出力状態の設定処理は、バイトコードがリナンバリング処理されると簡単に なる。この処理は、付属ドキュメントIによって示されている。 さらに、他の実施形態において、カードJVM16は、カードJVM16の実 行スピードを考慮して、VMスタック144aの出力状態の設定処理を省略する ことができる。このオプションは、バイトコードのセキュリティが保証されてい ない場合には、セキュリティ面から好ましいものではない。 バイトコードが実行された後、バイトコード165fは破棄される。この処理 は、引数をVMスタック144aから除去する処理を含む。ひとたび、バイトコ ード処理が完了すると、次のメソッドのバイトコード処理のループ164が繰り 返される。 ひとたび、ディスパッチループ164が終了すると、VMスタック144aの 内容がクリアされる(166)。これにより、あらゆるオブジェクトリファレンス が他のカードJVM16インボケーションに対してアクセスすることを防ぎ、カ ードJVM16のセキュリティを破ることを防いでいる。バイトコードのディス パッチループ164の終了(167)は、カードJVM16が要求されたメソッ ド実行が完了したことを意味する。 ICカード10のデータとアプリケーションを相互に隔離するために、ICカ ード10はカードJVM16が提供するファイアウォール機構149を利用する 。カードJVM16には標準パス3とパス4のベリファイアチェックが実装され ているので、アプリケーションが他のアプリケーションのデータ領域、コード領 域を参照しようとすれば検知することができ、セキュリティエラー156フラグ を立てる。例えば、通常の低レベルアプリケーションは、非参照データ型であっ ても参照データとして扱うことができて、その結果、権限のないメモリ領域への アクセスを可能とし、セキュリティ違反を起こすことができる。本発明によれば 、カードアプリケーション126Zが非参照型データを参照データとして使おう とすると、セキュリティエラー156を起こしてしまうこととなる。通常のJa vaによれば、この保護アプリケーション環境は、サンドボッスクアプリケーシ ョン−インタプリタ実行環境として規定されている。 しかし、これらファイアウォール構成は、独立した動作はしない。事実、この ファイアウォール構成は、通常のアクセス制御リストおよび暗号機構とオーバラ ップし、また、相互に強化し合う関係にあり、以下のテーブルに示されるもので ある。 これらを併せて利用することにより、ICカードのデータとアプリケーション を隔離し、カードアプリケーション126が権限を持つICカード10のリソー スのみにアクセスできるようにする。 図19に示すように、カードアプリケーション126X、126Y、126Z はカードアプリケーション126が実行されるときに特定の特権を与えられる。 例えば、これら特権は、カードアプリケーション126がどのデータファイルに アクセスでき、カードアプリケーション126がファイルシステム147におい てどの処理が実行できるかを規定するものである。カードアプリケーション12 6に認められる特権は、通常は、特定のカードアプリケーション126Zが端末 装置14を介してユーザにより開始されときに設定される。 ICカード10は、暗号ID識別認証メソッド(cryptographic identificatio n verification methods)が、ID190(例えば、190a、190b、19 0c)と関係付けられ、カードアプリケーション126を実行する特権のセット が設定される。特定のID190cのカードアプリケーション126Zとの関連 性は、カードアプリケーション126Zの実行が開始されると設定され、それゆ え図20に示すように特定の実行アプリケーション200が生成される。ID1 90は、IDトークンと関連付けられた、ユニークで読みやすいテキストストリ ングであ る。IDトークン(例えば、個人認証番号(personal identification number(PI N))、または、RSA暗号方式の秘密鍵)は、暗号方式の鍵である。 図20に示すように、特定のカードアプリケーション126Zを実行するため 、カードアプリケーション126ZのID190cは、認証されなけらばならな い。ID190cは、ID190cと関連付けられたIDトークンのデモンスト レーション知識(demonstrating knowledge)により認証される。カードアプリケ ーション126Zが実行されるためには、エージェント(例えば、カードホルダ ー、その他アプリケーションを実行したい者)は、アプリケーションのID暗号 鍵を所有していること、または知っていることを示さなければならない。 暗号鍵を所有していることをデモンストレーションする一つの方法は、単にそ の鍵自体を提示すれば良い。PIN認証方式が、この認証方式の例である。実際 に鍵自体を提示することなく暗号鍵を所有していることをデモンストレーション する他の方法は、平文を当該鍵により暗号化または復号化することができること を示せば良い。 このように、ICカード10上の特定の実行アプリケーション200は、カー ドアプリケーション126Zに加えて認証されたID190cを含んでいる。カ ードアプリケーション126は、これらの要素すべてが揃っていないと実行する ことができない。カードアプリケーション126Zは、実行するデータ処理を定 義し、権限を与えられたID190cが、どのオブジェクトのオペレーションを 実行するのかを規定する。例えば、特定のアプリケーション126Zは、特定の ID190cに関連付けられたファイルシステム147のID“C”のファイル 202のみをアクセスでき、特定のカードアプリケーション126Zは、ID体 190c以外のIDに関連付けられた他のファイル204に対してはアクセスで きない。 ICカード10は、アプリケーションとデータの隔離を確実にするための追加 ステップを採りうる。ICカード10は、3つのソフトウェア機能のステップを 備えている。認証されたIDのアクセス制御リストに関するステップ、Java ベースの仮想マシンに関するステップ、データファイルとアプリケーション実行 とコミュニケーションチェンネルを保護するワンタイムセッション暗号鍵に関す るステップである。まとめると、一つの実施形態では、これらソフトウェア機能 セットにより、当該実施形態におけるアプリケーションデータのファイアウォー ル149を提供する。以下は、それぞれのソフトウェア機能セットについて説明 し、3つのソフトウェア機能セットが、ICカード10におけるアプリケーショ ンとデータの隔離の確保のため、如何に協同しているかを示している。 アクセス制御リスト(ACL)は、アクセスが制御されて保護されているIC カード10上のそれぞれのオブジェクト(例えば、データファイルまたは通信チ ャンネル)と関連付けられている。ACL上のエントリ(例えば、特定のオブジ ェクト)は、eテュプルを参照するデータ形式である。 型、ID、許可(type:identity:permissions) 型フィールドは、以下のID(IDフィールド内)、例えば、ユーザ(ジョン スミスなど)、グループなどのID型を示している。許可フィールドは、オブジ ェクトを利用するIDが実行できる処理のリスト(例えば、読み取り、付加、更 新など)を示している。 例として、ACLエントリを持つデータファイルは、 “USER、AcmeAirlines、RAU” であるので、IDが“AcmeAirlines”であるあらゆるアプリケーションは、デ ータファイルの読み取り“R”、付加“A”、更新“U”を実行することができ る。加えて、ACLは、データファイルの生成と消去を選択的に許可できる。さ らに、ACLは、アプリケーションの実行を選択的に許可できる。 オブジェクトは実行アプリケーション200によってアクセスするときにはい つでも、アクセスは、カードJVM16により遮断でき、カードオペレーション システム122に渡され、オブジェクトに関連付けられたACLがあるかないか が決定される。もし、関連付けられたACLが存在する場合には、実行アプリケ ーション200と関連付けられたID190cがACLによりマッチングが採ら れる。もし、IDが見つからない場合、または、要求されているアクセスの型が 許可できないものである場合には、アクセスが拒否される。それ以外は、アクセ スが認められ、処理が実行される。 図13に示すように、ICカード10と端末装置14の間の単一のデータパス が形成されることによる潜在的な問題を回避するため、通信チャンネルの隔離化 が、カードアプリケーション126Zと端末装置アプリケーション136間で実 施されるワンタイムセッションキーの交換によるID認証プロセスによって達成 される。当該キー209は、後続の認証する端末装置136と認証されるアプリ ケーション126Z間のトラフィックを暗号化するために利用される。ワンタイ ムセッションキー209が設定されると、不正な端末装置アプリケーションは、 認証された端末装置14とICカード間の通信を“読み込む”ことも、認証を受 けていない処理をカードアプリケーション上で実行させるように“だます”こと もできない。 カード・端末間トラフィックの暗号化と復号化は、カードオペレーティングシ ステム122、カードアプリケーション126Z自体のいずれによっても扱うこ とができる。前者のケースでは、端末装置14との通信では、アプリケーション に対してトランスペアレント(復号可能)に暗号化されており、メッセージトラ フィックは複合化されて、アプリケーションのデータ領域に渡される。後者のケ ースでは、カードアプリケーション126Zは、セキュリティ用のエクストラ階 層を提供する暗号化、複合化を実行するか否かを選択でき、アプリケーションに より、データ生成されれば即座に暗号化しておき、当該データが利用される場面 になったときのみに複合化する。それ以外は、データが、セッションキー209 をもって暗号化されたままの状態である。 このように、アプリケーションのファイアウォールは、3つのソフトウェア機 能セットにより相互強化が図られている。データファイルは、認証されたIDア クセス制御リストにより保護されている。アプリケーション実行領域は、カード JVM16により保護されている。通信チャンネルは、ワンタイムセッションキ ー209の暗号処理により保護されている。 他の実施形態において、上記技術は、マイクロコントローラ(プロセッサ12 )で利用され、ICカード以外の各種デバイス(例えば、車のエンジン)の制御 を実行できる。これらアプリケーションにおいては、マイクロコントローラが高 級プログラミング言語の格納と実行を行なうための小規模なプラットフォーム( 例えば、半導体基板上に配置された中央演算処理ユニット、メモリ)を提供する こ ととなる。マイクロコントローラを利用する、現存するデバイスの多く、新しく 作られるデバイスは、本発明を利用して、高級プログラミング言語を用いてマイ クロコントローラのプログラムをすることができ、これらデバイスのアプリケー ションを含めることができる。 端末装置アプリケーションは、Javaアプリケーション、Javaアプレッ ト(applets)、Javaアグレット(aglets)、Javaサーブレット(servlets) 、Javaコムレット(commlets)、以下に示されるクラスファイルの結果である Javaコンポーネントと、他の非Javaプログラムなどあらゆるプログラム が含まれる。 クラスファイルは、Javaプログラムファイル以外のソースファイルを含ん でいる。Java以外のいくつかのプログラミング言語は、それぞれのソースフ ァイルからクラスファイルを生成するためのコンパイラまたはアセンブリを備え ている。例えば、プログラミング言語EIFFELは、JVMバイトコードを生 成するEIFFELコンパイラであるPIRMINカルベラ(kalberer)の“J− EIFFEL”を利用してクラスファイルを生成することができる(ウェブサイ ト:http//www.spin.ch/〜kalberer/jive/index.htm)。Ada95からJava バイトコードへのトランスレータは、以下の参考文献(Taft,S.Tucker,“Progr amming the Internet in Ada 95”proceedings of Ada Europe 96,1996)に記述 されている。ジャスミン(Jasmin)は、Javaバイトコードアセンブラであり、 クラスファイルを生成するために利用される。ジャスミン(Jasmin)は、以下の参 考文献に記述されている。“Meyer,Jon and Troy Downing,"Java Virtual Machi ne",O'Reilly,1997。クラスファイルのソースにかかわらず、インタプリタ処理 されるためのコードを生成するため、上記の記述は、Java以外の言語に適用 される。 図21に示すように、マイクロコントローラ210を含むICカード、スマー トカードは、プラスティックカード212上に搭載されている。このプラスティ ックカード212は、典型的なクレジットカードと同様の形状を持つものである 。通信部12aは、通信チャンネルを確立するための接触式パッド214か、ま たは、無線通信システムを備えている。 他の実施形態において、図22に示すように、マイクロコントローラ210は 、 携帯電話または設置型電話220に搭載され、電話にスマートカードの機能を効 率的に持たせることができる。 他の実施形態において、マイクロコントローラ210は、図23に示すように 、キーリング230に組み込まれる。これにより、キーリング230のマイクロ コントローラ210と関連付けられているIDを認識するための仕組みが装備さ れている自動車に対して、高いセキュリティのもと、アクセスすることが可能と なる。 時計や指輪などの貴重品類240は、図24に示すように、高いエルゴノミッ クス性をもってマイクロコントローラ210を埋め込むことができる。これら実 施形態は、典型的には、通信チャンネルを確立するため無線通信システムを利用 し、また、ユーザに対して最小限の手間でアクセス制御のための実装を可能とす る方法を提供する。 図25は、自動車254の電気回路サブシステム252に搭載されるマイクロ コントローラ210を示している。この実施形態では、マイクロコントローラは 、自動車へのアクセス制御処理(例えば、IDチェック、自動車のイグニッショ ンシステムの起動制御など)、無線通信による有料道路料金徴収システム、自動 車の通行位置を検知する位置決めシステム(GPS)のインタフェース提供など 、多様な目的に利用される。 本発明の特定の実施形態を説明したが、本発明の開示に基づいて、他の様々な 変更や置換が、当業者にとって明らかである。このような変更や置換は、本発明 の範疇に入るものであり、特許請求の範囲に記載された内容に基づいて、本発明 の技術的範囲に含まれる。 付属ドキュメントA(APPENDIX A) 好ましい実施形態におけるカードクラスファイル形式 カードクラスファイルは、オリジナルクラスファイルの圧縮形式である。カード クラスファイルは、オリジナルクラスファイルからJavaプログラムをインタ プリタ処理するために必要とされるセマンティック情報のみを含んでいる。オリ ジナルクラスファイルの間接参照は、コンパクト表現の結果、直接参照により置 き換えられる。カードクラスファイル形式は、以下の原則に基づいている。 標準クラスファイル形式に近づけること。 カードクラスファイル形式は、標準クラスファイル形式に可能な限り近づける べきである。クラスファイルのJavaバイトコードを変更しない。バイトコー ドを変更せず、バイトコードに対する構造的、静的な制約条件がそのままである ことを確実にする。 実装を容易にすること。 カードクラスファイル形式を、Java仮想マシンの実装を行なうものに対し て十分シンプルなものとする。異なるが等価に振舞う実装を認める。 フィージビリティ カードクラスファイル形式が、スマートカード技術に適合するためにコンパク トにされたものでなければならない。現在の技術的制約に適合し、さらに、将来 の技術革新の適合性を失わないものであること。 この記載は、「Java仮想マシン仕様“The JavaTM Virtual Machine Speci fication”[1](以下、レッドブックと呼ぶ)」というタイトルの本の第4章「ク ラスファイル形式」に基づいている。このドキュメントは、レッドブックに記載 された標準クラスファイル形式に基づいているので、ここでは、レッドブックに はない情報のみ提示する。レッドブックは、すべての規則の最終的な権原と して扱われる。 標準クラス形式との主な違いは、以下である。 コンスタントプール(constant pool)が、16ビットのID識別子のみを含む ように最適化され、可能な限り間接参照が直接参照に置き換えられている。 オリジナルクラスファイルの属性情報は、削除され、または、再グループされ ている。 Javaカードクラスファイル形式(Java Card class File Format) 当該セクションは、Javaカードクラスファイル形式を記載している。 各カードクラスファイルは、1つまたは複数のJava型を含んでいる。この 型は、クラスまたはインタフェースである。カードクラスファイルは、8ビット バイトストリームにより構成される。16ビット、32ビット、64ビット量デ ータは、それぞれ、連続する8ビットバイトデータを2つ、4つ、8つ読み込む ことにより構成される。マルチバイトデータは、常に、ビックエンディアンで格 納され、大きなバイトから順になっている。Javaでは、この形式は、java.i o.Datainput、java.io.DataOutputのインタフェース、java.io.DatainputStream 、java.io.DataOutputStreamなどのクラスによりサポートされている。Java クラスファイルデータを表わすデータ型と同じセットを定義して用いる。U1、 U2、U4の型は、それぞれ、割り当てられていない1、2、4バイト量を表わ している。Javaにおいて、これら型は、リードアンサインドバイト(readUns ignedByte)、リードアンサインドショート(readUnsignedByte)、“java.io.Data input”のインタフェースのリードイント(readint)などのメソッドにより読み込 みされる。カードクラスファイル形式は、C言語のような構造分類記号法で書か れている擬構造を使用して表現される。Javaカード仮想マシンのクラスとク ラスインスタンスのフィールドの混乱を避けるために、カードクラスファイル形 式を記述する構造内容はアイテムと呼ばれる。C構造のフィールドとは異なって 、連続したアイテムはカードクラスファイルの中にパディングもアライメントも なしで連続して格納されている。変数サイズのアイテムから成る変数サイズのテ ーブルは、いくつかのクラスファイル構造で使用されるている。C言語のような テーブルアイテムを 参照する配列シンタックスを使っても、テーブルが可変サイズ構造のストリーム であるという事実は、テーブルインデックスをテーブルのバイトオフセットとし て直接変換できることを意味する。ここで配列と呼んでいるデータ構造は、文字 通り配列構造を持っている。カードクラスファイル構造と標準のクラスファイル 構造を見分けるために、大文字を加える。例えば、オリジナルのクラスファイル の中のfield infoをカードクラスファイルの中では、FieldInfoに改名する。 カードクラスファイル(Card Class File) カードクラスファイルは単一のCardClassFile構造を含んでいる: 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_P ool[0]である。インデックス0からconst_sizeまでの各constant_Poolのテーブ ルのエントリは、可変長の構造()を持っている。 class[] クラスは、カードにロードされるアプリケーションを構成するmax_classクラ スのテーブルである。 コンスタントプール(Constant Pool) すべてのconstant_poolのテーブルのエントリには,以下の一般形式がある: constant_poolテーブルの中の各アイテムは、cp_infoエントリの種類を示す1バ イトのタグで始めなければならない。info配列の内容はタグの値に従って異なる 。有効なタグとそれらの値はレッドブックで指定されたものと同じである。それ ぞれのタグバイトの後には、特定の定数に関する情報を与える2またはそれ以上 のバイトが続く。追加情報の形式はタグ値に従って異なる。 現時点で含まれる必要があるのタグは、CONSTANT_Class、CONSTANT_FieldRef、C ONSTANT_MethodRefおよびCONSTANT_InterfaceRefのみである。そのままの形で追 加される他のタグのサポートは、仕様書に含まれている。 CONSTANT_Class CONSTANT_Class_info構造は、クラスまたはインタフェースを表現するために使 用される: 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,メソッド,およびインタフェースメソッ ドは、同様の構造によって表される: これらの構造のアイテムは以下の通りである: tag CONSTANT_FieldrefInfo構造のタグアイテムは、CONSTANT_Fieldref(9)の値を持 っている。 CONSTANT_MethodrefInfo構造のタグアイテムは、CONSTANT_Methodref(10)の値を 持っている。 CONSTANT_Interface MethodrefInfo構造のタグアイテムは、 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エントリによって記述され る名前と型とまったく同じものである。 クラス(Class) 各クラスは固定長レコードClassInfo構造によって記述される。 この構造の形式は以下の通りである. 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[] メソッドテーブルの各値は、クラスまたはインタフェースのメソッドに対するJ ava仮想マシンのコードの完全な記述を与える可変長MethodInfo()構造を持っ ている。MethodInfo構造は、このクラスまたはインタフェース型によって宣言さ れるすべてのメソッド、インスタンスメソッド、クラス、クラス(静的)メソッ ドを表わしている。メソッドテーブルは、このクラスによって明らかに宣言され るメソッドを含むのみである。インタフェースには、単一のメソッド<clinit>、 インタフェース初期化メソッドのみがある。メソッドテーブルは、スーパークラ スまたはスーパーインタフェースから引き継がれたメソッドを表わすアイテムが 含まれていない。 フィールド(Fields) 各フイールドは、固定長レコードfield info構造によって記述されている。 この構造の形式は以下のようになっている。 FieldInfo構造のアイテムは以下の通りである: name_index name_indexアイテムの値は、有効なJavaフィールド名を表さなければならな い。 name_indexによって表されたJavaフィールド名はオリジナルクラスファイル の対応するfield_info構造で記述されるJavaフィールド名とまったく同じも のである。 signature_index signature_indexアイテムの値は、有効なJavaフィールドディスクリプタを 表さなければならない。署名(signature)インデックスによって表されるJav aフィールドディスクリプタはオリジナルクラスファイルの対応するfield_info 構造で記述されるJavaフィールドディスクリプタとまったく同じもである。 access_flags access_flagsアイテムの値は、アクセス許可を記述することに使用された変更子 のマスクとフィールドのプロパティである。access_flags変更子とそれらの値は 、access_flags変更子とオリジナルクラスファイルの対応するfield_info構造の ものと同じである。 メソッド(Methods) 各メソッドは、可変長のMethodInfo構造によって記述される。 MethodInfo構造は、Java仮想マシンのインストラクションと、単一のJav aメソッド、インスタンス初期化メソッド、クラスまたはインタフェース初期化 メソッドの補助情報を含む可変長データ構造である。 構造は、以下の形式を持つ: 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構造で記述されるJ avaメソッドディスクリプタとまったく同じものである。 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バイト境界で並べられるならば、テーブルスイッチ(t ableswitch)とルックアップスイッチ(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は排他的である。すなわち、プログラムカウンタが star_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_typcアイテムの値がゼロならば、この例外処 理ハンドラはすべての例外処理のためにコールされる。これは、最後に実装され る。 属性(Attributes) オリジナルクラスファイルの中で使用された属性は、コンパクションのために 消去されるかまたは再グループ化される。Javaバイトコードのインタプリタ 処理に必要であるどんな情報も犠牲にすることなく、事前に定義された属性であ るSourceFile、ConstantValue、Exceptions、LineNumberTableおよびLocal-Vari ableTableは消去されうる。特定のメソッドのためバイトコードを含む事前に定 義された属性Codeが、対応するMethodInfo構造に移動される。 Javaカード仮想マシンコードの制約条件(Constraints on Java Card Vir tual Machine Code) Javaカード仮想マシンコードのメソッド、インスタンス初期化メソッド, クラスまたはインタフェース初期化メソッドがカードクラスのMethodInfo構造の 配列コードに格納される。このコード配列の静的と構造的な制約条件の両方とも 、レッドブックで記述したものと同じものである。 Javaカード仮想マシンとJavaカードクラスファイル形式の制限(Limi tations of the Java Card Virtual Machine and Java Card class File Format ) Javaカード仮想マシンでの以下の制限は、Java Card Virtual Machine仕 様書のこのバージョンによって規定されている。 カードクラスファイルコンスタントプールあたり、CardClassFiIe構造()の1 6ビット定数サイズフィールドによって65535のエントリ数に制限される。 これは、単一のカードクラスファイルの総合複雑度(total complexity)に対する 内部制限として機能する。また、このカウントは、カードのアプリケーションに 利用可能なクラス階層のコンスタントプールに対応するエントリを含む。 メソッドあたりのコード量は、MethodInfo構造のインデックスのサイズによっ て65535バイトに制限される。 メソッドにおけるローカル変数の数は、MethodInfo構造()の最大ローカルアイ テムのサイズによって255に制限される。 クラスのフィールドの数は、最大フィールドのサイズとClassInfo構造()のmax sfieldアイテムによって510に制限される。 クラスのメソッドの数は、ClassInfo構造()の最大メソッドアイテムのサイズ によって255に制限される. オペランドスタックのサイズは、MethodInfo構造()のmax_stackフィールドに よって255ワードに制限される。 参考文献(Bibliography) [1]Tim Lindholm and Frank Yellin,The Java Virtual Machine Specification, Addison-Wesley,1996. 付属ドキュメントB(APPENDIX B) IDインプットとアウトプットのストリング カードJVMの訂正処理において、宣言され生成されたID識別子が正しく管 理されることは、非常に重要である。この管理は、IDインプットファイルStri ng-ID INMapの定義によって制御される。このテキストファイルは、以下に示さ れたものを基礎として、ネーム領域(namespace)の領域が何の目的を使用される かを宣言している。このマップの1つの可能なアレンジメントは、カードJVM インタプリタによる内部利用のためにいくつかのID識別子をリザーブすること ができることであり、残りはカードJVMアプリケーションに割り当てられる。 本質的には、スマートカードにロードされることになっているすべてのアプリ ケーションは自らのID識別子を、Ox4000からOx7FFFの間に割り当てる。如何な るロードされたアプリケーションも他のアプリケーションにアクセスするのは許 可されていないので、この領域は各アプリケーションが自由に利用できる。 プリロードされたクラスライブラリのためにID識別子を管理するときには注 意を要する。これらのID識別子の管理は、ID識別アウトプットファイルStri ng-ID OUTMapのオプション生成により補助される。このマップは、新しいString -ID割り付け処理(bindings)により増えて行くString-ID INMapである。これら割 り付け処理(bindings)は、カードクラスファイルコンバータのアプリケーション が終了したときに生成される。String-ID OUTMapは、カードにロードされたサポ ートライブラリとOSインタフェースのために生成される。このマップは、カー ドにロードされたサポートライブラリとOSインタフェースを使用するスマート カードのアプリケーション用のString-1D INMapとして使用される。新しいアプ リケーションを割り当てるとき、一般にこのファイルは破棄される。 例として、以下のJavaプログラム、HelloSmartCard.javaを考える。コンパ イルされると、HelloSmartCard.classのクラスファイルが生成される。このクラ スファイルは、それにクラス名、メソッドおよび型情報を表すストリングが埋め 込まれている。上記されたString-ID INMapに基づいて、カードクラスファイル コンバータは、カードクラスファイルコンバータによってID識別子が割り当て られたクラスファイル中のストリングと置き換えるカードクラスファイルを生成 する。テーブル1は、HelloSmartCard.classの定数プールの中にあるストリング を、カードクラスファイルコンバータが割り当てたID識別子とともに、リスト アップしている。いくつかのストリング(“java/lang/Object”など)は、事前割 り当てされている値(F002)であり、いくつかのストリング(“()V”など)は、新 しい値(4004)となっている。 付属ドキュメントC(APPENDIX C) 好ましい実施形態におけるカードJVMがサポートするバイトコード 好ましい実施形態においてサポートされるバイトコードに対する標準Javaバ イトコード番号 付属ドキュメントD(APPENDIX D) カードクラスファイルコンバータのバイトコード変換プロセス 付属ドキュメントE(APPENDIX E) ローディング・実行制御プログラムの例 付属ドキュメントF(APPENDIX F) 好ましい実施形態におけるカードオペレーティングシステム機能へのアクセスメ ソッド 付属ドキュメントG(APPENDIX G) バイトコード属性テーブル Javaバイトコードの型グループ分け 各バイトコードは、型に関して5ビットが割り当てられている。これは、似通 った動作をするコードをセットとしてグループ化するために使われる。一般にこ の動作は、バイトコードの型がスタック上でどのように処理されるかを反映して いるが、型0、13、14、15は、コメントセクションで定義された特定種類 のインストラクションを反映するものである。 下記のテーブルは、各インストラクション型の実行前後のスタックの状態を示 したものである。 使用する標準Javaバイトコード(再配置なし)−属性ルックアップテーブル /* *バイトコードデコード情報テーブル。これは、バイトコード型とバイトコー ド長を含んでいる。コード0から201(202のコードがある)の現時点のす べてのバイトコードをサボートしている(例、no quicks)。*/ 付属ドキュメントH(APPENDIX H) 型ごとのJavaバイトコードに行なわれるチェック処理 インストラクションのデコード。これは、次のPC(プログラムカウンティング) の長さとインストラクション型を与えるものである。 下記に基づくいくつかの先実行のチェック処理を実装する。 最後に、いくつかの後実行のチェック処理を実装する 付属ドキュメントI(APPENDIX I) 再番号づけされたJavaバイトコードに行なわれるチェック処理 インストラクションを獲得する。インストラクションの数値はインストラクショ ン型の中に暗示的に含まれている。 下記に基づくいくつかの先実行のチェック処理を実装する。 /* *インプットスタックの状態をチェックする。バイトコードをリナンバリン グし、バイトコードの値(以下、バイトコード)が正しいグループに属している か否かをテストすることにより、必要なセキュリティチェックが実行できる。最後に、いくつかの後実行のチェック処理を実装する。 サポートされたJavaバイトコードの型ごとの再配置
【手続補正書】特許法第184条の8第1項 【提出日】平成10年11月16日(1998.11.16) 【補正内容】 1命令で[16ビット、32ビット、64(訳注:当該部分は第2頁末尾部分よ り)]ビットまたはそれ以上の情報が処理できる。マイクロプロセッサとは対照 的に、マイクロコントローラは、中央演算処理装置(CPU)、メモリ、その他の 機能要素すべてを1枚の半導体基板または1つのIC回路(ICチップ)として 備えている。マイクロプロセッサが比較的大容量である外部メモリにアクセスす るのに対して、典型的なマイクロコントローラはかなり小容量のメモリにアクセ スする。典型的なマイクロコントローラは、1キロバイト〜16キロバイトの内 蔵メモリにアクセス可能であり、特に16キロバイト内蔵メモリのものが広く使 われている。 一般的には、3つの異なるタイプのメモリ、ランダムアクセスメモリ(RAM) 、リードオンリーメモリ(ROM)、電気的に消去可能なプログラマブルリードオ ンリーメモリ(EEPROM)が使われている。マイクロコントローラにおいて 、利用可能な上記各種のメモリの容量は、当該メモリに割り当て可能なICチッ プの面積容量の制限を受ける。典型的には、RAMは多くの面積を必要とし、供 給されるメモリ容量はもっとも少なくなる。ROMはもっとも少ない面積で済み 、供給容量は大きくなる。EEPROMは、RAMよりも供給容量は大きくなる が、ROMより供給容量は小さくなる。 それぞれのメモリ種類の適する用途は異なっている。ROMはもっとも安価で あるが、例えば、オペレーティングシステムのコードなど書き換えの必要のない データの記憶用途に適している。EEPROMは、印加電圧がオフされた後も保 持する必要のあるデータの記憶用途に適しているが、書き込み時間が非常に遅い 。RAMはデータ書き込み、読み出しとも高速に実行できるが、高価であり、か つ印加電圧除去により記憶データが失われてしまう。 マイクロプロセッサは、典型的には、比較的少容量のROMとEEPROMを 持ち、さらに、1〜128メガバイトのRAMを備えている。それは、1つのI Cデバイス上に何を搭載するかに関して制約がないからであり、また、EEPR OMより低コストで大容量、書き換え可能、不揮発性の記憶媒体である外部ディ スクメモリにアクセスすることが可能であるからである。しかしながら、マイク ロコントローラは、典型的には、0.1〜2.0キロバイトの小容量のRAMと 、2〜8キロバイトのEEPROMと、8〜56キロバイトのROMを備えてい る。 外部コンポーネントが少なくかつサイズが小さいため、マイクロコントローラ はスマートカードなどのICカードに広く用いられている。このようなスマート カードには、使用時にカードリーダに挿入する必要がある接触式カードや、カー ドリーダに挿入する必要のない非接触式カードなど多様な形態がある。実際に、 非接触式通信を行なうマイクロコントローラは、時計や指輪など特別な形状物に 埋め込まれることがあり、エルゴノミックス性が高くかつ魅力的な方法でスマー トカードの機能をそれら形状物に統合させている。 リソース環境の制約のため、スマートカード用のアプリケーションは、典型的 には低レベルプログラミング言語(例えばアセンブリ言語)により記述され、メ モリに格納される。 高級プログラミング言語を用いてスマートカードをプログラミングする1つの 方法は、フランスの特許出願番号9011818号、発明の名称「簡単にプログ ラムが可能なマイクロ回路用の携帯型サポート媒体および前記マイクロ回路をプ ログラムする方法(Potable support medium for an easily programmable micro circuit and programming procedure for said maicrocircuit)」、公開番号26 67171号に記載されている。しかし、この特許出願には、データセキュリテ ィに関する記載、スマートカード上のデータと情報に関する権限のないアクセス を如何に防ぐか、プログラマがJavaなどの表現豊かなプログラミング言語を 用いてスマートカード用のプログラムを作ることができるプログラミング環境を 如何に提供するか、さらに、スマートカードの実行制約条件内で動作するインタ プリタを使ってプログラムを如何に実行するかについて記載されていない。 ICカードは、ロバスト性、タンパー耐性、格納データの可搬性が確保されな ければならない。ICカードは、そのサイズの小型性、ICカードならではのハ ード的とソフト的なセキュリティの高さによって、パーソナルコンピュータ中の もっともパーソナル用途のものと位置付けられている。 ICカードおよびICカードのマイクロコントローラの最重要なタスクは、カ ードに記録されたデータの保護である。それゆえ、1974年のICカードの発 明以来、セキュリティを理由にICカード技術は閉鎖的にガードされてきた。I Cカードは、最初にフランスの銀行によりデビットカード(即時決済方式カード )として利用された。このアプリケーションでは、ICカードをベースとした金 融関係のトランザクションが認証されるためには、ICカード利用者は当該IC カードを所有しているという事実に加え、さらにICカード内に記録されている 4桁の個人認証番号(PIN)を示さなければならない。紛失または盗難された ICカードのPIN番号を割り出すために役立ちうるあらゆる情報は、公開され ないように秘密に付されている。事実、誰もどんな情報がPIN番号割り出しに 役立つ情報か分からないし、ICカードに関するすべての情報は秘密にされてい る。 セキュリティを考慮して、ICカード用のアプリケーションは独自仕様で記述 されている。例えば、各々のアプリケーションは典型的には、特定のカード所有 者、特定のID識別主体により識別される。アプリケーションがアセンブリ言語 などの低レベルプログラミング言語で記述されているため、アプリケーションは 特定種類のマイクロコントローラを対象として記述されている。低レベルプログ ラミング言語の性質により、権限のないアプリケーションであってもICカード 内の格納データにアクセスすることができる。ICカード用に記述されたプログ ラムは特定のID識別子により識別されているので、2つの主体が同じプログラ ミング機能を利用を所望した場合、ICカードのマイクロコントローラ上にアプ リケーションの当該部分が2つコピーされてしまうことになる。 ICカードシステムは、ずっとクローズドシステムとして発展してきた。IC カードは、特定端末のアプリケーションとともに動作するように手作りされた専 用アプリケーションを含んでおり、ICカードが使用されるときのセキュリティ チェックは、主にカードアプリケーションと端末アプリケーションが対応するも のであるかの確認およびICカード上のデータが有効であるかの確認により行な っていた。 ICカードの利用が広まるにつれて、利用者がICカードアプリケーションご とに異なるICカードを持ち歩くことを敬遠することが明らかになってきた。そ れゆえ、単一プロバイダのICカードを用いた多目的共用アプリケーションが提 供され始めている。例えば、 様々な端末装置を利用して[様々なタイミングでロードされうる(訳注:当該部 分は第6頁末尾部分より)」。アプリケーションは、Java仮想マシンにより提 供されるセキュリティ機能により、如何なるアプリケーションコードやデータへ の権限なきアクセスに対して保護されているので、カードのセキュリティを低下 を招くことがない。スマートカードアプリケーションは、強力で主流となってい るプログラム開発ツールを用いてJavaやEiffelなどの高級プログラミ ング言語により作成される。新しいアプリケーションは、ソフトマスクを施すこ となく数時間により即座にプロトタイプが作成され、スマートカードにダウンロ ードされる。マイクロコントローラを使用するシステムは、新しいアプリケーシ ョンのダウンロード、高レベルなプログラミング開発、即座のプロトタイプ作成 について、これらの多くの優位点を得ることができる。 本発明の実装には、以下のものが含まれうる。アプリケーションの高級プログ ラミング言語形式は、クラスファイル形式を持ち、Javaプログラミング言語 形式を持ちうる。プロセッサはマイクロコントローラで良い。少なくとも一部の メモリがプロセッサに内蔵されうる。 アプリケーションは、キャラクタストリングである第2のアプリケーションか ら生成され、当該キャラクタストリングは第一のアプリケーションにおいて識別 子(例えば、整数)により表現されている。 プロセッサは、要求元(requester)(例えば、プロセッサまたは端末)からI Cカード要素(例えば、メモリに格納されているアプリケーション、メモリに格 納されたデータ、通信部)の要求を受け付けるように構成されており、要求を受 けた後、要求元のID(identification)を確認するため要求元と交信し、IDに 応じてアクセスを許すカード要素を選定する。 メモリは、各要素へのアクセス制御リストを格納している。アクセス制御リス トは、当該IDに許すアクセスタイプの指示情報を含み、当該アクセス制御リス トに基づいて、 パーソナルコンピュータスマートカード(PC/SC)標準仕様をサポートし、 またJava開発サポート環境を提供できるウィンドウNTオペレーティングシ ステムが動作する従来タイプのパーソナルコンピュータである。 いくつかの実施形態において、マイクロコントローラとメモリと通信部は、典 型的なクレジットカードと実質的に同じ形状を持つプラスティックカードに埋め 込まれている。他の実施形態において、マイクロコントローラとメモリと通信部 は、貴重品類(例えば、時計、指輪、ブレスレット)、車類、通信機器類(例えば 、加入者携帯モジュール(SIM)カード)、セキュリティデバイス類(例えば、暗 号モジュール)、器具類など、プラスティックカード以外の基板上に搭載される こともある。 端末装置14は、端末装置の通信部12bを用いて、Javaアプリケーショ ンをICカード10に対して取り揃えて、ダウンロードする。端末装置の通信部 12bは、ICカード10と端末装置14の間に通信チャンネルを確立すること ができる通信デバイスである。通信機器オプションとして、接触型カードリーダ 、無線周波数帯を用いた無線通信、または赤外線通信技術、シリアル通信プロト コル、パケット通信プロトコル、ISO7816通信プロトコルを用いた機器が 含まれる。 端末装置14は、また、ICカード10上で動作するアプリケーションと連携 動作することができる。いくつかのケースにおいて、目的に応じて異なる端末装 置が用いられうる。例えば、ある種の端末装置が、アプリケーションを取り揃え るために利用され、他の端末装置が、アプリケーションをダウンロードするため に利用され、また他の端末装置が多様なアプリケーションを実行するために利用 される。端末装置は、現金自動処理装置(ATM)、販売時点管理端末(POS端 末)、入退出管理システム、有料道路料金徴収システム、アクセス管理システム 、ICカードやマイクロコントローラと通信可能な他のシステムでありうる。 全てのアプリケーションクラスファイル24a、24b、24cの属性情報44 の集合のコード属性のみから生成される。 カード内でのダイナミックリンキングを避けるため、アプリケーション24か らJavaクラスファイル24a、24b、24cをまたがって配布されるすべ ての情報は、図5に示すフローチャートに示されたプロセスにより、1つのカー ドクラスファイル27内に隠蔽されている。まず、処理される第1のクラスファ イルとして選択される(51a)。コンスタントプール42は、以下の方法により コンパクト化される(51b)。Javaクラスファイル24aにおいて参照され るすべてのオブジェクト、クラス、フィールド、メソッドは、クラスファイル2 4aのコンスタントプール42にあるストリングを利用することにより、特定さ れる。カードクラスファイルコンバータ26は、Javaクラスファイル24a にあるコンスタントプール42をコンパクト処理し、最適化したものとする。コ ンパクト処理は、クラスファイルコンスタントプール42にある全てのストリン グを整数にマッピング処理することにより達成される(当該整数の大きさはマイ クロコントローラと採用アーキテクチャに依存する)。この整数が、ID識別子 として参照される。各ID識別子は、アプリケーション20の特定オブジェクト 、クラス、フィールド、メソッドをユニークに特定する。このように、カードク ラスファイルコンバータ26は、Javaクラスファイルコンスタントプール4 2のストリングを、対応するユニークなID識別子に置き換える。付属ドキュメ ントBは、ハロースマートカードJava(HollowSmartCard.java)というアプリ ケーション例を、以下の本アプリケーションのクラスファイルのコンスタントプ ールに見られるストリングに対応するID識別子を説明するテーブルと共に示し ている。ID識別子は、本実施形態では16ビットの符号無し整数として使用さ れている。 次に、カードクラスファイルコンバータ26は、入力されたJavaクラスフ ァイル24aのコード属性に、未サポートの部分51Cがあるか否かをチェック する。カードJVM16は、付属ドキュメントCに示すように、Javaバイト コード全体のうちのサブセットのみサポートしている。このため、カードクラス ファイルコンバータ26は、未サポートのバイトコードがJavaクラスファイ ル24aのコード属性の中にあるか否かをチェックする。もし、未サポートのバ イトコードが見つかった場合52は、カードクラスファイルコンバータはエラー フラグを立て、変換53を停止する。 106.リソース制約条件セットを持ったマイクロコントローラ(10)であっ て、 メモリと、 前記メモリにロードされ、前記リソース制約条件内で動作するインタプリタ( 16)を備え、前記マイクロコントローラ(10)は、 前記インタプリタによりインタプリタ処理するために前記メモリにロードされ た少なくとも1つのアプリケーションを持ち、前記少なくとも1つのアプリケー ションが以下のプログラミング環境により生成されたもの。 a)高級言語ソースコードであるアプリケーションソースプログラミング(2 0)をコンパイル形式(24)にコンパイルするコンパイラ(22)、 b)前記コンパイラ形式(24)を前記インタプリタ(16)によりインタプ リタ処理するために最適化した最小化形式(minimized form)(27)に後処理す るコンバータ(26)。 107.前記コンパイル形式(24)が、属性情報を含み、前記コンバータ(2 6)が、前記インタプリタ(16)が必要とする属性情報を含める手段と前記イ ンタプリタ(16)が必要としない属性情報を含めない手段を備えた請求項10 6に記載のマイクロコントローラ(10)。 108.前記コンパイル形式(24)が、標準Javaクラスファイル形式であ り、前記コンバータ(26)が、入力を前記標準Javaクラスファイル形式の 入力コンパイル形式(24)として受け入れ、前記インタプリタ(16)による インタプリタ処理に適する形式の出力に変換する請求項106または107に記 載のマイクロコントローラ(10)。 109.前記コンパイル形式(24)が、オブジェクト、クラス、フィールド、 メソッドを認証するストリングの関連情報を含み、前記コンバータは、前記スト リングをユニークなID識別子(51b)にマッピング処理する手段を含む、先 行する請求項のいずれかに記載されたマイクロコントローラ(10)。 110.前記それぞれのユニークなID識別子が整数である請求項109に記載 のマイクロコントローラ(10)。 111.前記ストリングのユニークなID識別子へのマッピングは、ストリング のID識別子マップファイル(30、32)への格納である請求項109または 110に記載のマイクロコントローラ(10)。 112.前記高級言語は、特性(feature)の第1のセットとデータ型の第1のセ ットをサポートし、前記インタプリタ(16)は、前記特性(feature)の第1の サブセットと前記データ型の第1のサブセットをサポートし、前記コンバータ( 26)は、前記コンパイル形式(24)が前記特性(feature)の第1のセットの サブセットの特性(feature)のみを含んでいることおよび前記データ型の第1の セットのサブセットのデータ型のみを含んでいることをベリファイする(51c 、52)、先行するいずれかの請求項に記載されたマイクロコントローラ(10) 。 113.前記コンパイル形式(24)が、バイトコード形式であり、前記コンバ ータ(26)が、下記のステップを含む処理ステップのうちの少なくとも1つの 処理ステップを用いて、前記コンパイル形式(24)のバイトコードを前記イン タプリタ(16)によりインタプリタ処理するために適したバイトコードに変換 する手段(54)を備えた請求項109、110、111、112のいずれかに 記載のマイクロコントローラ(10)。 a)オリジナルバイトコードのすべてのジャンプ処理とそのジャンプ先を記録 する処理(61)、 b)スペシフィックバイトコードを等価なジェネリックバイトコードに、また はその逆方向に変換する処理(63)、 c)バイトコードオペランドを、IDストリングを用いた参照からユニークな ID識別子を用いた参照に変更する処理(64) d)コンパイル形式(24)のバイトコードをインタプリタ処理に適した形式 の等価なバイトコードにリナンバリングする処理(66)、 e)ステップa)、b)、c)、d)の変換処理により影響を受けるジャンプ処 理のジャンプ先アドレスに再リンク付けする処理(67) 114.前記アプリケーションプログラムが、当該コンパイル形式(24)の実 行およびインタプリタ処理のために必要とされるリソースが前記マイクロコント ローラ上で利用可能なリソースを超えるコンパイル形式(24)にコンパイルさ れた、先行するいずれかの請求項に記載されたマイクロコントローラ(10)。 115.前記コンパイル形式(24)が、多様なコンピュータプラットフォーム への移植性(portability)があるように規定された、先行するいずれかの請求項 に記載されたマイクロコントローラ(10)。 116.前記インタプリタ(16)が、さらに、アプリケーションのインタプリ タ処理中に、下記セットから選ばれた少なくとも1つの規則を含む規則セットか ら定められたセキュリティ基準に引っかかったか否かを決定するように構成され た先行するいずれかの請求項に記載されたマイクロコントローラ(10)。 前記アプリケーションが権限のないメモリ領域にアクセスすることを認めない か否か、 前記アプリケーションがアクセス権限のないマイクロコントローラのリソース へにアクセスすることを認めないか否かであり、 ここで、前記アプリケーションが、バイトコードから構成され、バイトコード の実行がセキュリティ制約条件の違反を起こさないことを確認する実行処理を少 なくとも1回先行して複数のバイトコードのチェック処理をするように構成され ているもの。 117.少なくとも1つのアプリケーションプログラムが、 前記アプリケーションのローディング処理に先立って、前記アプリケーション があらゆるセキュリティ制約条件に違反しないことを確認する処理ステップと、 セキュリティを維持してローディング処理を行なう処理ステップと、 を含んでいるプロセスにより生成されたアプリケーションである、先行するい ずれかの請求項に記載されたマイクロコントローラ(10)。 118.前記セキュリティを維持してローディング処理する処理ステップが、ロ ーディングする主体がアプリケーションをマイクロコントローラ上にロードする 許可を持つことを確認する処理ステップを含む請求項117に記載のマイクロコ ントローラ(10)。 119.前記セキュリティを維持してローディングするステップが、ローディン グキーを利用してロードされるアプリケーションを暗号化する処理ステップを含 む請求項117または118に記載のマイクロコントローラ(10)。 120.メモリと、リソース制限のセットによって動作するプロセッサを持つマ イクロコントローラをプログラミングする方法であって、前記方法が、 アプリケーションプログラム(20)を第1のプログラミング言語により入力 する処理と、 前記第1のプログラミング言語のアプリケーションプログラム(20)を前記 第1のプログラミング言語に対応する第1の中間コード(24)にコンパイルす る処理(22)であって、 ここで、前記第1の中間コード(24)が、少なくとも1つの第1の中間コー ド仮想マシンによりインタプリタ処理できるものであり、 ここで、前記マイクロコントローラをプログラミングする方法が、前記第1の 中間コード(24)を第2の中間コード(27)に変換する処理(26)であっ て、 ここで、前記第2の中間コード(27)が少なくとも1つの第2の中間コード 仮想マシン(16)によりインタプリタ処理できるもの、 である処理と、 前記第2の中間コードを前記マイクロコントローラ(10)のメモリにロード する処理と、 を備えたことを特徴とする方法。 121.前記変換処理ステップがさらに、 オブジェクト、クラス、フィールド、メソッドのIDストリングの関連付け処 理と、 それらストリングをユニークなID識別子(51b)にマッピングする処理と 、 を含む請求項120に記載のマイクロコントローラ(10)をプログラミング する方法。 122.前記マッピング処理が、ストリングを整数にマッピングする処理を含む 請求項120または121に記載の方法。 123.前記変換処理が少なくとも以下のステップのうちの1つを含む請求項1 20、121または122のいずれかに記載の方法。 a)オリジナルバイトコードのすべてのジャンプ処理とそのジャンプ先を記録 する処理(61)、 b)スペシフィックバイトコードを等価なジェネリックバイトコードに、また はその逆方向に変換する処理(63)、 c)バイトコードオペランドを、IDストリングを用いた参照からユニークI D識別子を用いた参照に変更する処理(64) d)コンパイル形式のバイトコードをインタプリタ処理に適した形式の等価な バイトコードにリナンバリングする処理(66)、 e)ステップa)、b)、c)、d)の変換処理により影響を受けるジャンプ処 理のジャンプ先アドレスに再リンク付けする処理(67)。 【図4】【手続補正書】 【提出日】平成12年2月7日(2000.2.7) 【補正内容】 (1)明細書の特許請求の範囲を別紙の通り訂正します。 (2)明細書5頁27行〜10頁28行の「発明の開示………図面の簡単な説明 」を以下のように訂正します。 「発明の開示 一面において、本発明は、マイクロコントローラ、例えば、ICカードやスマ ートカードを開示する。説明の便宜上、この発明の開示の欄に続く詳細な説明の 欄において、本発明を端末と共に用いられるICカードのアプリケーション例と して記述した。しかしながら、本発明は他のスモールコンピュータプロセッサに 関するアプリケーションに適用できるものである。例えば、マイクロコントロー ラを埋め込んだシステムなどである。 本発明のマイクロコンローラのマイクロプロセッサは、インタプリタを格納す るメモリと、高級プログラミング言語形式を持っている少なくとも一つのアプリ ケーションとを含んでいる。メモリの少なくとも一部分はマイクロプロセッサ内 に設けられている。マイクロプロセッサは、アプリケーションをインタプリタ処 理するためのインタプリタを利用するように構成されている。 本発明の優位点として、以下のものが含まれている。本発明によれば、スマー トカードやマイクロコントローラのセキュリティ低下を招くことなくスマートカ ードやマイクロコントローラを持つ他のシステムへの新しいアプリケーションの ダウンロードが可能となる。これらアプリケーションは、様々な会社により提供 され、様々な端末装置を利用して様々なタイミングでロードされうる。アプリケ ーションは、Java仮想マシンにより提供されるセキュリティ機能により、如 何なるアプリケーションコードやデータへの権限なきアクセスに対して保護され ているので、カードのセキュリティは構成されない。アプリケーションは、強力 で主流となっているプログラム開発ツールを用いてJavaやEiffelなど の高級プログラミング言語により作成される。新しいアプリケーションは、ソフ トマスクを施すことなく数時間により即座にプロトタイプが作成され、スマート カードにダウンロードされる。 マイクロコントローラが埋め込まれたシステムは、新しいアプリケーションの ダウンロード、高レベルなプログラミング開発、迅速なプロトタイプ作成に関し て、これらの多くの優位点を得ることができる。 マイクロコントローラにおいてJavaやEiffelなど高級言語を用いる 際の困難性は、インタプリタやこれら言語により作成されたコンパイル形式のア プリケーションプログラム双方がメモリを大容量に必要とすることによる。本発 明は、この困難性を、処理の一環としてコンバータをアプリケーションプログラ ムに導入することにより解決している。 本発明の実装には、以下のものが含まれうる。アプリケーションの高級プログ ラミング言語形式は、クラスファイル形式を持ち、Javaプログラミング言語 形式を持ちうる。アプリケーションはJavaバイトコードなどのバイトコード を含む。 本発明を適用したシステムは、高級プログラミング言語で記述されたアプリケ ーションソースプログラムをコンパイル形式にコンパイルするためのコンパイラ を含んでいる。本発明は、さらに、コンパイル形式からインタプリタによるイン タプリタ処理に適した形式に変換するコンバータを含んでいる。 一面において、本発明において、コンバータは、インタプリタが要求したアプ リケーションプログラム属性を含ませ、インタプリタが要求しない属性を含ませ ないように動作することができる。コンバータは、さらに、標準高級言語形式に おけるコンパイル形式を入力データとして受け付けることができ、インタプリタ によるインタプリタ処理に適した形式の出力データを生成することができる。一 面において、コンバータは、IDストリングをユニークなID識別子に、例えば 整数に、マッピングする手段を含んでいる。このマッピング処理は、ストリング −IDマップファイルに記録されうる。 本発明のインタプリタは、さらに、高級言語の特徴とデータタイプのフルセッ トのうちのサブセットをサポートするように制限することができる。この場合、 コンバータはさらに、アプリケーションプログラムのコンパイル形式がそれらサ ポートされている特徴とデータタイプのみ含むように確認する。 一つの実施形態として、コンバータは、次の処理、つまり、ジャンプと行き先 を記録する処理、特殊バイトコードをジェネリックバイトコードに変換する処理 またはその逆の処理、IDストリングの代わりにユニークなID識別子を用いる ためのリファレンスからバイトコードのオペランドを変更する処理、バイトコー ドを等価なバイトコードへリナンバリングする処理、それら変換ステップにより 影響をうけるディスティネーションアドレスへのジャンプを再リンキングする処 理のうち、少なくとも一つの処理ステップを用いて、コンパイル形式のバイトコ ードをマイクロコントローラのインタプリタによるインタプリタ処理に適した形 式のバイトコードに変換する手段を含んでいる。 インタプリタは、セキュリティチェックを実装した構成とすることができる。 セキュリティチェックは、ファイヤウォールの構築処理を含み、サンドボックス セキュリティモデルの構築処理を含みうる。例えば、インタプリタは、アプリケ ーションが、メモリのアクセス権限のない領域へのアクセスを許さない処理、ア クセス権限のないマイクロプロセッサのリソースへのアクセスを許可しない処理 、バイトコードの実行がセキュリティ制限に違反しないものかをチェックする処 理などを含む処理セットから選ばれたセキュリティ基準を満たしているものであ るか否かを決定できる。 本発明の一つの実施形態において、アプリケーションのロードに先立ち、アプ リケーションがどのセキュリティ制限にも違反していないかを確認し、セキュリ ティ基準に従ってアプリケーションをロードする処理を含むことができる。後者 のステップの例は、ロードしたIDが、当該アプリケーションをマイクロプロセ ッサ上にロードする許可を持っているかを確認し、ロードしたキーを用いてロー ドされるアプリケーションを暗号化する処理を含んでいる。 他の一面において、本発明は、マイクロコントローラをプログラミングする方 法を開示しており、第1のプログラミング言語で記述されたアプリケーションを 、コンパイラによって生成され第1のバーチャルマシンによってインタプリタ処 理されるように意図された第1の中間コードから、第2のバーチャルマシンによ ってインタプリタ処理可能な第2の中間コードに変換し、第2の中間コードをマ イクロコントローラのメモリ上にロードする処理ステップを備えている。 本発明の方法によれば、変換処理は、さらに、IDストリングをオブジェクト 、クラス、フィールド、メソッドに関連付け、それらストリングをユニークなI D識別子、例えば整数にマッピングする処理を含んでいる。 一つの実施形態において、本発明の方法は、次の処理、つまり、ジャンプと行 き先を記録する処理、特殊バイトコードをジェネリックバイトコードに変換する 処理またはその逆の処理、IDストリングの代わりにユニークなID識別子を用 いるためのリファレンスからバイトコードのオペランドを変更する処理、バイト コードを等価なバイトコードへリナンバリングする処理、それら変換ステップに より影響をうけるディスティネーションアドレスへのジャンプを再リンキングす る処理のうち、少なくとも一つの処理ステップを含んでいる。 本発明の他の一面において、本発明のマイクロコントローラは、インタプリタ 可能なプログラミング言語で記述されたプログラムのインタプリタ処理を許容す るには不十分な容量しかないメモリという制限のあるリソースセットで稼動する ものである。メモリは、高級プログラム言語から派生したプログラムをインタプ リタ処理するインタプリタと、ID識別子にストリングをマッピングする処理、 インタプリタ処理に先立ちまたはインタプリタ処理中にセキュリティチェックを 実行する処理、インタプリタ処理に先立ちまたはインタプリタ処理中に構造チェ ックを実行する処理、インタプリタ処理に先立ちまたはインタプリタ処理中にセ マンティックチェックを実行する処理を含む規則セットから選ばれた少なくとも 一つの規則を適用することにより派生した派生プログラムとを含んでいる。 これらセキュリティチェックは、複数の派生プログラムの一つにアクセスする 者からリクエストを受け取るためのロジックを持っている。リクエストの受領に より、派生プログラムが所定のルールセットでコンパイルされているか否か決定 され、この決定に従って、派生プログラムにアクセスする者を選択的に許可する 。派生プログラムがアクセスしようとするメモリの特別領域へのアクセス権限を 派生プログラムが持っているか否かを決定することにより、当該派生プログラム がインタプリタ処理される間にインタプリタによって当該所定ルールが用いられ る。 マイクロコントローラは、さらに、派生プログラムがインタプリタ処理される 間、用いられているセキュリティルールから選ばれた少なくとも一つのセキュリ ティチェックを実行するように構成されており、インタプリタは、バイトコード が実行前チェックおよび実行後チェックに応じて実行されるか否かを決定するた めの処理に先立って少なくとも一度、各バイトコードをチェックするように構成 されており、派生プログラムは、マイクロコントローラにロードされる処理に先 立って少なくとも一度、セキュリティプロトコルに応じて派生プログラムの統合 とロードが実行されたことを確認するチェックが実行される。セキュリティプロ トコルは、派生プログラムのカード上へのロードが許可されるように特別のID が有効化されていなければならないことを要求する。セキュリティプロトコルは さらに復号キーを含み、ロードされる派生プログラムが復号キーに応じがローデ ィングキーを用いて暗号化されていることを要求する。 マイクロコントローラは、さらに、暗号化処理、復号化処理、署名処理、署名 認証処理、相互認証処理、鍵配送処理、鍵セッション処理のセットから選ばれた 暗号関連サービスを提供するように構成されている。 マイクロコントローラは、ファイルシステムを備えており、ファイルを読み取 る権限、ファイルに書き込む権限、ファイルを消去する権限に対するアクセスコ ントロールリストを持つマイクロコントローラによる当該ファイルシステムへの 安全なアクセス手段を提供するように構成されている。さらに、マイクロコント ローラは、ファイルへのアクセス権限を確立するため、または、カード保有者が ファイルにアクセスする権限を得る認証を確認するための鍵有効化を実行する。 他の優位点および特徴は、以下の説明と特許請求の範囲の記載により明らかに されている。 図面の簡単な説明」 (3)図面の第16図を別紙の通り訂正します (4)図面の第18図を別紙の通り訂正します 別 紙 特許請求の範囲 106.リソース制約条件セットを持ったマイクロコントローラ(10)であっ て、 メモリと、 前記メモリにロードされ、前記リソース制約条件内で動作するインタプリタ( 16)を備え、前記マイクロコントローラ(10)は、 前記インタプリタによりインタプリタ処理するために前記メモリにロードされ た少なくとも1つのアプリケーションを持ち、前記少なくとも1つのアプリケー ションが以下のプログラミング環境により生成されたもの。 a)高級言語ソースコードであるアプリケーションソースプログラミング(2 0)をコンパイル形式(24)にコンパイルするコンパイラ(22)、 b)前記コンパイラ形式(24)を前記インタプリタ(16)によりインタプ リタ処理するために最適化した最小化形式(minimized form)(27)に後処理す るコンバータ(26)。 107.前記コンパイル形式(24)が、属性情報を含み、前記コンバータ(2 6)が、前記インタプリタ(16)が必要とする属性情報を含める手段と前記イ ンタプリタ(16)が必要としない属性情報を含めない手段を備えた請求項10 6に記載のマイクロコントローラ(10)。 108.前記コンパイル形式(24)が、標準Javaクラスファイル形式であ り、前記コンバータ(26)が、入力を前記標準Javaクラスファイル形式の 入力コンパイル形式(24)として受け入れ、前記インタプリタ(16)による インタプリタ処理に適する形式の出力(27)に変換する請求項106または1 07に記載のマイクロコントローラ(10)。 109.前記コンパイル形式(24)が、オブジェクト、クラス、フィールド、 メソッドを認証するストリングの関連情報を含み、前記コンバータは、前記スト リングをユニークなID識別子(51b)にマッピング処理する手段を含む、先 行する請求項のいずれかに記載されたマイクロコントローラ(10)。 110.前記それぞれのユニークなID識別子が整数である請求項109に記載 のマイクロコントローラ(10)。 111.前記ストリングのユニークなID識別子へのマッピングは、ストリング のID識別子マップファイル(30、32)への格納である請求項109または 110に記載のマイクロコントローラ(10)。 112.前記高級言語は、特性(feature)の第1のセットとデータ型の第1のセ ットをサポートし、前記インタプリタ(16)は、前記特性(feature)の第1の サブセットと前記データ型の第1のサブセットをサポートし、前記コンバータ( 26)は、前記コンパイル形式(24)が前記特性(feature)の第1のセットの サブセットの特性(feature)のみを含んでいることおよび前記データ型の第1の セットのサブセットのデータ型のみを含んでいることをベリファイする(51c 、52)、先行するいずれかの請求項に記載されたマイクロコントローラ(10) 。 113.前記コンパイル形式(24)が、バイトコード形式であり、前記コンバ ータ(26)が、下記のステップを含む処理ステップのうちの少なくとも1つの 処理ステップを用いて、前記コンパイル形式(24)のバイトコードを前記イン タプリタ(16)によりインタプリタ処理するために適したバイトコード(27 に変換する手段(54)を備えた請求項109、110、111、112のい ずれかに記載のマイクロコントローラ(10)。 a)オリジナルバイトコードのすべてのジャンプ処理とそのジャンプ先を記録 する処理(61)、 b)スペシフィックバイトコードを等価なジェネリックバイトコードに、また はその逆方向に変換する処理(63)、 c)バイトコードオペランドを、IDストリングを用いた参照からユニークな ID識別子を用いた参照に変更する処理(64) d)コンパイル形式(24)のバイトコードをインタプリタ処理に適した形式 の等価なバイトコードにリナンバリングする処理(66)、 e)ステップa)、b)、c)、d)の変換処理により影響を受けるジャンプ処 理のジャンプ先アドレスに再リンク付けする処理(67) 114.前記アプリケーションプログラムが、当該コンパイル形式(24)の実 行およびインタプリタ処理のために必要とされるリソースが前記マイクロコント ローラ上で利用可能なリソースを超えるコンパイル形式(24)にコンパイルさ れた、先行するいずれかの請求項に記載されたマイクロコントローラ(10)。 115.前記コンパイル形式(24)が、多様なコンピュータプラットフォーム への移植性(portability)があるように規定された、先行するいずれかの請求項 に記載されたマイクロコントローラ(10)。 116.前記インタプリタ(16)が、さらに、アプリケーションのインタプリ タ処理中に、下記セットから選ばれた少なくとも1つの規則を含む規則セットか ら定められたセキュリティ基準に引っかかったか否かを決定するように構成され た先行するいずれかの請求項に記載されたマイクロコントローラ(10)。 前記アプリケーションが権限のないメモリ領域にアクセスすることを認めない か否か、 前記アプリケーションがアクセス権限のないマイクロコントローラのリソース へにアクセスすることを認めないか否かであり、 ここで、前記アプリケーションが、バイトコードから構成され、バイトコード の実行がセキュリティ制約条件の違反を起こさないことを確認する実行処理を少 なくとも1回先行して複数のバイトコードのチェック処理をするように構成され ているもの。 117.少なくとも1つのアプリケーションプログラムが、 前記アプリケーションのローディング処理に先立って、前記アプリケーション があらゆるセキュリティ制約条件に違反しないことを確認する処理ステップと、 セキュリティを維持してローディング処理を行なう処理ステップと、 を含んでいるプロセスにより生成されたアプリケーションである、先行するい ずれかの請求項に記載されたマイクロコントローラ(10)。 118.前記セキュリティを維持してローディング処理する処理ステップが、ロ ーディングする主体がアプリケーションをマイクロコントローラ上にロードする 許可を持つことを確認する処理ステップを含む請求項117に記載のマイクロコ ントローラ(10)。 119.前記セキュリティを維持してローディングするステップが、ローディン グキーを利用してロードされるアプリケーションを暗号化する処理ステップを含 む請求項117または118に記載のマイクロコントローラ(10)。 120.メモリと、リソース制限のセットによって動作するプロセッサを持つマ イクロコントローラをプログラミングする方法であって、前記方法が、 アプリケーションプログラム(20)を第1のプログラミング言語により入力 する処理と、 前記第1のプログラミング言語のアプリケーションプログラム(20)を前記 第1のプログラミング言語に対応する第1の中間コード(24)にコンパイルす る処理(22)であって、 ここで、前記第1の中間コード(24)が、少なくとも1つの第1の中間コー ド仮想マシンによりインタプリタ処理できるものであり、 ここで、前記マイクロコントローラをプログラミングする方法が、前記第1の 中間コード(24)を第2の中間コード(27)に変換する処理(26)であっ て、 ここで、前記第2の中間コード(27)が少なくとも1つの第2の中間コード 仮想マシン(16)によりインタプリタ処理できるもの、 である処理と、 前記第2の中間コードを前記マイクロコントローラ(10)のメモリにロード する処理と、 を備えたことを特徴とする方法。 121.前記変換処理ステップがさらに、 オブジェクト、クラス、フィールド、メソッドのIDストリングの関連付け処 理と、 それらストリングをユニークなID識別子(51b)にマッピングする処理と 、 を含む請求項120に記載のマイクロコントローラ(10)をプログラミング する方法。 122.前記マッピング処理が、ストリングを整数にマッピングする処理を含む 請求項120または121に記載の方法。 123.前記変換処理が少なくとも以下のステップのうちの1つを含む請求項1 20、121または122のいずれかに記載の方法。 a)オリジナルバイトコードのすべてのジャンプ処理とそのジャンプ先を記録 する処理(61)、 b)スペシフィックバイトコードを等価なジェネリックバイトコードに、また はその逆方向に変換する処理(63)、 c)バイトコードオペランドを、IDストリングを用いた参照からユニークI D識別子を用いた参照に変更する処理(64) d)コンパイル形式のバイトコードをインタプリタ処理に適した形式の等価な バイトコードにリナンバリングする処理(66)、 e)ステップa)、b)、c)、d)の変換処理により影響を受けるジャンプ処 理のジャンプ先アドレスに再リンク付けする処理(67)。124.前記第2の中間コード(27)を前記マイクロコントローラ(10)の メモリにロードする処理を備えたことを特徴とする方法が、さらに、前記第2の 中間コード(27)のロード処理に先立って、前記第2の中間コード(27)が あらかじめ定義したチェック内容を満たすものであるかおよび当該ロード処理が セキュリティプロトコルに従って実行されるものであるかを認証するため前記第 2の中間コード(27)をチェックする処理を含む請求項120〜123のいず れか1項に記載の方法。 125.前記セキュリティプロトコルが、前記第2の中間コード(27)のロー ド処理に先立ち、特定のID識別主体がロード処理を許可するために有効化され ていることを要求する請求項120〜124のいずれか1項に記載の方法。 126.さらに復号鍵の供給処理を含み、前記セキュリティプロトコルが、ロー ドされた前記復号鍵に対応する鍵を使って前記第2の中間コード(27)が暗号 化されていることを要求する請求項120〜125のいずれか1項に記載の方法 127.メモリと前記メモリにロードされたインタプリタ(16)を備え、イン タプリタ処理可能なプログラミング言語により記述されたプログラム(24)か ら派生した派生プログラム(27)を実行しうるマイクロコントローラ(10) であって、前記マイクロコントローラ(10)が以下の特徴を持つもの。 (a)前記マイクロコントローラは、メモリがインタプリタ処理できるプログ ラミング言語で記述されたプログラム(24)のインタプリタ処理するためには 不十分な容量である場合を含む、リソース制約条件セット内で動作するものであ (b)前記メモリが、インタプリタ処理可能な言語の派生により記述された派 生プログラム(27)をインタプリタ処理できるインタプリタを含むメモリであ って、インタプリタ処理可能なプログラミング言語により記述された派生プログ ラム(27)が、下記の規則を含む規則セットから選ばれた少なくとも1つの規 則を適用してインタプリタ処理可能なプログラミング言語により記述されたプロ グラム(24)から派生したもの。 (1)ストリングを識別子にマッピングすること (2)インタプリタ処理に先立ってまたはインタプリタ処理中にセキュリティ チェック処理を実行すること (3)インタプリタ処理に先立ってまたはインタプリタ処理中に構造チェック を実行すること (4)インタプリタ処理に先立ってまたはインタプリタ処理中にセマンティッ クチェックを実行すること 128.前記派生プログラム(27)がクラスファイルまたはクラスファイルの 派生である請求項127に記載のマイクロコントローラ(10)。 129.前記メモリが1メガバイトより少ないことを特徴とする請求項127ま たは128に記載のマイクロコントローラ(10)。 130.前記マイクロコントローラのセキュリティチェックが、さらに以下の特 徴を持つ請求項127〜129のいずれか1項に記載のマイクロコントローラ( 10) (c)要求元から複数の派生プログラム(27)のうちの1つに対するアクセ ス要求を受け取るロジックを持つこと (d)前記要求を受け取った後、複数の派生プログラム(27)のうちの1つ があらかじめ決められた規則セットと適合するか否かを決定すること (e)前記決定に基づいて、前記要求元に対して、複数のアプリケーションの うちの1つに対するアクセスを選択的に認めること 131.前記派生プログラム(27)がアクセスしようとするメモリの特定領域 へのアクセス権限を前記派生プログラム(27)が持っているか否かを決定する ことにより前記派生プログラム(27)がインタプリタ処理される間に前記あら かじめ決められた規則が前記インタプリタ(16)によって実行される請求項1 30に記載のマイクロコントローラ(10)。 132.さらに前記マイクロコントローラ(10)が下記のものを含むセットか ら選ばれた少なくとも1つのセキュリティチェックを実行するように構成された 請求項127〜131のいずれか1項に記載のマイクロコントローラ(10) (a)前記派生プログラム(27)がインタプリタ処理されている間にあらか じめ決められたセキュリティ規則を実行し、前記派生プログラム(27)が権限 の無いメモリ領域または他の権限の無いマイクロコントローラリソースにアクセ スすることを防止すること (b)各バイトコードが前処理チェックおよび後処理チェックに従って実行さ れているか決定する処理に先立って少なくとも1回各バイトコードがチェックさ れるように前記インタプリタ(16)が構成されていること (c)前記派生プログラム(27)の統合を確認するために前記マイクロコン トローラにロードされる前に前記派生プログラムの完全性がチェックされ、ロー ド処理がセキュリティプロトコルに応じて実行されること 133.前記セキュリティプロトコルは、派生プログラム(27)をカード上に ロードできるように特定のID識別主体が有効化されていることを要求する請求 項132に記載のマイクロコントローラ(10)。 134.前記セキュリティプロトコルは、復号鍵を持っており、ロードされた派 生プログラム(27)が前記復号鍵に対応する鍵により暗号化されていることを 要求することを特徴とする請求項132に記載のマイクロコントローラ(10)。 135.暗号処理、復号処理、署名処理、署名照合処理、相互認証、鍵配送およ び鍵セッション処理を含む処理セットから選ばれた暗号サービスが供給できるよ うに構成されたことを特徴とする請求項127〜134のいずれか1項に記載の マイクロコントローラ(10)。 136.ファイルシステムを持ち、下記のものを含む処理セットから選ばれた手 段を介して前記ファイルシステムへアクセスできるように構成された請求項12 7〜135のいずれか1項に記載のマイクロコントローラ(10) (a)前記マイクロコントローラが、ファイルからの読み出し処理、ファイル への書き込み処理またはファイルの消去処理の権限に対するアクセス制御リスト を備えていること (b)前記マイクロコントローラが、ファイルへのアクセス権限を確立するた めの鍵有効化が実行できること (c)前記マイクロコントローラが、ファイルへのアクセス権限を確立するた めのカード保有者主体を認証できること 【図16】【図18】
───────────────────────────────────────────────────── フロントページの続き (81)指定国 EP(AT,BE,CH,DE, DK,ES,FI,FR,GB,GR,IE,IT,L U,MC,NL,PT,SE),OA(BF,BJ,CF ,CG,CI,CM,GA,GN,ML,MR,NE, SN,TD,TG),AP(GH,KE,LS,MW,S D,SZ,UG,ZW),EA(AM,AZ,BY,KG ,KZ,MD,RU,TJ,TM),AL,AM,AT ,AU,AZ,BA,BB,BG,BR,BY,CA, CH,CN,CU,CZ,DE,DK,EE,ES,F I,GB,GE,GH,HU,ID,IL,IS,JP ,KE,KG,KP,KR,KZ,LC,LK,LR, LS,LT,LU,LV,MD,MG,MK,MN,M W,MX,NO,NZ,PL,PT,RO,RU,SD ,SE,SG,SI,SK,SL,TJ,TM,TR, TT,UA,UG,UZ,VN,YU,ZW (72)発明者 クシーラブディ クリシュナ アメリカ合衆国、テキサス州78613、セダ ーパーク、リトルエルムトレイル2831 (72)発明者 マイケル エイ.モントゴメリー アメリカ合衆国、テキサス州78613、セダ ーパーク、ネルソンランチロード906

Claims (1)

  1. 【特許請求の範囲】 1.端末装置に利用するICカードであって、 端末装置と通信する通信部と、 高級プログラミング言語形式を持つアプリケーションと、インタプリタを格納 したメモリ部と、 前記メモリと結合したプロセッサであって、実行するアプリケーションをイン タプリタ処理するために前記インタプリタを利用し、端末装置と通信するために 通信部を利用するように構成されたもの を備えたことを特徴とするICカード。 2.前記高級プログラミング言語形式が、クラスファイル形式を備えた請求項1 に記載のICカード。 3.前記プロセッサがマイクロコントローラを備えた請求項1に記載のICカー ド。 4.少なくともメモリの一部が前記プロセッサ内に形成された請求項1に記載の ICカード。 5.前記高級プログラミング言語形式が、Javaプログラミング言語形式を備 えた請求項1に記載のICカード。 6.前記アプリケーションが、キャラクタストリングを持つ第2のアプリケーシ ョンから生成され、第1のアプリケーションにおいて前記キャラクタストリング がID識別子(identifier)により表現されている請求項1に記載のICカード。 7.前記ID識別子が整数列を含む請求項6に記載のICカード。 8.前記プロセッサがさらに、 前記カード要素に対してアクセスする要求を要求元から受け付け、 前記要求を受け付けた後、前記要求元のID(identity)を認証するため前記要 求元と対話型処理を行ない、 前記IDに基づいてアクセスする要素を選択的に許可するように構成された請 求項1に記載のICカード。 9.前記要求元が、プロセッサを備えた請求項8に記載のICカード。 10.前記要求元が、前記端末装置を備えた請求項8に記載のICカード。 11.前記要素が、前記メモリに格納されたアプリケーションを含み、 アクセスが許可されると前記要求元が前記アプリケーションを利用することが できるように構成されている請求項8に記載のICカード。 12.前記要素が、前記メモリに格納された他のアプリケーションを備えた請求 項8に記載のICカード。 13.前記要素が、前記メモリに格納されたデータを含む請求項8に記載のIC カード。 14.前記要素が、前記通信部を備えた請求項8に記載のICカード。 15.前記メモリが、前記要素のためのアクセス制御リストを格納し、前記アク セス制御リストは、前記IDに許可されるアクセスの型の表示を含み、前記プロ セッサは、 前記アクセス制御リストをベースとして、前記要求元へのアクセスの特定の型 を選択的に許可するように構成されている請求項8に記載のICカード。 16.前記アクセスの型が、データ読み出し型を含む請求項15に記載のICカ ード。 17.前記アクセスの型が、データ書き込み型を含む請求項15に記載のICカ ード。 18.前記アクセスの型が、データ付加型を含む請求項15に記載のICカード 。 19.前記アクセスの型が、データ生成型を含む請求項15に記載のICカード 。 20.前記アクセスの型が、データ消去型を含む請求項15に記載のICカード 。 21.前記アクセスの型が、アプリケーション実行型を含む請求項15に記載の ICカード。 22.前記アプリケーションが、前記メモリに格納された複数のアプリケーショ ンのうちの1つであり、前記プロセッサが、 前記複数のアプリケーションの1つに対するアクセス要求を受け付け、 前記要求の受け付け後、前記複数のアプリケーションのうちの1つを所定の規 則セットによりコンパイルするか否かを決定し、 前記決定にしたがって、前記要求元に対して前記複数のアプリケーションのう ちの1つへのアクセス要求を選択的に許可する請求項1に記載のICカード。 23.前記所定の規則が、前記複数のアプリケーションのうちの1つが前記メモ リの所定の領域にアクセスできるか否かを決定するガイドを提供する請求項22 に記載のICカード。 24.前記プロセッサがさらに、 要求元のIDを認証し、 前記IDに基づいて前記複数のアプリケーションのうちの1つへのアクセスを 許可するように構成された請求項22に記載のICカード。 25.前記プロセッサがさらに、 IDを認証するために前記通信部を介して前記端末装置と対話型処理を行ない 、 前記IDが認証されたか否かを決定し、 前記決定に基づいて前記端末装置と前記ICカード間の通信を選択的に許可す る請求項1に記載のICカード。 26.前記通信部と前記端末装置が通信チャンネルを介して通信し、前記プロセ ッサがさらに、前記プロセッサが前記端末装置と前記ICカード間の通信を許可 するときに、前記IDに前記通信チャンネルの1つを割り当てるように構成され た請求項25に記載のICカード。 27.前記プロセッサがさらに、 前記通信チャンネルの1つにセッションキーを割り当て、 前記通信チャンネルの1つを介して前記プロセッサと前記端末装置が通信する 場合に、前記セッションキーを利用する請求項26に記載のICカード。 28.前記端末装置が、カードリーダを備え、前記通信部が前記カードリーダと 通信するための接点(contact)を備えた請求項1に記載のICカード。 29.前記端末装置が、無線通信デバイスを備え、前記通信部が、前記無線通信 デバイスと通信するための無線受信部を備えた請求項1に記載のICカード。 30.前記端末装置が、無線通信デバイスを備え、前記通信部が、前記無線通信 デバイスと通信するための無線送信部を備えた請求項1に記載のICカード。 31.ICカードと端末装置において使われる方法であって、 インタプリタと高級プログラミング言語形式を備えたアプリケーションを前記 ICカードのメモリに格納する処理と、 実行する前記アプリケーションをインタプリタ処理する前記インタプリタを使 用するために前記プロセッサを使用する処理と、 前記プロセッサと前記端末装置と通信する場合に前記カードの通信部を使用す る処理 を備えたことを特徴とする方法。 32.前記高級プログラミング言語形式が、クラスファイル形式を備えている請 求項31に記載の方法。 33.前記プロセッサが、マイクロコントローラを備えている請求項31に記載 の方法。 34.少なくとも前記メモリの一部が前記プロセッサに設けられている請求項3 1に記載の方法。 35.前記高級プログラミング言語形式が、Javaプログラミング言語形式を 備えている請求項31に記載の方法。 36.前記アプリケーションが、キャラクタストリングを持つ第2のアプリケー ションから生成され、第1のアプリケーションにおいて前記キャラクタストリン グがID識別子により表現されている請求項31に記載の方法。 37.前記ID識別子が、整数列を含んでいる請求項36に記載の方法。 38.前記方法がさらに、 前記カード要素に対してアクセスする要求を要求元から受け付ける処理と、 前記要求を受け付けた後、前記要求元のIDを認証するため前記要求元と対話 型処理を行なう処理と、 前記IDに基づいてアクセスする要素を選択的に許可する処理を含む請求項3 1に記載の方法。 39.前記要求元が、プロセッサを備えた請求項38に記載の方法。 40.前記要求元が、端末装置を備えた請求項38に記載の方法。 41.前記要素が、前記メモリに格納されたアプリケーションを備え、さらに、 アクセスが許可されると前記要求元が前記アプリケーションを利用する処理を 含む請求項38に記載の方法。 42.前記要素が、前記メモリに格納された他のアプリケーションを備えた請求 項38に記載の方法。 43.前記要素が、前記メモリに格納されたデータを含む請求項38に記載の方 法。 44.前記要素が、前記通信部を備えた請求項38に記載の方法。 45.前記メモリが、前記要素のためのアクセス制御リストを格納し、前記アク セス制御リストは、前記IDに許可されるアクセスの型の表示を含み、さらに、 前記アクセス制御リストをベースとし、前記要求元へのアクセスの特定の型を 選択的に許可するプロセッサを利用する処理を備えた請求項38に記載の方法。 46.前記アクセスの型が、データ読み出し型を含む請求項45に記載のICカ ード。 47.前記アクセスの型が、データ書き込み型を含む請求項45に記載のICカ ード。 48.前記アクセスの型が、データ付加型を含む請求項45に記載のICカード 。 49.前記アクセスの型が、データ生成型を含む請求項45に記載のICカード 。 50.前記アクセスの型が、データ消去型を含む請求項45に記載のICカード 。 51.前記アクセスの型が、アプリケーション実行型を含む請求項45に記載の ICカード。 52.前記アプリケーションが前記メモリに格納された複数のアプリケーション のうちの1つであり、さらに、 前記要求の受け付けに基づいて前記メモリに格納されている複数のアプリケー ションのうちの1つにアクセスする要求を要求元から受け付ける処理と、 前記複数のアプリケーションのうちの1つを所定の規則セットに基づいてコン パイルするか否かを決める処理と、 前記決定に基づいて前記複数のアプリケーションのうちの1つにアクセスを選 択的に許可する処理 を備えた請求項31に記載の方法。 53.前記所定の規則は、前記複数のアプリケーションのうちの1つのアプリケ ーションが前記メモリの所定の領域をアクセスできるか否かを決定するガイドを 提供するものである請求項52に記載の方法。 54.さらに、要求元のIDを認証する処理と、前記IDに基づいて前記複数の アプリケーションのうちの1つへのアクセスを許可する処理を備えた請求項52 に記載の方法。 55.さらに、IDを認証するため前記端末装置と通信する処理と、 IDが認証されたかを決定する処理と、 前記決定処理にしたがって前記端末装置と前記ICカードとの間の通信を選択 的に許可する処理を備えた請求項31に記載の方法。 56.さらに、通信チャンネルを介して前記端末装置と前記プロセッサ間で通信 する処理と、前記許可処理が前記カードリーダと前記ICカードとの間の通信を 許可したときに、前記IDへの通信チャンネルの1つを割り当てる手段を備えた 請求項55に記載の方法。 57.さらに、前記通信チャンネルの1つに対してセッションキーを割り当てる 処理と、 前記プロセッサと前記端末装置が前記通信チャンネルの1つを介して通信する ときに、前記セッションキーを利用する処理を備えた請求項56に記載の方法。 58.スマートカードであって、 Javaインタプリタを格納したメモリと、 Javaアプリケーションをインタプリタ処理するために前記インタプリタを 利用するように構成されたプロセッサを備えたスマートカード。 59.マイクロコントローラであって、 半導体基板と、 前記半導体基板に配置されたメモリと、 前記メモリに格納されセキュリティチェック処理を実装するように構成された プログラミング言語インタプリタと、 前記基板に配置され前記メモリに結合された中央演算処理装置を 備えたことを特徴とするマイクロコントローラ。 60.前記インタプリタが、Javaバイトコードインタプリタを備えた請求項 59に記載のマイクロコントローラ。 61.前記セキュリティチェック処理が、ファイアウォール構築処理を備えた請 求項59に記載のマイクロコントローラ。 62.前記セキュリティチェック処理が、サンドボックスセキュリティモデルの 実施処理を備えた請求項59に記載のマイクロコントローラ。 63.スマートカードであって、 メモリと、 前記メモリに格納されセキュリティチェック処理を実行するように構成された プログラミング言語インタプリタと、 前記メモリに結合された中央演算処理装置 を備えたことを特徴とするスマートカード。 64.前記インタプリタが、Javaバイトコードインタプリタを備えた請求項 63に記載のスマートカード。 65.前記セキュリティチェック処理が、ファイアウォール構築処理を備えた請 求項63に記載のスマートカード。 66.前記セキュリティチェック処理が、サンドボックスセキュリティモデルの 実施処理を備えた請求項63に記載のスマートカード。 67.端末装置を利用するICカードであって、 通信部と、 インタプリタと第1のアプリケーションの第1のインストラクションを格納す るメモリであって、前記第1のインストラクションは、第2のアプリケーション の第2のインストラクションから変換されたものと、 前記メモリに結合され、前記第1のインストラクションを実行し、前記通信部 を介して前記端末装置と通信するためのインタプリタを利用するように構成され たプロセッサを備えたことを特徴とするICカード。 68.前記第1のアプリケーションが、クラスファイル形式を持つ請求項67に 記載のICカード。 69.前記第2のアプリケーションが、クラスファイル形式を持つ請求項67に 記載のICカード。 70.前記第1のインストラクションが、バイトコードを備えた請求項67に記 載のICカード。 71.前記第2のインストラクションが、バイトコードを備えた請求項67に記 載のICカード。 72.前記第1のインストラクションが、Javaバイトコードを備えた請求項 67に記載のICカード。 73.前記第2のインストラクションが、Javaバイトコードを備えた請求項 67に記載のICカード。 74.前記第1のインストラクションが、第2のインストラクションから生成さ れたものである請求項67に記載のICカード。 75.前記第1のインストラクションが、第2のインストラクションからリナン バリングされたものである請求項67に記載のICカード。 76.前記第2のインストラクションが、定数参照を含み、 前記第1のインストラクションが、前記第2のインストラクションの定数参照 と置き換える定数を含む請求項67に記載のICカード。 77.前記第2のインストラクションが、参照を含み、前記参照が、前記第2の インストラクションから前記第1のインストラクションへの変換処理中、格納位 置をシフトし、 前記第1のインストラクションが前記シフト後の参照と再びリンク付けられる 請求項67に記載のICカード。 78.前記第1のインストラクションが、仮想マシンの第1の型のバイトコード を備え、 前記第2のインストラクションが、仮想マシンの第2の型のバイトコードを備 え、前記第1の型が前記第2の型とは異なるものである請求項67に記載のIC カード。 79.ICカードを使用する方法であって、 第2のアプリケーションの第2のインストラクションを第1のアプリケーショ ンの第1のインストラクションへ変換する処理と、 ICカードのメモリに前記第1のインストラクションを格納する処理と、 前記第1のインストラクションを実行するため前記ICカードのインタプリタ を使用する処理 を備えたことを特徴とする方法。 80.前記第1のアプリケーションが、クラスファイル形式を持つ請求項79に 記載の方法。 81.前記第2のアプリケーションが、クラスファイル形式を持つ請求項79に 記載の方法。 82.前記第1のインストラクションが、バイトコードを備えた請求項79に記 載の方法。 83.前記第2のインストラクションが、バイトコードを備えた請求項79に記 載の方法。 84.前記第1のインストラクションが、Javaバイトコードを備えた請求項 79に記載の方法。 85.前記第2のインストラクションが、Javaバイトコードを備えた請求項 79に記載の方法。 86.前記第1のインストラクションが、前記第2のインストラクションから生 成されたものである請求項79に記載の方法。 87.前記変換処理が、前記第2のインストラクションから第1のインストラク ションを形成するリナンバリング処理を含む請求項79に記載の方法。 88.前記第2のインストラクションが、定数参照を含み、 前記変換処理が、前記第2のインストラクションの定数参照を定数に置き換え る処理を含む請求項79に記載の方法。 89.前記第2のインストラクションが、参照を含み、前記変換処理が、前記参 照の格納位置をシフトする処理を含み、さらに、 前記第1のインストラクションを前記変換処理後の参照に再リンク付けする請 求項79に記載の方法。 90.前記第1のインストラクションが、仮想マシンの第1の型のバイトコード を備え、 前記第2のインストラクションが、仮想マシンの第2の型のバイトコードを備 え、前記第1の型が前記第2の型と異なる請求項79に記載の方法。 91.端末装置とともに利用するICカードであって、 前記端末装置と通信するように構成された通信部と、 ストリングキャラクタを持つ第2のアプリケーションから生成された第1のア プリケーションを格納するメモリであって、前記ストリングキャラクタが、第1 のアプリケーションにおいてID識別子により表現されているものと、 前記メモリに結合されたプロセッサであって、前記プロセッサが、前記第1の アプリケーションをインタプリタ処理するインタプリタを使用するように構成さ れ、前記端末装置と通信するため前記通信部を使用するように構成されているも の、 を備えたことを特徴とするICカード。 92.前記ID識別子が、整数列を備えた請求項91に記載のICカード。 93.ICカードと端末装置を使用する方法であって、 第2のアプリケーションから第1のアプリケーションを生成する処理であって 、前記第2のアプリケーションがストリングキャラクタを持つ処理と、 前記第2のアプリケーションのID識別子により前記第1のアプリケーション のストリングキャラクタを表わす処理と、 インタプリタと前記第1のアプリケーションを前記ICカードのメモリに格納 する処理と、 前記第1のアプリケーションをインタプリタ処理するインタプリタを使用する ICカードのプロセッサを使用する処理と、 を備えたことを特徴とする方法。 94.前記ID識別子は、整数列を含む請求項93に記載の方法。 95.マイクロコントローラであって、 クラスファイル形式を持つアプリケーションとインタプリタとを格納している メモリと、 前記メモリに結合されたプロセッサであって、前記プロセッサは、前記アプリ ケーションを実行するためインタプリタを利用するように構成されているもの を備えたことを特徴とするマイクロコントローラ。 96.さらに、端末装置と通信するように構成された通信部を備えた請求項95 に記載のマイクロコントローラ。 97.前記端末装置が、カードリーダを備え、前記通信部が、前記カードリーダ と通信するように接点を備えた請求項96に記載のマイクロコントローラ。 98.前記端末装置は、無線通信デバイスと備え、前記通信部は、前記無線通信 デバイスと通信するための無線受信部を備えた請求項96に記載のマイクロコン トローラ。 99.前記端末装置は、無線通信デバイスを備え、前記通信部は、前記無線通信 デバイスと通信するための無線送信部を備えた請求項96に記載のマイクロコン トローラ。 100.前記クラスファイル形式が、Javaクラスファイル形式である請求項 95に記載のマイクロコントローラ。 101.ICカードを利用する方法であって、 前記ICカードのメモリに第1のアプリケーションを格納する処理と、 前記ICカードのメモリに第2のアプリケーションを格納する処理と、 前記第2のアプリケーションが前記第1のアプリケーションおよび前記第1の アプリケーションが関連するデータのいずれにもアクセスできないように前記第 1のアプリケーションと第2のアプリケーションを隔離するファイアウォールを 生成する処理を備えたことを特徴とする方法。 102.前記第1のアプリケーションと第2のアプリケーションが、Javaバ イトコードを含む請求項101に記載の方法。 103.前記ファイアウォール生成方法が、Javaインタプリタ利用を含む請 求項100に記載の方法。 104.前記第1のアプリケーションの格納処理が、前記ICカードの製造と関 連して実行され、 前記第2のアプリケーションの格納処理が、前記カード製造が完了した後に実 行される請求項101に記載の方法。 105.端末装置と共に利用されるICカードであって、 前記端末装置と通信するように構成された通信部と、 高級プログラミング言語形式を持っているアプリケーションとインタプリタが 格納されたメモリと、 前記メモリに結合されたプロセッサであって、前記プロセッサが、 a)実行するアプリケーションをインタプリタ処理するためのインタプリタを 利用し、 b)前記アプリケーションそれぞれを隔離するファイアウォールを生成するた めインタプリタを利用し、 c)前記端末装置と通信するため前記通信部を利用するように構成されている もの を備えたことを特徴とするICカード。
JP10520562A 1996-10-25 1997-10-22 高級プログラミング言語を用いたマイクロコントローラ Pending JP2000514584A (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US2905796P 1996-10-25 1996-10-25
US60/029,057 1996-10-25
PCT/US1997/018999 WO1998019237A1 (en) 1996-10-25 1997-10-22 Using a high level programming language with a microcontroller

Related Child Applications (1)

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

Publications (1)

Publication Number Publication Date
JP2000514584A true JP2000514584A (ja) 2000-10-31

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 After (1)

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

Country Status (15)

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)
HK (1) HK1021762A1 (ja)
MY (1) MY126363A (ja)
PT (1) PT932865E (ja)
TW (1) TW476914B (ja)
WO (1) WO1998019237A1 (ja)
ZA (1) ZA979479B (ja)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006526841A (ja) * 2003-06-02 2006-11-24 サン・マイクロシステムズ・インコーポレイテッド バーチャルマシンにおいてインプレース実行を支援するための近接ベースのアドレス指定
JP2007503662A (ja) * 2003-06-12 2007-02-22 モトローラ・インコーポレイテッド 構成の設定を改ざんされにくい無線通信デバイス
JP2009521032A (ja) * 2005-12-23 2009-05-28 トラステ ロジク チップカードを備えるオンボードコンピュータシステム上に安全なカウンタを作成する方法
WO2013111490A1 (ja) * 2012-01-25 2013-08-01 ソニー株式会社 情報処理装置、情報処理方法およびコンピュータプログラム

Families Citing this family (285)

* 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 Invest B V Datenaustauschlsysteme mit tragbaren Datenverarbeitungseinheiten
EP0825506B1 (en) 1996-08-20 2013-03-06 Invensys Systems, Inc. Methods and apparatus for remote process control
EP0932865B1 (en) 1996-10-25 2002-08-14 SCHLUMBERGER Systèmes Using a high level programming language with a microcontroller
GB2337434B (en) * 1997-03-14 2002-01-30 Ian Charles Ogilvy Method and apparatus for controlling communications
HUP0003100A3 (en) 1997-06-27 2003-01-28 Swisscom Mobile Ag Transaction method using a mobile device and identifier device
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
PL193009B1 (pl) * 1998-03-23 2007-01-31 Ibm Sposób wprowadzania nowego kodu do systemu przetwarzania Java z modyfikowaną pulą stałą
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
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
US6609199B1 (en) * 1998-10-26 2003-08-19 Microsoft Corporation Method and apparatus for authenticating an open system application to a portable IC device
US20050060549A1 (en) * 1998-10-26 2005-03-17 Microsoft Corporation Controlling access to content based on certificates and access predicates
BR9914820A (pt) * 1998-11-03 2001-07-10 Thomson Licensing Sa Processo e aparelho para atualizar código de computador que usa uma interface de circuito integrado
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
US6425003B1 (en) * 1999-01-22 2002-07-23 Cisco Technology, Inc. Method and apparatus for DNS resolution
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
US6922835B1 (en) * 1999-01-22 2005-07-26 Sun Microsystems, Inc. Techniques for permitting access across a context barrier on a small footprint device using run time environment privileges
US6581206B2 (en) * 1999-11-12 2003-06-17 Sun Microsystems, Inc. Computer program language subset validation
US6633984B2 (en) * 1999-01-22 2003-10-14 Sun Microsystems, Inc. Techniques for permitting access across a context barrier on a small footprint device using an entry point object
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
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
US6880155B2 (en) * 1999-02-02 2005-04-12 Sun Microsystems, Inc. Token-based linking
US6848111B1 (en) * 1999-02-02 2005-01-25 Sun Microsystems, Inc. Zero overhead exception handling
AU3346400A (en) * 1999-02-05 2000-08-25 Cyrus Intersoft, Inc. Instrumenting streamed classes
FR2790629A1 (fr) 1999-02-19 2000-09-08 Bull Cp8 Procede d'activation d'applications localisees dans une carte a puce par un navigateur du type dit "web"
US7127605B1 (en) * 1999-05-10 2006-10-24 Axalto, Inc. Secure sharing of application methods on a microcontroller
US6845498B1 (en) 1999-05-11 2005-01-18 Microsoft Corporation Method and apparatus for sharing data files among run time environment applets in an integrated circuit card
US6547150B1 (en) 1999-05-11 2003-04-15 Microsoft Corporation Smart card application development system and method
US6938244B1 (en) 1999-05-11 2005-08-30 Microsoft Corp. Interlaced protocol for smart card application development
AU4712000A (en) * 1999-05-11 2000-11-21 Microsoft Corporation Method and apparatus for sharing data files among runtime environment applets inan integrated circuit card
US7089530B1 (en) 1999-05-17 2006-08-08 Invensys Systems, Inc. Process control configuration system with connection validation and configuration
WO2000070531A2 (en) 1999-05-17 2000-11-23 The Foxboro Company Methods and apparatus for control configuration
US6668271B1 (en) 1999-05-19 2003-12-23 Richo Company, Ltd. System for distributing, installing and running web applications (agents)
US6546546B1 (en) * 1999-05-19 2003-04-08 International Business Machines Corporation Integrating operating systems and run-time systems
DE29908783U1 (de) * 1999-05-19 1999-09-09 Me Technology Europ Gmbh 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
WO2000077640A1 (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
AU6631600A (en) * 1999-08-11 2001-03-05 Spinware, Inc. System and method for controlling access to data stored in 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
US7158993B1 (en) 1999-11-12 2007-01-02 Sun Microsystems, Inc. API representation enabling submerged hierarchy
US6363523B1 (en) * 1999-11-12 2002-03-26 Sun Microsystems, Inc. Optimization of N-base typed arithmetic expressions
US7207037B2 (en) * 1999-11-12 2007-04-17 Sun Microsystems, Inc. Overflow sensitive arithmetic instruction optimization using chaining
US7010786B2 (en) 1999-11-12 2006-03-07 Sun Microsystems, Inc. Predictive arithmetic overflow detection
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
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
AU1145800A (en) * 1999-11-19 2001-06-04 Swisscom Mobile Ag Adaptable chip card
WO2001040910A1 (en) 1999-12-06 2001-06-07 De Jong, Eduard, Karel Computer arrangement using non-refreshed dram
CA2393645A1 (en) 1999-12-07 2001-06-14 Sun Microsystems, Inc. Computer-readable medium with microprocessor to control reading and computer arranged to communicate with such a medium
BR9917573A (pt) 1999-12-07 2002-08-06 Sun Microsystems Inc Dispositiivo de identiificação que contém uma foto segura, assim como um meio e método para autenticação de tal dispositiivo de identificação
FR2802319B1 (fr) * 1999-12-10 2004-10-01 Gemplus Card Int Controle d'acces par capacites pour des applications notamment cooperantes dans une carte a puce
US6757824B1 (en) * 1999-12-10 2004-06-29 Microsoft Corporation Client-side boot domains and boot rules
US20010007146A1 (en) * 1999-12-23 2001-07-05 Uwe Hansmann Method for providing a set of software components
FR2804819B1 (fr) * 2000-02-03 2002-05-03 Gemplus Card Int Gestion de temps au niveau communication pour entite du type carte a puce
FR2805062B1 (fr) * 2000-02-10 2005-04-08 Bull Cp8 Procede de transmission de flux de donnees a haut debit sur un reseau de type internet entre un serveur et un terminal a carte a puce, notamment d'un flux de donnees multimedia
US6748592B1 (en) * 2000-02-14 2004-06-08 Xoucin, Inc. Method and apparatus for protectively operating a data/information processing device
WO2001061486A2 (en) * 2000-02-17 2001-08-23 Interactive Video Technologies, Inc. Incremental bootstrap class loader
GB0003920D0 (en) * 2000-02-21 2000-04-05 Ncipher Corp Limited Computer system
US6813762B1 (en) * 2000-02-22 2004-11-02 Freescale Semiconductor, Inc. Method for processing program files in a programming language capable of dynamic loading
JP4509291B2 (ja) * 2000-03-30 2010-07-21 大日本印刷株式会社 Icカード、icカードのプログラム更新装置、および、その方法
US6883163B1 (en) 2000-04-28 2005-04-19 Sun Microsystems, Inc. Populating resource-constrained devices with content verified using API definitions
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
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
US8149048B1 (en) 2000-10-26 2012-04-03 Cypress Semiconductor Corporation Apparatus and method for programmable power management in a programmable analog circuit block
US7765095B1 (en) 2000-10-26 2010-07-27 Cypress Semiconductor Corporation Conditional branching in an in-circuit emulation system
US8103496B1 (en) 2000-10-26 2012-01-24 Cypress Semicondutor Corporation Breakpoint control in an in-circuit emulation system
US6724220B1 (en) 2000-10-26 2004-04-20 Cyress Semiconductor Corporation Programmable microcontroller architecture (mixed analog/digital)
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
US6971001B1 (en) * 2001-05-17 2005-11-29 Accenture Global Services Gmbh General and reusable components for defining net-centric application program architectures
AU2006200734B2 (en) * 2001-05-17 2007-12-13 Accenture Global Services Limited Pipeline architecture for use with 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
NZ531200A (en) * 2001-08-13 2006-03-31 Qualcomm Inc Application level access privilege to a storage area on a computer device
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
US7275260B2 (en) 2001-10-29 2007-09-25 Sun Microsystems, Inc. Enhanced privacy protection in identification in a data communications network
US20030084172A1 (en) * 2001-10-29 2003-05-01 Sun Microsystem, Inc., A Delaware Corporation Identification and privacy in the World Wide Web
US20030084302A1 (en) * 2001-10-29 2003-05-01 Sun Microsystems, Inc., A Delaware Corporation Portability and privacy with data communications network browsing
US7085840B2 (en) 2001-10-29 2006-08-01 Sun Microsystems, Inc. Enhanced quality of 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
US7770113B1 (en) 2001-11-19 2010-08-03 Cypress Semiconductor Corporation System and method for dynamically generating a configuration datasheet
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
US7774190B1 (en) 2001-11-19 2010-08-10 Cypress Semiconductor Corporation Sleep and stall in an in-circuit emulation system
US6971004B1 (en) 2001-11-19 2005-11-29 Cypress Semiconductor Corp. System and method of dynamically reconfiguring a programmable integrated circuit
US8069405B1 (en) 2001-11-19 2011-11-29 Cypress Semiconductor Corporation User interface for efficiently browsing an electronic document using data-driven tabs
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
KR20040073562A (ko) * 2002-01-11 2004-08-19 시에라 와이어리스 인코포레이티드 호스트 확장형 무선 어플리케이션 인터페이스
US20100174717A1 (en) * 2002-02-28 2010-07-08 Olivier Fambon Interative serialisation procedure for structured software objects
DE60210416T2 (de) * 2002-02-28 2006-09-07 Matsushita Electric Industrial Co., Ltd., Kadoma Speicherkarte
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
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
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
US6912633B2 (en) 2002-03-18 2005-06-28 Sun Microsystems, Inc. Enhanced memory management for portable devices
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
US6836670B2 (en) 2002-05-09 2004-12-28 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
AU2003266320A1 (en) * 2002-09-16 2004-04-30 Telefonaktiebolaget Lm Ericsson (Publ) Secure access to a subscription module
DE60238288D1 (de) 2002-09-16 2010-12-23 Ericsson Telefon Ab L M Sicherer Zugang auf ein Teilnehmermodul
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
US7165246B2 (en) 2003-01-16 2007-01-16 Sun Microsystems, Inc. Optimized representation of data type information in program verification
US7222331B2 (en) 2003-01-16 2007-05-22 Sun Microsystems, Inc. Linking of virtual methods
US20040143739A1 (en) * 2003-01-16 2004-07-22 Sun Mircosystems, Inc., A Delaware Corporation Run time code integrity checks
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
US7272830B2 (en) 2003-01-16 2007-09-18 Sun Microsystems, Inc. Ordering program data for loading on a 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
WO2005007258A1 (en) * 2003-07-23 2005-01-27 Koninklijke Philips Electronics N.V. Device to process program codes
US10437964B2 (en) * 2003-10-24 2019-10-08 Microsoft Technology Licensing, Llc Programming interface for licensing
CH716409B1 (de) * 2003-11-12 2021-01-29 Legic Identsystems Ag Verfahren zum Einschreiben einer Datenorganisation in Identifikationsmedien und zum Einschreiben und Ausführen von Applikationen in der Datenorganisation.
DE10357257A1 (de) 2003-12-08 2005-06-30 Giesecke & Devrient Gmbh Java Smart Card Chip mit für globale Variablen reserviertem Speicherbereich
US7907935B2 (en) * 2003-12-22 2011-03-15 Activcard Ireland, Limited Intelligent remote device
US20050138380A1 (en) 2003-12-22 2005-06-23 Fedronic Dominique L.J. Entry control system
FR2864398A1 (fr) * 2003-12-23 2005-06-24 France Telecom Terminal de telecommunication a deux espaces d'execution
US7286076B1 (en) 2004-02-10 2007-10-23 Zilog, Inc. Generating a mark/space table and a string of timing information on a remote control device
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
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
US7091857B2 (en) * 2004-02-12 2006-08-15 Mi-Jack Products, Inc. Electronic control system used in security system for cargo trailers
US7140549B2 (en) 2004-02-24 2006-11-28 Sun Microsystems, Inc. Method and apparatus for selecting a desired application on 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
US7374099B2 (en) 2004-02-24 2008-05-20 Sun Microsystems, Inc. Method and apparatus for processing an application identifier from a smart card
US7165727B2 (en) 2004-02-24 2007-01-23 Sun Microsystems, Inc. Method and apparatus for installing an application onto a smart card
EP1728156A2 (en) * 2004-03-04 2006-12-06 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
US8069436B2 (en) * 2004-08-13 2011-11-29 Cypress Semiconductor Corporation Providing hardware independence to automate code generation of processing device firmware
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
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 セイコーエプソン株式会社 ファイル操作制限システムおよびファイル操作制限プログラム、ファイル操作制限方法、電子機器並びに印刷装置
EP1864236A1 (en) * 2005-02-17 2007-12-12 Acterna, LLC Methods and apparatuses 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
US20070143601A1 (en) * 2005-12-15 2007-06-21 Arroyo Diana J System and method for authorizing information flows
US7647630B2 (en) * 2005-12-15 2010-01-12 International Business Machines Corporation Associating security information with information objects in a data processing system
DE102005061659A1 (de) * 2005-12-22 2007-06-28 Giesecke & Devrient Gmbh Sicherung eines tragbaren Datenträgers gegen Angriffe
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
US9092635B2 (en) 2006-03-31 2015-07-28 Gemalto Sa Method and system of providing security services using a secure device
US20080052770A1 (en) * 2006-03-31 2008-02-28 Axalto Inc 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
US8516025B2 (en) 2007-04-17 2013-08-20 Cypress Semiconductor Corporation Clock driven dynamic datapath chaining
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
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
US8026739B2 (en) 2007-04-17 2011-09-27 Cypress Semiconductor Corporation System level interconnect with programmable switching
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卡查找类和函数的方法和装置
CN102124432B (zh) 2008-06-20 2014-11-26 因文西斯系统公司 对用于过程控制的实际和仿真设施进行交互的系统和方法
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
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
US8463964B2 (en) 2009-05-29 2013-06-11 Invensys Systems, Inc. Methods and apparatus for control configuration with enhanced change-tracking
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 フェリカネットワークス株式会社 情報処理装置、プログラム、および情報処理システム
WO2011054498A1 (en) * 2009-11-05 2011-05-12 Trusted Logic Secure portable object
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
US9052919B2 (en) 2010-01-15 2015-06-09 Apple Inc. Specialized network fileserver
US8538480B2 (en) * 2010-03-30 2013-09-17 Qualcomm Incorporated Methods and apparatus for device applet management on smart cards
EP2397998A1 (fr) * 2010-06-17 2011-12-21 Gemalto SA Procédé et système de contrôle du traitement de plusieurs flux de communication radiofréquence par une carte à circuits intégrés
US8499299B1 (en) 2010-06-29 2013-07-30 Ca, Inc. Ensuring deterministic thread context switching in virtual machine applications
US8769518B1 (en) 2010-06-29 2014-07-01 Ca, Inc. Ensuring determinism during programmatic replay in a virtual machine
US8732670B1 (en) 2010-06-29 2014-05-20 Ca, Inc. Ensuring determinism during programmatic replay in a virtual machine
US8959492B2 (en) * 2010-12-14 2015-02-17 Ngmoco, Llc Communication protocol between a high-level language and a native language
US8621168B2 (en) 2010-12-17 2013-12-31 Google Inc. Partitioning the namespace of a contactless smart card
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
US8533336B1 (en) * 2011-02-04 2013-09-10 Google Inc. Automated web frontend sharding
JP5329602B2 (ja) * 2011-05-12 2013-10-30 株式会社三菱東京Ufj銀行 端末装置およびプログラム
EP2535832B1 (en) * 2011-06-17 2017-04-26 Simulity Labs Ltd A method for operating a virtual machine over a file system
US8255687B1 (en) 2011-09-15 2012-08-28 Google Inc. Enabling users to select between secure service providers using a key escrow service
US8171525B1 (en) 2011-09-15 2012-05-01 Google Inc. Enabling users to select between secure service providers using a central trusted service manager
US8313036B1 (en) 2011-09-16 2012-11-20 Google Inc. Secure application directory
KR101903061B1 (ko) 2011-11-01 2018-10-01 구글 엘엘씨 다수의 서비스 제공자 신뢰된 서비스 관리자 및 보안 요소와 인터페이싱하기 위한 시스템, 방법 및 컴퓨터 프로그램 제품
US9544759B2 (en) 2011-11-01 2017-01-10 Google Inc. Systems, methods, and computer program products for managing states
JP5818695B2 (ja) * 2012-01-04 2015-11-18 インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation コード変換方法、プログラム及びシステム
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
US9479571B2 (en) 2012-09-18 2016-10-25 Google Inc. 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
WO2016073578A1 (en) * 2014-11-05 2016-05-12 WWTemplar LLC Remote control of fire suppression systems
US10176094B2 (en) 2015-06-30 2019-01-08 Renesas Electronics America Inc. Common MCU self-identification information
US10466977B2 (en) 2015-10-11 2019-11-05 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 华为技术有限公司 一种文件访问权限认证方法及电子设备

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
JPS63156254A (ja) 1986-12-19 1988-06-29 Fujitsu Ltd インタプリタにおける中間テキストの管理方法
JPS63156255A (ja) 1986-12-19 1988-06-29 Fujitsu Ltd インタプリタにおけるオ−バレイ方法
DE3743639A1 (de) 1986-12-24 1988-07-07 Mitsubishi Electric Corp Ic-karte und system zur ueberpruefung ihrer funktionstuechtigkeit
US4791558A (en) * 1987-02-13 1988-12-13 International Business Machines Corporation System and method for generating an object module in a first format and then converting the first format into a format which is loadable into a selected computer
JPS63231692A (ja) 1987-03-20 1988-09-27 Mitsubishi Electric Corp 機密コ−ド書込装置
FR2626095B1 (fr) 1988-01-20 1991-08-30 Sgs Thomson Microelectronics Systeme de securite pour proteger des zones de programmation d'une carte a puce
US4892974A (en) 1988-03-10 1990-01-09 Air Products And Chemicals, Inc. Process for producing mono-ortho-tert-butyl-aniline using silica-alumina catalysts
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 予約取引処理方法
CA2025131A1 (en) 1989-09-28 1991-03-29 John W. White Portable and dynamic distributed applications architecture
US5120939A (en) 1989-11-09 1992-06-09 At&T Bell Laboratories Databaseless security system
US5339419A (en) * 1990-06-25 1994-08-16 Hewlett-Packard Company ANDF compiler using the HPcode-plus compiler intermediate language
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.
US5450575A (en) 1991-03-07 1995-09-12 Digital Equipment Corporation Use of stack depth to identify machine code mistakes
US5307492A (en) 1991-03-07 1994-04-26 Digital Equipment Corporation Mapping assembly language argument list references in translating code for different machine architectures
JP3602857B2 (ja) * 1991-04-23 2004-12-15 株式会社日立製作所 多機種対応型情報処理システム、および、方法
JP2690229B2 (ja) 1991-11-26 1997-12-10 三菱電機株式会社 非接触icカード
US5406380A (en) 1991-12-30 1995-04-11 Management Graphics, Inc. Film recorder with interface for user replaceable memory element
CA2147824A1 (en) * 1992-10-26 1994-05-11 Johannes Marinus George Bertina Host and user transaction system
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
EP0711441A1 (en) 1993-07-30 1996-05-15 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
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
US5544086A (en) 1994-09-30 1996-08-06 Electronic Payment Services, Inc. Information consolidation within a transaction network
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
PT819287E (pt) * 1995-02-17 2000-04-28 Europay International Societe Sistema de gestao de transaccoes controlado por um circuito integrado
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
AU1143297A (en) 1995-12-01 1997-06-19 Lsi Logic Corporation Integrated network browser chip, network browser system, and method for network data communication
US6151618A (en) * 1995-12-04 2000-11-21 Microsoft Corporation Safe general purpose virtual machine computing system
FR2742892B1 (fr) 1995-12-21 1998-02-13 Bull Sa Systeme de protection de logiciel pour ordinateur ecrit en langage interprete
US6526565B1 (en) 1995-12-21 2003-02-25 International Business Machines Corporation Packaging algorithm for providing object oriented applications having reduced footprints
US5835772A (en) 1995-12-29 1998-11-10 Intel Corporation Method and apparatus for providing an interface between a system and a peripheral device
US5811771A (en) 1996-05-22 1998-09-22 Dethloff; Juergen Method and system for paying with a portable data medium having security against over charging and unauthorized use
US6226789B1 (en) 1996-01-29 2001-05-01 Compaq Computer Corporation Method and apparatus for data flow analysis
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
US5860008A (en) 1996-02-02 1999-01-12 Apple Computer, Inc. Method and apparatus for decompiling a compiled interpretive code
US5742756A (en) * 1996-02-12 1998-04-21 Microsoft Corporation System and method of using smart cards to perform security-critical operations requiring user authorization
TW369753B (en) 1996-02-14 1999-09-11 Mitsubishi Electric Corp Data security method and system
US5761306A (en) 1996-02-22 1998-06-02 Visa International Service Association Key replacement in a public key cryptosystem
US6075863A (en) 1996-02-28 2000-06-13 Encanto Networks Intelligent communication device
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
EP0932865B1 (en) * 1996-10-25 2002-08-14 SCHLUMBERGER Systèmes Using a high level programming language with a microcontroller
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

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2006526841A (ja) * 2003-06-02 2006-11-24 サン・マイクロシステムズ・インコーポレイテッド バーチャルマシンにおいてインプレース実行を支援するための近接ベースのアドレス指定
JP2007503662A (ja) * 2003-06-12 2007-02-22 モトローラ・インコーポレイテッド 構成の設定を改ざんされにくい無線通信デバイス
JP2009521032A (ja) * 2005-12-23 2009-05-28 トラステ ロジク チップカードを備えるオンボードコンピュータシステム上に安全なカウンタを作成する方法
WO2013111490A1 (ja) * 2012-01-25 2013-08-01 ソニー株式会社 情報処理装置、情報処理方法およびコンピュータプログラム
JPWO2013111490A1 (ja) * 2012-01-25 2015-05-11 ソニー株式会社 情報処理装置、情報処理方法およびコンピュータプログラム
US9372985B2 (en) 2012-01-25 2016-06-21 Sony Corporation Information processing device, information processing method, and computer program

Also Published As

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

Similar Documents

Publication Publication Date Title
JP3766052B2 (ja) 高級プログラミング言語を用いたマイクロコントローラ
Chen Java card technology for smart cards: architecture and programmer's guide
US7140549B2 (en) Method and apparatus for selecting a desired application on a smart card
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ä
US7191288B2 (en) Method and apparatus for providing an application on a smart card
US7374099B2 (en) Method and apparatus for processing an application identifier from a smart card
CN100447745C (zh) 使用进入点对象在小型注脚设备上允许越过文本屏障进行访问的技术
AU769363B2 (en) Management protocol, method for verifying and transforming downloaded programme fragment and corresponding systems
KR20010103747A (ko) 글로벌 데이터 구조를 사용해서 소형 풋프린트 장치의콘텍스트 배리어를 넘어선 액세스를 허용하기 위한 기술
CN100507797C (zh) 采用文本屏障在小型注脚设备上实施安全的技术
US20020093856A1 (en) File language verification
JP2003067700A (ja) データ構造を記憶するメモリ及び方法
CN100353324C (zh) 使用共享对象接口在小型注脚设备中允许越过文本屏障进行访问的技术
KR20010101622A (ko) 런타임 환경 특권을 사용해서 소형 풋프린트 장치의콘텍스트 배리어를 넘어선 액세스를 허용하기 위한 기술
Markantonakis et al. Multi-application smart card platforms and operating systems
Cap et al. Extending the data storage capabilities of a Java-Based smartcard
MXPA99003796A (en) Using a high level programming language with a microcontroller
Markantonakis Java card technology and security
AU2004200637A1 (en) Techniques for permitting access across a context barrier on a small footprint device using run time environment privileges