JP2003141488A - 高級プログラミング言語を用いたマイクロコントローラ - Google Patents
高級プログラミング言語を用いたマイクロコントローラInfo
- Publication number
- JP2003141488A JP2003141488A JP2002263319A JP2002263319A JP2003141488A JP 2003141488 A JP2003141488 A JP 2003141488A JP 2002263319 A JP2002263319 A JP 2002263319A JP 2002263319 A JP2002263319 A JP 2002263319A JP 2003141488 A JP2003141488 A JP 2003141488A
- Authority
- JP
- Japan
- Prior art keywords
- card
- microcontroller
- application
- bytecode
- interpreter
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/443—Optimisation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring 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/53—Monitoring 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/62—Protecting access to data via a platform, e.g. using keys or access control rules
- G06F21/6218—Protecting 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/71—Protecting 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/77—Protecting 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/70—Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
- G06F21/78—Protecting 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/79—Protecting 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
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/52—Binary to binary
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/445—Program loading or initiating
- G06F9/44557—Code layout in executable memory
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45504—Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
- G06F9/45533—Hypervisors; Virtual machine monitors
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06Q—INFORMATION 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/00—Payment architectures, schemes or protocols
- G06Q20/30—Payment architectures, schemes or protocols characterised by the use of specific devices or networks
- G06Q20/34—Payment 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/355—Personalisation of cards for use
- G06Q20/3552—Downloading or loading of personalisation data
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06Q—INFORMATION 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/00—Payment architectures, schemes or protocols
- G06Q20/30—Payment architectures, schemes or protocols characterised by the use of specific devices or networks
- G06Q20/34—Payment 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/356—Aspects of software for card payments
- G06Q20/3563—Software being resident on card
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06Q—INFORMATION 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/00—Payment architectures, schemes or protocols
- G06Q20/30—Payment architectures, schemes or protocols characterised by the use of specific devices or networks
- G06Q20/34—Payment 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/357—Cards having a plurality of specified features
- G06Q20/3574—Multiple applications on card
-
- G—PHYSICS
- G07—CHECKING-DEVICES
- G07F—COIN-FREED OR LIKE APPARATUS
- G07F7/00—Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus
- G07F7/08—Mechanisms 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/10—Mechanisms 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/1008—Active credit-cards provided with means to personalise their use, e.g. with PIN-introduction/comparison system
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/02—Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L9/00—Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
- H04L9/40—Network security protocols
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W12/00—Security arrangements; Authentication; Protecting privacy or anonymity
- H04W12/03—Protecting confidentiality, e.g. by encryption
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W12/00—Security arrangements; Authentication; Protecting privacy or anonymity
- H04W12/06—Authentication
- H04W12/062—Pre-authentication
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing 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/2141—Access rights, e.g. capability lists, access control lists, access tables, access matrices
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2221/00—Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F2221/21—Indexing 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/2153—Using hardware token as a secondary aspect
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/131—Protocols for games, networked simulations or virtual reality
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L69/00—Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
- H04L69/30—Definitions, standards or architectural aspects of layered protocol stacks
- H04L69/32—Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
- H04L69/322—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
- H04L69/329—Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Computer Networks & Wireless Communication (AREA)
- Computer Hardware Design (AREA)
- Business, Economics & Management (AREA)
- Signal Processing (AREA)
- Microelectronics & Electronic Packaging (AREA)
- General Business, Economics & Management (AREA)
- Strategic Management (AREA)
- Accounting & Taxation (AREA)
- Databases & Information Systems (AREA)
- General Health & Medical Sciences (AREA)
- Bioethics (AREA)
- Mathematical Physics (AREA)
- Health & Medical Sciences (AREA)
- Devices For Executing Special Programs (AREA)
- Microcomputers (AREA)
- Storage Device Security (AREA)
- Credit Cards Or The Like (AREA)
- Electrophonic Musical Instruments (AREA)
Abstract
ド及びマイクロコントローラを提供する。 【解決手段】端末装置と共に利用されるICカードであ
る。当該ICカードは、インタプリタと高級プログラミ
ング言語形式を持つアプリケーションが記憶されたメモ
リを含んでいる。カードのプロセッサは、実行するアプ
リケーションをインタプリタ処理するためインタプリタ
を利用するように構成され、また、端末装置と通信する
ため通信部を利用するように構成されている。
Description
保護を受けるものが含まれている。著作権所有者は、特
許庁への特許出願書類または記録として使用されるもの
に限り、何人でも当該特許出願書類の複製を行なうこと
に関して異議を持たないが、その他の場合にはすべての
著作権の権利の保有する。
づき、本特許出願は1996年10月25日に受理され
た先行する米国特許出願番号60/029,057の優
先権利益を要求する。 発明の背景 この発明は主にプログラミング技術に関し、特に、スマ
ートカードまたはマイクロコントローラに使用する高級
プログラミング言語に関する。
れたソフトウェアアプリケーションは、そのままで多種
多様なコンピュータブランド、多種多様なコンピュータ
プラットフォーム上で動作できるように作られている。
これは以下の手続きによって達成される。アプリケーシ
ョンがJava言語によって記述された場合、当該アプ
リケーションは、Java仮想マシンと呼ばれる仮想コ
ンピュータに対する命令コードであるバイトコードを含
む“クラス”ファイルにコンパイルされる。サポートさ
れる各々のプラットフォームに対しては当該仮想マシン
の実装プログラムが用意されている。利用者が使用する
プラットフォームにおいて特定のJavaアプリケーシ
ョンを動作させたい場合、動作したいアプリケーション
からコンパイルして生成したクラスファイルを当該プラ
ットフォームにロードする。使用プラットフォーム上で
構築されるJava仮想マシンが動作し、クラスファイ
ル中のバイトコードをインタプリタ実行し、Javaア
プリケーションが効率的に実行される。
されている。(1)アーノルド、ケン、およびジェーム
ス・ゴスリング「Javaプログラミング言語」、アデ
ィソン-ウェズレー、1996; (2)ジェームスゴス
リング、 ビル・ジョイ、ガイ・スティール 「Java
言語仕様」、サン・マイクロシステムズ、1996(ウ
ェブサイト:http://java.sun.com/doc/language speci
fication);(3)ジェームス・ゴスリング、ヘンリー
マックギルトン「Java言語使用環境:ホワイトペー
パー」、サン・マイクロシステムズ、1995(ウェブ
サイト:http://java.sun.com/doc/language environme
nt/);(4)ティム・リンドホルム、フランク・イェ
リン「Java仮想マシン仕様」、アディソン-ウェズ
レー1997;これらのテキストその他多くのテキスト
においてJavaを用いたプログラム作成方法が記述さ
れている。
プリケーションを実行するために、プラットホームの制
約条件下において動作しうるJava仮想マシン実装プ
ログラムが記述されていなければならず、また、当該プ
ラットフォーム上に使用するJavaアプリケーション
を当該プラットホームの制約条件下においてロードでき
る仕組みが提供されていなければならない。
ームは、比較的容量の大きいメモリとハードディスクを
利用する通常のマイクロプロセッサベースのコンピュー
タである。そのようなマイクロプロセッサ実装は、デス
クトップコンピュータ、パーソナルコンピュータにおい
て広く用いられている。しかしながら、スマートカード
に使用されているようなマイクロコントローラ上で動作
するJava実装は従来にはなかった。
イクロプロセッサとは異なっている。例えば、マイクロ
プロセッサは典型的には、中央演算処理装置(CPU)
を備えており、CPUは正常な動作をするためには外部
周辺装置(例えばメモリ、入力制御装置、出力制御装
置)を必要とする。典型的なマイクロプロセッサは、メ
ガバイトからギガバイトのメモリアクセスが可能であ
り、1命令で[16ビット、32ビット、64(訳注:
当該部分は第2頁末尾部分より)]ビットまたはそれ以
上の情報が処理できる。マイクロプロセッサとは対照的
に、マイクロコントローラは、中央演算処理装置(CP
U)、メモリ、その他の機能要素すべてを1枚の半導体
基板または1つのIC回路(ICチップ)として備えて
いる。マイクロプロセッサが比較的大容量である外部メ
モリにアクセスするのに対して、典型的なマイクロコン
トローラはかなり小容量のメモリにアクセスする。典型
的なマイクロコントローラは、1キロバイト〜16キロ
バイトの内蔵メモリにアクセス可能であり、特に16キ
ロバイト内蔵メモリのものが広く使われている。
リ、ランダムアクセスメモリ(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カードに広く用いられている。このようなスマ
ートカードには、使用時にカードリーダに挿入する必要
がある接触式カードや、カードリーダに挿入する必要の
ない非接触式カードなど多様な形態がある。実際に、非
接触式通信を行なうマイクロコントローラは、時計や指
輪など特別な形状物に埋め込まれることがあり、エルゴ
ノミックス性が高くかつ魅力的な方法でスマートカード
の機能をそれら形状物に統合させている。
ド用のアプリケーションは、典型的には低レベルプログ
ラミング言語(例えばアセンブリ言語)により記述さ
れ、メモリに格納される。
カードをプログラミングする1つの方法は、フランスの
特許出願番号9011818号、発明の名称「簡単にプ
ログラムが可能なマイクロ回路用の携帯型サポート媒体
および前記マイクロ回路をプログラムする方法(Potable
support medium for an easily programmable microci
rcuit and programming procedure for said maicrocir
cuit)」、公開番号2667171号に記載されてい
る。しかし、この特許出願には、データセキュリティに
関する記載、スマートカード上のデータと情報に関する
権限のないアクセスを如何に防ぐか、プログラマがJa
vaなどの表現豊かなプログラミング言語を用いてスマ
ートカード用のプログラムを作ることができるプログラ
ミング環境を如何に提供するか、さらに、スマートカー
ドの実行制約条件内で動作するインタプリタを使ってプ
ログラムを如何に実行するかについて記載されていな
い。
性、格納データの可搬性が確保されなければならない。
ICカードは、そのサイズの小型性、ICカードならで
はのハード的とソフト的なセキュリティの高さによっ
て、パーソナルコンピュータ中のもっともパーソナル用
途のものと位置付けられている。
ントローラの最重要なタスクは、カードに記録されたデ
ータの保護である。それゆえ、1974年のICカード
の発明以来、セキュリティを理由にICカード技術は閉
鎖的にガードされてきた。ICカードは、最初にフラン
スの銀行によりデビットカード(即時決済方式カード)
として利用された。このアプリケーションでは、ICカ
ードをベースとした金融関係のトランザクションが認証
されるためには、ICカード利用者は当該ICカードを
所有しているという事実に加え、さらにICカード内に
記録されている4桁の個人認証番号(PIN)を示さな
ければならない。紛失または盗難されたICカードのP
IN番号を割り出すために役立ちうるあらゆる情報は、
公開されないように秘密に付されている。事実、誰もど
んな情報がPIN番号割り出しに役立つ情報か分からな
いし、ICカードに関するすべての情報は秘密にされて
いる。
アプリケーションは独自仕様で記述されている。例え
ば、各々のアプリケーションは典型的には、特定のカー
ド所有者、特定のID識別主体により識別される。アプ
リケーションがアセンブリ言語などの低レベルプログラ
ミング言語で記述されているため、アプリケーションは
特定種類のマイクロコントローラを対象として記述され
ている。低レベルプログラミング言語の性質により、権
限のないアプリケーションであってもICカード内の格
納データにアクセスすることができる。ICカード用に
記述されたプログラムは特定のID識別子により識別さ
れているので、2つの主体が同じプログラミング機能を
利用を所望した場合、ICカードのマイクロコントロー
ラ上にアプリケーションの当該部分が2つコピーされて
しまうことになる。
システムとして発展してきた。ICカードは、特定端末
のアプリケーションとともに動作するように手作りされ
た専用アプリケーションを含んでおり、ICカードが使
用されるときのセキュリティチェックは、主にカードア
プリケーションと端末アプリケーションが対応するもの
であるかの確認およびICカード上のデータが有効であ
るかの確認により行なっていた。
者がICカードアプリケーションごとに異なるICカー
ドを持ち歩くことを敬遠することが明らかになってき
た。それゆえ、単一プロバイダのICカードを用いた多
目的共用アプリケーションが提供され始めている。例え
ば、現金自動処理装置(ATM)用のカード、デビット
カードが、1枚のICカードプラットフォームが共用さ
れる。しかしながら、端末とカードのすべてのアプリケ
ーションが、他のプロバイダに関する正確な情報のも
と、単一のプロバイダによって作成されるため、依然ク
ローズドシステムとなっていた。
Cカードと端末との通信方法およびプログラム方法に関
し、公開された情報が少なく、ICカード用の汎用アプ
リケーションの広がりを阻害していた。しかし、公衆デ
ジタルネットワーク網(例えば、インターネット、ワー
ルドワイドウェブ)の出現により、ICカード用のアプ
リケーションに対する新たな領域が開かれた。特に、公
衆デジタルネットワーク網の広がりにより、他のプロバ
イダに関する明確な知識なしに、かつICカードのセキ
ュリティ低下の可能性を許すことなく、ICカード上に
新しいアプリケーションのロードをすることが必要とな
った。しかしながら、低レベルプログラミング言語を用
いてプログラミングされた従来のICカードを用いた場
合は上記課題解決の実現が困難であった。 発明の開示 一面において、本発明は、マイクロコントローラ、例え
ば、ICカードやスマートカードを開示する。説明の便
宜上、この発明の開示の欄に続く詳細な説明の欄におい
て、本発明を端末と共に用いられるICカードのアプリ
ケーション例として記述した。しかしながら、本発明は
他のスモールコンピュータプロセッサに関するアプリケ
ーションに適用できるものである。例えば、マイクロコ
ントローラを埋め込んだシステムなどである。
ロセッサは、インタプリタを格納するメモリと、高級プ
ログラミング言語形式を持っている少なくとも一つのア
プリケーションとを含んでいる。メモリの少なくとも一
部分はマイクロプロセッサ内に設けられている。マイク
ロプロセッサは、アプリケーションをインタプリタ処理
するためのインタプリタを利用するように構成されてい
る。
れている。本発明によれば、スマートカードやマイクロ
コントローラのセキュリティ低下を招くことなくスマー
トカードやマイクロコントローラを持つ他のシステムへ
の新しいアプリケーションのダウンロードが可能とな
る。これらアプリケーションは、様々な会社により提供
され、様々な端末装置を利用して様々なタイミングでロ
ードされうる。アプリケーションは、Java仮想マシ
ンにより提供されるセキュリティ機能により、如何なる
アプリケーションコードやデータへの権限なきアクセス
に対して保護されているので、カードのセキュリティは
構成されない。アプリケーションは、強力で主流となっ
ているプログラム開発ツールを用いてJavaやEif
felなどの高級プログラミング言語により作成され
る。新しいアプリケーションは、ソフトマスクを施すこ
となく数時間により即座にプロトタイプが作成され、ス
マートカードにダウンロードされる。
テムは、新しいアプリケーションのダウンロード、高レ
ベルなプログラミング開発、迅速なプロトタイプ作成に
関して、これらの多くの優位点を得ることができる。
Eiffelなど高級言語を用いる際の困難性は、イン
タプリタやこれら言語により作成されたコンパイル形式
のアプリケーションプログラム双方がメモリを大容量に
必要とすることによる。本発明は、この困難性を、処理
の一環としてコンバータをアプリケーションプログラム
に導入することにより解決している。
る。アプリケーションの高級プログラミング言語形式
は、クラスファイル形式を持ち、Javaプログラミン
グ言語形式を持ちうる。アプリケーションはJavaバ
イトコードなどのバイトコードを含む。
ラミング言語で記述されたアプリケーションソースプロ
グラムをコンパイル形式にコンパイルするためのコンパ
イラを含んでいる。本発明は、さらに、コンパイル形式
からインタプリタによるインタプリタ処理に適した形式
に変換するコンバータを含んでいる。
タは、インタプリタが要求したアプリケーションプログ
ラム属性を含ませ、インタプリタが要求しない属性を含
ませないように動作することができる。コンバータは、
さらに、標準高級言語形式におけるコンパイル形式を入
力データとして受け付けることができ、インタプリタに
よるインタプリタ処理に適した形式の出力データを生成
することができる。一面において、コンバータは、ID
ストリングをユニークなID識別子に、例えば整数に、
マッピングする手段を含んでいる。このマッピング処理
は、ストリング−IDマップファイルに記録されうる。
語の特徴とデータタイプのフルセットのうちのサブセッ
トをサポートするように制限することができる。この場
合、コンバータはさらに、アプリケーションプログラム
のコンパイル形式がそれらサポートされている特徴とデ
ータタイプのみ含むように確認する。
の処理、つまり、ジャンプと行き先を記録する処理、特
殊バイトコードをジェネリックバイトコードに変換する
処理またはその逆の処理、IDストリングの代わりにユ
ニークなID識別子を用いるためのリファレンスからバ
イトコードのオペランドを変更する処理、バイトコード
を等価なバイトコードへリナンバリングする処理、それ
ら変換ステップにより影響をうけるディスティネーショ
ンアドレスへのジャンプを再リンキングする処理のう
ち、少なくとも一つの処理ステップを用いて、コンパイ
ル形式のバイトコードをマイクロコントローラのインタ
プリタによるインタプリタ処理に適した形式のバイトコ
ードに変換する手段を含んでいる。
実装した構成とすることができる。セキュリティチェッ
クは、ファイヤウォールの構築処理を含み、サンドボッ
クスセキュリティモデルの構築処理を含みうる。例え
ば、インタプリタは、アプリケーションが、メモリのア
クセス権限のない領域へのアクセスを許さない処理、ア
クセス権限のないマイクロプロセッサのリソースへのア
クセスを許可しない処理、バイトコードの実行がセキュ
リティ制限に違反しないものかをチェックする処理など
を含む処理セットから選ばれたセキュリティ基準を満た
しているものであるか否かを決定できる。
ケーションのロードに先立ち、アプリケーションがどの
セキュリティ制限にも違反していないかを確認し、セキ
ュリティ基準に従ってアプリケーションをロードする処
理を含むことができる。後者のステップの例は、ロード
したIDが、当該アプリケーションをマイクロプロセッ
サ上にロードする許可を持っているかを確認し、ロード
したキーを用いてロードされるアプリケーションを暗号
化する処理を含んでいる。
ントローラをプログラミングする方法を開示しており、
第1のプログラミング言語で記述されたアプリケーショ
ンを、コンパイラによって生成され第1のバーチャルマ
シンによってインタプリタ処理されるように意図された
第1の中間コードから、第2のバーチャルマシンによっ
てインタプリタ処理可能な第2の中間コードに変換し、
第2の中間コードをマイクロコントローラのメモリ上に
ロードする処理ステップを備えている。
に、IDストリングをオブジェクト、クラス、フィール
ド、メソッドに関連付け、それらストリングをユニーク
なID識別子、例えば整数にマッピングする処理を含ん
でいる。
は、次の処理、つまり、ジャンプと行き先を記録する処
理、特殊バイトコードをジェネリックバイトコードに変
換する処理またはその逆の処理、IDストリングの代わ
りにユニークなID識別子を用いるためのリファレンス
からバイトコードのオペランドを変更する処理、バイト
コードを等価なバイトコードへリナンバリングする処
理、それら変換ステップにより影響をうけるディスティ
ネーションアドレスへのジャンプを再リンキングする処
理のうち、少なくとも一つの処理ステップを含んでい
る。
クロコントローラは、インタプリタ可能なプログラミン
グ言語で記述されたプログラムのインタプリタ処理を許
容するには不十分な容量しかないメモリという制限のあ
るリソースセットで稼動するものである。メモリは、高
級プログラム言語から派生したプログラムをインタプリ
タ処理するインタプリタと、ID識別子にストリングを
マッピングする処理、インタプリタ処理に先立ちまたは
インタプリタ処理中にセキュリティチェックを実行する
処理、インタプリタ処理に先立ちまたはインタプリタ処
理中に構造チェックを実行する処理、インタプリタ処理
に先立ちまたはインタプリタ処理中にセマンティックチ
ェックを実行する処理を含む規則セットから選ばれた少
なくとも一つの規則を適用することにより派生した派生
プログラムとを含んでいる。
生プログラムの一つにアクセスする者からリクエストを
受け取るためのロジックを持っている。リクエストの受
領により、派生プログラムが所定のルールセットでコン
パイルされているか否か決定され、この決定に従って、
派生プログラムにアクセスする者を選択的に許可する。
派生プログラムがアクセスしようとするメモリの特別領
域へのアクセス権限を派生プログラムが持っているか否
かを決定することにより、当該派生プログラムがインタ
プリタ処理される間にインタプリタによって当該所定ル
ールが用いられる。
ログラムがインタプリタ処理される間、用いられている
セキュリティルールから選ばれた少なくとも一つのセキ
ュリティチェックを実行するように構成されており、イ
ンタプリタは、バイトコードが実行前チェックおよび実
行後チェックに応じて実行されるか否かを決定するため
の処理に先立って少なくとも一度、各バイトコードをチ
ェックするように構成されており、派生プログラムは、
マイクロコントローラにロードされる処理に先立って少
なくとも一度、セキュリティプロトコルに応じて派生プ
ログラムの統合とロードが実行されたことを確認するチ
ェックが実行される。セキュリティプロトコルは、派生
プログラムのカード上へのロードが許可されるように特
別のIDが有効化されていなければならないことを要求
する。セキュリティプロトコルはさらに復号キーを含
み、ロードされる派生プログラムが復号キーに応じがロ
ーディングキーを用いて暗号化されていることを要求す
る。
処理、復号化処理、署名処理、署名認証処理、相互認証
処理、鍵配送処理、鍵セッション処理のセットから選ば
れた暗号関連サービスを提供するように構成されてい
る。
ムを備えており、ファイルを読み取る権限、ファイルに
書き込む権限、ファイルを消去する権限に対するアクセ
スコントロールリストを持つマイクロコントローラによ
る当該ファイルシステムへの安全なアクセス手段を提供
するように構成されている。さらに、マイクロコントロ
ーラは、ファイルへのアクセス権限を確立するため、ま
たは、カード保有者がファイルにアクセスする権限を得
る認証を確認するための鍵有効化を実行する。
許請求の範囲の記載により明らかにされている。 図面の簡単な説明 図1は、ICカードシステムのブロック図である。
カードにダウンロードする準備の手順を示すフロー図で
ある。
から生成され、使用されるファイルのブロック図であ
る。
をカードクラスファイルへ変換する手順を示すブロック
図である。
を示すフロー図である。
ロー図である。
ェネリックバイトコードへの変換を示すブロック図であ
る。
示すブロック図である。
すブロック図である。
ング手順を示すブロック図である。
マシンのアーキテクチャ用へ変換する様子を示すブロッ
ク図である。
にロードする様子を示すブロック図である。
ンを実行する様子を示すブロック図である。
のメモリ構造を示す図である。
ーキテクチャ全体像を示すフロー図である。
ードJava仮想マシンの実行方法を示すフロー図であ
る。
バイトコードを実行する様子を示すフロー図である。
いカードJava仮想マシンの実行方法を示すフロー図
である。
子との対応付けを示すブロック図である。
のアクセス権限を示すブロック図である。
イクロコントローラの斜視図である。
ントローラの斜視図である。
クロコントローラの斜視図である。
トローラの斜視図である。
ローラの斜視図である。 好ましい実施の形態 図1を参照しつつ、好ましい実施形態を詳しく説明す
る。ICカード10(スマートカードなど)は、Jav
aベースのマルチアプリケーション高級プログラミング
言語および実行環境を提供するように構成されている。
ICカード10は、端末装置14の通信部12bと通信
できるように構成されている通信部12aを有してい
る。いくつかの実施形態において、ICカード10は、
8ビットマイクロコントローラ、512バイトのRA
M、4KバイトのEEPROM、20KバイトのROM
を持つスマートカードであり、端末装置の通信部12b
は、従来タイプのスマートカードリーダであり、端末装
置14は、パーソナルコンピュータスマートカード(P
C/SC)標準仕様をサポートし、またJava開発サ
ポート環境を提供できるウィンドウNTオペレーティン
グシステムが動作する従来タイプのパーソナルコンピュ
ータである。
ントローラとメモリと通信部は、典型的なクレジットカ
ードと実質的に同じ形状を持つプラスティックカードに
埋め込まれている。他の実施形態において、マイクロコ
ントローラとメモリと通信部は、貴重品類(例えば、時
計、指輪、ブレスレット)、車類、通信機器類(例え
ば、加入者携帯モジュール(SIM)カード)、セキュリ
ティデバイス類(例えば、暗号モジュール)、器具類な
ど、プラスティックカード以外の基板上に搭載されるこ
ともある。
を用いて、JavaアプリケーションをICカード10
に対して取り揃えて、ダウンロードする。端末装置の通
信部12bは、ICカード10と端末装置14の間に通
信チャンネルを確立することができる通信デバイスであ
る。通信機器オプションとして、接触型カードリーダ、
無線周波数帯を用いた無線通信、または赤外線通信技
術、シリアル通信プロトコル、パケット通信プロトコ
ル、ISO7816通信プロトコルを用いた機器が含ま
れる。
で動作するアプリケーションと連携動作することができ
る。いくつかのケースにおいて、目的に応じて異なる端
末装置が用いられうる。例えば、ある種の端末装置が、
アプリケーションを取り揃えるために利用され、他の端
末装置が、アプリケーションをダウンロードするために
利用され、また他の端末装置が多様なアプリケーション
を実行するために利用される。端末装置は、現金自動処
理装置(ATM)、販売時点管理端末(POS端末)、
入退出管理システム、有料道路料金徴収システム、アク
セス管理システム、ICカードやマイクロコントローラ
と通信可能な他のシステムでありうる。
るアプリケーションをインタプリタ実行するように、カ
ードJava仮想マシン(カードJVM)16を備えて
いる。
20は、3つのJavaソースコードファイルA(Ja
va20a)、ファイルB(Java20b)、ファイ
ルC(Java20c)を含んでいる。これらのソース
コードファイルは取り揃えられ、Javaアプリケーシ
ョン開発環境22の中でコンパイルされる。Javaア
プリケーション20が開発環境22によりコンパイルさ
れたとき、アプリケーションクラスファイル24が生成
され、また、Javaソースコード20a、20b、2
0cのそれぞれに対応するクラスファイルA(クラス2
4a)、ファイルB(クラス24b)、ファイルC(ク
ラス24c)が生成される。アプリケーションクラスフ
ァイル24は、ティム・リンドホルムとフランク・イェ
リン著書の「Java仮想マシン仕様」アディソン-ウ
ェズレー1996年版の第4章に記載されているスタンダー
ドクラスファイル形式に従って記述されている。これら
アプリケーションクラスファイル24は、ファイルを集
約し、圧縮して単一のカードクラスファイル27を生成
するカードクラスファイルコンバータ26に渡される。
カードクラスファイル27は、通常のカードローダ28
によりICカード10にロードされる。
バータ26は、クラスファイルのポストプロセッサであ
り、標準Javaクラスファイル形式にコード化された
クラスファイル24を処理し、オプションとしてIDイ
ンプットマップファイルのストリング30を利用し、J
avaカードクラスファイル27をカードクラスファイ
ル形式で生成する。上記のカードクラスファイル形式の
1つを、後述する付属ドキュメント(Appendix)Aにおい
て示している。さらに、いくつかの実施形態において、
カードクラスファイルコンバータ26は、カードクラス
ファイルコンバータを引き続き使用するための入力とし
て利用されるIDアウトプットマップファイルのストリ
ング32を生成する。
ングのストリングが、以前に生成されたカードクラスフ
ァイル(マルチプルクラスファイルが同一のストリング
を参照している場合)と一致するように、カードクラス
ファイルコンバータ26は、以前に定義されたインプッ
トマップファイルのストリング30からIDマッピング
のストリングを受け入れる。このようなファイルがない
場合、IDはカードクラスファイルコンバータ26から
生成される。付属ドキュメントBは、IDインプットマ
ップファイルのストリング30とアウトプットマップフ
ァイルのストリング32を生成する実現可能な方法の1
つを示し、例を通じてマッピングの様子を示している。
クラスファイル24aは、クラスファイル情報41、ク
ラスコンスタントプール(class constant pool 42)4
2、クラスとフィールド生成とインタフェースとメソッ
ドに関する情報43、様々な属性情報44を含み、前記
したJava仮想マシン仕様として詳述されている。こ
こで、属性情報44の多くは、この実施形態には必要で
はなく、カードクラスファイルコンバータ26による除
去部分45となっている。除去される属性は、ソースフ
ァイル、定数値、例外処理、ライン番号テーブル、ロー
カル変数テーブル、その他のオプションのベンダ属性を
含んでいる。付属ドキュメントAとして記述されている
典型的なカードクラスファイル27は、以下のアプリケ
ーションクラスファイル24から生成される。カードク
ラスファイル情報46は、全てのアプリケーションクラ
スファイル24a、24b、24cのクラスファイル情
報41の集合から生成される。カードクラスファイルコ
ンスタントプール47(cardclass file constant pool
47)は、全てのアプリケーションクラスファイル24
a、24b、24cのクラスコンスタントプール42の
集合から生成される。カードクラスとフィールド生成と
参照インタフェースとメソッドに関する情報48は、全
てのアプリケーションクラスファイル24a、24b、
24cのクラスとフィールド生成と参照インタフェース
とメソッドに関する情報43の集合から生成される。こ
の実施形態のカード属性情報49は、全てのアプリケー
ションクラスファイル24a、24b、24cの属性情
報44の集合のコード属性のみから生成される。
けるため、アプリケーション24からJavaクラスフ
ァイル24a、24b、24cをまたがって配布される
すべての情報は、図5に示すフローチャートに示された
プロセスにより、1つのカードクラスファイル27内に
隠蔽されている。まず、処理される第1のクラスファイ
ルとして選択される(51a)。コンスタントプール4
2は、以下の方法によりコンパクト化される(51
b)。Javaクラスファイル24aにおいて参照され
るすべてのオブジェクト、クラス、フィールド、メソッ
ドは、クラスファイル24aのコンスタントプール42
にあるストリングを利用することにより、特定される。
カードクラスファイルコンバータ26は、Javaクラ
スファイル24aにあるコンスタントプール42をコン
パクト処理し、最適化したものとする。コンパクト処理
は、クラスファイルコンスタントプール42にある全て
のストリングを整数にマッピング処理することにより達
成される(当該整数の大きさはマイクロコントローラと
採用アーキテクチャに依存する)。この整数が、ID識
別子として参照される。各ID識別子は、アプリケーシ
ョン20の特定オブジェクト、クラス、フィールド、メ
ソッドをユニークに特定する。このように、カードクラ
スファイルコンバータ26は、Javaクラスファイル
コンスタントプール42のストリングを、対応するユニ
ークなID識別子に置き換える。付属ドキュメントB
は、ハロースマートカードJava(HollowSmartCard.j
ava)というアプリケーション例を、以下の本アプリケー
ションのクラスファイルのコンスタントプールに見られ
るストリングに対応するID識別子を説明するテーブル
と共に示している。ID識別子は、本実施形態では16
ビットの符号無し整数として使用されている。
6は、入力されたJavaクラスファイル24aのコー
ド属性に、未サポートの部分51Cがあるか否かをチェ
ックする。カードJVM16は、付属ドキュメントCに
示すように、Javaバイトコード全体のうちのサブセ
ットのみサポートしている。このため、カードクラスフ
ァイルコンバータ26は、未サポートのバイトコードが
Javaクラスファイル24aのコード属性の中にある
か否かをチェックする。もし、未サポートのバイトコー
ドが見つかった場合52は、カードクラスファイルコン
バータはエラーフラグを立て、変換53を停止する。付
属ドキュメントDにおいて“A”とマークされたプログ
ラムコードフラグメントは、これら未サポートのバイト
コードが如何に検出されるかを示している。他のレベル
のチェックは、標準Java開発環境22の要求に応じ
て、アプリケーション20は“-g”フラグとともにコ
ンパイルして実行される。上記したJava仮想マシン
仕様に基づいて、このオプション処理は、クラスファイ
ル24aのローカル変数テーブル属性中にあってJav
aアプリケーション20において使用される変数に関す
る情報を定めるためにJavaコンパイラを必要とす
る。カードクラスファイルコンバータ26は、Java
クラスファイル24aがJavaカードによりサポート
されていないデータ型を参照しているか否かをチェック
するために、この情報を使用する。
6は、Javaクラスファイル24aのうちインタプリ
タ実行に必要とされないすべての不必要な部分を破棄す
る。Javaクラスファイル24aは、Javaクラス
ファイルの属性セクション44のクラスファイル中のバ
イトコードに含まれている情報を格納する。ソースファ
イル、定数値、例外処理、ライン番号テーブル、ローカ
ル変数テーブルなどのカードJVMによるインタプリタ
実行に必要とされない属性情報は、安全な方法により破
棄される45。結局、保持される属性は、コード属性の
みとなる。コード属性は、Javaクラスファイル24
aのメソッドに対応するバイトコードを含んでいる。
ァイルのそれぞれのメソッドのコード属性情報44の検
査処理および、カードクラスファイルのコンスタントプ
ール(card class file constant pool)47のエントリ
を反映するJavaクラスファイルコンスタントプール
42のエントリを参照するバイトコードのオペランドの
変更処理を含んでいる。いくつかの実施形態において、
バイトコードも以下に説明されるように変更される。
ローチャートにより説明されるように、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などの
短い単一のスぺシフィックバイトコードをより一般的な
バイトコードへの変換処理を伴う。例えば、ILOAD
0は、バイトコードILOADと引数0に置きかえられ
うる。この変換は、カードJVM16により変換される
バイトコード数を減らすために実行され、結果として、
複雑さ及びカードJVM16に要求されるコード領域を
減らしている。付属ドキュメントDの中に“C”でマー
クされたプログラムコード部分(fragment)は、如何にこ
れらの変換が実行されるかを示している。このような変
換処理は、生成されるバイトコードのサイズを増やし、
影響されるあらゆるジャンプの再演算を実行することと
なることに注意する必要がある。
ァイルコンバータは、これら定数を定義するために使わ
れるストリングの削除を通じて定数参照を再構築する。
図8では、Javaクラスファイル24aのコンスタン
トプール42のインデックスに見られる定数18を参照
するバイトコードLDC80は、BIPUSHバイトコ
ード82に変換されている。このパスにおいて、カード
クラスファイルコンバータ26は、カードクラスファイ
ルコンスタントプール47内の新しいロケーションを示
すJavaクラスファイルコンスタントプール42のエ
ントリを参照するすべてのバイトコードのオペランドを
変更する。図9は、バイトコードの引数の例を示してい
る。インボークスタティック(INVOKESTATIC)90は、J
avaクラスファイルコンスタントプール42のエント
リを参照しているが、当該エントリはカードクラスファ
イルコンスタントプール47内の新しいロケーションを
反映するように変更されている。変更されたオペランド
94は、この変換処理を示している。付属ドキュメント
Dの中に“D”でマークされたプログラムコード部分
は、如何にこれら変換が実行されるかを示している。
と、オプションのバイトコード変更処理が実行されない
場合は、カードクラスファイルコンバータは、最後の第
5のパス67に進む。オプションバイトコード変更処理
がされた場合は、カードクラスファイルコンバータは、
オリジナルバイトコードを、利用されている特定のカー
ドJVM16でサポートできる異なるバイトコードセッ
トに変換する。1つの想定される変更処理は、オリジナ
ルバイトコード60をカードJVM16のバイトコード
にリナンバリングする処理である(図10参考)。この
リナンバリング処理は、オリジナルバイトコード60の
バイトコード100をリナンバリングバイトコード10
2へ変換する処理である。値21により識別されるバイ
トコードILOADは、値50によって識別されるよう
にリナンバリングされる。この変更処理は、カードJV
M16の中での型テスト(第3パスのチェックとしても
知られている)を最適化するように実行される。付属ド
キュメントDの中で“E”マークで示されるプログラム
コードの部分は、この実施形態の実装を示している。こ
の変更処理は、カードJVM16がバイトコードをイン
タプリタ実行するために必要となるプログラム領域を減
らすために実行される。本質的に、この変更処理は、似
通ったオペランドを持つバイトコードが同じグループに
なるようにバイトコードをカードJVM16バイトコー
ドにグループ分けし、カードJVM16バイトコード間
にギャップが生じないようにする。この処理により、カ
ードJVM16が、効率的にカードJVM16バイトコ
ードと有効な型のチェックが実行できる。
すように、カードクラスファイルコンバータは、オリジ
ナルバイトコード60を異なる仮想マシンアーキテクチ
ャ用に用意された異なるバイトコードセットに変換す
る。ワードスタック114で利用できるように生成され
たJavaバイトコードILOAD112は、バイトス
タック118で利用できるようにカードJVM16のバ
イトコードILOADB116に置きかえられる。ワー
ドスタック114のエレメントは、4バイトのスタック
領域の割り当てを必要とし、バイトスタック118のエ
レメントは1バイトのスタック領域を必要とする。しか
し、このオプションは、実行処理速度を増すことができ
るが、オリジナルバイトコードの状態で得ることができ
たセキュリティ特性を失うというリスクを負う。
はステップ66では、バイトコード60のサイズが変更
されうるので、カードクラスファイルコンバータ26は
影響されるあらゆるジャンプを再リンク67しておかな
ければならない。そこで、ジャンプ処理は、カードクラ
スファイルコンバータ26の第1ステップ61において
記録され、ジャンプ先を適当な値に固定することで調整
を実行する。付属ドキュメントDの中で“F”でマーク
されたプログラムコードの部分は、如何にこれらジャン
プの固定が実行されるかを示している。
ータは、オリジナルバイトコード60と等価であるバイ
トコード68を生成し、ロードできる状態に用意でき
た。これにより、Javaクラスファイル24aをカー
ドクラスファイル27への変換が完了する。
24が残っている場合55には、当該残っているそれぞ
れのクラスファイルに対してステップ51a、51b、
51c、52、54を繰り返して実行処理する。カード
クラスファイルコンバータ26は、処理されて生成され
たクラスファイル24のマップと変更したバイトコード
を収集56し、カードクラスファイル27を生成する5
7。もし必要であれば、カードクラスファイルコンバー
タ26は、IDアウトプットマップファイル32のスト
リングを生成する。これには、変換処理中にJavaク
ラスファイル24のコンスタントプール42に対応する
ストリングとして割り当てられるすべての新しいID識
別子のリストを含んでいる。
にあるカードローダ28は、ISO7816規格のコマ
ンドを利用して、カードクラスファイルをICカード1
0のローディング・実行制御部120に送る。ローディ
ング・実行制御部120は、カードオペレーティングシ
ステム122と共に、複数のカードアプリケーション1
26を格納するために使われる。このカードオペレーテ
ィングシステム122は、カードファイルシステム12
4のサポートを含み必須のシステムリソースを提供する
ものである。通常のカードローダの多くは、低レベル言
語で記述され、カードオペレーティングシステム122
によってサポートされている。好ましい実施形態におい
て、ブートストラップローダは、Java言語で記述さ
れ、ICカード10は、当該アプリケーションを実行で
きるようにJava仮想マシンが含まれている。ローデ
ィング・実行制御部120のJava実装は、付属ドキ
ュメントEに示されている。ローディング・実行制御部
120は、カードクラスファイル26を受け取って、I
Cカード10のEEPROMのカードファイルシステム
に格納されるJavaカードアプリケーション126X
を生成する。このように、複数のJavaカードアプリ
ケーション126X、126Y、126Zは1枚のカー
ドに格納することができる。ローディング・実行制御部
120は、端末装置14がJavaカードアプリケーシ
ョンを選択して速やかに実行でき、カードリセットがで
きるコマンドをサポートしている。
制御部120からリセットコマンドを受け取るか、実行
コマンドを受け取ると、カードJava仮想マシン(カ
ードJVM)16は、選択されたJavaカードアプリ
ケーション126Zの選択されたクラスの所定のメソッ
ド(例えば、メインメソッド)で実行する。カードJV
M16は、Javaカードアプリケーション126Z
が、カードオペレーティングシステム122にアクセス
できるようにし、付属ドキュメントFに示すように、I
/O、EEPROMサポート、ファイルシステム、アク
セス制御、他のネイティブJavaメソッドを利用する
システム機能の利用を可能とする。
126Zは、端末装置14との通信チャンネルを確立す
るための通信部12aを利用して端末装置14にある適
切なアプリケーションと通信する。通信部12aから端
末装置14へ入力されるデータは、端末装置の通信ドラ
イバ132を介して端末装置14へ渡される。当該通信
ドライバ132は、通信部12aが利用する通信プロト
コルが扱えるように記述されている。当該データは、利
用されているICカード10の機能の規定が記述された
ICカードドライバ134に渡され、端末装置アプリケ
ーション136に対して高レベルなソフトウェアサービ
スを提供する。好ましい実施形態では、このドライバ
は、PC/SCスマートカードサービスプロバイダ(S
SP)ソフトウェアである。データは、その後、端末装
置アプリケーション136に渡される。端末装置アプリ
ケーション136は、特定のカードアプリケーション1
26Zの実行処理ができるように提供されている機能を
扱えるものとなっている。このように、コマンドとレス
ポンスが、端末装置アプリケーション136と選択した
カードアプリケーション126Zの間を行き来する。端
末装置アプリケーションは、ユーザとのやり取りによ
り、ユーザから入力されるコマンドを受け取り、そのう
ちいくつかは、Javaカードアプリケーション126
Zに渡され、ユーザに返されるJavaカードアプリケ
ーション126Zからのレスポンスを受け取る。
は、カードアプリケーション126Xをインタプリタ実
行するインタプリタである。カードJVMに影響を与え
るマイクロコントローラのメモリリソースは、カードR
OM140、カードRAM141、カードEEPROM
にある。カードROM140は、カードJVM16とカ
ードオペレーティングシステム122を格納するために
利用される。カードROM140は、ROMに固定記憶
するカードアプリケーション140aとクラスライブラ
リ140bを格納するために利用される。ロード可能な
アプリケーション141a、141b、ライブラリ14
1cは、カードRAM141に格納されうる。カードJ
VM16は、カードアプリケーション141a、141
b、140aをインタプリタ実行する。カードJVM1
6は、カードRAMを使って、VMスタック144aと
システム状態変数144bを記憶する。カードJVM1
6は、VMスタック144aにより実行される処理過程
を記憶する。カードJVM16により生成されたオブジ
ェクトは、RAMヒープ144c、EEPROMヒープ
146a、ファイルシステム147のいずれかに格納さ
れる。
ヒープは、RAMヒープ144cとしてカードRAM1
41に格納されるか、EEPROMヒープ146aとし
てカードEEPROM142に渡され格納される。カー
ドRAM141は、システムスタック148の状態を記
録するために使われる。システムスタック148はマイ
クロコントローラのネイティブコードで記述されたルー
チンによって利用される。カードJVM16は、カード
EEPROM142を利用してアプリケーションデータ
を、EEPROMヒープ146aまたはファイルシステ
ム147のいずれかに格納される。ファイルに格納され
たアプリケーションデータは、カードオペレーティング
システム122のインタフェースを介して扱うことがで
きる。このインタフェースは、カードROM140に格
納されるクラスライブラリ140b、またカードEEP
ROM142に格納されるロード可能なクラスライブラ
リ141cにより提供される。インタフェースの一例
を、付属ドキュメントFに示す。カード内のアプリケー
ションとデータはファイアウォール機構149により互
いに隔離される。
なリソースによって動作させるために、カードJVM1
6は、Javaプログラミング言語の絞り込んだサブセ
ットを実装している。したがって、Javaアプリケー
ション20は、Javaバイトコードの絞り込んだサブ
セットを含んだクラスファイルとしてコンパイルされる
こととなる。このサブセットにより、アプリケーション
プログラマーは、絞り込んだJavaのサブセットによ
りプログラムを作成することができ、現行のJava仮
想マシンと互換性を維持することができる。カードJV
M16によりインタプリタ実行されるJavaバイトコ
ードのセマンティックは、上述したJava仮想マシン
仕様により記述される。カードJVM16によりインタ
プリタ実行されるバイトコードのサブセットを付属ドキ
ュメントCに示されている。カードクラスファイルコン
バータ26は、Javaアプリケーション20をチェッ
クし、当該サブセットにおいて利用可能な特性(feature
s)のみを使用するものであるか確かめ、カードJVM1
6により理解され、インタプリタ実行できる形式に変換
する。
M16は、異なるサブセットまたはバイトコード116
の引数セットをインタプリタ実行できるようにデザイン
されている。Javaの絞り込んだサブセットは、オリ
ジナルJavaバイトコードにより提供されるセキュリ
ティの観点、または、主流のJava開発ツールとの互
換性の観点からは好ましくないが、異なるバイトコード
セットを使用することは、いくつかの処理性能の改善を
もたらしうる。
ョン126は、クラスとクラスのメソッドにより定義さ
れるエントリポイントを持っている。エントリポイント
は、IDインプットマップ30のストリングとしてマッ
ピングされ、カードクラスファイルコンバータ26によ
り割り当てられる。Javaアプリケーション20内の
クラス、メソッド、フィールドは、カードクラスファイ
ルコンバータ26によりID識別子が割り当てられる。
例えば、メインアプリケーションクラスに対応するID
識別子は、F001として定義され、“main( )V”など
のメインメソッドに対応するID識別子は、F002と
して定義される。
図15のフローチャートに記述されている。カードJV
Mにおける実行は、実行制御120において開始され、
実行するカードアプリケーション126Zを選択する。
カードJVM16のカードアプリケーションでインタプ
リタ処理されるエントリポイント(メソッド)を見つけ
出し、割り当てる(152)。カードJVM16は、メ
ソッドをインタプリタ処理する(153)。インタプリ
タ処理がうまく成功すると(154)、カードJVM1
6は成功を報告し(155)、実行制御120に制御を
返す。インタプリタ処理153において、カードJVM
16が処理できないエラーや例外処理(典型的には、リ
ソース制限、セキュリティ違反)が発生すると、カード
JVMは停止し156、端末装置14に適切なエラー報
告を行なう。
コードの実行を処理するサブルーチンである。このサブ
ルーチンは、図16により示されている。与えられたメ
ソッド160は、バイトコードを当該メソッド中で実行
する。サブルーチンは、メソッドのパラメタが準備され
ると開始される(161)。この処理は、VMスタック
144aポインタおよびVMスタック144aフレーム
リミットの設定処理、メソッドの第1のバイトコードの
プログラムカウンタの設定処理を含む。
(162)。もし、メソッドのフラグがネイティブであ
ると、メソッドは実際にネイティブメソッドコード(マ
イクロコントローラのネイティブプロセッサコードで記
述されたサブルーチン)をコールする。この場合、カー
ドJVM16は、実行効率の高いコールを用意し(16
3)、ネイティブコードサブルーチンに戻る。ネイティ
ブメソッドのパラメタは、直接またはシステムスタック
148を介してVMスタック144aに渡される。適切
なセキュリティチェックが実行され、ネイティブメソッ
ドサブルーチンがコールされる。ネイティブメソッドサ
ブルーチン処理の結果(もし結果があれば)は、次の実
行処理されるバイトコードがアクセスできるようにVM
スタック144aに入れられる。
ープに入る(164)。バイトコードディスパッチルー
プは、それぞれのバイトコードの実行準備、実行、終了
処理を行なう。メソッド160におけるバイトコードの
インタプリタ処理が終了したとき、またはカードJVM
16においてリソース制限、セキュリティ違反が発生し
た場合、ループ処理が終了する。
165を必要としている場合、カードJVM16は分岐
処理の準備をする(165a)。次のバイトコードが検
索される(165b)。それぞれのバイトコードを処理
する処理コストを低く抑えるため、バイトコード引数、
長さ、型などの多くの共通する要素が抽出され、格納さ
れる。
によって提唱されているセキュリティを構築するため、
クラスファイルのバイトコードは、当該モデルの構成内
容を確認して決定されなければならない。これらのチェ
ックは典型的に、公知であるバイトコードベリファイア
に関するプログラムにより実行される。これらバイトコ
ードベリファイアはJava仮想マシン仕様に記述され
る4つのパスを実行処理する。バイトコードベリファイ
アにより保証されるランタイムセキュリティを提供する
ため、カードJVM16はベリファイアの第3パスおよ
び第4パスに含まれるチェック処理を実行する。カード
JVM16によりインタプリタ処理されたバイトコード
60のセキュリティが保証されれば(ほとんど不可能で
あるが)、このチェック処理は、カードJVM16によ
って省略できる。最小限の処理として、オブジェクトリ
ファレンスが偽物ではなく、VMスタック144aとロ
ーカル変数境界が監視できる限り、コードセキュリティ
が維持される。この処理には、実行処理されたバイトコ
ードに関するVMスタック144aの状態のチェック処
理が要求される。
を強化するため、付属ドキュメントGに示す256バイ
トテーブルが生成される。このテーブルは、バイトコー
ド番号によりインデックス化されている。このテーブル
は、バイトコードインデックスに関する型情報とレング
ス情報を含んでいる。コード化された最初の5ビット
は、型を表わし、最後の3ビットはレングスを表わして
いる。バイトコードの型情報とレングス情報は、バイト
コード番号によりテーブルから直接インデックス化され
る。この型情報とレングス情報は、付属ドキュメントH
に示すチェック処理に用いられる。付属ドキュメントH
において、チェック処理は、付属ドキュメントGのテー
ブルから得られるレングス情報と型情報のデコード処理
により開始される。レングス情報は、プログラムカウン
タをカウントアップするために利用される。型情報は、
実行しようとするバイトコードを扱うVMスタック14
4aのデータ型が正しいものであることを保証するため
の実行前チェックに利用される。テーブル格納に用いる
256バイトのROMは、カードJVM16上で実行す
るオリジナルJavaバイトコードに割り当てられ、カ
ードにロードされるJavaクラスファイルに要求され
る変更を最小限にする。追加Javaバイトコードは、
比較的適切にテーブルエントリを更新するのが簡単であ
るので、サポートしやすい。
に、メソッドにおけるJavaバイトコードは、再配置
処理において付属ドキュメントHのテーブルに格納され
るバイトコード型情報、レングス情報を暗示するように
リナンバリングされる。付属ドキュメントHを参照して
説明する。その結果、VMスタック144aの状態と処
理されたバイトコードに関して行なわれるチェック処理
は、テーブルルックアップを含む必要はない。チェック
処理は、付属ドキュメントIに示されるように単純比較
のセットにより実行される。この実施形態は、256バ
イトのテーブルを設けないので、ROM容量の面で有利
である。しかし、新たなバイトコードを、サポートする
バイトコードセットに加えることは、注意して行なう必
要がある。なぜなら新たなバイトコードをサポートする
バイトコードの暗示ナンバリング処理スキーム(implic
it numbering scheme)に適合させる必要があるためで
ある。
は、実行スピードを考慮してあらゆるセキュリティチェ
ックを実行しないものとすることができる。この処理
は、図18のフローチャートにより示される。図18の
フローチャートは、図16のフローチャートからセキュ
リティチェック処理を除いたものと同じものとなってい
る。このオプションは、バイトコードのセキュリティが
保証されていない場合には、セキュリティの面からは好
ましいものではない。
ェックを強化する。バイトコードがローカル変数を参照
する場合、カードJVM16は、当該参照が有効なもの
であるか否かをチェックし、有効でない場合はエラーを
返す。参照が有効である場合、カードJVM16は、そ
の後のチェック処理に用いるローカル変数の型を格納す
る。VMスタック144aのポインタは、参照がまだ有
効範囲にあるか否かチェックする。もし有効範囲にない
場合は、例外処理を実行する。バイトコード番号をチェ
ックする。もし、サポートされていないものであれば、
例外処理を実行する。
される165d。カードJVM16により変換されたバ
イトコードは、付属ドキュメントCにリストアップされ
ている。バイトコードのセマンティックは、バイトコー
ドのディスパッチ処理前後のVMスタック144aの状
態とともに、上述のJava仮想マシン仕様に記述され
ている。いくつかのバイトコード(INVOKESTATIC、INVO
KESPECIAL、 INVOKENONVIRTUAL、INVOKEVIRTUALのバイ
トコード)は、カードJVM16にリエントリされ、要
求する処理が開始されるサブルーチン161にエントリ
される。図17は、バイトコード実行ルーチンのフロー
チャートを示している。このルーチンは、与えられたバ
イトコード171を実行する。カードJVM16は、バ
イトコードが要求するインストラクションを実行する
(172)。カードJVM16は実行処理される中でル
ーチン制限が発生すると(173)、エラーを返す(1
56)。エラーがカードJVM16により端末装置に返
される。もし、バイトコード実行が正常処理されると、
正常(success)を返す(175)。
く設定するために結果の型が正しく利用され、適切にV
Mスタック144aのデータ型のフラグ処理が行なわれ
る。バイトコード情報テーブルから先行処理165bで
集められたバイトコード情報は、当該実行直後のバイト
コードに関するVMスタック144aの状態を設定する
ために利用される。
コードに関するVMスタック144aの出力状態の設定
処理は、バイトコードがリナンバリング処理されると簡
単になる。この処理は、付属ドキュメントIによって示
されている。
VM16は、カードJVM16の実行スピードを考慮し
て、VMスタック144aの出力状態の設定処理を省略
することができる。このオプションは、バイトコードの
セキュリティが保証されていない場合には、セキュリテ
ィ面から好ましいものではない。
ド165fは破棄される。この処理は、引数をVMスタ
ック144aから除去する処理を含む。ひとたび、バイ
トコード処理が完了すると、次のメソッドのバイトコー
ド処理のループ164が繰り返される。
了すると、VMスタック144aの内容がクリアされる
(166)。これにより、あらゆるオブジェクトリファ
レンスが他のカードJVM16インボケーションに対し
てアクセスすることを防ぎ、カードJVM16のセキュ
リティを破ることを防いでいる。バイトコードのディス
パッチループ164の終了(167)は、カードJVM
16が要求されたメソッド実行が完了したことを意味す
る。
ンを相互に隔離するために、ICカード10はカードJ
VM16が提供するファイアウォール機構149を利用
する。カードJVM16には標準パス3とパス4のベリ
ファイアチェックが実装されているので、アプリケーシ
ョンが他のアプリケーションのデータ領域、コード領域
を参照しようとすれば検知することができ、セキュリテ
ィエラー156フラグを立てる。例えば、通常の低レベ
ルアプリケーションは、非参照データ型であっても参照
データとして扱うことができて、その結果、権限のない
メモリ領域へのアクセスを可能とし、セキュリティ違反
を起こすことができる。本発明によれば、カードアプリ
ケーション126Zが非参照型データを参照データとし
て使おうとすると、セキュリティエラー156を起こし
てしまうこととなる。通常のJavaによれば、この保
護アプリケーション環境は、サンドボッスクアプリケー
ション−インタプリタ実行環境として規定されている。
独立した動作はしない。事実、このファイアウォール構
成は、通常のアクセス制御リストおよび暗号機構とオー
バラップし、また、相互に強化し合う関係にあり、以下
のテーブルに示されるものである。
カードのデータとアプリケーションを隔離し、カードア
プリケーション126が権限を持つICカード10のリ
ソースのみにアクセスできるようにする。
ョン126X、126Y、126Zはカードアプリケー
ション126が実行されるときに特定の特権を与えられ
る。例えば、これら特権は、カードアプリケーション1
26がどのデータファイルにアクセスでき、カードアプ
リケーション126がファイルシステム147において
どの処理が実行できるかを規定するものである。カード
アプリケーション126に認められる特権は、通常は、
特定のカードアプリケーション126Zが端末装置14
を介してユーザにより開始されときに設定される。
ッド(cryptographic identification verification met
hods)が、ID190(例えば、190a、190b、
190c)と関係付けられ、カードアプリケーション1
26を実行する特権のセットが設定される。特定のID
190cのカードアプリケーション126Zとの関連性
は、カードアプリケーション126Zの実行が開始され
ると設定され、それゆえ図20に示すように特定の実行
アプリケーション200が生成される。ID190は、
IDトークンと関連付けられた、ユニークで読みやすい
テキストストリングである。IDトークン(例えば、個
人認証番号(personal identification number (PIN))、
または、RSA暗号方式の秘密鍵)は、暗号方式の鍵で
ある。
ケーション126Zを実行するため、カードアプリケー
ション126ZのID190cは、認証されなけらばな
らない。ID190cは、ID190cと関連付けられ
たIDトークンのデモンストレーション知識(demonstra
ting knowledge)により認証される。カードアプリケー
ション126Zが実行されるためには、エージェント
(例えば、カードホルダー、その他アプリケーションを
実行したい者)は、アプリケーションのID暗号鍵を所
有していること、または知っていることを示さなければ
ならない。
ーションする一つの方法は、単にその鍵自体を提示すれ
ば良い。PIN認証方式が、この認証方式の例である。
実際に鍵自体を提示することなく暗号鍵を所有している
ことをデモンストレーションする他の方法は、平文を当
該鍵により暗号化または復号化することができることを
示せば良い。
行アプリケーション200は、カードアプリケーション
126Zに加えて認証されたID190cを含んでい
る。カードアプリケーション126は、これらの要素す
べてが揃っていないと実行することができない。カード
アプリケーション126Zは、実行するデータ処理を定
義し、権限を与えられたID190cが、どのオブジェ
クトのオペレーションを実行するのかを規定する。例え
ば、特定のアプリケーション126Zは、特定のID1
90cに関連付けられたファイルシステム147のID
“C”のファイル202のみをアクセスでき、特定のカ
ードアプリケーション126Zは、ID体190c以外
のIDに関連付けられた他のファイル204に対しては
アクセスできない。
ータの隔離を確実にするための追加ステップを採りう
る。ICカード10は、3つのソフトウェア機能のステ
ップを備えている。認証されたIDのアクセス制御リス
トに関するステップ、Javaベースの仮想マシンに関
するステップ、データファイルとアプリケーション実行
とコミュニケーションチェンネルを保護するワンタイム
セッション暗号鍵に関するステップである。まとめる
と、一つの実施形態では、これらソフトウェア機能セッ
トにより、当該実施形態におけるアプリケーションデー
タのファイアウォール149を提供する。以下は、それ
ぞれのソフトウェア機能セットについて説明し、3つの
ソフトウェア機能セットが、ICカード10におけるア
プリケーションとデータの隔離の確保のため、如何に協
同しているかを示している。
スが制御されて保護されているICカード10上のそれ
ぞれのオブジェクト(例えば、データファイルまたは通
信チャンネル)と関連付けられている。ACL上のエン
トリ(例えば、特定のオブジェクト)は、eテュプルを
参照するデータ形式である。
issions) 型フィールドは、以下のID(IDフィールド内)、例
えば、ユーザ(ジョンスミスなど)、グループなどのI
D型を示している。許可フィールドは、オブジェクトを
利用するIDが実行できる処理のリスト(例えば、読み
取り、付加、更新など)を示している。
ァイルは、 “USER、 AcmeAirlines、RAU” であるので、IDが“AcmeAirlines”であるあらゆるア
プリケーションは、データファイルの読み取り“R”、
付加“A”、更新“U”を実行することができる。加え
て、ACLは、データファイルの生成と消去を選択的に
許可できる。さらに、ACLは、アプリケーションの実
行を選択的に許可できる。
0によってアクセスするときにはいつでも、アクセス
は、カードJVM16により遮断でき、カードオペレー
ションシステム122に渡され、オブジェクトに関連付
けられたACLがあるかないかが決定される。もし、関
連付けられたACLが存在する場合には、実行アプリケ
ーション200と関連付けられたID190cがACL
によりマッチングが採られる。もし、IDが見つからな
い場合、または、要求されているアクセスの型が許可で
きないものである場合には、アクセスが拒否される。そ
れ以外は、アクセスが認められ、処理が実行される。
末装置14の間の単一のデータパスが形成されることに
よる潜在的な問題を回避するため、通信チャンネルの隔
離化が、カードアプリケーション126Zと端末装置ア
プリケーション136間で実施されるワンタイムセッシ
ョンキーの交換によるID認証プロセスによって達成さ
れる。当該キー209は、後続の認証する端末装置13
6と認証されるアプリケーション126Z間のトラフィ
ックを暗号化するために利用される。ワンタイムセッシ
ョンキー209が設定されると、不正な端末装置アプリ
ケーションは、認証された端末装置14とICカード間
の通信を“読み込む”ことも、認証を受けていない処理
をカードアプリケーション上で実行させるように“だま
す”こともできない。
号化は、カードオペレーティングシステム122、カー
ドアプリケーション126Z自体のいずれによっても扱
うことができる。前者のケースでは、端末装置14との
通信では、アプリケーションに対してトランスペアレン
ト(復号可能)に暗号化されており、メッセージトラフ
ィックは複合化されて、アプリケーションのデータ領域
に渡される。後者のケースでは、カードアプリケーショ
ン126Zは、セキュリティ用のエクストラ階層を提供
する暗号化、複合化を実行するか否かを選択でき、アプ
リケーションにより、データ生成されれば即座に暗号化
しておき、当該データが利用される場面になったときの
みに複合化する。それ以外は、データが、セッションキ
ー209をもって暗号化されたままの状態である。
ウォールは、3つのソフトウェア機能セットにより相互
強化が図られている。データファイルは、認証されたI
Dアクセス制御リストにより保護されている。アプリケ
ーション実行領域は、カードJVM16により保護され
ている。通信チャンネルは、ワンタイムセッションキー
209の暗号処理により保護されている。
クロコントローラ(プロセッサ12)で利用され、IC
カード以外の各種デバイス(例えば、車のエンジン)の
制御を実行できる。これらアプリケーションにおいて
は、マイクロコントローラが高級プログラミング言語の
格納と実行を行なうための小規模なプラットフォーム
(例えば、半導体基板上に配置された中央演算処理ユニ
ット、メモリ)を提供することとなる。マイクロコント
ローラを利用する、現存するデバイスの多く、新しく作
られるデバイスは、本発明を利用して、高級プログラミ
ング言語を用いてマイクロコントローラのプログラムを
することができ、これらデバイスのアプリケーションを
含めることができる。
プリケーション、Javaアプレット(applets)、Ja
vaアグレット(aglets)、Javaサーブレット(servl
ets)、Javaコムレット(commlets)、以下に示される
クラスファイルの結果であるJavaコンポーネント
と、他の非Javaプログラムなどあらゆるプログラム
が含まれる。
ァイル以外のソースファイルを含んでいる。Java以
外のいくつかのプログラミング言語は、それぞれのソー
スファイルからクラスファイルを生成するためのコンパ
イラまたはアセンブリを備えている。例えば、プログラ
ミング言語EIFFELは、JVMバイトコードを生成
するEIFFELコンパイラであるPIRMINカルベ
ラ(kalberer)の“J−EIFFEL”を利用してクラス
ファイルを生成することができる(ウェブサイト:http
//www.spin.ch/〜kalberer/jive/index.htm)。Ada
95からJavaバイトコードへのトランスレータは、
以下の参考文献(Taft, S. Tucker, “Programming the
Internet in Ada 95”proceedings of Ada Europe 96,
1996)に記述されている。ジャスミン(Jasmin)は、J
avaバイトコードアセンブラであり、クラスファイル
を生成するために利用される。ジャスミン(Jasmin)は、
以下の参考文献に記述されている。“Meyer, Jon and T
roy Downing, "Java Virtual Machine", O'Reilly, 199
7。クラスファイルのソースにかかわらず、インタプリ
タ処理されるためのコードを生成するため、上記の記述
は、Java以外の言語に適用される。
ラ210を含むICカード、スマートカードは、プラス
ティックカード212上に搭載されている。このプラス
ティックカード212は、典型的なクレジットカードと
同様の形状を持つものである。通信部12aは、通信チ
ャンネルを確立するための接触式パッド214か、また
は、無線通信システムを備えている。
に、マイクロコントローラ210は、携帯電話または設
置型電話220に搭載され、電話にスマートカードの機
能を効率的に持たせることができる。
ーラ210は、図23に示すように、キーリング230
に組み込まれる。これにより、キーリング230のマイ
クロコントローラ210と関連付けられているIDを認
識するための仕組みが装備されている自動車に対して、
高いセキュリティのもと、アクセスすることが可能とな
る。
4に示すように、高いエルゴノミックス性をもってマイ
クロコントローラ210を埋め込むことができる。これ
ら実施形態は、典型的には、通信チャンネルを確立する
ため無線通信システムを利用し、また、ユーザに対して
最小限の手間でアクセス制御のための実装を可能とする
方法を提供する。
ステム252に搭載されるマイクロコントローラ210
を示している。この実施形態では、マイクロコントロー
ラは、自動車へのアクセス制御処理(例えば、IDチェ
ック、自動車のイグニッションシステムの起動制御な
ど)、無線通信による有料道路料金徴収システム、自動
車の通行位置を検知する位置決めシステム(GPS)の
インタフェース提供など、多様な目的に利用される。
発明の開示に基づいて、他の様々な変更や置換が、当業
者にとって明らかである。このような変更や置換は、本
発明の範疇に入るものであり、特許請求の範囲に記載さ
れた内容に基づいて、本発明の技術的範囲に含まれる。 付属ドキュメントA(APPENDIX A) 好ましい実施形態におけるカードクラスファイル形式 カードクラスファイルは、オリジナルクラスファイルの
圧縮形式である。カードクラスファイルは、オリジナル
クラスファイルからJavaプログラムをインタプリタ
処理するために必要とされるセマンティック情報のみを
含んでいる。オリジナルクラスファイルの間接参照は、
コンパクト表現の結果、直接参照により置き換えられ
る。カードクラスファイル形式は、以下の原則に基づい
ている。標準クラスファイル形式に近づけること。
ファイル形式に可能な限り近づけるべきである。クラス
ファイルのJavaバイトコードを変更しない。バイト
コードを変更せず、バイトコードに対する構造的、静的
な制約条件がそのままであることを確実にする。実装を
容易にすること。
想マシンの実装を行なうものに対して十分シンプルなも
のとする。異なるが等価に振舞う実装を認める。 フィージビリティ カードクラスファイル形式が、スマートカード技術に適
合するためにコンパクトにされたものでなければならな
い。現在の技術的制約に適合し、さらに、将来の技術革
新の適合性を失わないものであること。この記載は、
「Java仮想マシン仕様“The JavaTM Virtual Machi
ne Specification”[1](以下、レッドブックと呼
ぶ)」というタイトルの本の第4章「クラスファイル形
式」に基づいている。このドキュメントは、レッドブッ
クに記載された標準クラスファイル形式に基づいている
ので、ここでは、レッドブックにはない情報のみ提示す
る。レッドブックは、すべての規則の最終的な権原とし
て扱われる。標準クラス形式との主な違いは、以下であ
る。
16ビットのID識別子のみを含むように最適化され、
可能な限り間接参照が直接参照に置き換えられている。
削除され、または、再グループされている。
Card class File Format) 当該セクションは、Javaカードクラスファイル形式
を記載している。
数のJava型を含んでいる。この型は、クラスまたは
インタフェースである。カードクラスファイルは、8ビ
ットバイトストリームにより構成される。16ビット、
32ビット、64ビット量データは、それぞれ、連続す
る8ビットバイトデータを2つ、4つ、8つ読み込むこ
とにより構成される。マルチバイトデータは、常に、ビ
ックエンディアンで格納され、大きなバイトから順にな
っている。Javaでは、この形式は、java.io.Datain
put、 java.io.DataOutputのインタフェース、java.io.
DatainputStream、java.io.DataOutputStreamなどのク
ラスによりサポートされている。Javaクラスファイ
ルデータを表わすデータ型と同じセットを定義して用い
る。U1、U2、U4の型は、それぞれ、割り当てられ
ていない1、2、4バイト量を表わしている。Java
において、これら型は、リードアンサインドバイト(rea
dUnsignedByte)、リードアンサインドショート(readUns
ignedByte)、“java.io.Datainput”のインタフェース
のリードイント(readint)などのメソッドにより読み込
みされる。カードクラスファイル形式は、C言語のよう
な構造分類記号法で書かれている擬構造を使用して表現
される。Javaカード仮想マシンのクラスとクラスイ
ンスタンスのフィールドの混乱を避けるために、カード
クラスファイル形式を記述する構造内容はアイテムと呼
ばれる。C構造のフィールドとは異なって、連続したア
イテムはカードクラスファイルの中にパディングもアラ
イメントもなしで連続して格納されている。変数サイズ
のアイテムから成る変数サイズのテーブルは、いくつか
のクラスファイル構造で使用されるている。C言語のよ
うなテーブルアイテムを参照する配列シンタックスを使
っても、テーブルが可変サイズ構造のストリームである
という事実は、テーブルインデックスをテーブルのバイ
トオフセットとして直接変換できることを意味する。こ
こで配列と呼んでいるデータ構造は、文字通り配列構造
を持っている。カードクラスファイル構造と標準のクラ
スファイル構造を見分けるために、大文字を加える。例
えば、オリジナルのクラスファイルの中のfield_infoを
カードクラスファイルの中では、FieldInfoに改名す
る。
e) カードクラスファイルは単一のCardClassFile構造を含
んでいる: CardClassFile構造のアイテムは以下の通りである: minor_version, major_version minor_versionとmajor_versionアイテムの値は、このカ
ードクラスファイルを作り出した、オフカードJava
カード仮想マシン(off-card Java card virtualmachin
e)のマイナーおよびメジャーバージョンの番号である。
通常、Javaカード仮想マシンの実装は、与えられた
メジャーバージョン番号と、0から幾つかの特定番号の
マイナーバージョン番号を持っているカードクラスファ
イルをサポートする。Javaカードフォーラムのみ
が、カードクラスファイルバージョン番号の意味を定義
することができる。 name_index name_indexアイテムの値は、有効なJavaクラス名を
表さなければならない。name_indexによって表されたJ
avaクラス名は、カードを実行するメインアプリケー
ションに対応するちょうど同じJavaクラス名でなけ
ればならない。カードクラスファイルは、カードにおい
て実行されるアプリケーションを構成するクラスまたは
インタフェースを含んでいる。Javaでは、各クラス
がメインメソッドを含むことが許容されるので、カード
アプリケーションに対応するメインメソッドを含んでい
るクラスファイルを区別する方法がある。 const_size const_sizeの値は、カードクラスファイルコンスタント
プールの中のエントリの番号を与える。constant_pool
インデックスは、ゼロ以上、const_sizeより以下ならば
有効であるとされる。 max_class この値は、カードクラスファイルの中に存在しているク
ラスの番号を参照する。ネームリゾリューション(name
resolution)と、Javaカードのリンキングは、オフ
カードJava仮想マシンにより実行されるので、全て
のクラスファイルとアプリケーションに要求されるクラ
スは、1つのカードクラスファイルにまとめられる。 constant_pool[] constant_poolは、CardClassFile構造とそのサブ構成内
で参照される様々なストリング定数、クラスネーム、フ
ィールドネーム、他の定数を表す可変長の構造()のテー
ブルである。カードクラスファイルにおける最初のエン
トリはconstant_Pool [0]である。インデックス0からc
onst_sizeまでの各constant_Poolのテーブルのエントリ
は、可変長の構造()を持っている。 class[] クラスは、カードにロードされるアプリケーションを構
成するmax_classクラスのテーブルである。 コンスタントプール(Constant Pool) すべてのconstant_poolのテーブルのエントリには, 以
下の一般形式がある: constant_poolテーブルの中の各アイテムは、cp_infoエ
ントリの種類を示す1バイトのタグで始めなければなら
ない。info 配列の内容はタグの値に従って異なる。有
効なタグとそれらの値はレッドブックで指定されたもの
と同じである。それぞれのタグバイトの後には、特定の
定数に関する情報を与える2またはそれ以上のバイトが
続く。追加情報の形式はタグ値に従って異なる。現時点
で含まれる必要があるのタグは、CONSTANT_Class、CONS
TANT_FieldRef、CONSTANT_MethodRefおよびCONSTANT_In
terfaceRefのみである。そのままの形で追加される他の
タグのサポートは、仕様書に含まれている。 CONSTANT_Class CONSTANT_Class_info構造は、クラスまたはインタフェ
ースを表現するために使用される: CONSTANT_Class_info構造のアイテムは以下である: tag タグアイテムには、CONSTANT_Class(7)の値を持ってい
る。 name_index name_indexアイテムの値は、有効なJavaクラス名を
表さなければならない。name_indexによって表されたJ
avaクラス名は、オリジナルクラスファイルのconsta
nt_Poolの対応するCONSTANT_Classエントリによって記
述されるJavaクラス名とまったく同じものである。
CONSTANT_Fieldref, CONSTANT_Methodref,CONSTANT_Int
erfaceMethodref Fields, メソッド, およびインタフェ
ースメソッドは、同様の構造によって表される: これらの構造のアイテムは以下の通りである: tag CONSTANT_FieldrefInfo構造のタグアイテムは、CONSTAN
T_Fieldref(9)の値を持っている。CONSTANT_MethodrefI
nfo構造のタグアイテムは、CONSTANT_Methodref(10)の
値を持っている。CONSTANT_InterfaceMethodrefInfo構
造のタグアイテムは、CONSTANT_InterfaceMethodref(1
1)の値を持っている。 classs_index class_indexアイテムの値は、有効なJavaクラスま
たはインタフェース名を表さなければならない。class_
indexによって表された名前はオリジナルのクラスファ
イルのccnstant_Poolの対応するCONSTANT_Class_infoエ
ントリによって記述される名前とまったく同じものであ
る。 name_sig_index name_sig_indexアイテムの値は、有効なJava名と型
を表さなければならない。name_sig_indexによって表わ
された名前と型は、オリジナルクラスファイルのconsta
nt_pool構造のCONSTANT_NameAndType_infoエントリによ
って記述される名前と型とまったく同じものである。
される。この構造の形式は以下の通りである. ClassInfo構造のアイテムは以下の通りである: name_index name_indexアイテムの値は、有効なJavaクラス名を
表さなければならない。name_indexによって表されたJ
avaクラス名は、オリジナルクラスファイルの対応す
るClassFile構造で記述されるJavaクラス名とまっ
たく同じものである。 max_field max_fieldアイテムの値は、このクラスまたはインタフ
ェース型によって宣言されたインスタンス変数を表すフ
ィールドテーブルの中のFieldInfo()構造の番号を与え
る。この値は、カードクラスファイルの非静的フィール
ドの番号を参照する。クラスがインタフェースを表すな
らば、max_fieldの値は0である。 max_sfield max_sfieldアイテムの値は、このクラスまたはインタフ
ェース型によって宣言されたクラス変数を表すフィール
ドテーブルの中のFieldInfo構造の番号を与える。この
値は、カードクラスファイルの静的フィールドの番号を
参照する。 max_method max_methodアイテムの値は、メソッドテーブルの中のMe
thodInfo()構造の番号を与える。 max_interface max_interfaceアイテムの値は、このクラスまたはイン
タフェース型のダイレクトスーパーインタフェースの番
号を与える。 superclass クラスのために、スーパークラスアイテムの値は、有効
なJavaクラス名を表さなければならない。スーパー
クラスによって表されたJavaクラス名は、オリジナ
ルクラスファイルの対応するClassFile構造で記述され
るJavaクラス名とまったく同じものである。スーパ
ークラス、またそのスーパークラスのいずれもは、最終
的なクラスではない。スーパークラスの値が0ならば、
このクラスは、class java.lang.Objectであり、クラス
またはインタフェースをスーパークラスなしで表わさな
ければならない。インタフェースに関しては、スーパー
クラスの値はいつも、Java class java.lang.Objectを
表さなければならない。 access_flags access_flagsアイテムの値は、クラスとインタフェース
宣言とともに利用される変更子(modifier)のマスクであ
る。access_flags変更子とそれらの値は、オリジナルク
ラスファイルの対応するClassFile構造のaccess_flags
変更子と同様のものである。 field[] フィールドテーブルの中の各値は、クラスまたはインタ
フェース型のフィールドの完全な記述を与える固定長レ
コード、FieldInfo()構造でなければならない。フィー
ルドテーブルは、このクラスまたはインタフェースによ
って宣言されるそれらのフィールドのみを含む。スーパ
ークラスまたはスーパーインタフェースから引き継がれ
るフィールドを表すアイテムを含まれていない。 interface[] インタフェース配列における各値は、有効なインタフェ
ース名を表さなければならない。各エントリで表される
インタフェース名は、オリジナルクラスファイルの対応
するインタフェース配列において記述されるインタフェ
ース名とまったく同じものでなければならない。 method[] メソッドテーブルの各値は、クラスまたはインタフェー
スのメソッドに対するJava仮想マシンのコードの完
全な記述を与える可変長MethodInfo () 構造を持ってい
る。MethodInfo構造は、このクラスまたはインタフェー
ス型によって宣言されるすべてのメソッド、インスタン
スメソッド、クラス、クラス(静的)メソッドを表わし
ている。メソッドテーブルは、このクラスによって明ら
かに宣言されるメソッドを含むのみである。インタフェ
ースには、単一のメソッド<clinit>、インタフェース初
期化メソッドのみがある。メソッドテーブルは、スーパ
ークラスまたはスーパーインタフェースから引き継がれ
たメソッドを表わすアイテムが含まれていない。
て記述されている。この構造の形式は以下のようになっ
ている。
名を表さなければならない。name_indexによって表され
たJavaフィールド名はオリジナルクラスファイルの
対応するfield_info構造で記述されるJavaフィール
ド名とまったく同じものである。 signature_index signature_indexアイテムの値は、有効なJavaフィ
ールドディスクリプタを表さなければならない。署名(s
ignature)インデックスによって表されるJavaフィ
ールドディスクリプタはオリジナルクラスファイルの対
応するfield_info構造で記述されるJavaフィールド
ディスクリプタとまったく同じもである。 access_flags access_flagsアイテムの値は、アクセス許可を記述する
ことに使用された変更子のマスクとフィールドのプロパ
ティである。access_flags変更子とそれらの値は、acce
ss_flags変更子とオリジナルクラスファイルの対応する
field_info構造のものと同じである。
れる。MethodInfo構造は、Java仮想マシンのインス
トラクションと、単一のJavaメソッド、インスタン
ス初期化メソッド、クラスまたはインタフェース初期化
メソッドの補助情報を含む可変長データ構造である。構
造は、以下の形式を持つ: MethodInfo構造のアイテムは以下の通りである: name_index name_indexアイテムの値は、特別な内部のメソッド名(<
init>か<clinit>のどちらかの1つ)か、有効なJava
メソッド名のどちらかを表さなければならない。name_i
ndexによって表されたJavaメソッド名はオリジナル
クラスファイルの対応するmethod_info構造で記述され
るJavaメソッド名とまったく同じものである。 signature_index signature_indexアイテムの値は、有効なJavaメソ
ッドディスクリプタを表さなければならない。signatur
e_indexによって表されたJavaメソッドディスクリプタ
はオリジナルクラスファイルの対応するmethod_info構
造で記述されるJavaメソッドディスクリプタとまっ
たく同じものである。 max_local インボケーション(invocation)においてメソッドに渡さ
れたパラメータを除いて、max_localsアイテムの値は、
このメソッドによって使用されるローカル変数の数を与
える。第1のローカル変数のインデックスが0である。
1ワード値のもっとも大きなローカル変数のインデック
スは、max_locals-1である。 max_arg max_argアイテムの値は、引数の最大の数をこのメソッ
ドに与える。 max_stack max_stackアイテムの値は、このメソッド実行中のあら
ゆるポイントにおけるオペランドスタックのワードの最
大数を与える。 access_flags access_flagsアイテムの値は、アクセス許可を記述する
ことに使用された変更子のマスクと、メソッドまたはイ
ンスタンス初期化メソッドのプロパティである。access
_flags変更子とそれらの値は、access_flags変更子とオ
リジナルクラスファイルの対応するmethod_info構造と
同じものである。 code_length code_lengthアイテムの値は、このメソッドのためのコ
ード配列におけるバイト数を与える。code_lengthの値
は、ゼロ以上でなければならず、コード配列は空ではな
い。 exception_length exception_lengthアイテムの値は、exception_infoテー
ブルの中のエントリの数を与える。 code[] コード配列はメソッドを実現するJava仮想マシンコ
ードの実際のバイトを与える。コード配列がバイトアド
レス可能なマシンのメモリに読み込まれるとき、もし配
列の第1バイトが4バイト境界で並べられるならば、テ
ーブルスイッチ(tableswitch)とルックアップスイッチ
(lookupswitch)の32ビットオフセットは4バイトに並
べられ、コード配列配置の結果に関するさらなる情報の
インストラクションの記述を参照する。コード配列の内
容の詳細な制約条件は大規模であり、Java仮想マシ
ン仕様で記述されるものと同じである。 einfo[] einfo配列における各エントリは、コード配列における1
つの例外処理ハンドラを記述する。それぞれのeinfoエ
ントリは以下のアイテムを含んでいる: start_pc, end_pc 2つのアイテム、start_pcおよびend_pcの値は例外処理
ハンドラがアクティブとなるコード配列における範囲を
示す。start_pcの値はインストラクションのオペコード
のコード配列の有効なインデックスでなければならな
い。end_pcの値は、インストラクションのオペコードの
コード配列の有効なインデックスでなければならず、ま
たはcode_lengthのコード配列の長さに等しいものでな
ければならない。start_pcの値はend_pcの値以下でなけ
ればならない。start_pcは包括的で、end_pcは排他的で
ある。すなわち、プログラムカウンタがstart_pc、end_
pcのインターバルにある間は、例外処理ハンドラはアク
ティブである。 handler_pc handler_pcアイテムの値は、例外処理ハンドラの始まり
を示す。アイテムの値は、コード配列への有効なインデ
ックスでなければならず、インストラクションのオペコ
ードのインデックスでなければならず、code_length it
em値以下でなければならない。 catch_type catch_typeアイテムの値がノンゼロならば、それは有効
なJavaクラス型を表現しなければならない。catch_
typeによって表わされたJavaクラス型は、オリジナ
ルクラスファイルの対応するmethod_info構造のcatch_t
ypeによって記述されるJavaクラス型とまったく同
じでなければならない。このクラスはクラスThrowable
またはそのサブクラスの1つに違いない。例外処理ハン
ドラは、投げられた例外処理が与えられたクラスのイン
スタンスまたはそのサブクラスの1つであれば、コール
される。catch_typeアイテムの値がゼロならば、この例
外処理ハンドラはすべての例外処理のためにコールされ
る。これは、最後に実装される。
ンパクションのために消去されるかまたは再グループ化
される。Javaバイトコードのインタプリタ処理に必
要であるどんな情報も犠牲にすることなく、事前に定義
された属性であるSourceFile、ConstantValue、Excepti
ons、LineNumberTableおよびLocal-VariableTableは消
去されうる。特定のメソッドのためバイトコードを含む
事前に定義された属性Codeが、対応するMethodInfo構造
に移動される。
件(Constraints on Java Card Virtual Machine Cod
e) Javaカード仮想マシンコードのメソッド、インスタ
ンス初期化メソッド,クラスまたはインタフェース初期
化メソッドがカードクラスのMethodInfo構造の配列コー
ドに格納される。このコード配列の静的と構造的な制約
条件の両方とも、レッドブックで記述したものと同じも
のである。
ドクラスファイル形式の制限(Limitations of the Jav
a Card Virtual Machine and Java Card class File Fo
rmat) Javaカード仮想マシンでの以下の制限は、Java Car
d Virtual Machine仕様書のこのバージョンによって規
定されている。
あたり、CardClassFile構造()の16ビット定数サイズ
フィールドによって65535のエントリ数に制限され
る。これは、単一のカードクラスファイルの総合複雑度
(total complexity)に対する内部制限として機能する。
また、このカウントは、カードのアプリケーションに利
用可能なクラス階層のコンスタントプールに対応するエ
ントリを含む。
構造のインデックスのサイズによって65535バイト
に制限される。
thodInfo構造()の最大ローカルアイテムのサイズによっ
て255に制限される。
ドのサイズとClassInfo構造()のmax_sfieldアイテムに
よって510に制限される。
造()の最大メソッドアイテムのサイズによって255に
制限される.オペランドスタックのサイズは、MethodInf
o構造()のmax_stackフィールドによって255ワードに
制限される。
Machine Specification, Addison-Wesley, 1996. 付属ドキュメントB(APPENDIX B) IDインプットとアウトプットのストリング カードJVMの訂正処理において、宣言され生成された
ID識別子が正しく管理されることは、非常に重要であ
る。この管理は、IDインプットファイルString-ID IN
Mapの定義によって制御される。このテキストファイル
は、以下に示されたものを基礎として、ネーム領域(nam
espace)の領域が何の目的を使用されるかを宣言してい
る。このマップの1つの可能なアレンジメントは、カー
ドJVMインタプリタによる内部利用のためにいくつか
のID識別子をリザーブすることができることであり、
残りはカードJVMアプリケーションに割り当てられ
る。
ることになっているすべてのアプリケーションは自らの
ID識別子を、Ox4000からOx7FFFの間に割り当てる。如
何なるロードされたアプリケーションも他のアプリケー
ションにアクセスするのは許可されていないので、この
領域は各アプリケーションが自由に利用できる。
にID識別子を管理するときには注意を要する。これら
のID識別子の管理は、ID識別アウトプットファイル
String-ID OUTMapのオプション生成により補助される。
このマップは、新しいString-ID割り付け処理(binding
s)により増えて行くString-lD INMapである。これら割
り付け処理(bindings)は、カードクラスファイルコンバ
ータのアプリケーションが終了したときに生成される。
String-ID OUTMapは、カードにロードされたサポートラ
イブラリとOSインタフェースのために生成される。こ
のマップは、カードにロードされたサポートライブラリ
とOSインタフェースを使用するスマートカードのアプ
リケーション用のString-lD INMapとして使用される。
新しいアプリケーションを割り当てるとき、一般にこの
ファイルは破棄される。例として、以下のJavaプロ
グラム、HelloSmartCard.javaを考える。コンパイルさ
れると、HelloSmartCard.classのクラスファイルが生成
される。このクラスファイルは、それにクラス名、メソ
ッドおよび型情報を表すストリングが埋め込まれてい
る。上記されたString-ID INMapに基づいて、カードク
ラスファイルコンバータは、カードクラスファイルコン
バータによってID識別子が割り当てられたクラスファ
イル中のストリングと置き換えるカードクラスファイル
を生成する。テーブル1は、HelloSmartCard.classの定
数プールの中にあるストリングを、カードクラスファイ
ルコンバータが割り当てたID識別子とともに、リスト
アップしている。いくつかのストリング(“java/lang/O
bject”など)は、事前割り当てされている値(F002)であ
り、いくつかのストリング(“()V”など)は、新しい値
(4004)となっている。
バイトコード
バイトコードに対する標準Javaバイトコード番号
ロセス
テム機能へのアクセスメソッド
ている。これは、似通った動作をするコードをセットと
してグループ化するために使われる。一般にこの動作
は、バイトコードの型がスタック上でどのように処理さ
れるかを反映しているが、型0、13、14、15は、
コメントセクションで定義された特定種類のインストラ
クションを反映するものである。
型の実行前後のスタックの状態を示したものである。
置なし)−属性ルックアップテーブル/* *バイトコードデコード情報テーブル。これは、バイト
コード型とバイトコード長を含んでいる。コード0から
201(202のコードがある)の現時点のすべてのバ
イトコードをサポートしている(例、no quicks)。*
/
理 インストラクションのデコード。これは、次のPC(プ
ログラムカウンティング)の長さとインストラクション
型を与えるものである。
処理を実装する。
を実装する
ェック処理 インストラクションを獲得する。インストラクションの
数値はインストラクション型の中に暗示的に含まれてい
る。
処理を実装する。 /* *インプットスタックの状態をチェックする。バイトコ
ードをリナンバリングし、バイトコードの値(以下、バ
イトコード)が正しいグループに属しているか否かをテ
ストすることにより、必要なセキュリティチェックが実
行できる。
を実装する。
ごとの再配置
0)
級言語で書かれたプログラムを実行可能なマイクロコン
トローラ(10)であって、 メモリと、 メモリにロードされ、前記リソース制約条件内で動作す
るインタプリタ(16)を備え、前記インタプリタ(16)は、 内部においてアプリケーションプログラムがプログラミ
ング環境によって生成される前記メモリにロードされた
アプリケーションプログラムをインタプリタ処理できる
ことを特徴とし、以下を備える。 a)高級言語ソースコードであるアプリケーションソー
スプログラミング(20)をコンパイル形式(24)に
コンパイルするコンパイラ(22) b)前記コンパイラ形式(24)を前記インタプリタ
(16)によりインタプリタ処理するのに適した最小化
形式(minimized form)(27)へと変換する後処理をす
るコンバータ(26) ─────────────────────────────────────────────────────
4)
ウンロードする準備の手順を示すフロー図である。
れ、使用されるファイルのブロック図である。
ラスファイルへ変換する手順を示すブロック図である。
ー図である。
る。
バイトコードへの変換を示すブロック図である。
ク図である。
図である。
示すブロック図である。
ーキテクチャ用へ変換する様子を示すブロック図であ
る。
る様子を示すブロック図である。
る様子を示すブロック図である。
造を示す図である。
ャ全体像を示すフロー図である。
a仮想マシンの実行方法を示すフロー図である。
ドを実行する様子を示すフロー図である。
ava仮想マシンの実行方法を示すフロー図である。
付けを示すブロック図である。
権限を示すブロック図である。
イクロコントローラの斜視図である。
ロコントローラの斜視図である。
視図である。
ケーション 132 通信ドライバ 134 ICカードドライバ 136 端末装置アプリケーション 140 カードROM 140a 固定化されたアプリケーション 140b クラスライブラリ 141 カードRAM 141a ロード可能アプリケーションA 141b ロード可能アプリケーションB 141c ロード可能クラスライブラリ 142 カードEEPROM 144a VMスタック 144b システム変数 144c RAMヒープ 145 ランタイムサポート 146a EEPROMヒープ 147 ファイルシステム 148 システムスタック 150 インストラクションディスパッチループ 165d インストラクションサポート 209 セッションキー 210 マイクロコントローラ 212 プラスティックカード 214 接触式パッド 220 携帯電話または設置型電話 230 キーリング 240 貴重品類 252 電気回路サブシステム 254 自動車 ─────────────────────────────────────────────────────
4)
ウンロードする準備の手順を示すフロー図である。
れ、使用されるファイルのブロック図である。
ラスファイルへ変換する手順を示すブロック図である。
ー図である。
る。
バイトコードへの変換を示すブロック図である。
ク図である。
図である。
示すブロック図である。
ーキテクチャ用へ変換する様子を示すブロック図であ
る。
る様子を示すブロック図である。
る様子を示すブロック図である。
造を示す図である。
ャ全体像を示すフロー図である。
a仮想マシンの実行方法を示すフロー図である。
ドを実行する様子を示すフロー図である。
ava仮想マシンの実行方法を示すフロー図である。
付けを示すブロック図である。
権限を示すブロック図である。
トローラの斜視図である。
の斜視図である。
ローラの斜視図である。
斜視図である。
視図である。
ケーション 132 通信ドライバ 134 ICカードドライバ 136 端末装置アプリケーション 140 カードROM 140a 固定化されたアプリケーション 140b クラスライブラリ 141 カードRAM 141a ロード可能アプリケーションA 141b ロード可能アプリケーションB 141c ロード可能クラスライブラリ 142 カードEEPROM 144a VMスタック 144b システム変数 144c RAMヒープ 145 ランタイムサポート 146a EEPROMヒープ 147 ファイルシステム 148 システムスタック 150 インストラクションディスパッチループ 165d インストラクションサポート 209 セッションキー 210 マイクロコントローラ 212 プラスティックカード 214 接触式パッド 220 携帯電話または設置型電話 230 キーリング 240 貴重品類 252 電気回路サブシステム 254 自動車
Claims (62)
- 【請求項1】 スマートカードであって、 Javaインタプリタを格納したメモリと、 Javaアプリケーションをインタプリタ処理するため
に前記インタプリタを利用するように構成されたプロセ
ッサを備えたスマートカード。 - 【請求項2】 マイクロコントローラであって、 半導体基板と、 前記半導体基板に配置されたメモリと、 前記メモリに格納されセキュリティチェック処理を実装
するように構成されたプログラミング言語インタプリタ
と、 前記基板に配置され前記メモリに結合された中央演算処
理装置を備えたことを特徴とするマイクロコントロー
ラ。 - 【請求項3】 前記インタプリタが、Javaバイトコ
ードインタプリタを備えた請求項2に記載のマイクロコ
ントローラ。 - 【請求項4】 前記セキュリティチェック処理が、ファ
イアウォール構築処理を備えた請求項2に記載のマイク
ロコントローラ。 - 【請求項5】 前記セキュリティチェック処理が、サン
ドボックスセキュリティモデルの実施処理を備えた請求
項2に記載のマイクロコントローラ。 - 【請求項6】 スマートカードであって、 メモリと、 前記メモリに格納されセキュリティチェック処理を実行
するように構成されたプログラミング言語インタプリタ
と、 前記メモリに結合された中央演算処理装置を備えたこと
を特徴とするスマートカード。 - 【請求項7】 前記インタプリタが、Javaバイトコ
ードインタプリタを備えた請求項6に記載のスマートカ
ード。 - 【請求項8】 前記セキュリティチェック処理が、ファ
イアウォール構築処理を備えた請求項6に記載のスマー
トカード。 - 【請求項9】 前記セキュリティチェック処理が、サン
ドボックスセキュリティモデルの実施処理を備えた請求
項6に記載のスマートカード。 - 【請求項10】 ICカードを使用する方法であって、 第2のアプリケーションの第2のインストラクションを
第1のアプリケーションの第1のインストラクションへ
変換する処理と、 ICカードのメモリに前記第1のインストラクションを
格納する処理と、 前記第1のインストラクションを実行するため前記IC
カードのインタプリタを使用する処理を備えたことを特
徴とする方法。 - 【請求項11】 前記第1のアプリケーションが、クラ
スファイル形式を持つ請求項10に記載の方法。 - 【請求項12】 前記第2のアプリケーションが、クラ
スファイル形式を持つ請求項10に記載の方法。 - 【請求項13】 前記第1のインストラクションが、バ
イトコードを備えた請求項10に記載の方法。 - 【請求項14】 前記第2のインストラクションが、バ
イトコードを備えた請求項10に記載の方法。 - 【請求項15】 前記第1のインストラクションが、J
avaバイトコードを備えた請求項10に記載の方法。 - 【請求項16】 前記第2のインストラクションが、J
avaバイトコードを備えた請求項10に記載の方法。 - 【請求項17】 前記第1のインストラクションが、前
記第2のインストラクションから生成されたものである
請求項10に記載の方法。 - 【請求項18】 前記変換処理が、前記第2のインスト
ラクションから第1のインストラクションを形成するリ
ナンバリング処理を含む請求項10に記載の方法。 - 【請求項19】 前記第2のインストラクションが、定
数参照を含み、 前記変換処理が、前記第2のインストラクションの定数
参照を定数に置き換える処理を含む請求項10に記載の
方法。 - 【請求項20】 前記第2のインストラクションが、参
照を含み、前記変換処理が、前記参照の格納位置をシフ
トする処理を含み、さらに、 前記第1のインストラクションを前記変換処理後の参照
に再リンク付けする請求項10に記載の方法。 - 【請求項21】 前記第1のインストラクションが、仮
想マシンの第1の型のバイトコードを備え、 前記第2のインストラクションが、仮想マシンの第2の
型のバイトコードを備え、前記第1の型が前記第2の型
と異なる請求項10に記載の方法。 - 【請求項22】 マイクロコントローラであって、 クラスファイル形式を持つアプリケーションとインタプ
リタとを格納しているメモリと、 前記メモリに結合されたプロセッサであって、前記プロ
セッサは、前記アプリケーションを実行するためインタ
プリタを利用するように構成されているものを備えたこ
とを特徴とするマイクロコントローラ。 - 【請求項23】 さらに、端末装置と通信するように構
成された通信部を備えた請求項22に記載のマイクロコ
ントローラ。 - 【請求項24】 前記端末装置が、カードリーダを備
え、前記通信部が、前記カードリーダと通信するように
接点を備えた請求項23に記載のマイクロコントロー
ラ。 - 【請求項25】 前記端末装置は、無線通信デバイスと
備え、前記通信部は、前記無線通信デバイスと通信する
ための無線受信部を備えた請求項23に記載のマイクロ
コントローラ。 - 【請求項26】 前記端末装置は、無線通信デバイスを
備え、前記通信部は、前記無線通信デバイスと通信する
ための無線送信部を備えた請求項23に記載のマイクロ
コントローラ。 - 【請求項27】 前記クラスファイル形式が、Java
クラスファイル形式である請求項22に記載のマイクロ
コントローラ。 - 【請求項28】 ICカードを利用する方法であって、 前記ICカードのメモリに第1のアプリケーションを格
納する処理と、 前記ICカードのメモリに第2のアプリケーションを格
納する処理と、 前記第2のアプリケーションが前記第1のアプリケーシ
ョンおよび前記第1のアプリケーションが関連するデー
タのいずれにもアクセスできないように前記第1のアプ
リケーションと第2のアプリケーションを隔離するファ
イアウォールを生成する処理を備えたことを特徴とする
方法。 - 【請求項29】 前記第1のアプリケーションと第2の
アプリケーションが、Javaバイトコードを含む請求
項28に記載の方法。 - 【請求項30】 前記ファイアウォールの生成方法が、
Javaインタプリタ利用を含む請求項28に記載の方
法。 - 【請求項31】 前記第1のアプリケーションの格納処
理が、前記ICカードの製造と関連して実行され、 前記第2のアプリケーションの格納処理が、前記カード
製造が完了した後に実行される請求項28に記載の方
法。 - 【請求項32】 リソース制約条件セットを持ったマイ
クロコントローラ(10)であって、 メモリと、 前記メモリにロードされ、前記リソース制約条件内で動
作するインタプリタ(16)を備え、前記マイクロコン
トローラ(10)は、 前記インタプリタによりインタプリタ処理するために前
記メモリにロードされた少なくとも1つのアプリケーシ
ョンを持ち、前記少なくとも1つのアプリケーションが
以下のプログラミング環境により生成されたもの。 a)高級言語ソースコードであるアプリケーションソー
スプログラミング(20)をコンパイル形式(24)に
コンパイルするコンパイラ(22)、 b)前記コンパイラ形式(24)を前記インタプリタ
(16)によりインタプリタ処理するために最適化した
最小化形式(minimized form)(27)に後処理するコン
バータ(26)。 - 【請求項33】 前記コンパイル形式(24)が、属性
情報を含み、前記コンバータ(26)が、前記インタプ
リタ(16)が必要とする属性情報を含める手段と前記
インタプリタ(16)が必要としない属性情報を含めな
い手段を備えた請求項32に記載のマイクロコントロー
ラ(10)。 - 【請求項34】 前記コンパイル形式(24)が、標準
Javaクラスファイル形式であり、前記コンバータ
(26)が、入力を前記標準Javaクラスファイル形
式の入力コンパイル形式(24)として受け入れ、前記
インタプリタ(16)によるインタプリタ処理に適する
形式の出力(27)に変換する請求項32又は33に記
載のマイクロコントローラ(10)。 - 【請求項35】 前記コンパイル形式(24)が、オブ
ジェクト、クラス、フィールド、メソッドを認証するス
トリングの関連情報を含み、前記コンバータは、前記ス
トリングをユニークなID識別子(51b)にマッピン
グ処理する手段を含む請求項32から34のいずれか一
項に記載のマイクロコントローラ(10)。 - 【請求項36】 前記それぞれのユニークなID識別子
が整数である請求項35に記載のマイクロコントローラ
(10)。 - 【請求項37】 前記ストリングのユニークなID識別
子へのマッピングは、ストリングのID識別子マップフ
ァイル(30、32)への格納である請求項35又は3
6に記載のマイクロコントローラ(10)。 - 【請求項38】 前記高級言語は、特性(feature)の第
1のセットとデータ型の第1のセットをサポートし、前
記インタプリタ(16)は、前記特性(feature)の第1
のサブセットと前記データ型の第1のサブセットをサポ
ートし、前記コンバータ(26)は、前記コンパイル形
式(24)が前記特性(feature)の第1のセットのサブ
セットの特性(feature)のみを含んでいることおよび前
記データ型の第1のセットのサブセットのデータ型のみ
を含んでいることをベリファイする(51c、52)請
求項35から37のいずれか一項に記載のマイクロコン
トローラ(10)。 - 【請求項39】 前記コンパイル形式(24)が、バイ
トコード形式であり、前記コンバータ(26)が、下記
のステップを含む処理ステップのうちの少なくとも1つ
の処理ステップを用いて、前記コンパイル形式(24)
のバイトコードを前記インタプリタ(16)によりイン
タプリタ処理するために適したバイトコード(27)に
変換する手段(54)を備えた請求項35から38のい
ずれか一項に記載のマイクロコントローラ(10)。 a)オリジナルバイトコードのすべてのジャンプ処理と
そのジャンプ先を記録する処理(61)、 b)スぺシフィックバイトコードを等価なジェネリック
バイトコードに、またはその逆方向に変換する処理(6
3)、 c)バイトコードオペランドを、IDストリングを用い
た参照からユニークなID識別子を用いた参照に変更す
る処理(64) d)コンパイル形式(24)のバイトコードをインタプ
リタ処理に適した形式の等価なバイトコードにリナンバ
リングする処理(66)、 e)ステップa)、b)、c)、d)の変換処理により
影響を受けるジャンプ処理のジャンプ先アドレスに再リ
ンク付けする処理(67) - 【請求項40】 前記アプリケーションプログラムが、
当該コンパイル形式(24)の実行およびインタプリタ
処理のために必要とされるリソースが前記マイクロコン
トローラ上で利用可能なリソースを超えるコンパイル形
式(24)にコンパイルされた請求項35から39のい
ずれか一項に記載のマイクロコントローラ(10)。 - 【請求項41】 前記コンパイル形式(24)が、多様
なコンピュータプラットフォームへの移植性(portabili
ty)があるように規定された請求項35から40のいず
れか一項に記載のマイクロコントローラ(10)。 - 【請求項42】 前記インタプリタ(16)が、さら
に、アプリケーションのインタプリタ処理中に、下記セ
ットから選ばれた少なくとも1つの規則を含む規則セッ
トから定められたセキュリティ基準に引っかかったか否
かを決定するように構成された請求項35から41のい
ずれか一項に記載のマイクロコントローラ(10)。前
記アプリケーションが権限のないメモリ領域にアクセス
することを認めないか否か、 前記アプリケーションがアクセス権限のないマイクロコ
ントローラのリソースへにアクセスすることを認めない
か否かであり、 ここで、前記アプリケーションが、バイトコードから構
成され、バイトコードの実行がセキュリティ制約条件の
違反を起こさないことを確認する実行処理を少なくとも
1回先行して複数のバイトコードのチェック処理をする
ように構成されているもの。 - 【請求項43】 少なくとも1つのアプリケーションプ
ログラムが、 前記アプリケーションのローディング処理に先立って、
前記アプリケーションがあらゆるセキュリティ制約条件
に違反しないことを確認する処理ステップと、 セキュリティを維持してローディング処理を行なう処理
ステップと、 を含んでいるプロセスにより生成されたアプリケーショ
ンである請求項35から42のいずれか一項に記載のマ
イクロコントローラ(10)。 - 【請求項44】 前記セキュリティを維持してローディ
ング処理する処理ステップが、ローディングする主体が
アプリケーションをマイクロコントローラ上にロードす
る許可を持つことを確認する処理ステップを含む請求項
43に記載のマイクロコントローラ(10)。 - 【請求項45】 前記セキュリティを維持してローディ
ングするステップが、ローディングキーを利用してロー
ドされるアプリケーションを暗号化する処理ステップを
含む請求項43又は44に記載のマイクロコントローラ
(10)。 - 【請求項46】 メモリと、リソース制限のセットによ
って動作するプロセッサを持つマイクロコントローラを
プログラミングする方法であって、前記方法が、 アプリケーションプログラム(20)を第1のプログラ
ミング言語により入力する処理と、 前記第1のプログラミング言語のアプリケーションプロ
グラム(20)を前記第1のプログラミング言語に対応
する第1の中間コード(24)にコンパイルする処理
(22)であって、 ここで、前記第1の中間コード(24)が、少なくとも
1つの第1の中間コード仮想マシンによりインタプリタ
処理できるものであり、 ここで、前記マイクロコントローラをプログラミングす
る方法が、前記第1の中間コード(24)を第2の中間
コード(27)に変換する処理(26)であって、 ここで、前記第2の中間コード(27)が少なくとも1
つの第2の中間コード仮想マシン(16)によりインタ
プリタ処理できるもの、 である処理と、 前記第2の中間コードを前記マイクロコントローラ(1
0)のメモリにロードする処理と、 を備えたことを特徴とする方法。 - 【請求項47】 前記変換処理ステップがさらに、 オブジェクト、クラス、フィールド、メソッドのIDス
トリングの関連付け処理と、 それらストリングをユニークなID識別子(51b)に
マッピングする処理と、 を含む請求項46に記載のマイクロコントローラ(1
0)をプログラミングする方法。 - 【請求項48】 前記マッピング処理が、ストリングを
整数にマッピングする処理を含む請求項46又は47に
記載の方法。 - 【請求項49】 前記変換処理が少なくとも以下のステ
ップのうちの1つを含む請求項46から48のいずれか
一項に記載の方法。 a)オリジナルバイトコードのすべてのジャンプ処理と
そのジャンプ先を記録する処理(61)、 b)スぺシフィックバイトコードを等価なジェネリック
バイトコードに、またはその逆方向に変換する処理(6
3)、 c)バイトコードオペランドを、IDストリングを用い
た参照からユニークID識別子を用いた参照に変更する
処理(64) d)コンパイル形式のバイトコードをインタプリタ処理
に適した形式の等価なバイトコードにリナンバリングす
る処理(66)、 e)ステップa)、b)、c)、d)の変換処理により
影響を受けるジャンプ処理のジャンプ先アドレスに再リ
ンク付けする処理(67)。 - 【請求項50】 前記第2の中間コード(27)を前記
マイクロコントローラ(10)のメモリにロードする処
理を備えたことを特徴とする方法が、さらに、前記第2
の中間コード(27)のロード処理に先立って、前記第
2の中間コード(27)があらかじめ定義したチェック
内容を満たすものであるかおよび当該ロード処理がセキ
ュリティプロトコルに従って実行されるものであるかを
認証するため前記第2の中間コード(27)をチェック
する処理を含む請求項46から49のいずれか一項に記
載の方法。 - 【請求項51】 前記セキュリティプロトコルが、前記
第2の中間コード(27)のロード処理に先立ち、特定
のID識別主体がロード処理を許可するために有効化さ
れていることを要求する請求項46から50のいずれか
一項に記載の方法。 - 【請求項52】 さらに復号鍵の供給処理を含み、前記
セキュリティプロトコルが、ロードされた前記復号鍵に
対応する鍵を使って前記第2の中間コード(27)が暗
号化されていることを要求する請求項46から51のい
ずれか一項に記載の方法。 - 【請求項53】 メモリと前記メモリにロードされたイ
ンタプリタ(16)を備え、インタプリタ処理可能なプ
ログラミング言語により記述されたプログラム(24)
から派生した派生プログラム(27)を実行しうるマイ
クロコントローラ(10)であって、前記マイクロコン
トローラ(10)が以下の特徴を持つもの。 (a)前記マイクロコントローラは、メモリがインタプ
リタ処理できるプログラミング言語で記述されたプログ
ラム(24)のインタプリタ処理するためには不十分な
容量である場合を含む、リソース制約条件セット内で動
作するものである (b)前記メモリが、インタプリタ処理可能な言語の派
生により記述された派生プログラム(27)をインタプ
リタ処理できるインタプリタを含むメモリであって、イ
ンタプリタ処理可能なプログラミング言語により記述さ
れた派生プログラム(27)が、下記の規則を含む規則
セットから選ばれた少なくとも1つの規則を適用してイ
ンタプリタ処理可能なプログラミング言語により記述さ
れたプログラム(24)から派生したもの。 (1)ストリングを識別子にマッピングすること (2)インタプリタ処理に先立ってまたはインタプリタ
処理中にセキュリティチェック処理を実行すること (3)インタプリタ処理に先立ってまたはインタプリタ
処理中に構造チェックを実行すること (4)インタプリタ処理に先立ってまたはインタプリタ
処理中にセマンティックチェックを実行すること - 【請求項54】 前記派生プログラム(27)がクラス
ファイルまたはクラスファイルの派生である請求項53
に記載のマイクロコントローラ(10)。 - 【請求項55】 前記メモリが1メガバイトより少ない
ことを特徴とする請求項53又は54に記載のマイクロ
コントローラ(10)。 - 【請求項56】 前記マイクロコントローラのセキュリ
ティチェックが、さらに以下の特徴を持つ請求項53か
ら55のいずれか一項に記載のマイクロコントローラ
(10)。 (c)要求元から複数の派生プログラム(27)のうち
の1つに対するアクセス要求を受け取るロジックを持つ
こと (d)前記要求を受け取った後、複数の派生プログラム
(27)のうちの1つがあらかじめ決められた規則セッ
トと適合するか否かを決定すること (e)前記決定に基づいて、前記要求元に対して、複数
のアプリケーションのうちの1つに対するアクセスを選
択的に認めること - 【請求項57】 前記派生プログラム(27)がアクセ
スしようとするメモリの特定領域へのアクセス権限を前
記派生プログラム(27)が持っているか否かを決定す
ることにより前記派生プログラム(27)がインタプリ
タ処理される間に前記あらかじめ決められた規則が前記
インタプリタ(16)によって実行される請求項56に
記載のマイクロコントローラ(10)。 - 【請求項58】 さらに前記マイクロコントローラ(1
0)が下記のものを含むセットから選ばれた少なくとも
1つのセキュリティチェックを実行するように構成され
た請求項53から57のいずれか一項に記載のマイクロ
コントローラ(10)。 (a)前記派生プログラム(27)がインタプリタ処理
されている間にあらかじめ決められたセキュリティ規則
を実行し、前記派生プログラム(27)が権限の無いメ
モリ領域または他の権限の無いマイクロコントローラリ
ソースにアクセスすることを防止すること (b)各バイトコードが前処理チェックおよび後処理チ
ェックに従って実行されているか決定する処理に先立っ
て少なくとも1回各バイトコードがチェックされるよう
に前記インタプリタ(16)が構成されていること (c)前記派生プログラム(27)の統合を確認するた
めに前記マイクロコントローラにロードされる前に前記
派生プログラムの完全性がチェックされ、ロード処理が
セキュリティプロトコルに応じて実行されること - 【請求項59】 前記セキュリティプロトコルは、派生
プログラム(27)をカード上にロードできるように特
定のID識別主体が有効化されていることを要求する請
求項58に記載のマイクロコントローラ(10)。 - 【請求項60】 前記セキュリティプロトコルは、復号
鍵を持っており、ロードされた派生プログラム(27)
が前記復号鍵に対応する鍵により暗号化されていること
を要求することを特徴とする請求項58に記載のマイク
ロコントローラ(10)。 - 【請求項61】 暗号処理、復号処理、署名処理、署名
照合処理、相互認証、鍵配送および鍵セッション処理を
含む処理セットから選ばれた暗号サービスが供給できる
ように構成されたことを特徴とする請求項53から60
のいずれか一項に記載のマイクロコントローラ(1
0)。 - 【請求項62】 ファイルシステムを持ち、下記のもの
を含む処理セットから選ばれた手段を介して前記ファイ
ルシステムへアクセスできるように構成された請求項5
3から61のいずれか一項に記載のマイクロコントロー
ラ(10)。 (a)前記マイクロコントローラが、ファイルからの読
み出し処理、ファイルへの書き込み処理またはファイル
の消去処理の権限に対するアクセス制御リストを備えて
いること (b)前記マイクロコントローラが、ファイルへのアク
セス権限を確立するための鍵有効化が実行できること (c)前記マイクロコントローラが、ファイルへのアク
セス権限を確立するためのカード保有者主体を認証でき
ること
Applications Claiming Priority (2)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US2905796P | 1996-10-25 | 1996-10-25 | |
| US60/029,057 | 1996-10-25 |
Related Parent Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP10520562A Division JP2000514584A (ja) | 1996-10-25 | 1997-10-22 | 高級プログラミング言語を用いたマイクロコントローラ |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| JP2003141488A true JP2003141488A (ja) | 2003-05-16 |
| JP3766052B2 JP3766052B2 (ja) | 2006-04-12 |
Family
ID=21846980
Family Applications (2)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP10520562A Pending JP2000514584A (ja) | 1996-10-25 | 1997-10-22 | 高級プログラミング言語を用いたマイクロコントローラ |
| JP2002263319A Expired - Lifetime JP3766052B2 (ja) | 1996-10-25 | 2002-09-09 | 高級プログラミング言語を用いたマイクロコントローラ |
Family Applications Before (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| JP10520562A Pending JP2000514584A (ja) | 1996-10-25 | 1997-10-22 | 高級プログラミング言語を用いたマイクロコントローラ |
Country Status (14)
| Country | Link |
|---|---|
| US (7) | US6308317B1 (ja) |
| EP (1) | EP0932865B1 (ja) |
| JP (2) | JP2000514584A (ja) |
| KR (1) | KR100329063B1 (ja) |
| CN (1) | CN1183449C (ja) |
| AU (1) | AU722463B2 (ja) |
| BR (1) | BR9713267A (ja) |
| DE (1) | DE69714752C5 (ja) |
| ES (1) | ES2184066T3 (ja) |
| MY (1) | MY126363A (ja) |
| PT (1) | PT932865E (ja) |
| TW (1) | TW476914B (ja) |
| WO (1) | WO1998019237A1 (ja) |
| ZA (1) | ZA979479B (ja) |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2009134625A (ja) * | 2007-11-30 | 2009-06-18 | Toppan Printing Co Ltd | コンピュータ装置及びその処理方法 |
| JP2017076300A (ja) * | 2015-10-16 | 2017-04-20 | 三菱電機株式会社 | 制御装置およびレジスタの故障復帰方法 |
Families Citing this family (292)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6385645B1 (en) | 1995-08-04 | 2002-05-07 | Belle Gate Investments B.V. | Data exchange system comprising portable data processing units |
| ATE197743T1 (de) | 1995-08-04 | 2000-12-15 | Belle Gate Invest B V | Datenaustauschlsysteme mit tragbaren datenverarbeitungseinheiten |
| EP0825506B1 (en) | 1996-08-20 | 2013-03-06 | Invensys Systems, Inc. | Methods and apparatus for remote process control |
| BR9713267A (pt) | 1996-10-25 | 2004-06-15 | Schlumberger Systems & Service | Cartão de circuito integrado para uso com um terminal, processo para uso com o mesmo, microcontrolador e processo para sua programação |
| WO1998041918A1 (en) * | 1997-03-14 | 1998-09-24 | Ian Charles Ogilvy | Method and apparatus for controlling communications |
| DK0992025T3 (da) | 1997-06-27 | 2002-10-28 | Swisscom Mobile Ag | Transaktionsfremgangsmåde med et bærbart identifikationselement |
| US6157966A (en) * | 1997-06-30 | 2000-12-05 | Schlumberger Malco, Inc. | System and method for an ISO7816 complaint smart card to become master over a terminal |
| US6230006B1 (en) | 1997-09-08 | 2001-05-08 | Acterna, Llc | Test system for remotely testing switches within a telecommunications network |
| US6564995B1 (en) | 1997-09-19 | 2003-05-20 | Schlumberger Malco, Inc. | Smart card application-selection |
| US6736325B1 (en) * | 1998-01-22 | 2004-05-18 | Mondex International Limited | Codelets |
| US6308270B1 (en) | 1998-02-13 | 2001-10-23 | Schlumberger Technologies, Inc. | Validating and certifying execution of a software program with a smart card |
| DE69814174T2 (de) * | 1998-03-23 | 2004-03-04 | International Business Machines Corp. | Java laufzeitsystem mit veränderter sammlung von konstanten |
| FR2779018B1 (fr) | 1998-05-22 | 2000-08-18 | Activcard | Terminal et systeme pour la mise en oeuvre de transactions electroniques securisees |
| US6808111B2 (en) | 1998-08-06 | 2004-10-26 | Visa International Service Association | Terminal software architecture for use with smart cards |
| US7020441B2 (en) | 1998-09-03 | 2006-03-28 | Casabyte, Inc. | Test system for remotely testing switches within a telecommunications network |
| EP1118203A1 (en) | 1998-09-29 | 2001-07-25 | Sun Microsystems, Inc. | Superposition of data over voice |
| US6591229B1 (en) * | 1998-10-09 | 2003-07-08 | Schlumberger Industries, Sa | Metrology device with programmable smart card |
| US7139915B2 (en) * | 1998-10-26 | 2006-11-21 | Microsoft Corporation | Method and apparatus for authenticating an open system application to a portable IC device |
| US6609199B1 (en) * | 1998-10-26 | 2003-08-19 | Microsoft Corporation | Method and apparatus for authenticating an open system application to a portable IC device |
| US7174457B1 (en) * | 1999-03-10 | 2007-02-06 | Microsoft Corporation | System and method for authenticating an operating system to a central processing unit, providing the CPU/OS with secure storage, and authenticating the CPU/OS to a third party |
| US20050060549A1 (en) * | 1998-10-26 | 2005-03-17 | Microsoft Corporation | Controlling access to content based on certificates and access predicates |
| US7194092B1 (en) | 1998-10-26 | 2007-03-20 | Microsoft Corporation | Key-based secure storage |
| IL142580A0 (en) * | 1998-11-03 | 2002-03-10 | Thomson Licensing Sa | Method and apparatus for updating computer code using an integrated circuit interface |
| FR2785695B1 (fr) * | 1998-11-06 | 2003-01-31 | Bull Cp8 | Procede de compactage d'un programme de type code objet intermediaire executable dans un systeme embarque muni de ressources de traitement de donnees, systeme compacteur et systeme embarque multi-applications correspondants |
| JP3749798B2 (ja) * | 1998-12-01 | 2006-03-01 | 株式会社東芝 | Icカードにおけるデータ書込方法およびicカードにおけるデータ読込方法 |
| US6922835B1 (en) * | 1999-01-22 | 2005-07-26 | Sun Microsystems, Inc. | Techniques for permitting access across a context barrier on a small footprint device using run time environment privileges |
| US6581206B2 (en) * | 1999-11-12 | 2003-06-17 | Sun Microsystems, Inc. | Computer program language subset validation |
| US6633984B2 (en) | 1999-01-22 | 2003-10-14 | Sun Microsystems, Inc. | Techniques for permitting access across a context barrier on a small footprint device using an entry point object |
| US6425003B1 (en) * | 1999-01-22 | 2002-07-23 | Cisco Technology, Inc. | Method and apparatus for DNS resolution |
| US7093122B1 (en) * | 1999-01-22 | 2006-08-15 | Sun Microsystems, Inc. | Techniques for permitting access across a context barrier in a small footprint device using shared object interfaces |
| US6823520B1 (en) | 1999-01-22 | 2004-11-23 | Sun Microsystems, Inc. | Techniques for implementing security on a small footprint device using a context barrier |
| US6907608B1 (en) * | 1999-01-22 | 2005-06-14 | Sun Microsystems, Inc. | Techniques for permitting access across a context barrier in a small footprint device using global data structures |
| SE9900321L (sv) * | 1999-02-01 | 2000-08-02 | Mats Iderup | Sätt och anordning vid utbyte av information |
| US6880155B2 (en) * | 1999-02-02 | 2005-04-12 | Sun Microsystems, Inc. | Token-based linking |
| US7200842B1 (en) * | 1999-02-02 | 2007-04-03 | Sun Microsystems, Inc. | Object-oriented instruction set for resource-constrained devices |
| US6848111B1 (en) * | 1999-02-02 | 2005-01-25 | Sun Microsystems, Inc. | Zero overhead exception handling |
| AU3346400A (en) * | 1999-02-05 | 2000-08-25 | Cyrus Intersoft, Inc. | Instrumenting streamed classes |
| FR2790629A1 (fr) * | 1999-02-19 | 2000-09-08 | Bull Cp8 | Procede d'activation d'applications localisees dans une carte a puce par un navigateur du type dit "web" |
| US7127605B1 (en) * | 1999-05-10 | 2006-10-24 | Axalto, Inc. | Secure sharing of application methods on a microcontroller |
| WO2000068902A1 (en) * | 1999-05-11 | 2000-11-16 | Microsoft Corporation | Method and apparatus for sharing data files among runtime environment applets in an integrated circuit card |
| US6845498B1 (en) | 1999-05-11 | 2005-01-18 | Microsoft Corporation | Method and apparatus for sharing data files among run time environment applets in an integrated circuit card |
| US6547150B1 (en) | 1999-05-11 | 2003-04-15 | Microsoft Corporation | Smart card application development system and method |
| US6938244B1 (en) | 1999-05-11 | 2005-08-30 | Microsoft Corp. | Interlaced protocol for smart card application development |
| AU5025600A (en) | 1999-05-17 | 2000-12-05 | Foxboro Company, The | Process control configuration system with parameterized objects |
| US7089530B1 (en) | 1999-05-17 | 2006-08-08 | Invensys Systems, Inc. | Process control configuration system with connection validation and configuration |
| US6668271B1 (en) | 1999-05-19 | 2003-12-23 | Richo Company, Ltd. | System for distributing, installing and running web applications (agents) |
| DE29908783U1 (de) * | 1999-05-19 | 1999-09-09 | Me Technology Europe GmbH, 04430 Dölzig | Eingabegerät für Geschäftsvorfälle |
| US6546546B1 (en) * | 1999-05-19 | 2003-04-08 | International Business Machines Corporation | Integrating operating systems and run-time systems |
| FR2794543B1 (fr) * | 1999-06-04 | 2001-08-24 | Gemplus Card Int | Migration de differents langages sources vers un support d'execution |
| JP4596715B2 (ja) | 1999-06-10 | 2010-12-15 | サン・マイクロシステムズ・インコーポレーテツド | 別個のメモリ領域におけるデータの組の種々のバージョンを記憶する配列及びメモリ内のデータの組を更新する方法 |
| US6788980B1 (en) | 1999-06-11 | 2004-09-07 | Invensys Systems, Inc. | Methods and apparatus for control using control devices that provide a virtual machine environment and that communicate via an IP network |
| US6463521B1 (en) * | 1999-06-23 | 2002-10-08 | Sun Microsystems, Inc. | Opcode numbering for meta-data encoding |
| FR2795835B1 (fr) * | 1999-07-01 | 2001-10-05 | Bull Cp8 | Procede de verification de transformateurs de codes pour un systeme embarque, notamment sur une carte a puce |
| US7908216B1 (en) | 1999-07-22 | 2011-03-15 | Visa International Service Association | Internet payment, authentication and loading system using virtual smart card |
| US6684389B1 (en) * | 1999-08-05 | 2004-01-27 | Canon Kabushiki Kaisha | Compiler that decrypts encrypted source code |
| US7376583B1 (en) | 1999-08-10 | 2008-05-20 | Gofigure, L.L.C. | Device for making a transaction via a communications link |
| WO2001011480A1 (en) * | 1999-08-11 | 2001-02-15 | Spinware, Inc. | System and method for controlling access to data stored in a portable storage medium |
| FR2797963B1 (fr) * | 1999-08-23 | 2002-11-29 | Trusted Logic | Protocole de gestion, procede de verification et de transformation d'un fragment de programme telecharge et systemes correspondants |
| US6560774B1 (en) * | 1999-09-01 | 2003-05-06 | Microsoft Corporation | Verifier to check intermediate language |
| KR20010050212A (ko) * | 1999-09-13 | 2001-06-15 | 스테븐 디.피터스 | 메모리 카드에 기록된 파일에 대한 접근 제어 시스템 |
| GB9921720D0 (en) | 1999-09-14 | 1999-11-17 | Tao Group Ltd | Loading object-oriented computer programs |
| US7231411B1 (en) * | 1999-09-15 | 2007-06-12 | Koninklijke Philips Electronics N.V. | Removable card system with downloadable agent for communicating with a digital television receiver or other host device |
| WO2001029762A2 (en) * | 1999-10-20 | 2001-04-26 | Spyrus, Inc. | Method and system for an integrated circuit card interface device with multiple modes of operation |
| GB9925227D0 (en) | 1999-10-25 | 1999-12-22 | Internet Limited | Data storage retrieval and access system |
| GB2356268B (en) | 1999-11-10 | 2004-08-18 | Mars Inc | Value transaction systems |
| US7107581B2 (en) * | 1999-11-12 | 2006-09-12 | Sun Microsystems, Inc. | Overflow predictive arithmetic instruction optimization using chaining |
| US6363523B1 (en) * | 1999-11-12 | 2002-03-26 | Sun Microsystems, Inc. | Optimization of N-base typed arithmetic expressions |
| US8453133B2 (en) * | 1999-11-12 | 2013-05-28 | Oracle America, Inc. | Optimization of N-base typed arithmetic instructions via rework |
| US7158993B1 (en) | 1999-11-12 | 2007-01-02 | Sun Microsystems, Inc. | API representation enabling submerged hierarchy |
| US7207037B2 (en) * | 1999-11-12 | 2007-04-17 | Sun Microsystems, Inc. | Overflow sensitive arithmetic instruction optimization using chaining |
| US7010786B2 (en) | 1999-11-12 | 2006-03-07 | Sun Microsystems, Inc. | Predictive arithmetic overflow detection |
| FR2801118B1 (fr) * | 1999-11-17 | 2001-12-21 | Bull Cp8 | Procede de chargement d'applications dans un systeme embarque multi-application, systeme embarque correspondant, et procede d'execution d'une application du systeme embarque |
| WO2001039464A1 (de) * | 1999-11-19 | 2001-05-31 | Swisscom Mobile Ag | Anpassbare chipkarte |
| WO2001040910A1 (en) | 1999-12-06 | 2001-06-07 | De Jong, Eduard, Karel | Computer arrangement using non-refreshed dram |
| US7080261B1 (en) | 1999-12-07 | 2006-07-18 | Sun Microsystems, Inc. | Computer-readable medium with microprocessor to control reading and computer arranged to communicate with such a medium |
| AU777437B2 (en) | 1999-12-07 | 2004-10-14 | Sun Microsystems, Inc. | Secure photo carrying identification device, as well as means and method for authenticating such an identification device |
| FR2802319B1 (fr) | 1999-12-10 | 2004-10-01 | Gemplus Card Int | Controle d'acces par capacites pour des applications notamment cooperantes dans une carte a puce |
| US6757824B1 (en) * | 1999-12-10 | 2004-06-29 | Microsoft Corporation | Client-side boot domains and boot rules |
| US20010007146A1 (en) * | 1999-12-23 | 2001-07-05 | Uwe Hansmann | Method for providing a set of software components |
| FR2804819B1 (fr) * | 2000-02-03 | 2002-05-03 | Gemplus Card Int | Gestion de temps au niveau communication pour entite du type carte a puce |
| FR2805062B1 (fr) | 2000-02-10 | 2005-04-08 | Bull Cp8 | Procede de transmission de flux de donnees a haut debit sur un reseau de type internet entre un serveur et un terminal a carte a puce, notamment d'un flux de donnees multimedia |
| US6748592B1 (en) * | 2000-02-14 | 2004-06-08 | Xoucin, Inc. | Method and apparatus for protectively operating a data/information processing device |
| WO2001061486A2 (en) * | 2000-02-17 | 2001-08-23 | Interactive Video Technologies, Inc. | Incremental bootstrap class loader |
| GB0003920D0 (en) | 2000-02-21 | 2000-04-05 | Ncipher Corp Limited | Computer system |
| US6813762B1 (en) * | 2000-02-22 | 2004-11-02 | Freescale Semiconductor, Inc. | Method for processing program files in a programming language capable of dynamic loading |
| JP4509291B2 (ja) * | 2000-03-30 | 2010-07-21 | 大日本印刷株式会社 | Icカード、icカードのプログラム更新装置、および、その方法 |
| US6986132B1 (en) | 2000-04-28 | 2006-01-10 | Sun Microsytems, Inc. | Remote incremental program binary compatibility verification using API definitions |
| US6651186B1 (en) | 2000-04-28 | 2003-11-18 | Sun Microsystems, Inc. | Remote incremental program verification using API definitions |
| US6883163B1 (en) | 2000-04-28 | 2005-04-19 | Sun Microsystems, Inc. | Populating resource-constrained devices with content verified using API definitions |
| FR2812101A1 (fr) * | 2000-07-24 | 2002-01-25 | Bull Cp8 | Protocole d'echange de messages entre applications implantees sur un systeme embarque, et systeme embarque correspondant |
| US6675338B1 (en) | 2000-08-09 | 2004-01-06 | Sun Microsystems, Inc. | Internally generated vectors for burnin system |
| JP2002091762A (ja) * | 2000-09-14 | 2002-03-29 | Denso Corp | プログラム生成装置 |
| US6981245B1 (en) | 2000-09-14 | 2005-12-27 | Sun Microsystems, Inc. | Populating binary compatible resource-constrained devices with content verified using API definitions |
| JP2002117381A (ja) * | 2000-10-05 | 2002-04-19 | Dainippon Printing Co Ltd | Icカード |
| FR2815801B1 (fr) * | 2000-10-20 | 2004-10-29 | Trusted Logic | Protocole de transmission d'une pluralite de flux logiques d'echange multiple de couples de commande/reponse sur un canal physique unique d'echange entre maitre et esclave et systeme de suivi et de controle d'execution d'appliquettes |
| US8176296B2 (en) | 2000-10-26 | 2012-05-08 | Cypress Semiconductor Corporation | Programmable microcontroller architecture |
| US6724220B1 (en) | 2000-10-26 | 2004-04-20 | Cyress Semiconductor Corporation | Programmable microcontroller architecture (mixed analog/digital) |
| US8103496B1 (en) | 2000-10-26 | 2012-01-24 | Cypress Semicondutor Corporation | Breakpoint control in an in-circuit emulation system |
| US7765095B1 (en) | 2000-10-26 | 2010-07-27 | Cypress Semiconductor Corporation | Conditional branching in an in-circuit emulation system |
| US8149048B1 (en) | 2000-10-26 | 2012-04-03 | Cypress Semiconductor Corporation | Apparatus and method for programmable power management in a programmable analog circuit block |
| US20020108054A1 (en) * | 2001-02-02 | 2002-08-08 | Moore Christopher S. | Solid-state memory device storing program code and methods for use therewith |
| CN1227626C (zh) * | 2001-02-08 | 2005-11-16 | 诺基亚有限公司 | 智能读卡器 |
| US7080373B2 (en) * | 2001-03-07 | 2006-07-18 | Freescale Semiconductor, Inc. | Method and device for creating and using pre-internalized program files |
| FR2822334A1 (fr) * | 2001-03-16 | 2002-09-20 | Schlumberger Systems & Service | Module d'idente d'abonne a gestion independante et securisee d'une pluralite de commandes d'au moins une appliquette, notamment pour un equipement mobile de communication |
| AU2006200734B2 (en) * | 2001-05-17 | 2007-12-13 | Accenture Global Services Limited | Pipeline architecture for use with net-centric application program architectures |
| US6971001B1 (en) * | 2001-05-17 | 2005-11-29 | Accenture Global Services Gmbh | General and reusable components for defining net-centric application program architectures |
| US8209753B2 (en) * | 2001-06-15 | 2012-06-26 | Activcard, Inc. | Universal secure messaging for remote security tokens |
| US20040218762A1 (en) | 2003-04-29 | 2004-11-04 | Eric Le Saint | Universal secure messaging for cryptographic modules |
| EP1417602A4 (en) * | 2001-08-13 | 2007-08-22 | Qualcomm Inc | ACCESS PRIVILEGES FOR A MEMORY AREA IN A COMPUTER DEVICE AT APPLICATION LEVEL |
| US7155702B2 (en) * | 2001-09-13 | 2006-12-26 | Axalto Sa | Interface and stub generation for code distribution and synthesis |
| US7406674B1 (en) | 2001-10-24 | 2008-07-29 | Cypress Semiconductor Corporation | Method and apparatus for generating microcontroller configuration information |
| US7085840B2 (en) | 2001-10-29 | 2006-08-01 | Sun Microsystems, Inc. | Enhanced quality of identification in a data communications network |
| US7496751B2 (en) * | 2001-10-29 | 2009-02-24 | Sun Microsystems, Inc. | Privacy and identification in a data communications network |
| US20030084302A1 (en) * | 2001-10-29 | 2003-05-01 | Sun Microsystems, Inc., A Delaware Corporation | Portability and privacy with data communications network browsing |
| US7275260B2 (en) | 2001-10-29 | 2007-09-25 | Sun Microsystems, Inc. | Enhanced privacy protection in identification in a data communications network |
| JP4055393B2 (ja) * | 2001-10-30 | 2008-03-05 | ソニー株式会社 | データ処理装置およびその方法とプログラム |
| US8078970B1 (en) | 2001-11-09 | 2011-12-13 | Cypress Semiconductor Corporation | Graphical user interface with user-selectable list-box |
| US8042093B1 (en) | 2001-11-15 | 2011-10-18 | Cypress Semiconductor Corporation | System providing automatic source code generation for personalization and parameterization of user modules |
| US6971004B1 (en) | 2001-11-19 | 2005-11-29 | Cypress Semiconductor Corp. | System and method of dynamically reconfiguring a programmable integrated circuit |
| US7844437B1 (en) | 2001-11-19 | 2010-11-30 | Cypress Semiconductor Corporation | System and method for performing next placements and pruning of disallowed placements for programming an integrated circuit |
| US7770113B1 (en) | 2001-11-19 | 2010-08-03 | Cypress Semiconductor Corporation | System and method for dynamically generating a configuration datasheet |
| US8069405B1 (en) | 2001-11-19 | 2011-11-29 | Cypress Semiconductor Corporation | User interface for efficiently browsing an electronic document using data-driven tabs |
| US7774190B1 (en) | 2001-11-19 | 2010-08-10 | Cypress Semiconductor Corporation | Sleep and stall in an in-circuit emulation system |
| US7243853B1 (en) | 2001-12-04 | 2007-07-17 | Visa U.S.A. Inc. | Method and system for facilitating memory and application management on a secured token |
| CA2472740A1 (en) * | 2002-01-11 | 2003-07-17 | Sierra Wireless, Inc. | Host extensible wireless application interface |
| US20100174717A1 (en) * | 2002-02-28 | 2010-07-08 | Olivier Fambon | Interative serialisation procedure for structured software objects |
| EP1355268B1 (en) * | 2002-02-28 | 2006-04-05 | Matsushita Electric Industrial Co., Ltd. | Memory card |
| US8769517B2 (en) * | 2002-03-15 | 2014-07-01 | International Business Machines Corporation | Generating a common symbol table for symbols of independent applications |
| US6912633B2 (en) | 2002-03-18 | 2005-06-28 | Sun Microsystems, Inc. | Enhanced memory management for portable devices |
| US6996802B2 (en) | 2002-03-18 | 2006-02-07 | Sun Microsystems, Inc. | Method and apparatus for deployment of high integrity software using initialization order and calling order constraints |
| US7010783B2 (en) | 2002-03-18 | 2006-03-07 | Sun Microsystems, Inc. | Method and apparatus for deployment of high integrity software using reduced dynamic memory allocation |
| US7181737B2 (en) | 2002-03-18 | 2007-02-20 | Sun Microsystems, Inc. | Method and apparatus for deployment of high integrity software using static procedure return addresses |
| US8103497B1 (en) | 2002-03-28 | 2012-01-24 | Cypress Semiconductor Corporation | External interface for event architecture |
| DE10216602A1 (de) * | 2002-04-15 | 2003-10-30 | Giesecke & Devrient Gmbh | Optimierung von compilergeneriertem Programmcode |
| US7890771B2 (en) | 2002-04-17 | 2011-02-15 | Microsoft Corporation | Saving and retrieving data based on public key encryption |
| US7308608B1 (en) | 2002-05-01 | 2007-12-11 | Cypress Semiconductor Corporation | Reconfigurable testing system and method |
| US20030212616A1 (en) * | 2002-05-09 | 2003-11-13 | Casabyte, Inc. | Method, apparatus and article to remotely associate wireless communications devices with subscriber identities and/or proxy wireless communications devices |
| FR2840084A1 (fr) * | 2002-05-27 | 2003-11-28 | Gemplus Card Int | Procede de verification de codes pour microcircuits a ressources limitees |
| NO20023194D0 (no) * | 2002-07-01 | 2002-07-01 | Sospita As | Fremgangsmåte og apparatur for eksekvering av programvareapplikasjoner i et multiprosessormiljö |
| US20040122774A1 (en) * | 2002-08-02 | 2004-06-24 | Martin Studd | Method and system for executing applications on a mobile device |
| US7761845B1 (en) | 2002-09-09 | 2010-07-20 | Cypress Semiconductor Corporation | Method for parameterizing a user module |
| EP1398934B1 (en) | 2002-09-16 | 2008-01-02 | Telefonaktiebolaget LM Ericsson (publ) | Secure access to a subscription module |
| AU2003266320A1 (en) * | 2002-09-16 | 2004-04-30 | Telefonaktiebolaget Lm Ericsson (Publ) | Secure access to a subscription module |
| US20040139021A1 (en) | 2002-10-07 | 2004-07-15 | Visa International Service Association | Method and system for facilitating data access and management on a secure token |
| US6904591B2 (en) * | 2002-11-01 | 2005-06-07 | Oz Development, Inc. | Software development system for editable executables |
| FR2846770B1 (fr) * | 2002-11-04 | 2005-01-28 | Oberthur Card Syst Sa | Carte a microcircuit comportant des moyens de publication de ses objets informatiques |
| CN1276363C (zh) * | 2002-11-13 | 2006-09-20 | 深圳市朗科科技有限公司 | 借助半导体存储装置实现数据安全存储和算法存储的方法 |
| US20040123152A1 (en) * | 2002-12-18 | 2004-06-24 | Eric Le Saint | Uniform framework for security tokens |
| US20040143739A1 (en) * | 2003-01-16 | 2004-07-22 | Sun Mircosystems, Inc., A Delaware Corporation | Run time code integrity checks |
| US7165246B2 (en) | 2003-01-16 | 2007-01-16 | Sun Microsystems, Inc. | Optimized representation of data type information in program verification |
| US7272830B2 (en) | 2003-01-16 | 2007-09-18 | Sun Microsystems, Inc. | Ordering program data for loading on a device |
| US7281244B2 (en) | 2003-01-16 | 2007-10-09 | Sun Microsystems, Inc. | Using a digital fingerprint to commit loaded data in a device |
| US7222331B2 (en) | 2003-01-16 | 2007-05-22 | Sun Microsystems, Inc. | Linking of virtual methods |
| US7484095B2 (en) | 2003-01-16 | 2009-01-27 | Sun Microsystems, Inc. | System for communicating program data between a first device and a second device |
| US8121955B2 (en) * | 2003-01-16 | 2012-02-21 | Oracle America, Inc. | Signing program data payload sequence in program loading |
| CN100388191C (zh) | 2003-04-01 | 2008-05-14 | 松下电器产业株式会社 | 程序连接方法、装置以及终端装置 |
| US20040199787A1 (en) * | 2003-04-02 | 2004-10-07 | Sun Microsystems, Inc., A Delaware Corporation | Card device resource access control |
| US20040221174A1 (en) * | 2003-04-29 | 2004-11-04 | Eric Le Saint | Uniform modular framework for a host computer system |
| US7328432B2 (en) * | 2003-06-02 | 2008-02-05 | Sun Microsystems, Inc. | Proximity-based addressing for supporting in-place execution in virtual machines |
| US7184756B2 (en) * | 2003-06-12 | 2007-02-27 | Motorola Inc. | Wireless communication device with tamper resistant configuration settings |
| WO2005007258A1 (en) * | 2003-07-23 | 2005-01-27 | Koninklijke Philips Electronics N.V. | Device to process program codes |
| US10437964B2 (en) * | 2003-10-24 | 2019-10-08 | Microsoft Technology Licensing, Llc | Programming interface for licensing |
| CH716409B1 (de) * | 2003-11-12 | 2021-01-29 | Legic Identsystems Ag | Verfahren zum Einschreiben einer Datenorganisation in Identifikationsmedien und zum Einschreiben und Ausführen von Applikationen in der Datenorganisation. |
| DE10357257A1 (de) | 2003-12-08 | 2005-06-30 | Giesecke & Devrient Gmbh | Java Smart Card Chip mit für globale Variablen reserviertem Speicherbereich |
| US7907935B2 (en) * | 2003-12-22 | 2011-03-15 | Activcard Ireland, Limited | Intelligent remote device |
| US20050138380A1 (en) * | 2003-12-22 | 2005-06-23 | Fedronic Dominique L.J. | Entry control system |
| FR2864398A1 (fr) * | 2003-12-23 | 2005-06-24 | France Telecom | Terminal de telecommunication a deux espaces d'execution |
| US7286076B1 (en) | 2004-02-10 | 2007-10-23 | Zilog, Inc. | Generating a mark/space table and a string of timing information on a remote control device |
| US7436345B1 (en) * | 2004-02-10 | 2008-10-14 | Zilog, Inc. | Script instruction for jumping to a location, interpreting a predetermined number of instructions and then jumping back |
| US7227492B1 (en) * | 2004-02-10 | 2007-06-05 | Zilog, Inc. | Interpreting a common script block to output various forms of data according to a common protocol |
| US7259696B1 (en) * | 2004-02-10 | 2007-08-21 | Zilog, Inc. | Interactive web-based codeset selection and development tool |
| US7091857B2 (en) * | 2004-02-12 | 2006-08-15 | Mi-Jack Products, Inc. | Electronic control system used in security system for cargo trailers |
| US7374099B2 (en) | 2004-02-24 | 2008-05-20 | Sun Microsystems, Inc. | Method and apparatus for processing an application identifier from a smart card |
| US7165727B2 (en) | 2004-02-24 | 2007-01-23 | Sun Microsystems, Inc. | Method and apparatus for installing an application onto a smart card |
| US7191288B2 (en) | 2004-02-24 | 2007-03-13 | Sun Microsystems, Inc. | Method and apparatus for providing an application on a smart card |
| US7140549B2 (en) | 2004-02-24 | 2006-11-28 | Sun Microsystems, Inc. | Method and apparatus for selecting a desired application on a smart card |
| WO2005086000A2 (en) * | 2004-03-04 | 2005-09-15 | Axalto Sa | A secure sharing of resources between applications in independent execution environments in a retrievable token (e.g smart card) |
| US7295049B1 (en) | 2004-03-25 | 2007-11-13 | Cypress Semiconductor Corporation | Method and circuit for rapid alignment of signals |
| US20050263596A1 (en) * | 2004-05-12 | 2005-12-01 | Solicore, Inc. | Portable charger, including portable sleeve, for an electronically readable card |
| US20060041854A1 (en) * | 2004-07-22 | 2006-02-23 | Steven Schlanger | Devices and methods for programming microcontrollers |
| US8286125B2 (en) | 2004-08-13 | 2012-10-09 | Cypress Semiconductor Corporation | Model for a hardware device-independent method of defining embedded firmware for programmable systems |
| US8069436B2 (en) * | 2004-08-13 | 2011-11-29 | Cypress Semiconductor Corporation | Providing hardware independence to automate code generation of processing device firmware |
| US7855672B1 (en) | 2004-08-19 | 2010-12-21 | Ixys Ch Gmbh | Compressed codeset database format for remote control devices |
| US20060047954A1 (en) * | 2004-08-30 | 2006-03-02 | Axalto Inc. | Data access security implementation using the public key mechanism |
| KR100597413B1 (ko) | 2004-09-24 | 2006-07-05 | 삼성전자주식회사 | 자바 바이트코드 변환 방법 및 상기 변환을 수행하는 자바인터프리터 |
| US20060080655A1 (en) * | 2004-10-09 | 2006-04-13 | Axalto Inc. | System and method for post-issuance code update employing embedded native code |
| FR2877454B1 (fr) * | 2004-11-04 | 2006-12-29 | Gemplus Sa | Procede de chargement d'un code logiciel en langage intermediaire oriente objet dans un appareil portatif |
| US7232073B1 (en) | 2004-12-21 | 2007-06-19 | Sun Microsystems, Inc. | Smart card with multiple applications |
| JP4215037B2 (ja) * | 2004-12-27 | 2009-01-28 | セイコーエプソン株式会社 | リソース管理システム、プリンタ、プリンタ用ネットワークカードおよびリソース管理プログラム、並びにリソース管理方法 |
| JP2006244451A (ja) * | 2005-02-01 | 2006-09-14 | Seiko Epson Corp | リソース管理システムおよびリソース管理プログラム、並びにリソース管理方法 |
| JP4207938B2 (ja) * | 2005-02-01 | 2009-01-14 | セイコーエプソン株式会社 | ソフトウェア認証システム、ソフトウェア認証プログラム、およびソフトウェア認証方法 |
| US7332976B1 (en) | 2005-02-04 | 2008-02-19 | Cypress Semiconductor Corporation | Poly-phase frequency synthesis oscillator |
| JP4311386B2 (ja) * | 2005-02-14 | 2009-08-12 | セイコーエプソン株式会社 | ファイル操作制限システムおよびファイル操作制限プログラム、ファイル操作制限方法、電子機器並びに印刷装置 |
| US20060203733A1 (en) * | 2005-02-17 | 2006-09-14 | Casabyte, Inc. | Methods, apparatuses, and articles to remotely test communications networks using digital fingerprints of content |
| JP4628149B2 (ja) * | 2005-03-14 | 2011-02-09 | 株式会社エヌ・ティ・ティ・ドコモ | アクセス制御装置及びアクセス制御方法 |
| JP4232767B2 (ja) * | 2005-03-14 | 2009-03-04 | セイコーエプソン株式会社 | ソフトウェア認証システムおよびソフトウェア認証プログラム、並びにソフトウェア認証方法 |
| DE102005019753A1 (de) * | 2005-04-28 | 2006-11-09 | Braun Gmbh | Blutdruckmessgerät sowie Chipkarte hierfür |
| US7400183B1 (en) | 2005-05-05 | 2008-07-15 | Cypress Semiconductor Corporation | Voltage controlled oscillator delay cell and method |
| US8089461B2 (en) | 2005-06-23 | 2012-01-03 | Cypress Semiconductor Corporation | Touch wake for electronic devices |
| US8887295B2 (en) * | 2005-06-27 | 2014-11-11 | Safend Ltd. | Method and system for enabling enterprises to use detachable memory devices that contain data and executable files in controlled and secure way |
| US7792289B2 (en) * | 2005-06-28 | 2010-09-07 | Mark Ellery Ogram | Encrypted communications |
| US7698703B2 (en) * | 2005-06-29 | 2010-04-13 | Gemalto Inc. | Imparting digital uniqueness to the types of a programming language using a unique digital sequence |
| US7647630B2 (en) * | 2005-12-15 | 2010-01-12 | International Business Machines Corporation | Associating security information with information objects in a data processing system |
| US20070143601A1 (en) * | 2005-12-15 | 2007-06-21 | Arroyo Diana J | System and method for authorizing information flows |
| DE102005061659A1 (de) * | 2005-12-22 | 2007-06-28 | Giesecke & Devrient Gmbh | Sicherung eines tragbaren Datenträgers gegen Angriffe |
| FR2895608B1 (fr) * | 2005-12-23 | 2008-03-21 | Trusted Logic Sa | Procede pour la realisation d'un compteur securise sur un systeme informatique embarque disposant d'une carte a puce |
| US20070192840A1 (en) * | 2006-02-10 | 2007-08-16 | Lauri Pesonen | Mobile communication terminal |
| JP4933292B2 (ja) * | 2006-02-28 | 2012-05-16 | キヤノン株式会社 | 情報処理装置、無線通信方法、記憶媒体、プログラム |
| US8067948B2 (en) | 2006-03-27 | 2011-11-29 | Cypress Semiconductor Corporation | Input/output multiplexer bus |
| US20080052770A1 (en) * | 2006-03-31 | 2008-02-28 | Axalto Inc | Method and system of providing security services using a secure device |
| US9092635B2 (en) | 2006-03-31 | 2015-07-28 | Gemalto Sa | Method and system of providing security services using a secure device |
| DE102006023436A1 (de) * | 2006-05-18 | 2007-11-22 | Giesecke & Devrient Gmbh | Authentisierung für entfernte Funktionsaufrufe |
| EP1860589B1 (en) * | 2006-05-26 | 2013-11-27 | Incard SA | Method for accessing structured data in IC Cards |
| EP1881404A1 (fr) * | 2006-07-20 | 2008-01-23 | Gemplus | Procédé de protection dynamique des données lors de l'exécution d'un code logiciel en langage intermédiaire dans un appareil numérique |
| US7817799B2 (en) * | 2006-09-07 | 2010-10-19 | International Business Machines Corporation | Maintaining encryption key integrity |
| EP1936574A1 (en) * | 2006-12-01 | 2008-06-25 | Cassis International PTE Ltd. | CAP file for the personalisation of a Java application |
| US7971061B2 (en) * | 2006-12-11 | 2011-06-28 | Pitney Bowes Inc. | E-mail system and method having certified opt-in capabilities |
| US8285329B1 (en) | 2007-04-02 | 2012-10-09 | Sprint Communications Company L.P. | Mobile device-based control of smart card operation |
| US8040266B2 (en) | 2007-04-17 | 2011-10-18 | Cypress Semiconductor Corporation | Programmable sigma-delta analog-to-digital converter |
| US9564902B2 (en) | 2007-04-17 | 2017-02-07 | Cypress Semiconductor Corporation | Dynamically configurable and re-configurable data path |
| US7737724B2 (en) * | 2007-04-17 | 2010-06-15 | Cypress Semiconductor Corporation | Universal digital block interconnection and channel routing |
| US8026739B2 (en) | 2007-04-17 | 2011-09-27 | Cypress Semiconductor Corporation | System level interconnect with programmable switching |
| US8092083B2 (en) | 2007-04-17 | 2012-01-10 | Cypress Semiconductor Corporation | Temperature sensor with digital bandgap |
| US8130025B2 (en) | 2007-04-17 | 2012-03-06 | Cypress Semiconductor Corporation | Numerical band gap |
| US8516025B2 (en) | 2007-04-17 | 2013-08-20 | Cypress Semiconductor Corporation | Clock driven dynamic datapath chaining |
| US8065653B1 (en) | 2007-04-25 | 2011-11-22 | Cypress Semiconductor Corporation | Configuration of programmable IC design elements |
| US8266575B1 (en) | 2007-04-25 | 2012-09-11 | Cypress Semiconductor Corporation | Systems and methods for dynamically reconfiguring a programmable system on a chip |
| US9720805B1 (en) | 2007-04-25 | 2017-08-01 | Cypress Semiconductor Corporation | System and method for controlling a target device |
| ITMI20070996A1 (it) * | 2007-05-17 | 2008-11-18 | Incard Sa | Metodo per il controllo di esecuzione di un'applet per una ic card |
| US8049569B1 (en) | 2007-09-05 | 2011-11-01 | Cypress Semiconductor Corporation | Circuit and method for improving the accuracy of a crystal-less oscillator having dual-frequency modes |
| US8249654B1 (en) * | 2007-09-27 | 2012-08-21 | Sprint Communications Company L.P. | Dynamic smart card application loading |
| US9883381B1 (en) | 2007-10-02 | 2018-01-30 | Sprint Communications Company L.P. | Providing secure access to smart card applications |
| CN101520733B (zh) * | 2008-02-27 | 2014-04-16 | 国际商业机器公司 | 装载类的方法和装置及重组类存档文件方法 |
| CN101256612B (zh) * | 2008-04-01 | 2010-11-03 | 北京飞天诚信科技有限公司 | 基于.Net卡的程序保护方法和系统 |
| CN101419549B (zh) * | 2008-05-13 | 2012-04-18 | 飞天诚信科技股份有限公司 | 基于.Net卡查找类和函数的方法和装置 |
| CN104407518B (zh) | 2008-06-20 | 2017-05-31 | 因文西斯系统公司 | 对用于过程控制的实际和仿真设施进行交互的系统和方法 |
| US8806457B2 (en) * | 2008-12-15 | 2014-08-12 | Apple Inc. | Deferred constant pool generation |
| US20100211591A1 (en) * | 2009-02-16 | 2010-08-19 | Chuan-Hua Chang | Apparatus for processing strings simultaneously |
| US9448964B2 (en) | 2009-05-04 | 2016-09-20 | Cypress Semiconductor Corporation | Autonomous control in a programmable system |
| US8463964B2 (en) | 2009-05-29 | 2013-06-11 | Invensys Systems, Inc. | Methods and apparatus for control configuration with enhanced change-tracking |
| US8127060B2 (en) | 2009-05-29 | 2012-02-28 | Invensys Systems, Inc | Methods and apparatus for control configuration with control objects that are fieldbus protocol-aware |
| US9384063B2 (en) * | 2009-06-18 | 2016-07-05 | Microsoft Technology Licensing, Llc | Eliding synchronization in a concurrent data structure |
| JP5449905B2 (ja) * | 2009-07-29 | 2014-03-19 | フェリカネットワークス株式会社 | 情報処理装置、プログラム、および情報処理システム |
| ES2702470T3 (es) * | 2009-11-05 | 2019-03-01 | Gemalto Sa | Objeto portátil seguro |
| KR101054596B1 (ko) * | 2009-11-18 | 2011-08-04 | 에스케이씨앤씨 주식회사 | 자바카드용 마이그레이터를 이용한 메모리 절감 방법 |
| US8276188B2 (en) * | 2009-12-03 | 2012-09-25 | Condel International Technologies Inc. | Systems and methods for managing storage devices |
| DE102010004446A1 (de) * | 2010-01-13 | 2011-07-14 | Giesecke & Devrient GmbH, 81677 | Verfahren zum Bereitstellen eines sicheren Zählers auf einem Endgerät |
| US10305910B2 (en) * | 2010-01-15 | 2019-05-28 | Apple Inc. | Accessing specialized fileserver |
| US8538480B2 (en) * | 2010-03-30 | 2013-09-17 | Qualcomm Incorporated | Methods and apparatus for device applet management on smart cards |
| EP2397998A1 (fr) * | 2010-06-17 | 2011-12-21 | Gemalto SA | Procédé et système de contrôle du traitement de plusieurs flux de communication radiofréquence par une carte à circuits intégrés |
| US8499299B1 (en) | 2010-06-29 | 2013-07-30 | Ca, Inc. | Ensuring deterministic thread context switching in virtual machine applications |
| US8769518B1 (en) | 2010-06-29 | 2014-07-01 | Ca, Inc. | Ensuring determinism during programmatic replay in a virtual machine |
| US8732670B1 (en) | 2010-06-29 | 2014-05-20 | Ca, Inc. | Ensuring determinism during programmatic replay in a virtual machine |
| US8959492B2 (en) * | 2010-12-14 | 2015-02-17 | Ngmoco, Llc | Communication protocol between a high-level language and a native language |
| US8335921B2 (en) | 2010-12-17 | 2012-12-18 | Google, Inc. | Writing application data to a secure element |
| US8352749B2 (en) * | 2010-12-17 | 2013-01-08 | Google Inc. | Local trusted services manager for a contactless smart card |
| US8196131B1 (en) | 2010-12-17 | 2012-06-05 | Google Inc. | Payment application lifecycle management in a contactless smart card |
| US8533336B1 (en) * | 2011-02-04 | 2013-09-10 | Google Inc. | Automated web frontend sharding |
| JP5329602B2 (ja) * | 2011-05-12 | 2013-10-30 | 株式会社三菱東京Ufj銀行 | 端末装置およびプログラム |
| EP2535832B1 (en) * | 2011-06-17 | 2017-04-26 | Simulity Labs Ltd | A method for operating a virtual machine over a file system |
| US8255687B1 (en) | 2011-09-15 | 2012-08-28 | Google Inc. | Enabling users to select between secure service providers using a key escrow service |
| US8171525B1 (en) | 2011-09-15 | 2012-05-01 | Google Inc. | Enabling users to select between secure service providers using a central trusted service manager |
| US8313036B1 (en) | 2011-09-16 | 2012-11-20 | Google Inc. | Secure application directory |
| JP6290090B2 (ja) | 2011-11-01 | 2018-03-07 | グーグル エルエルシー | 安全要素を管理するためのシステム、方法、およびコンピュータプログラム製品 |
| US9544759B2 (en) | 2011-11-01 | 2017-01-10 | Google Inc. | Systems, methods, and computer program products for managing states |
| JP5818695B2 (ja) * | 2012-01-04 | 2015-11-18 | インターナショナル・ビジネス・マシーンズ・コーポレーションInternational Business Machines Corporation | コード変換方法、プログラム及びシステム |
| US9372985B2 (en) | 2012-01-25 | 2016-06-21 | Sony Corporation | Information processing device, information processing method, and computer program |
| US8385553B1 (en) | 2012-02-28 | 2013-02-26 | Google Inc. | Portable secure element |
| JP5953867B2 (ja) * | 2012-03-26 | 2016-07-20 | 富士ゼロックス株式会社 | プログラム、及びプログラム保護装置 |
| ITMI20120561A1 (it) * | 2012-04-05 | 2013-10-06 | St Microelectronics Srl | Metodo per proteggere un programma applicativo |
| US8429409B1 (en) | 2012-04-06 | 2013-04-23 | Google Inc. | Secure reset of personal and service provider information on mobile devices |
| US20130311382A1 (en) * | 2012-05-21 | 2013-11-21 | Klaus S. Fosmark | Obtaining information for a payment transaction |
| US9383448B2 (en) | 2012-07-05 | 2016-07-05 | Deca System Co., Ltd. | Golf GPS device with automatic hole recognition and playing hole selection |
| US8676709B2 (en) | 2012-07-31 | 2014-03-18 | Google Inc. | Merchant category codes in a proxy card transaction |
| WO2014047069A1 (en) | 2012-09-18 | 2014-03-27 | Jvl Ventures, Llc | Systems, methods, and computer program products for interfacing multiple service provider trusted service managers and secure elements |
| CN104182267B (zh) * | 2013-05-21 | 2019-10-25 | 南京中兴新软件有限责任公司 | 编译方法、解释方法、装置及用户设备 |
| EP2843605A1 (en) * | 2013-08-30 | 2015-03-04 | Gemalto SA | Method for authenticating transactions |
| US9516006B2 (en) * | 2013-10-23 | 2016-12-06 | Google Inc. | Re-programmable secure cryptographic device |
| US9280339B1 (en) * | 2013-12-12 | 2016-03-08 | Amazon Technologies, Inc. | Class replacer during application installation |
| US9403046B2 (en) | 2014-11-05 | 2016-08-02 | WWTemplar LLC | Remote control of fire suppression systems |
| US10176094B2 (en) | 2015-06-30 | 2019-01-08 | Renesas Electronics America Inc. | Common MCU self-identification information |
| WO2017066194A1 (en) | 2015-10-11 | 2017-04-20 | Renesas Electronics America Inc. | Data driven embedded application building and configuration |
| WO2017209876A1 (en) * | 2016-05-31 | 2017-12-07 | Brocade Communications Systems, Inc. | Buffer manager |
| KR101894894B1 (ko) * | 2017-06-16 | 2018-09-05 | 서울대학교산학협력단 | 바이트코드 처리 장치 및 동작 방법 |
| CN109840395A (zh) * | 2017-11-24 | 2019-06-04 | 航天信息股份有限公司 | 一种基于Java卡下载应用程序的方法和系统 |
| US10698666B2 (en) * | 2017-12-29 | 2020-06-30 | Microsoft Technology Licensing, Llc | Automatically building software projects |
| CN108966235B (zh) * | 2018-06-20 | 2021-07-02 | 融慧金科金融服务外包(北京)有限公司 | Ios用户网络身份证rhidfa的运行方法 |
| CN110059499A (zh) * | 2019-03-22 | 2019-07-26 | 华为技术有限公司 | 一种文件访问权限认证方法及电子设备 |
| US12216769B2 (en) | 2022-04-29 | 2025-02-04 | Oracle International Corporation | Secure element enforcing a security policy for device peripherals |
| US12197974B2 (en) * | 2022-06-08 | 2025-01-14 | Oracle International Corporation | Logical java card runtime environment |
| US12538130B2 (en) | 2022-09-20 | 2026-01-27 | Oracle International Corporation | Systems and methods for running multiple logical secure elements on the same secure hardware |
| EP4425328A1 (en) * | 2023-02-28 | 2024-09-04 | STMicroelectronics International N.V. | Method of executing a java card application |
Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH01243125A (ja) * | 1988-03-24 | 1989-09-27 | Fuji Electric Co Ltd | 解釈プログラムの実行速度向上方法 |
| FR2667171A1 (fr) * | 1990-09-25 | 1992-03-27 | Gemplus Card Int | Support portable a micro-circuit facilement programmable et procede de programmation de ce micro-circuit. |
| WO1994010657A1 (en) * | 1992-10-26 | 1994-05-11 | Intellect Australia Pty. Ltd. | Host and user transaction system |
| JPH09500469A (ja) * | 1993-12-07 | 1997-01-14 | ジェムプリュス カード アンテルナショナル | メモリカード及びその作動方法 |
| JPH09244904A (ja) * | 1996-03-12 | 1997-09-19 | Matsushita Electric Ind Co Ltd | 仮想コード翻訳系および仮想マシンシステム |
Family Cites Families (101)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| DE408455C (de) | 1923-07-15 | 1925-01-19 | Georg Koenig | Verfahren zur fortlaufenden Bestimmung des Heizwerts von Gasgemischen |
| FR2386080A1 (fr) | 1977-03-31 | 1978-10-27 | Cii Honeywell Bull | Systeme de comptabilisation d'unites homogenes predeterminees |
| US4650975A (en) * | 1984-08-30 | 1987-03-17 | Casio Computer Co., Ltd. | IC card and an identification system thereof |
| US4667290A (en) | 1984-09-10 | 1987-05-19 | 501 Philon, Inc. | Compilers using a universal intermediate language |
| JPS61204741A (ja) | 1985-03-06 | 1986-09-10 | Nec Corp | ソ−スプログラムの圧縮方法 |
| JPH0635227B2 (ja) | 1985-07-31 | 1994-05-11 | トツパン・ム−ア株式会社 | 更新情報と履歴情報の読出し手段を有するicカ−ド |
| US4905138A (en) | 1985-10-17 | 1990-02-27 | Westinghouse Electric Corp. | Meta-interpreter |
| US4874935A (en) | 1986-03-10 | 1989-10-17 | Data Card Coprporation | Smart card apparatus and method of programming same |
| GB2191029B (en) | 1986-05-29 | 1990-12-12 | Almex Systems Ltd | Electronic pass |
| JPH07104891B2 (ja) | 1986-08-05 | 1995-11-13 | 沖電気工業株式会社 | 取引処理装置 |
| US5133072A (en) | 1986-11-13 | 1992-07-21 | Hewlett-Packard Company | Method for improved code generation in reduced instruction set computers |
| JPS63156254A (ja) | 1986-12-19 | 1988-06-29 | Fujitsu Ltd | インタプリタにおける中間テキストの管理方法 |
| JPS63156255A (ja) | 1986-12-19 | 1988-06-29 | Fujitsu Ltd | インタプリタにおけるオ−バレイ方法 |
| DE3743639A1 (de) | 1986-12-24 | 1988-07-07 | Mitsubishi Electric Corp | Ic-karte und system zur ueberpruefung ihrer funktionstuechtigkeit |
| US4791558A (en) * | 1987-02-13 | 1988-12-13 | International Business Machines Corporation | System and method for generating an object module in a first format and then converting the first format into a format which is loadable into a selected computer |
| JPS63231692A (ja) | 1987-03-20 | 1988-09-27 | Mitsubishi Electric Corp | 機密コ−ド書込装置 |
| FR2626095B1 (fr) | 1988-01-20 | 1991-08-30 | Sgs Thomson Microelectronics | Systeme de securite pour proteger des zones de programmation d'une carte a puce |
| US4892974A (en) | 1988-03-10 | 1990-01-09 | Air Products And Chemicals, Inc. | Process for producing mono-ortho-tert-butyl-aniline using silica-alumina catalysts |
| US5195130A (en) | 1988-05-05 | 1993-03-16 | Transaction Technology, Inc. | Computer and telephone apparatus with user friendly computer interface and enhanced integrity features |
| JP2666847B2 (ja) | 1988-06-06 | 1997-10-22 | 日本電気株式会社 | 異種言語間連絡方式 |
| US5313614A (en) * | 1988-12-06 | 1994-05-17 | At&T Bell Laboratories | Method and apparatus for direct conversion of programs in object code form between different hardware architecture computer systems |
| US5119465A (en) * | 1989-06-19 | 1992-06-02 | Digital Equipment Corporation | System for selectively converting plurality of source data structures through corresponding source intermediate structures, and target intermediate structures into selected target structure |
| JPH0378082A (ja) | 1989-08-21 | 1991-04-03 | Hitachi Ltd | 予約取引処理方法 |
| CA2025160A1 (en) | 1989-09-28 | 1991-03-29 | John W. White | Portable and dynamic distributed applications architecture |
| US5120939A (en) | 1989-11-09 | 1992-06-09 | At&T Bell Laboratories | Databaseless security system |
| US5339419A (en) * | 1990-06-25 | 1994-08-16 | Hewlett-Packard Company | ANDF compiler using the HPcode-plus compiler intermediate language |
| US5450575A (en) | 1991-03-07 | 1995-09-12 | Digital Equipment Corporation | Use of stack depth to identify machine code mistakes |
| US5307492A (en) | 1991-03-07 | 1994-04-26 | Digital Equipment Corporation | Mapping assembly language argument list references in translating code for different machine architectures |
| JP3602857B2 (ja) * | 1991-04-23 | 2004-12-15 | 株式会社日立製作所 | 多機種対応型情報処理システム、および、方法 |
| JP2690229B2 (ja) | 1991-11-26 | 1997-12-10 | 三菱電機株式会社 | 非接触icカード |
| US5406380A (en) | 1991-12-30 | 1995-04-11 | Management Graphics, Inc. | Film recorder with interface for user replaceable memory element |
| US5469572A (en) | 1992-12-01 | 1995-11-21 | Taylor; James M. | Post compile optimizer for linkable object code |
| US5367685A (en) | 1992-12-22 | 1994-11-22 | Firstperson, Inc. | Method and apparatus for resolving data references in generated code |
| FR2705810B1 (fr) | 1993-05-26 | 1995-06-30 | Gemplus Card Int | Puce de carte à puce munie d'un moyen de limitation du nombre d'authentifications. |
| US5519866A (en) | 1993-06-28 | 1996-05-21 | Taligent, Inc. | Method and apparatus of incrementally linking components of a modeled computer program |
| CA2168434A1 (en) | 1993-07-30 | 1995-09-02 | Quentin Rees Oliver | Device and method for programmable functions |
| US5650761A (en) | 1993-10-06 | 1997-07-22 | Gomm; R. Greg | Cash alternative transaction system |
| GB2283349A (en) | 1993-10-29 | 1995-05-03 | Ibm | Transaction processing system |
| US5457799A (en) | 1994-03-01 | 1995-10-10 | Digital Equipment Corporation | Optimizer for program loops |
| US5537474A (en) * | 1994-07-29 | 1996-07-16 | Motorola, Inc. | Method and apparatus for authentication in a communication system |
| US5500517A (en) * | 1994-09-02 | 1996-03-19 | Gemplus Card International | Apparatus and method for data transfer between stand alone integrated circuit smart card terminal and remote computer of system operator |
| US5732270A (en) | 1994-09-15 | 1998-03-24 | Visual Edge Software Limited | System and method for providing interoperability among heterogeneous object systems |
| US5544086A (en) | 1994-09-30 | 1996-08-06 | Electronic Payment Services, Inc. | Information consolidation within a transaction network |
| US5841866A (en) * | 1994-09-30 | 1998-11-24 | Microchip Technology Incorporated | Secure token integrated circuit and method of performing a secure authentication function or transaction |
| US5613120A (en) | 1994-10-20 | 1997-03-18 | Silicon Graphics, Inc. | System and method for enabling, without recompilation, modification of class definitions and implementations in an object-oriented computer program |
| US5613012A (en) | 1994-11-28 | 1997-03-18 | Smarttouch, Llc. | Tokenless identification system for authorization of electronic transactions and electronic transmissions |
| US5748964A (en) * | 1994-12-20 | 1998-05-05 | Sun Microsystems, Inc. | Bytecode program interpreter apparatus and method with pre-verification of data type restrictions |
| US5668999A (en) | 1994-12-20 | 1997-09-16 | Sun Microsystems, Inc. | System and method for pre-verification of stack usage in bytecode program loops |
| US5590331A (en) | 1994-12-23 | 1996-12-31 | Sun Microsystems, Inc. | Method and apparatus for generating platform-standard object files containing machine-independent code |
| SI0819287T1 (en) * | 1995-02-17 | 2000-06-30 | Europay International S.A. | Integrated circuit controlled transaction management system |
| US5679945A (en) * | 1995-03-31 | 1997-10-21 | Cybermark, L.L.C. | Intelligent card reader having emulation features |
| US5590197A (en) * | 1995-04-04 | 1996-12-31 | V-One Corporation | Electronic payment system and method |
| DE19518930A1 (de) | 1995-05-23 | 1996-11-28 | Siemens Ag | Verfahren zur Verbindungssteuerung für interaktive Dienste |
| JP3310525B2 (ja) | 1995-06-01 | 2002-08-05 | ビー・イー・テクノロジー株式会社 | デジタルデータ処理装置 |
| US5692132A (en) | 1995-06-07 | 1997-11-25 | Mastercard International, Inc. | System and method for conducting cashless transactions on a computer network |
| US6181867B1 (en) | 1995-06-07 | 2001-01-30 | Intervu, Inc. | Video storage and retrieval system |
| US5689565A (en) | 1995-06-29 | 1997-11-18 | Microsoft Corporation | Cryptography system and method for providing cryptographic services for a computer application |
| US5675804A (en) | 1995-08-31 | 1997-10-07 | International Business Machines Corporation | System and method for enabling a compiled computer program to invoke an interpretive computer program |
| US5663553A (en) * | 1995-09-27 | 1997-09-02 | Intel Corporation | Mass storage device adapter for smart cards |
| DE19536169A1 (de) | 1995-09-29 | 1997-04-03 | Ibm | Multifunktionale Chipkarte |
| CA2160496A1 (en) | 1995-10-13 | 1997-04-14 | Allan M. Brown | Electronic funds acceptor for vending machines |
| CA2236586A1 (en) | 1995-12-01 | 1997-06-05 | Lsi Logic Corporation | Integrated network browser chip, network browser system, and method for network data communication |
| US6151618A (en) * | 1995-12-04 | 2000-11-21 | Microsoft Corporation | Safe general purpose virtual machine computing system |
| FR2742892B1 (fr) | 1995-12-21 | 1998-02-13 | Bull Sa | Systeme de protection de logiciel pour ordinateur ecrit en langage interprete |
| US6526565B1 (en) | 1995-12-21 | 2003-02-25 | International Business Machines Corporation | Packaging algorithm for providing object oriented applications having reduced footprints |
| US5835772A (en) | 1995-12-29 | 1998-11-10 | Intel Corporation | Method and apparatus for providing an interface between a system and a peripheral device |
| US5811771A (en) | 1996-05-22 | 1998-09-22 | Dethloff; Juergen | Method and system for paying with a portable data medium having security against over charging and unauthorized use |
| US6535903B2 (en) | 1996-01-29 | 2003-03-18 | Compaq Information Technologies Group, L.P. | Method and apparatus for maintaining translated routine stack in a binary translation environment |
| US6226789B1 (en) | 1996-01-29 | 2001-05-01 | Compaq Computer Corporation | Method and apparatus for data flow analysis |
| US5860008A (en) | 1996-02-02 | 1999-01-12 | Apple Computer, Inc. | Method and apparatus for decompiling a compiled interpretive code |
| US5742756A (en) * | 1996-02-12 | 1998-04-21 | Microsoft Corporation | System and method of using smart cards to perform security-critical operations requiring user authorization |
| TW369753B (en) | 1996-02-14 | 1999-09-11 | Mitsubishi Electric Corp | Data security method and system |
| US5761306A (en) | 1996-02-22 | 1998-06-02 | Visa International Service Association | Key replacement in a public key cryptosystem |
| US6075863A (en) | 1996-02-28 | 2000-06-13 | Encanto Networks | Intelligent communication device |
| US5848274A (en) | 1996-02-29 | 1998-12-08 | Supercede, Inc. | Incremental byte code compilation system |
| US5764989A (en) | 1996-02-29 | 1998-06-09 | Supercede, Inc. | Interactive software development system |
| US5889941A (en) * | 1996-04-15 | 1999-03-30 | Ubiq Inc. | System and apparatus for smart card personalization |
| US5915226A (en) * | 1996-04-19 | 1999-06-22 | Gemplus Card International | Prepaid smart card in a GSM based wireless telephone network and method for operating prepaid cards |
| US5815657A (en) * | 1996-04-26 | 1998-09-29 | Verifone, Inc. | System, method and article of manufacture for network electronic authorization utilizing an authorization instrument |
| US6151703A (en) | 1996-05-20 | 2000-11-21 | Inprise Corporation | Development system with methods for just-in-time compilation of programs |
| US5794049A (en) | 1996-06-05 | 1998-08-11 | Sun Microsystems, Inc. | Computer system and method for executing architecture specific code with reduced run-time memory space requirements |
| US5946487A (en) | 1996-06-10 | 1999-08-31 | Lsi Logic Corporation | Object-oriented multi-media architecture |
| GB9613450D0 (en) | 1996-06-27 | 1996-08-28 | Europay Int Sa | Payment system |
| US5844218A (en) * | 1996-07-16 | 1998-12-01 | Transaction Technology, Inc. | Method and system for using an application programmable smart card for financial transactions in multiple countries |
| US5923884A (en) * | 1996-08-30 | 1999-07-13 | Gemplus S.C.A. | System and method for loading applications onto a smart card |
| EP0829828A1 (en) | 1996-09-13 | 1998-03-18 | Koninklijke KPN N.V. | Multiple tickets in smart cards |
| US5875335A (en) * | 1996-09-30 | 1999-02-23 | Apple Computer, Inc. | Parameter marshaling techniques for dynamic object-oriented programming languages |
| US6438573B1 (en) | 1996-10-09 | 2002-08-20 | Iowa State University Research Foundation, Inc. | Real-time programming method |
| US6094528A (en) | 1996-10-24 | 2000-07-25 | Sun Microsystems, Inc. | Method and apparatus for system building with a transactional interpreter |
| BR9713267A (pt) | 1996-10-25 | 2004-06-15 | Schlumberger Systems & Service | Cartão de circuito integrado para uso com um terminal, processo para uso com o mesmo, microcontrolador e processo para sua programação |
| US5905895A (en) | 1997-03-07 | 1999-05-18 | International Business Machines Corporation | Method and system for optimizing non-native bytecodes before bytecode interpretation |
| US5966536A (en) | 1997-05-28 | 1999-10-12 | Sun Microsystems, Inc. | Method and apparatus for generating an optimized target executable computer program using an optimized source executable |
| US6055211A (en) | 1997-07-03 | 2000-04-25 | Microchip Technology Incorporated | Force page zero paging scheme for microcontrollers using data random access memory |
| US6078744A (en) | 1997-08-01 | 2000-06-20 | Sun Microsystems | Method and apparatus for improving compiler performance during subsequent compilations of a source program |
| US5987256A (en) | 1997-09-03 | 1999-11-16 | Enreach Technology, Inc. | System and process for object rendering on thin client platforms |
| US6233733B1 (en) | 1997-09-30 | 2001-05-15 | Sun Microsystems, Inc. | Method for generating a Java bytecode data flow graph |
| US6061520A (en) | 1998-04-07 | 2000-05-09 | Sun Microsystems, Inc. | Method and system for performing static initialization |
| US8127121B2 (en) * | 1999-01-28 | 2012-02-28 | Ati Technologies Ulc | Apparatus for executing programs for a first computer architechture on a computer of a second architechture |
| US6880155B2 (en) * | 1999-02-02 | 2005-04-12 | Sun Microsystems, Inc. | Token-based linking |
| US9086931B2 (en) * | 2002-11-20 | 2015-07-21 | Purenative Software Corporation | System for translating diverse programming languages |
| US20080282238A1 (en) * | 2007-05-10 | 2008-11-13 | Microsoft Corporation | Static type for late binding |
-
1997
- 1997-10-22 BR BR9713267-5A patent/BR9713267A/pt not_active Application Discontinuation
- 1997-10-22 DE DE69714752.5T patent/DE69714752C5/de not_active Expired - Lifetime
- 1997-10-22 ES ES97911833T patent/ES2184066T3/es not_active Expired - Lifetime
- 1997-10-22 EP EP97911833A patent/EP0932865B1/en not_active Expired - Lifetime
- 1997-10-22 CN CNB971810370A patent/CN1183449C/zh not_active Expired - Lifetime
- 1997-10-22 JP JP10520562A patent/JP2000514584A/ja active Pending
- 1997-10-22 MY MYPI97004974A patent/MY126363A/en unknown
- 1997-10-22 PT PT97911833T patent/PT932865E/pt unknown
- 1997-10-22 AU AU49118/97A patent/AU722463B2/en not_active Ceased
- 1997-10-22 KR KR1019997003564A patent/KR100329063B1/ko not_active Expired - Fee Related
- 1997-10-22 WO PCT/US1997/018999 patent/WO1998019237A1/en not_active Ceased
- 1997-10-23 ZA ZA9709479A patent/ZA979479B/xx unknown
- 1997-10-23 TW TW086115695A patent/TW476914B/zh not_active IP Right Cessation
- 1997-10-24 US US08/957,512 patent/US6308317B1/en not_active Expired - Lifetime
-
2001
- 2001-10-23 US US10/037,390 patent/US7117485B2/en not_active Expired - Lifetime
-
2002
- 2002-09-09 JP JP2002263319A patent/JP3766052B2/ja not_active Expired - Lifetime
-
2006
- 2006-09-29 US US11/537,156 patent/US7818727B2/en not_active Expired - Fee Related
-
2010
- 2010-10-19 US US12/907,949 patent/US8726247B2/en not_active Expired - Fee Related
-
2012
- 2012-06-09 US US13/492,821 patent/US8881118B2/en not_active Expired - Fee Related
- 2012-06-09 US US13/492,824 patent/US8881119B2/en not_active Expired - Fee Related
-
2014
- 2014-05-12 US US14/275,506 patent/US9400668B2/en not_active Expired - Fee Related
Patent Citations (5)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JPH01243125A (ja) * | 1988-03-24 | 1989-09-27 | Fuji Electric Co Ltd | 解釈プログラムの実行速度向上方法 |
| FR2667171A1 (fr) * | 1990-09-25 | 1992-03-27 | Gemplus Card Int | Support portable a micro-circuit facilement programmable et procede de programmation de ce micro-circuit. |
| WO1994010657A1 (en) * | 1992-10-26 | 1994-05-11 | Intellect Australia Pty. Ltd. | Host and user transaction system |
| JPH09500469A (ja) * | 1993-12-07 | 1997-01-14 | ジェムプリュス カード アンテルナショナル | メモリカード及びその作動方法 |
| JPH09244904A (ja) * | 1996-03-12 | 1997-09-19 | Matsushita Electric Ind Co Ltd | 仮想コード翻訳系および仮想マシンシステム |
Cited By (2)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| JP2009134625A (ja) * | 2007-11-30 | 2009-06-18 | Toppan Printing Co Ltd | コンピュータ装置及びその処理方法 |
| JP2017076300A (ja) * | 2015-10-16 | 2017-04-20 | 三菱電機株式会社 | 制御装置およびレジスタの故障復帰方法 |
Also Published As
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| JP3766052B2 (ja) | 高級プログラミング言語を用いたマイクロコントローラ | |
| FI117990B (fi) | Tiedonvaihtojärjestelmä, joka käsittää kannettavia tietojenkäsittely-yksiköitä | |
| Chen | Java card technology for smart cards: architecture and programmer's guide | |
| CN100447745C (zh) | 使用进入点对象在小型注脚设备上允许越过文本屏障进行访问的技术 | |
| Faraj et al. | Investigation of Java Smart Card Technology for Multi-Task Applications | |
| US20050184164A1 (en) | Method and apparatus for installing an application onto a smart card | |
| JP2007226839A (ja) | データ構造を記憶するメモリ及び方法 | |
| KR20010103747A (ko) | 글로벌 데이터 구조를 사용해서 소형 풋프린트 장치의콘텍스트 배리어를 넘어선 액세스를 허용하기 위한 기술 | |
| CN100507797C (zh) | 采用文本屏障在小型注脚设备上实施安全的技术 | |
| CN1316360C (zh) | 注脚设备及运行注脚设备的方法 | |
| CN100353324C (zh) | 使用共享对象接口在小型注脚设备中允许越过文本屏障进行访问的技术 | |
| Iguchi-Cartigny et al. | Developing a Trojan applets in a smart card | |
| JP2005532622A (ja) | 特にスマートカードにおけるダウンロードしたアプリケーションの機密保護化 | |
| Markantonakis et al. | Multi-application smart card platforms and operating systems | |
| Cap et al. | Extending the data storage capabilities of a Java-Based smartcard | |
| Bouffard et al. | Java Card Virtual Machine Memory Organization: a Design Proposal | |
| HK1021762B (en) | Using a high level programming language with a microcontroller | |
| MXPA99003796A (en) | Using a high level programming language with a microcontroller | |
| Yakkundi | Security Implications of Memory Use on Java Card Platform | |
| Markantonakis | Java card technology and security | |
| AU2004200637A1 (en) | Techniques for permitting access across a context barrier on a small footprint device using run time environment privileges |
Legal Events
| Date | Code | Title | Description |
|---|---|---|---|
| A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20040921 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20041116 |
|
| A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20050215 |
|
| A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20050218 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20050516 |
|
| A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20050822 |
|
| A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20051111 |
|
| TRDD | Decision of grant or rejection written | ||
| A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 Effective date: 20060110 |
|
| A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060125 |
|
| R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100203 Year of fee payment: 4 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110203 Year of fee payment: 5 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120203 Year of fee payment: 6 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120203 Year of fee payment: 6 |
|
| S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
| S533 | Written request for registration of change of name |
Free format text: JAPANESE INTERMEDIATE CODE: R313533 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120203 Year of fee payment: 6 |
|
| R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120203 Year of fee payment: 6 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130203 Year of fee payment: 7 |
|
| FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140203 Year of fee payment: 8 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| R250 | Receipt of annual fees |
Free format text: JAPANESE INTERMEDIATE CODE: R250 |
|
| EXPY | Cancellation because of completion of term |