KR100329063B1 - 마이크로컨트롤러를 이용한 고급 프로그래밍 언어 사용 - Google Patents

마이크로컨트롤러를 이용한 고급 프로그래밍 언어 사용 Download PDF

Info

Publication number
KR100329063B1
KR100329063B1 KR1019997003564A KR19997003564A KR100329063B1 KR 100329063 B1 KR100329063 B1 KR 100329063B1 KR 1019997003564 A KR1019997003564 A KR 1019997003564A KR 19997003564 A KR19997003564 A KR 19997003564A KR 100329063 B1 KR100329063 B1 KR 100329063B1
Authority
KR
South Korea
Prior art keywords
delete delete
microcontroller
card
application
java
Prior art date
Application number
KR1019997003564A
Other languages
English (en)
Other versions
KR20000052759A (ko
Inventor
윌킨슨티모시제이.
구더리스코트비.
크리쉬나쉬라드히
몬트고메리마이클에이.
Original Assignee
디디어 레묀
슐럼버거 시스템즈
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Family has litigation
First worldwide family litigation filed litigation Critical https://patents.darts-ip.com/?family=21846980&utm_source=google_patent&utm_medium=platform_link&utm_campaign=public_patent_search&patent=KR100329063(B1) "Global patent litigation dataset” by Darts-ip is licensed under a Creative Commons Attribution 4.0 International License.
Application filed by 디디어 레묀, 슐럼버거 시스템즈 filed Critical 디디어 레묀
Publication of KR20000052759A publication Critical patent/KR20000052759A/ko
Application granted granted Critical
Publication of KR100329063B1 publication Critical patent/KR100329063B1/ko

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • G06F8/44Encoding
    • G06F8/443Optimisation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/50Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
    • G06F21/52Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
    • G06F21/53Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/60Protecting data
    • G06F21/62Protecting access to data via a platform, e.g. using keys or access control rules
    • G06F21/6218Protecting access to data via a platform, e.g. using keys or access control rules to a system of files or objects, e.g. local or distributed file system or database
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/71Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information
    • G06F21/77Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure computing or processing of information in smart cards
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F21/00Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F21/70Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer
    • G06F21/78Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data
    • G06F21/79Protecting specific internal or peripheral components, in which the protection of a component leads to protection of the entire computer to assure secure storage of data in semiconductor storage media, e.g. directly-addressable memories
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/52Binary to binary
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44557Code layout in executable memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45504Abstract machines for programme code execution, e.g. Java virtual machine [JVM], interpreters, emulators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/34Payment architectures, schemes or protocols characterised by the use of specific devices or networks using cards, e.g. integrated circuit [IC] cards or magnetic cards
    • G06Q20/355Personalisation of cards for use
    • G06Q20/3552Downloading or loading of personalisation data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/34Payment architectures, schemes or protocols characterised by the use of specific devices or networks using cards, e.g. integrated circuit [IC] cards or magnetic cards
    • G06Q20/356Aspects of software for card payments
    • G06Q20/3563Software being resident on card
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q20/00Payment architectures, schemes or protocols
    • G06Q20/30Payment architectures, schemes or protocols characterised by the use of specific devices or networks
    • G06Q20/34Payment architectures, schemes or protocols characterised by the use of specific devices or networks using cards, e.g. integrated circuit [IC] cards or magnetic cards
    • G06Q20/357Cards having a plurality of specified features
    • G06Q20/3574Multiple applications on card
    • GPHYSICS
    • G07CHECKING-DEVICES
    • G07FCOIN-FREED OR LIKE APPARATUS
    • G07F7/00Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus
    • G07F7/08Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means
    • G07F7/10Mechanisms actuated by objects other than coins to free or to actuate vending, hiring, coin or paper currency dispensing or refunding apparatus by coded identity card or credit card or other personal identification means together with a coded signal, e.g. in the form of personal identification information, like personal identification number [PIN] or biometric data
    • G07F7/1008Active credit-cards provided with means to personalise their use, e.g. with PIN-introduction/comparison system
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L9/00Cryptographic mechanisms or cryptographic arrangements for secret or secure communications; Network security protocols
    • H04L9/40Network security protocols
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/03Protecting confidentiality, e.g. by encryption
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04WWIRELESS COMMUNICATION NETWORKS
    • H04W12/00Security arrangements; Authentication; Protecting privacy or anonymity
    • H04W12/06Authentication
    • H04W12/062Pre-authentication
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2141Access rights, e.g. capability lists, access control lists, access tables, access matrices
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2221/00Indexing scheme relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/21Indexing scheme relating to G06F21/00 and subgroups addressing additional information or applications relating to security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
    • G06F2221/2153Using hardware token as a secondary aspect
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/131Protocols for games, networked simulations or virtual reality
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/30Definitions, standards or architectural aspects of layered protocol stacks
    • H04L69/32Architecture of open systems interconnection [OSI] 7-layer type protocol stacks, e.g. the interfaces between the data link level and the physical level
    • H04L69/322Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions
    • H04L69/329Intralayer communication protocols among peer entities or protocol data unit [PDU] definitions in the application layer [OSI layer 7]

Abstract

단말기에 사용되는 집적회로카드는 인터프리터와 고급 프로그래밍 언어 포맷을 가진 어플리케이션을 포함한다. 카드의 프로세서는 실행될 파일을 해석하기 위해 인터프리터를 사용하고 카드의 커뮤니케이터를 사용하여 단말기와 통신하는 구성을 가진다.

Description

마이크로컨트롤러를 이용한 고급 프로그래밍 언어 사용 {USING A HIGH LEVEL PROGRAMMING LANGUAGE WITH A MICROCONTROLLER}
자바 고급 프로그래밍 언어로 작성된 소프트웨어 응용프로그램들은 여러 개의 상이한 컴퓨터 기종들과 플랫폼에서도 변환하지 않고 사용할 수 있도록 아래의 단계들을 거쳐 설계된다. 자바 응용프로그램을 작성한 후, 자바 가상 기기(Java Virtual Machine)라고 하는 가상 컴퓨터에 대한 명령들인 바이트 코드들을 포함하는 "클래스" 파일들로 컴파일한다. 이 가상 컴퓨터에서 실행되는 프로그램은 지원되는 모든 플랫폼들 각각에 대해 작성된다. 사용자가 특정한 자바 응용프로그램을 소정의 플랫폼에서 실행하고자 하는 경우, 실행하고자 하는 프로그램으로부터 컴파일된 클래스 파일들을 소정의 플랫폼으로 로드한다. 그런 다음, 소정의 플랫폼에 대한 자바 가상 기기가 작동되어 클래스 파일의 바이트 코드들을 번역함으로써 자바 응용프로그램을 효과적으로 실행한다.
자바는 본문에 인용된 아래의 참고문헌들에 설명되어 있다: (1) Arnold, Ken, and James Gosling "자바 프로그래밍 언어", Addison-Wesly, 1996; (2) James Gosling, Bill Joy, and Guy Steele, "자바 언어 명세서", 선 마이크로시스템즈, 1996, (웹 사이트: http://java.sun.com/doc/language_specification); (3) James Gosling and Henry McGilton, "자바 언어 환경: 백서" 선 마이크로시스템즈,1995 (웹 사이트:http://java.sun.com/doc/language_environment/); (4) Tim Lindholm and Frank Yellin, "자바 가상 컴퓨터 기기", Addison-Wesley, 1997. 상기의 참고문헌들에는 자바를 이용하여 프로그래밍하는 방법이 설명되어 있다.
자바 응용프로그램을 특정 플랫폼에서 실행하기 위해서는, 자바 가상 기기 실행프로그램은 플랫폼 제약조건내에서 실행되도록 작성되어야 하며, 실행하고자 하는 자바 응용프로그램을 플랫폼상에 로딩하기 위한 메카니즘 또한 플랫폼 제약조건내에서 구비되어야 한다.
자바를 지원하는 종래의 플랫폼은 전형적으로 마이크로프로세서에 기초한 컴퓨터이며, 비교적 많은 양의 메모리와 하드 디스크 저장 공간으로의 액세스가 가능하다. 이러한 마이크로프로세서는 데스크탑 또는 개인용 컴퓨터에서 주로 사용된다. 종래에는, 마이크로컨트롤러상에서의 자바실행프로그램이 없었으며, 스마트카드에서 일반적으로 사용되었다.
마이크로컨트롤러는 마이크로프로세서와 여러 가지 면에서 다르다. 예를 들면, 마이크로프로세서는 적절한 작동을 위해 일정한 외부 구성요소 (예를 들면, 메모리, 입력컨트롤, 출력컨트롤)를 필요로 하는 중앙처리장치(CPU)를 구비한다. 일반적인 마이크로프로세서는 메가바이트에서 기가바이트에 이르는 메모리에 액세스할 수 있으며, 단일의 명령으로 16, 32, 64비트 이상의 정보를 처리할 수 있다. 이와 반대로, 마이크로컨트롤러는 중앙처리장치, 메모리, 기타 구성요소들을 단일 반도체 기판상 또는 집적회로(예: 칩)상에 구비한다. 마이크로프로세서로 액세스하는 비교적 큰 외부 메모리와 비교해 볼 때, 마이크로컨트롤러는 보다 작은 메모리에 액세스한다. 일반적인 마이크로컨트롤러는 1에서 64킬로바이트의 내장메모리에 액세스할 수 있으며, 보통 16킬로바이트에 액세스한다.
일반적으로 사용되는 메모리에는 랜덤 액세스 메모리(RAM), 판독전용메모리(ROM), 전기적 소거가능 프로그래머블 롬(EEPROM)등의 3가지 종류가 있다. 마이크로컨트롤러에서, 각 메모리 양은 각각의 메모리에 사용된 집적회로 공간의 양에 의해 제한된다. 일반적으로, RAM은 가장 많은 공간을 차지하며 공급이 부족하다. ROM은 가장 적은 공간을 차지하며 풍부하다. EEPROM은 RAM보다는 풍부하나 ROM보다는 부족하다.
각 메모리는 서로 다른 용도에 적합하다. ROM은 가장 저렴하나 오퍼레이팅 시스템 코드와 같이 변하지 않는 데이타에만 적합하다. EEPROM은 전원이 끊어져도 보유되어야 하는 저장데이터에 유용하나, 쓰기(write)에 상당한 시간이 소요된다. RAM은 고속으로 쓰기와 읽기를 할 수 있으나, 가격이 비싸며 RAM상의 데이터는 전원이 끊어지면 소실된다.
마이크로프로세서시스템은 비교적 적은 ROM과 EEPROM을 가지며, 1에서 128메가바이트의 RAM를 가지는데, 이것은 단일 집적회로장치에 적합하도록 제약받지 않기 때문이며, EEPROM보다 저가로 쓰기 가능하고 비휘발성인 큰 저장영역의 역할을 하는 외부 디스크 메모리 시스템으로의 액세스가 가능하다. 일반적으로 마이크로컨트롤러는 0.1 ~ 2.0K의 작은 RAM, 2K ~ 8K의 EEPROM, 8K ~ 56K의 ROM을 가진다.
마이크로컨트롤러는 요구되는 외부 구성요소들의 수가 적고 크기도 작으므로 스마트 카드와 같은 집적회로카드에서 주로 사용된다. 이러한 스마트 카드는 다양한 형태를 가지며, 판독기에 삽입되어 사용되는 콘택트-기반(contact-based) 카드와 삽입되지 않고 사용되는 콘택트리스(contactless) 카드등이 있다. 콘택트리스 커뮤니케이션을 채택한 마이크로컨트롤러는 시계나 링등의 특별한 형태로 내장되며, 스마트카드의 기능성을 인간공학적인 면에서 효율적인 방법으로 통합한다.
환경적인 제약으로 인하여, 스마트카드에 대한 응용프로그램은 일반적으로 저급 프로그래밍 언어(예:어셈블리 언어)로 작성되어 메모리를 보존한다.
고급 프로그래밍 언어를 사용하여 스마트 카드를 프로그램하는 한 가지 방법은 발명의 명칭이 "Portable support medium for an easily programmable microcircuit and programming procedure for said microcircuit" 로서 프랑스 특허 공보 제 2,667,171 호로 공개된 프랑스 특허출원 제 90 118 18 호에 기재되어 있다. 그러나, 상기 특허출원에는 데이타 보안성 문제가 해결되지 않고, 스마트 카드상의 데이타 및 정보를 허가받지 않은 상태에서의 접근을 어떠한 방식으로 방지하는 지도 기재되어 있지 않으며, 또한 프로그래머가 자바와 같은 풍부한 프로그래밍 언어로 스마트 카드용 프로그램을 제작하는 것이 가능하며 스마트 카드의 실행 제약 범위내에서 작동하는 스마트카드상의 인터프리터를 사용하여 상기 프로그램을 실행하는 프로그래밍 환경을 어떠한 방식으로 제공하는 지도 기재되어 있지 않다.집적회로 카드는 안전하고 튼튼하며 기록이 지워질 염려가 없는 휴대가능한 데이터 저장용 장치이다. 집적회로 카드는 사이즈가 작고 고유의 하드웨어, 소프트웨어 데이터 보안 특징을 가지고 있으므로 개인용 컴퓨터에 적합하다.
집적회로카드와 카드상의 마이크로컨트롤러의 주요 기능은 카드상에 저장된 데이터를 보호하는 것이다. 1974년에 제안된 집적회로 카드 기술은 이러한 보안성을 근거로 엄격하게 보호되어 왔다. 이 카드는 처음에 프랑스 은행의 인출카드로사용되었다. 이때에는, 카드를 사용한 금융거래가 공식화되기 이전이므로 카드사용자는 카드의 소지뿐만 아니라 카드에 저장된 4자리수의 개인식별번호(PIN)를 알고 있어야 거래가 가능하였다. 분실 또는 도난된 카드의 PIN을 누출시킬만한 정보는 일반에게 공개되지 않았다. 어떠한 정보가 PIN을 누출시킬 가능성이 있는지를 알 수 없었으므로 집적회로카드에 관한 모든 정보가 사실상 공개되지 않았다.
보안상의 문제로 인하여, 집적회로카드를 위해 작성된 응용프로그램들은 고유의 특성을 가진다. 예를 들면, 각각의 응용프로그램들은 일반적으로 특정 소유자나 식별자에 의해 식별된다. 응용프로그램은 일반적으로 어셈블리 언어와 같은 저급의 언어로 작성되므로, 특정한 유형의 마이크로컨트롤러에 대해 작성된다. 저급 언어의 특성으로 인하여, 정식등록되지 않은 응용프로그램으로 집적회로카드상의 데이터를 액세스 할 수도 있다. 집적회로카드용 프로그램은 특정 식별자를 이용하여 식별될 수 있도록 작성되어, 두개의 식별자가 동일한 프로그래밍 기능을 실행하고자하는 경우 집적회로카드의 마이크로컨트롤러상의 응용프로그램 일부분은 2매의 카피가 필요하다.
집적회로 카드시스템은 전통적으로 폐쇄적인 시스템이다. 집적회로 카드는 특정 단말기의 적용을 위해 작성된 전용 응용프로그램을 가진다. 집적회로카드 사용시의 보안 점검은 주로 카드와 단말기가 일치하는 한 쌍인지 그리고 카드상의 데이터가 유효한지를 확인하는 것이었다.
집적회로카드의 사용이 증가함에 따라, 카드 사용자들이 각각의 집적회로시스템용으로 서로 다른 카드를 휴대하는 것은 번거로운 일이 되었다. 그러므로, 다중 협력 응용프로그램이 집적회로카드 단일 제공자에게 보급되기 시작하였다. 이리하여, 예를 들면, 자동현금지급기(ATM) 액세스 카드와 인출 카드가 단일 집적회로 카드 플랫폼상에서 공존하게 되었다. 그러나, 이러한 시스템은 단말기와 카드의 모든 어플리케이션이 타 제공자의 정보를 명확히 알고 있는 단일의 제공자에 의해 제작되므로 여전히 폐쇄적인 시스템이었다.
집적회로 카드에 대한 정보, 특히 커뮤니케이션과 프로그래밍에 대한 정보의 부족은 집적회로 카드의 일반적인 사용에 걸림돌이 되었다. 그러나, 공중 디지털 네트워킹(예를 들면, 인터넷과 월드와이드웹)의 출현으로 집적회로 카드 어플리케이션의 새로운 영역이 열렸다. 그 결과, 특히 카드의 보안성을 손상시키지 않으면서 타 제공자의 정보를 가지지 않은 새로운 어플리케이션을 카드에 로드할 필요성이 대두되었다. 그러나, 이것은 저급 언어로 프로그래밍된 종래의 카드로는 실행될 수 없었다.
본 발명에 개시된 내용의 일부는 저작권보호 대상이다. 저작권 소유자는 본 발명의 서류들과 내용에 대해 특허청 파일이나 기록용으로 본 발명과 연관된 자에 의한 팩스 복사 이외의 모든 무단 복제를 금한다.
미국 특허법 119(e)조에 의거, 본 출원은 1996. 10. 25일자로 출원된 선행 미국 가출원(번호 60/029,057)의 진출원이다.
본 발명은 프로그래밍에 관한 것이며, 특히, 스마트카드 또는 마이크로컨트롤러를 이용한 고급 프로그래밍 언어의 사용에 관한 것이다.
도 1은 집적회로카드 시스템을 도시한 블럭도.
도 2는 집적회로카드로 다운로드될 자바 어플리케이션의 준비절차를 도시한 공정도.
도 3은 카드 클래스 파일 변환기에 의해 사용되고 생성된 파일을 도시한 블럭도.
도 4는 어플리케이션 클래스 파일을 카드 클래스 파일로 변환하는 것을 도시한 블럭도.
도 5는 클래스 파일 변환기의 작동을 도시한 공정도.
도 6은 바이트 코드의 수정변경을 도시한 공정도.
도 7은 특정 바이트 코드를 일반적인 바이트 코드로 변환하는 것을 도시한 블럭도.
도 8은 상수 참조를 상수로 대체하는 것을 도시한 블럭도.
도 9는 참조를 대응하는 갱신값으로 대체하는 것을 도시한 블럭도.
도 10은 원래의 바이트 코드의 재구성을 도시한 블럭도.
도 11은 상이한 가상기기 구조를 위한 최초 바이트 코드의 번역을 도시한 블럭도.
도 12는 어플리케이션을 집적회로카드로 로딩하는 것을 도시한 블럭도.
도 13은 집적회로카드에서의 어플리케이션 실행을 도시한 블럭도.
도 14는 ROM, RAM, EEPROM의 메모리 구성을 도시한 개략도.
도 15는 카드 자바 가상기기의 전체적인 구조를 도시한 공정도.
도 16은 보안 점검 기능이 있는 카드 자바 가상 기기의 실행방법을 도시한 공정도.
도 17은 카드 자바 가상 기기의 바이트 코드 실행을 도시한 공정도.
도 18은 보안 점검 기능이 없는 카드 자바 가상 기기의 실행방법을 도시한 공정도.
도 19는 카드 어플리케이션과 아이덴티티(identity)간의 연관을 도시한 블럭도.
도 20은 특정 실행 어플리케이션의 액세스 권리를 도시한 블럭도.
도 21은 스마트카드상의 마이크로컨트롤러를 도시한 사시도.
도 22는 전화기상의 마이크로컨트롤러를 도시한 사시도.
도 23은 키(key) 링상의 마이크로컨트롤러를 도시한 사시도.
도 24는 링 상의 마이크로컨트롤러를 도시한 사시도.
도 25는 자동차의 회로카드상의 마이크로컨트롤러를 도시한 사시도.
발명의 요약일반적으로, 일 측면에서, 본 발명은, 마이크로컨트롤러, 예를 들어 집적회로 카드 또는 스마트 카드의 제공에 특징이 있다. 설명 목적을 위하여 이 요약에 이어지는 상세한 설명에서 본 발명은 단말기용 집적회로 카드에 대한 응용에 관하여 기재된다. 그러나, 본 발명은 소형 컴퓨터 프로세서, 예를 들어, 마이크로컨트롤러를 사용하는 내장 시스템 등의 다른 응용에도 적용가능하다.본 발명의 마이크로컨트롤러의 마이크로프로세서는 인터프리터와 고급 프로그래밍 언어 포맷을 가진 적어도 하나의 어플리케이션을 저장한 메모리를 포함한다. 메모리의 적어도 한 부분은 마이크로프로세서 내에 위치된다. 마이크로프로세서는 실행을 위한 어플리케이션을 해석(interpret)하기 위하여 인터프리터를 이용하도록 구성되어 있다.
본 발명의 장점들 중 일부는 아래와 같다. 스마트카드 또는 마이크로컨트롤러의 보안성을 손상시키지 않으면서 스마트카드 또는 마이크로컨트롤러를 구비한 기타 시스템으로 새로운 어플리케이션들을 다운로드시킬 수 있다. 이러한 어플리케이션들은 상이한 단말기를 이용하여 상이한 시간에 로드되어 상이한 회사에 의해 제공될 수 있다. 어플리케이션들은 자바 가상 기기에서 제공되는 보안성에 의해, 어플리케이션 코드나 데이터의 무허가 액세스로부터 보호되기 때문에 보안성이 소실되지 않는다. 어플리케이션은 강력한 주요 프로그램 개발 툴을 사용하여 자바, 이펠(Eiffel)과 같은 고급언어로 작성될 수 있다. 새로운 어플리케이션들은 신속히 프로토타이핑되어 소프트 마스크의 지원없이 몇시간내에 스마트카드로 다운로드될 수 있다.마이크로컨트롤러를 사용하는 내장시스템은 본 발명을 이용하여 새로운 어플리케이션의 다운로딩, 고급 프로그램 개발, 신속한 프로토타이핑에 있어서 이들 많은 장점을 이용할 수 있다.마이크로 컨트롤러 상에서 자바 또는 이펠과 같은 고급 언어를 사용함에 있어서 어려움은 인터프리터 및 상기 언어로 생성된 응용 프로그램의 컴파일된 버전 모두의 대용량의 메모리 요구에 기인한다. 본 발명은 응용 프로그램 프로세싱 체인 내에 변환기를 도입함에 의하여 상기 어려움을 극복한다.본 발명의 구현은 다음 중 하나 또는 그 이상을 포함할 수 있다. 어플리케이션의 고급 프로그래밍 언어 포맷은 클래스 파일 포맷을 가질 수 있고 자바 프로그래밍 언어 포맷을 가질 수 있다. 어플리케이션은 자바 바이트 코드와 같은 바이트 코드들을 포함할 수 있다.본 발명을 구현하는 시스템은 고급 프로그래밍 언어로 기록된 응용 소스 프로그램을 컴파일된 형태로 컴파일하는 컴파일러를 포함할 수 있다. 본 발명은 상기 컴파일된 형태를 인터프리터에 의한 해석에 적합한 형태로 사후 처리하는 변환기를 더 포함할 수 있다.본 발명의 일 측면에서, 변환기는 인터프리터에 의하여 요구되지 않는 속성은 포함하지 않으면서, 인터프리터에 의하여 요구되는 응용 프로그램 속성들은 포함하도록 작동가능하다. 상기 변환기는 입력으로서 표준 고급 언어 포맷으로 컴파일된 형태를 수신할 수 있고, 인터프리터에 의한 해석에 적합한 형태로 출력을 발생시킬 수 있다. 한 측면에서, 상기 변환기는 예를 들어 정수와 같은 유일한 식별자에 대하여 식별 열(스트링: string)을 매핑(mapping)하는 수단을 포함할 수 있다. 이 매핑 프로세스는 열-대-식별자 맵 파일에 기록될 수 있다.본 발명에 따른 인터프리터는 고급 언어의 특징 및 데이타 유형의 전체 집합의 부분 집합을 지원하도록 더 제한될 수 있다. 그러한 경우에, 변환기는 응용 프로그램의 컴파일된 형태가 그러한 지원되는 특징 및 데이타 유형만을 포함하도록 또한 확인한다.한 실시예에서, 변환기는, 컴파일된 형태의 바이트 코드로부터, 점프 및 행선지를 기록하는 단계, 특정 바이트 코드를 일반 바이트 코드로 또는 일반 바이트 코드를 특정 바이트 코드로 변환시키는 단계, 식별 열을 대신하는 유일한 식별자를 사용하기 위한 기준으로부터 바이트 코드 오퍼랜드를 수정하는 단계, 등가의 바이트 코드로 바이트 코드를 재배열하는 단계, 및 행선 어드레스가 상기 변환 단계 또는 단계들에 의해 달성되는 점프를 다시 링크하는 단계를 포함하는 세트로부터 선택된 적어도 하나의 단계를 사용하여 마이크로컨트롤러 인터프리터에 의한 해석에 적합한 형태의 바이트 코드로 번역하는 수단을 포함한다.인터프리터는 보안 점검을 구현하도록 구성될 수 있다. 보안 점검은 방화벽을 구축하는 것 및 샌드박스(sandbox) 보안 모델을 실행하는 것을 포함할 수 있다. 예를 들면, 인터프리터는 어플리케이션이, 메모리의 비인가된 부분에의 접근을 허용하지 않는 것, 비인가된 마이크로프로세서 자원에의 접근을 허용하지 않는 것, 바이트 코드의 실행이 보안 제약에 위배되지 않는지를 점검하는 것을 포함하는 세트로부터 선택된 보안 기준을 만족시키는지 여부를 결정할 수 있다. 본 발명의 구현은 어플리케이션의 로딩 전에 상기 어플리케이션이 모든 보안 제약을 위배하지 않는지를 확인하는 단계 및 보안 방식으로 상기 어플리케이션을 로딩하는 단계의 프로세스를 또한 포함한다. 후자의 단계의 예는, 로딩 아이덴티티(identity)가 마이크로컨트롤러 상으로 어플리케이션들을 로드하는 허가를 가지고 있는지를 확인하는 단계 및 상기 어플리케이션이 로딩 키를 사용하여 로드되도록 암호화하는 단계를 포함한다.또다른 측면에서, 본 발명은 컴파일러에 의하여 발생된 제 1 중간 코드로부터 제 1 프로그래밍 언어로 기록되고, 제 1 가상 기기에 의하여 해석되도록 의도된 어플리케이션을 제 2 가상 기기에 의하여 해석가능한 제 2 중간 코드로 변환하는 단계 및 상기 제 2 중간 코드를 마이크로컨트롤러의 메모리 내로 로딩하는 단계를 포함하는 마이크로컨트롤러를 프로그래밍하는 방법이다.본 발명의 방법에 따르면, 변환하는 단계는, 오브젝트, 클래스, 필드 또는 방법에 대하여 식별 열을 관련시키는 단계 및 그러한 열을 유일한 식별자, 예를 들면 정수에 매핑하는 단계를 더 포함할 수 있다.본 발명의 방법의 한 실시예는, 점프 및 행선지를 기록하는 단계, 특정 바이트 코드를 일반 바이트 코드로 또는 그 반대로 변환시키는 단계, 식별 열을 대신하는 유일한 식별자를 사용하기 위한 기준으로부터 바이트 코드 오퍼랜드를 수정하는 단계, 등가의 바이트 코드로 바이트 코드를 재배열하는 단계, 및 행선 어드레스가 상기 변환 단계 또는 단계들에 의해 달성되는 점프를 다시 링크하는 단계 중 적어도 하나의 단계를 포함할 수 있다.본 발명의 또다른 측면에서, 마이크로컨트롤러는 해석가능한 프로그래밍 언어로 기록된 프로그램의 해석을 허용하기에 불충분한 크기의 메모리를 포함하는 한 세트의 자원 제약 내에서 동작한다. 상기 메모리는 고급 프로그래밍 언어로부터의 도출물인 프로그램을 해석하기 위하여 동작가능한 인터프리터를 포함하며, 상기 도출물은 열을 식별자에 매핑하는 것, 해석 전 또는 해석 중에 보안성 점검을 수행하는 것, 해석 전에 또는 해석 중에 구조 점검을 수행하는 것, 및 해석 전에 또는 해석 중에 의미 점검을 수행하는 것을 포함하는 한 세트의 규칙으로부터 선택된 최소한 하나의 규칙을 적용함에 의하여 도출될 수 있다이들 보안성 점검은 복수의 도출 프로그램 중의 하나에 접근하기 위한 요청자의 요청을 수신하는 논리를 또한 가질 수 있다. 요청의 수신시에, 도출 프로그램이 사전 결정된 규칙의 세트에 부합하는지 여부를 결정하고, 그 결정에 기초하여 요청자에게 도출 프로그램으로의 접근을 선택적으로 허가한다. 상기 사전결정된 규칙은 인터프리터에 의하여 실행될 수 있는 한편, 도출 프로그램은, 도출 프로그램이 접근하려고 시도하는 메모리의 특정 부분에 대하여 상기 도출 프로그램이 접근 권한을 가지는지 여부를 결정함에 의하여 해석된다.상기 마이크로컨트롤러는 또한 상기 도출 프로그램이 번역되는 동안 보안 규칙을 이행하는 것으로부터 선택된 최소한 하나의 보안성 점검을 수행하도록 구성되며, 상기 인터프리터는, 바이트 코드가 실행전 및 실행후 점검에 따라 수행될 수 있는지를 결정하기 위하여 실행전에 최소한 한번 각 바이트 코드를 점검하도록 구성되며, 상기 도출 프로그램은 마이크로컨트롤러에 로드되기 전에 도출 프로그램의 정합성을 확인하도록 점검되며, 보안성 프로토콜에 따라서 로딩이 수행된다. 보안성 프로토콜은 특정 아이덴티티가 도출 프로그램을 카드 상으로 로드하는 것을 허용하도록 검증되어야 할 것을 요구할 수 있다. 보안성 프로토콜은 암호해독키를 더 포함할 수 있고, 로드되는 도출 프로그램이 상기 암호해독키에 대응하는 로딩 키를 사용하여 암호화될 것을 요구할 수 있다.마이크로컨트롤러는 암호화, 암호해독, 서명, 서명 검증, 상호 승인, 트랜스포트 키, 및 세션 키를 포함하는 세트로부터 선택된 암호 서비스를 제공하도록 구성될 수 있다.마이크로컨트롤러는 또한 파일 시스템을 지니고, 파일로부터의 판독, 파일로의 기록, 또는 파일의 삭제를 승인하는 액세스 제어 리스트를 지니는 마이크로컨트롤러에 의한 파일 시스템에의 안전한 접근을 제공하도록 구성될 수 있다. 또한, 마이크로컨트롤러는 파일에의 승인된 접근을 설정하는 키 검증을 수행하거나, 파일에의 승인된 접근을 설정하는 카드 보유자 아이덴티티를 검증할 수 있다.다른 장점과 특징들은 하기 기재와 청구항으로부터 명확하게 될 것이다.
제 1도에서, 집적회로카드(10)(예를 들면, 스마트카드)는 고급이며 자바에 기초한 다수의 어플리케이션 프로그래밍 및 실행 환경을 제공하도록 구성된다. 집적회로카드(10)는 단말기(14)의 단말기 커뮤니케이터(12b)와 통신하도록 구성된 커뮤니케이터(12a)를 구비한다. 일부 실시예에서, 집적회로카드(10)는 8비트 마이크로컨트롤러, 512바이트 RAM, 4K 바이트 EEPROM, 20K의 ROM을 가진 스마트카드이며, 단말기 커뮤니케이터(12b)는 종래의 콘택트(contact) 스마트카드 판독기이며, 단말기(14)는 개인용 컴퓨터 스마트카드 (PC/SC) 기준을 지원하고 자바 개발 지원을 제공하는 윈도우즈 NT 오퍼레이팅 시스템을 실행하는 일반적인 개인용 컴퓨터이다.
일부 실시예에서, 마이크로컨트롤러, 메모리, 커뮤니케이터는 일반적인 크레디트카드와 실질적으로 동일한 면적을 가지는 플라스틱 카드에 내장된다. 다른 실시예에서는, 마이크로컨트롤러, 메모리, 커뮤니케이터는 보석류 (예를 들면, 시계, 반지, 목걸이), 자동장치, 통신장치 (예를 들면, 가입자 아이덴티티(identity) 모듈 (SIM) 카드), 보안장치 (예를 들면, 암호모듈), 그리고 기타 장치등과 같이 플라스틱 카드가 아닌 구조물에 장착된다.
단말기(14)는 단말기 커뮤니케이터(12b)를 이용하여 자바 어플리케이션을 집적회로카드(10)에 다운로드한다. 단말기 커뮤니케이터(12b)는 집적회로카드(10)와 단말기(14)사이에 통신 채널을 설치하는 통신 장치이다. 일부 통신 옵션에서는 콘택트 카드 판독기, 무선주파수 또는 적외선 기술을 이용한 무선 통신, 직렬 통신프로토콜, 패킷 통신 프로토콜, ISO 7816 통신 프로토콜 등을 포함한다.
단말기(14)는 또한 집적회로카드(10)에서 실행되는 어플리케이션과 상호작용한다. 어떤 경우에서는, 이러한 목적을 위하여 상이한 단말기들을 사용한다. 예를 들면, 어느 한 종류의 단말기를 이용하여 어플리케이션을 준비하고, 다른 종류의 단말기를 이용하여 어플리케이션을 다운로드하며, 또 다른 종류의 단말기를 이용하여 다양한 어플리케이션들을 실행한다. 단말기는 자동현금지급기(ATM), 판매시점정보관리 (POS) 단말기, 방범 보안 시스템, 통행료 지불 시스템, 액세스 제어 시스템, 그리고 집적회로카드 또는 마이크로컨트롤러와 통신하는 모든 시스템이 될 수 있다.
집적회로카드(10)는 카드(10)상에 포함된 어플리케이션을 번역하는 카드 자바 가상기기(카드 JVM)(16)를 포함한다.
제 2도에서, 자바 어플리케이션(20)은 3개의 자바소스코드파일들 A(자바 20a), B(자바 20b), C(자바 20c)를 포함한다. 이러한 소스코드파일들은 자바 어플리케이션 개발 환경(22)에서 준비되고 컴파일된다. 자바 어플리케이션(20)이 개발환경(22)에서 컴파일되면, 각각의 클래스 자바 소스 코드(20a, 20b, 20c)에 대응하는 클래스파일 A(클래스 24a) B(클래스 24b), C(클래스 24c)와 함께 어플리케이션 클래스 파일(24)이 생성된다. 어플리케이션 클래스 파일(24)은 Tim Lindholm 과 Frank Yellin의 "자바 가상 기기 명세서" (Addison-Wesley, 1996) 제4장에 명시된 표준 클래스 파일 포맷을 준수한다. 이러한 어플리케이션 클래스 파일(24)은 카드 클래스 파일 변환기(26)에 입력된 후 병합 압축되어 단일 카드 클래스 파일(27)을생성한다. 카드 클래스 파일(27)은 일반적인 카드 로더(28)를 이용하여 집적회로카드(10)로 로드된다.
제 3도에서, 카드 클래스 파일 변환기(26)는 표준 자바 클래스 파일 포맷으로 부호화된 일련의 클래스 파일(24)을 가진 클래스 파일 포스트프로세서(postprocessor)이며, 스트링->ID입력맵(30)을 선택적으로 사용하여 카드 클래스 파일 포맷의 자바 카드 클래스 파일(27)을 생성한다. 이러한 카드 클래스 파일 포맷은 참고문헌인 별첨 A에 설명되어 있다. 또한, 일부 실시예에서, 카드 클래스 파일 변환기(26)는 카드 클래스 파일 변환기의 후속 실행을 위한 입력으로 사용되는 스트링->ID출력맵(32)을 생성한다.
일부 실시예에서, 이전 생성된 카드 클래스 파일과 ID매핑열의 일관성을 위해 (다중 클래스 파일들이 동일한 열을 참조하는 경우), 카드 클래스 파일 변환기(26)는 이전에 정의된 ID매핑열을 스트링->ID입력맵(30)으로부터 수신한다. 이러한 파일이 없는 경우, ID는 카드 클래스 파일 변환기(26)에 의해 생성된다. 참고문헌 별첨 B에는 스트링->ID입력맵(30)과 스트링->ID출력맵(32)을 구현, 생성하는 한 가지 방법이 설명되어 있으며, 이러한 매핑을 일례를 들어 설명되어 있다.
제 4도에서, 일반적인 어플리케이션 클래스 파일(24a)은 클래스 파일 정보(41), 클래스 상수 풀(constant pool)(42), 클래스, 생성 필드, 참조 인터페이스, 방법 정보(43), 그리고 앞에서 언급한 자바 가상 기기 명세서에서 상세히 설명한 다양한 속성 정보(44)를 포함한다. 본 실시예에서는 많은 양의 속성 정보(44)가 필요하지 않으므로 카드 클래스 파일 변환기(26)에 의해 삭제(45)되었다. 삭제된정보는 SourceFile, ConstantValue, Exceptions, LineNumberTable, LocalVariableTable, 그리고 임의 선택가능한 벤더 속성들이다. 별첨 A에서 설명된 일반적인 카드 클래스 파일(27)은 다음과 같은 방법으로 어플리케이션 클래스 파일(24)로부터 파생된다. 카드 클래스 파일 정보(46)는 어플리케이션 클래스 파일(24a, 24b, 24c)의 총 클래스 파일 정보(41)로부터 파생된다. 카드 클래스 파일 상수 풀(47)은 어플리케이션 클래스 파일(24a, 24b, 24c)의 총 클래스 상수 풀(42)로부터 파생된다. 카드 클래스, 생성필드, 참조 인터페이스, 방법 정보(48)는 어플리케이션 클래스 파일(24a, 24b, 24c)의 총 클래스, 생성 필드, 참조 인터페이스, 방법 정보(43)로부터 파생된다. 본 실시예에서 카드 속성 정보(49)는 어플리케이션 클래스 파일(24a, 24b, 24c)의 총 속성 정보(44)의 코드 속성으로부터 파생된다.
카드에서의 동적 링크를 피하기 위하여, 어플리케이션(24)을 구성하는 자바 클래스 파일들(24a, 24b, 24c)에 걸쳐 배분되는 모든 정보는 제 5도에 도시한 바와 같이 하나의 클래스 파일(27)로 합병된다. 최초로 처리될 클래스 파일을 선택한다(단계 51a). 상수 풀(42)은 다음과 같은 방법으로 압축된다(단계 51b). 자바 클래스 파일(24a)에서 참조된 모든 오브젝트, 클래스, 필드, 방법 등은 클래스 파일(24a)의 상수 풀(42)에서 열(스트링)을 이용하여 식별된다. 카드 클래스 파일 변환기(26)는 자바 클래스 파일(24a)에서 검색된 상수 풀(42)을 최적 버전으로 압축한다. 이러한 압축은 클래스 파일 상수 풀(42)의 모든 열들을 (사이즈가 마이크로컨트롤러 구조에 따라 달라지는)정수로 매핑함으로써 실행된다. 이러한 상수들또한 ID이다. 각각의 ID를 이용하면 어플리케이션(20)의 특정한 오브젝트, 클래스, 필드, 또는 방법을 고유하게 식별할 수 있다. 그러므로, 카드 클래스 파일 변환기(26)는 자바 클래스 파일 상수 풀(42)의 열을 해당하는 고유의 ID로 대체한다. 별첨 B에서는 어플리케이션에 대한 클래스 파일의 상수 풀의 열에 해당하는 ID들을 표에서 설명함으로써 어플리케이션의 일례를 보여준다. 여기의 예에서 사용된 ID들은 16비트의 부호없는 정수이다.
카드 클래스 파일 변환기(26)는 입력 자바 클래스 파일(24a)의 코드 속성에서 지원되지 않는 특징들을 점검한다(단계 51c). 카드 JVM(16)은 참고문헌 별첨 C에서 설명된 바와 같이 완전 자바 바이트 코드의 서브세트만을 지원한다. 그러므로, 카드 클래스 파일 변환기(26)는 자바 클래스 파일(24a)의 코드 속성에서 지원되지 않는 바이트 코드들을 점검한다. 지원되지 않는 바이트 코드가 있으면 (단계 52), 카드 클래스 파일 변환기는 에러를 표시하고 변환을 중지한다(단계 53). 별첨 D에서 "A"라고 표시된 프로그램 코드 부분은 이러한 유사 바이트 코드들을 해석하는 방법을 보여준다. 또 다른 레벨의 점검이 표준 자바 개발 환경(22)을 요구하여 어플리케이션(20)을 '-g' 표시로 컴파일함으로써 실행된다. 앞서 언급한 자바 가상 기기 명세서를 근거로, 이 옵션은 자바 어플리케이션(20)에서 사용된 변수들에 대한 정보를 클래스 파일(24a)의 LocalVariableTable 속성에 위치시키도록 요구한다. 카드 클래스 파일 변환기(26)는 이 정보를 이용하여 자바 클래스 파일(24a) 참조 데이터 유형이 자바 카드에 의해 지원되지 않는지의 여부를 점검한다.
다음으로, 카드 클래스 파일 변환기(26)는 번역이 요구되지 않는 자바 클래스 파일(24a)의 불필요한 부분들을 모두 삭제한다. 자바 클래스 파일(24a)은 클래스 파일의 바이트 코드에 관한 정보를 자바 클래스 파일의 속성부(44)에 저장한다. 카드 JVM(16)에 의해 번역이 요구되지 않는 SourceFile, ConstantValue, Exceptions, LineNumberTable, LocalVariable Table등의 속성들은 안전하게 삭제된다(단계 45). 코드 속성만이 유일하게 삭제되지 않는다. 코드 속성에는 자바 클래스 파일(24a)에서의 방법에 대응하는 바이트 코드가 포함된다.
바이트 코드 변경 수정단계(54)는 클래스 파일에서의 각각의 방법들에 대해 코드 속성 정보(44)를 검토하고 카드 클래스 파일 상수 풀(47)의 엔트리들을 반영하기 위해 자바 클래스 파일 상수 풀(42)의 엔트리를 참조한 바이트 코드들의 연산수(오퍼랜드)를 수정한다. 일부 실시예에서는 아래에 설명된 바와 같이 바이트 코드들을 변경 수정한다.
바이트 코드 변경 수정단계(54)는 제6도에 도시한 바와 같이 5개의 패스(2개의 옵션 패스 포함)와 연관된다. 원래의 바이트 코드(60)는 처리중인 자바 클래스 파일(24a)의 코드 속성(44)에 존재한다. 제 1 패스(61)는 원래의 바이트 코드의 모든 점프들과 그들의 행선지들을 기록한다. 이후의 바이트 코드 번역에서, 일부 단일 바이트 코드는 이중 또는 삼중 바이트로 번역된다. 제7도는 바이트 코드 ILOAD_0가 두개의 바이트, 즉 ILOAD와 인수0으로 대체되는 예를 도시한다. 이러한 대체가 완성되면, 영향을 받는 점프 행선지의 조정을 요구하며 코드 사이즈가 변한다. 그러므로, 이러한 변환을 실행하기 전에, 점프 바이트 코드와 그들의 위치 및 현재 행선지에 대하여 원래의 바이트 코드(60)를 분석한다. 별첨 D에서 "B"로 명시된 프로그램 코드 부분은 이러한 점프들이 기록되는 방법을 보여준다. 별첨 D는 참고문헌이다.
일단 점프가 기록되면, 원래의 바이트 코드 번역이 실행되지 않는 경우(단계 62), 카드 클래스 파일 변환기(26)는 제 3 패스(64)로 진행한다.
바이트 코드 번역이 실행되는 경우(단계 62), 카드 클래스 파일 변환기는 특정 바이트 코드를 일반적인 바이트 코드로 변환한다. 일반적으로, 번역된 바이트 코드들은 카드 JVM(16)에서 해석되지 않고 바이트 코드를 카드 JVM(16)에 의해 해석되는 등가의 바이트 코드로 변환함으로써 지원된다(7도 참조). 바이트 코드(70)는 의미적으로 동일하나 다른 바이트 코드(72)로 대체된다. 이를 위해서는, ILOAD_0과 같은 짧은 단일 특정 바이트 코드를 좀더 일반적인 버전으로 번역해야 한다. 예를 들면, ILOAD_0은 바이트 코드 ILOAD과 인수 0으로 대체될 수 있다. 이러한 번역은 카드 JVM(16)에 의해 번역된 바이트 수를 감소시키기 위함이며, 이렇게 함으로써 카드 JVM(16)의 복잡성과 코드 공간 요구를 감소시킬 수 있다. 별첨 D에서 "C"로 표시된 프로그램 코드 부분은 이러한 번역들이 실행되는 방법을 보여준다. 이러한 번역들은 결과로 산출되는 바이트 코드의 크기를 증가시키고 달성되는 점프들을 재산출해야 함에 유의한다.
제 3 패스(64)에서, 카드 클래스 파일 변환기는 상수들을 나타내는 열을 삭제함으로써 상수 참조를 재구축한다. 제 8도는 자바 클래스 파일(24a) 상수 풀(42)의 인덱스를 통하여 검색된 상수 "18"을 참조하는 바이트 코드 LDC(80)가 BIPUSH 바이트 코드(82)로 번역되는 예를 도시한다. 제 3 패스에서 카드 클래스 파일 변환기(26)는 카드 클래스 파일 상수 풀(47)에서의 새로운 위치를 반영하기 위해 자바 클래스 파일 상수 풀(42)의 엔트리를 참조하는 모든 바이트 코드로 연산수를 변경 수정한다. 제 9도는 카드 클래스 파일 상수 풀(47)에서의 새로운 위치를 반영하기 위해 수정된 자바 클래스 파일 상수 풀(42)의 엔트리를 바이트 코드 INVOKESTATIC(90)에 대한 인수가 참조하는 일례를 도시한다. 수정된 연산수(94)는 이러한 변환을 보여준다. 별첨 D에서 "D"로 표시된 프로그램 코드 부분은 이러한 변경 수정이 실행된 방법을 보여준다.
일단 상수 참조가 재연결되면, 선택적인 바이트 코드 수정이 실행되지 않는 경우, 카드 클래스 파일 변환기는 마지막인 제 5 패스(67)로 진행한다.
바이트 코드 수정이 실행되는 경우, 카드 클래스 파일 변환기는 원래의 바이트 코드를, 사용중인 특정 카드 JVM(16)에 의해 지원되는 다른 바이트 코드로 수정한다. 한번의 잠재적인 수정으로 원래의 바이트 코드(60)는 카드 JVM(16) 바이트 코드로 재구성된다 (10도 참조). 이렇게 함으로써, 원래의 바이트 코드(60)의 바이트 코드(100)는 재구성된 바이트 코드(102)로 수정된다. 값 21로 인식된 바이트 코드 ILOAD는 값 50으로 인식되도록 재구성된다. 이러한 수정은 카드 JVM(16)에서의 (종래 기술에서 패스 3 점검에 해당되는) 유형 테스트를 최적화하기 위함이다. 별첨 D에서 "E"로 표시된 프로그램 코드 부분은 본 실시예의 실행을 보여준다. 이러한 수정은 바이트 코드를 해석하는 카드 JVM(16)에 의해 요구되는 프로그램 공간을 감소시키기 위함이다. 본질적으로, 이러한 수정을 통하여 바이트 코드를 카드 JVM(16) 바이트 코드로 재그룹화하여 유사한 연산수와 결과를 가진 바이트 코드들이 함께 그룹화되도록 하고, 카드 JVM(16) 바이트 코드들간에 갭이 없도록 한다. 이렇게 함으로써, 카드 JVM(16)가 카드 JVM 바이트 코드들을 효과적으로 점검하고 실행시의 유형들을 확인하도록 한다.
일부 실시예에서, 카드 클래스 파일 변환기는 제 11도에서 도시된 바와 같이, 원래의 바이트 코드(60)를, 다른 가상 기기 구조를 위해 설계된 다른 바이트 코드로 수정한다. 워드 스택(114)용 자바 바이트 코드 ILOAD(112)는 바이트 스택(118)에서 사용될 수 있도록 카드 JVM(16) 바이트 코드 ILOAD_B(116)으로 대체된다. 워드 스택(114)의 구성요소는 4 바이트의 스택 공간을 요구하는 반면, 바이트 스택(118)의 구성요소는 1 바이트의 스택 공간을 요구한다. 이러한 옵션으로 인하여 실행 속도가 향상되기는 하나, 원래 바이트 코드에서 사용가능한 보안성의 특징의 손실을 유발할 수도 있다.
이전 단계(63, 64, 66)에서 바이트 코드(60)의 사이즈가 변경되었을 가능성이 있으므로, 카드 클래스 파일 변환기(26)는 영향을 받은 점프를 재연결해야 한다 (단계 67). 카드 클래스 파일 변환기(26)의 제 1단계(61)에서 점프가 기록되었으므로, 이러한 조정은 점프 행선지를 적절한 값으로 고정함으로써 실행된다. 별첨 D에서 "F"로 표시된 프로그램 코드 부분은 이러한 점프들이 고정되는 방법을 보여준다.
이제, 카드 클래스 파일 변환기는 원래의 바이트 코드(60)와 등가의 바이트코드로 수정하여 로딩할 준비를 완료하였다(단계 68). 자바 클래스 파일(24a)로부터 카드 클래스 파일(27)로의 번역이 완료된 것이다.
제 5도에서, 처리될 클래스 파일(24)이 남아있는 경우 (단계 55) 각 잔류 클래스 파일들에 대해 이전 단계들(51a, 51b, 51c, 52, 54)을 반복한다. 카드 클래스 파일 변환기(26)는 맵과 처리된 클래스(24)에 대한 수정된 바이트 코드들을 수집하여(단계 56), 집합체로 위치시킨 후, 카드 클래스 파일(27)을 생성한다(단계 57). 요구가 있을 시에, 카드 클래스 파일 변환기(26)는 번역 중에 자바 클래스 파일(24)의 상수 풀(42)에서 검색되는 열에 할당된 모든 새로운 ID의 리스트를 포함한 스트링->ID출력맵(32)을 생성한다.
제 12도에서, 단말기(14)내의 카드로더(28)는 표준 ISO 7816 명령어를 사용하여 카드 클래스 파일을 집적 회로 카드(10)내의 로딩 및 실행 제어부(120)로 전송한다. 카드 어플리케이션들(126)을 저장하는 카드 파일 시스템(124)에 대한 지원을 포함하여 카드 오퍼레이팅 시스템(122)과 로딩 및 실행 제어부(120)는 필요한 시스템 리소스를 제공한다. 종래의 카드로더는 저급 언어로 작성되었으며 카드 오퍼레이팅 시스템(122)에 의해 지지된다. 본 발명의 실시예에서, 부트스트랩 로더는 자바로 작성되었으며, 집적회로카드(10)는 이러한 어플리케이션을 실행할 자바 가상 기기를 구비한다. 로딩 및 실행제어부(120)의 자바 구현이 참고문헌인 별첨 E에 나타나 있다. 로딩 및 실행제어부(120)는 카드 클래스 파일(26)을 수신하여 자바 카드 어플리케이션(126x)을 생성하여 집적회로카드(10)의 EEPROM의 카드파일시스템(126)에 저장한다. 이러한 방법으로 다수의 자바 카드 어플리케이션들(126x, 126y, 126z)을 하나의 자바 카드에 저장할 수 있다. 로딩 및 실행 제어부(120)가 명령어를 지원함으로써 단말기(14)는 즉시 또는 후속 카드 리셋시에실행되어야 할 자바 카드 어플리케이션을 선택할 수 있다.
제 13도에서, 로딩 및 실행 제어부(120)로부터 리셋 또는 실행 명령을 수신하면, 카드 자바 가상 기기(카드 JVM)(16)는 선택된 자바 카드 어플리케이션(126z)의 선택된 클래스의 소정의 방법으로 실행을 시작한다. 카드 JVM(16)은 기저 카드 오퍼레이팅 시스템(122)으로 자바 카드 어플리케이션(126z)이 액세스할 수 있도록 하여, 참고문헌 별첨 F에 나타낸 바와 같이 자바 고유의 방법을 이용하여 I/O, EEPROM 지원, 파일 시스템, 액세스제어, 그리고 기타 시스템 기능 등을 제공한다.
선택된 자바 카드 어플리케이션(126z)은 커뮤니케이터(12a)를 이용하여 단말기(14)내의 적절한 어플리케이션과 통신하여 단말기(14)의 통신 채널을 설정한다. 커뮤니케이터(12a)로부터 단말기(14)로 입력되는 데이터는 커뮤니케이터(12a)에서 사용되는 통신 프로토콜을 처리하기 위해 특별히 작성된 단말기내의 커뮤니케이터 드라이버(132)를 통과한다. 그런 다음, 데이터는 사용중인 특정 집적회로카드(10)의 기능들을 위해 특별히 작성된 집적회로카드 드라이버(134)로 이동하여, 단말기 어플리케이션(136)에게 고급 소프트웨어 서비스를 제공한다. 본 발명의 실시예에서, 이 드라이버는 적절한 PC/SC 스마트카드 서비스 제공자(SSP) 소프트웨어이다. 그런 다음, 데이터는 실행중인 특정 카드 어플리케이션(126z)에 의해 제공되는 기능들을 처리하는 단말기 어플리케이션(136)으로 이동한다. 이러한 방법으로, 단말기 어플리케이션(136)과 선택된 카드 어플리케이션(126z)사이에 명령과 응답이 상호이동한다. 단말기 어플리케이션은 사용자와 대화하여 사용자로부터 명령을 수신하여, 그중 일부는 선택된 자바 카드 어플리케이션(126z)으로 이동하며, 자바 카드어플리케이션(126z)으로부터 응답을 수신하여 처리한 다음 사용자에게 귀환시킨다.
제 14도에서, 카드 JVM(16)은 카드 어플리케이션(126x)을 해석하는 인터프리터이다. 카드 JVM(16)에 영향을 주는 마이크로컨트롤러내의 메모리 리소스는 카드 ROM(140), 카드 RAM(141), 카드 EEPROM(142)이다. 카드 ROM(140)은 카드 JVM(16)과 카드 오퍼레이팅 시스템(122)을 저장한다. 카드 ROM(140)은 고정 카드 어플리케이션(140a)과 클래스 라이브러리(140b)를 저장한다. 로드가능한 어플리케이션(141a, 141b)과 라이브러리(141c) 또한 카드 RAM(141)에 저장된다. 카드 JVM(16)은 카드 어플리케이션(141a, 141b, 또는 140a)을 해석한다. 카드 JVM(16)은 카드 RAM을 사용하여 VM 스택(144a)과 시스템 상태 변수(144b)를 저장한다. 카드 JVM(16)은 VM 스택(144a)을 통해 실행된 동작들을 기록한다. 카드 JVM(16)에 의해 작성되는 오브젝트는 RAM 히프(heap)(144c), EEPROM 히프(146a), 또는 파일 시스템(147)에 존재한다.
카드 JVM(16)에 의해 조정되는 모든 히프들은 RAM 히프(144c)로서 카드 RAM(141)에 저장되거나 EEPROM 히프(146a)로서 카드 EEPROM(142)에 걸쳐 배분된다. 카드 RAM(141) 또한 마이크로컨트롤러의 네이티브 코드로 작성된 루틴에 의해 사용된 시스템 스택(148)의 상태를 기록한다. 카드 JVM(16)은 카드 EEPROM(142)를 사용하여 어플리케이션 데이터를 EEPROMglvm(146a) 또는 파일 시스템(147)에 저장한다. 파일에 저장된 어플리케이션 데이터는 카드 오퍼레이팅 시스템(122)으로의 인터페이스를 통해 조정된다. 이 인터페이스는 카드 ROM(140)에 저장된 클래스 라이브러리(140b), 카드 EEPROM(142)에 저장된 로드가능한 클래스 라이브러리(141c)에 의해제공된다. 이러한 인터페이스의 일례가 별첨 F에 설명되어 있다. 카드내의 어플리케이션과 데이터는 방화벽 메카니즘(149)에 의해 분리된다.
마이크로컨트롤러상의 제한된 리소스에 대처하기 위하여, 카드 JVM(16)은 정확한 자바 프로그래밍 언어 서브세트를 구현한다. 그 결과, 자바 어플리케이션(20)은 정확한 자바 바이트 코드 서브세트를 가지는 클래스 파일로 컴파일된다. 이렇게 함으로써, 어플리케이션 프로그래머들이 정확한 자바 서브세트에서 프로그래밍할 수 있으며, 기존 자바 가상 기기와의 호환성을 유지할 수 있다. 카드 JVM(16)에 의해 해석된 자바 바이트 코드의 의미는 앞에서 언급한 자바 가상 기기 명세서에 설명되어 있다. 카드 JVM(16)에 의해 해석된 바이트 코드의 서브세트는 별첨 C에 나타나 있다. 카드 클래스 파일 변환기(26)는 해당 서브세트에서 사용가능한 특징만을 사용했는지를 확인하기 위해 자바 어플리케이션(20)을 점검하여, 카드 JVM(16)에서 해석가능한 형식으로 변환한다.
본 발명의 다른 실시예에서, 카드 JVM(16)은 상이하거나 증가된 바이트 코드(116) 세트를 해석하도록 설계되었다. 상이한 바이트 코드 세트로 인해 실행상의 개선이 있을 수 있으나, 원래의 자바 바이트 코드의 보안성이나 주요 자바 개발 툴의 관점에서 볼 때 정확한 자바 서브세트를 어기는 것은 바람직하지 못하다.
모든 카드 JVM(16) 어플리케이션들은 클래스로 표시된 정의된 엔트리 포인트와 클래스에서의 방법을 구비한다. 이러한 엔트리 포인트는 스트링-ID입력맵(30)에서 매핑되며 카드 클래스 파일 변환기(26)에 의해 지정된다. 자바 어플리케이션(20)내의 클래스, 방법, 필드 등은 카드 클래스 파일 변환기(26)에 의해 지정된 ID들이다. 예를 들면, 주요 어플리케이션 클래스에 해당하는 ID는 F001로 정의할 수 있으며, "main()V"와 같은 주요 방법에 해당하는 ID는 F002로 정의할 수 있다.
카드 JVM의 전체적인 실행 구조는 제 15도에 도시된 공정도에 나타나 있다. 카드 JVM(16)의 실행은 실행할 카드 어플리케이션(126z)을 선택하는 실행제어단계(120)에서 시작한다. 그런 다음, 해석할 카드 JVM(16)에 대한 카드 어플리케이션에서의 엔트리 포인트를 (방법으로서) 검색하여 지정한다 (단계 152). 카드 JVM(16)은 방법을 해석한다(단계 153). 해석이 성공적으로 진행되면 (단계 154), 카드 JVM(16)은 성공을 보고하고 (단계 155) 제어를 실행제어단계(120)로 귀환시킨다. 해석 도중(단계 153), 카드 JVM(16)은 처리되지 않은 에러나 예외를 발견하면 (일반적으로 리소스 제한이나 보안 위반) 중지하며 (단계 156), 적절한 에러를 단말기(14)에게 보고한다.
카드 JVM(16)의 핵심적인 부분은 바이트 코드의 실행을 처리하는 서브루틴이다. 제 16도는 이 서브루틴을 도시한다. 방법이 주어지면 (단계 160), 이 방법의 바이트 코드를 실행한다. 서브루틴은 이 방법의 파라미터를 준비함으로써 시작된다 (단계 161). 이 서브루틴은 VM 스택(144a) 포인터, VM 스택(144a) 프레임 범위를 설정하는 것이며, 프로그램 카운터를 방법의 제 1 바이트 코드로 설정하는 것이다.
그런 다음, 방법 표지를 점검한다(단계 162). 방법이 네이티브라면, 방법은 실질적으로는 네이티브 방법 코드에 대한 호출이다(마이크로컨트롤러의 네이티브 프로세서 코드로 작성된 서브루틴). 이런 경우, 카드 JVM(16)은 효율적인 호출을준비하며(단계 163), 네이티브 코드 서브루틴으로 귀환한다. 네이티브 방법에 대한 파라미터는 VM 스택(144a) 또는 시스템 스택(148)을 이용하여 통과한다. 적절한 보안 점검이 실행되며, 네이티브 방법 서브루틴이 요청된다. 네이티브 방법 서브루틴의 결과는 후속 실행될 바이트 코드에 의해 액세스될 수 있도록 VM 스택(144a)상에 위치된다.
그런 다음, 카드 JVM(16)의 디스패치 루프(164)가 시작된다. 바이트 코드 디스패치 루프는 각 바이트 코드를 준비, 실행, 퇴장시킨다. 이 루프는 방법단계(160)에서 바이트 코드의 해석을 완료하거나, 카드 JVM(16)이 리소스 제한이나 보안성을 위반하면 종료된다.
이전의 바이트 코드로 인해 분기가 발생한 경우(단계 165), 카드 JVM은 분기에 대한 준비를 한다(단계 165a). 후속 바이트 코드를 검색한다(단계 165b). 각 바이트 코드를 처리하는 비용을 줄이기 위해, 바이트 코드 인수, 길이, 유형 등의 공통적인 요소들을 최대한 발췌하여 저장한다.
프로그래밍 언어의 보안성 모델에 의한 보안성을 제공하기 위해, 클래스 파일의 바이트 코드를 확인하여 이 모델에 부합하는지를 판단한다. 이러한 점검들은 종래 기술에서는 자바 가상 기기 명세서에서 설명된 바와 같이 4개의 패스로 작동하는 바이트 코드 검증자라고 하는 프로그램에 의해서 실행되었다. 바이트 코드 검증자가 보증하는 실행 시간 보안성을 제공하기 위해, 카드 JVM(16)은 검증자의 패스 3, 4에 해당되는 점검을 실행해야 한다. 이러한 점검은 카드 JVM(16)에 의한 바이트 코드(60)의 해석이 믿을만하다고 보장될 때(이런 경우는 거의 불가능하지만)카드 JVM(16)에 의해 생략(바이패스)할 수 있다. 최소한, 오브젝트 참조가 위조 불가능하며, VM 스택(144a)과 지역변수범위가 준수된다면 코드 보안성을 유지할 수 있다. 이를 위해서는, 실행중인 바이트 코드와 연관하여 VM 스택(144a)의 상태를 점검해야 한다.
프로그래밍 언어의 보안성 모델을 강화하기 위하여, 참고문헌 별첨 G에서 보여진 256 바이트 표를 작성하였다. 이 표는 바이트 코드 번호별로 분류되어있다. 이 표에는 인덱싱 바이트 코드의 유형과 길이가 포함된다. 이 표에는 유형을 나타내는 최초 5 비트와 길이를 나타내는 최후 3 비트로 부호화되어 있다. 바이트 코드의 유형과 길이는 바이트 코드 번호로 표에서부터 직접 인덱스되어 있다. 이러한 유형과 길이는 별첨 H에서 나타난 바와 같이 점검을 위해 사용된다. 별첨 H에서는, 별첨 G의 표에서 길이와 유형을 복호화함으로써 점검이 시작된다. 길이는 프로그램 카운터를 증가시키기 위해 사용된다. 유형은 우선 점검을 미리 실행하기 위해 사용되어 VM 스택(144a)상의 데이터 유형이 실행될 바이트 코드에 대해 정확한지를 확인한다. 표를 저장하기 위해 필요한 256바이트의 ROM로 인해 원래의 자바 바이트 코드는 카드 JVM(16)에서 실행될 수 있으며, 자바 클래스 파일이 카드에서 로드될 수 있도록 하기 위해 요구되는 변화를 최소화할 수 있다. 적절한 표 엔트리의 갱신이 비교적 용이하므로 추가적인 자바 바이트 코드 또한 용이하게 지원될 수 있다.
제 10도에 도시한 바와 같이 다른 실시예에서는, 방법의 자바 바이트 코드는 별첨 H의 표에 저장된 바이트 코드 유형과 길이 정보가 순서 재조정을 암시하도록 재구성된다. 별첨 H는 참고문헌이다. 결과적으로, VM 스택(144a)의 상태에 대해 실행되어야 하는 점검과 처리중인 바이트 코드에 대한 표 검색을 할 필요가 없다. 점검은 참고문헌인 별첨 I에 보여진 간단한 비교로 실행될 수 있다. 바람직하게, 본 발명의 실시예에서는 ROM 공간은 256 바이트의 표를 삭제하므로 많이 사용된다. 한편, 지원되는 바이트 코드에 새로운 바이트 코드를 추가하는 것은 새로운 바이트 코드가 지원되는 바이트 코드의 암시적인 넘버링 구조에 적합해야 하므로 신중을 기해야 한다.
본 발명의 다른 실시예에서는, 카드 JVM(16)은 카드 JVM(16) 실행 속도를 위하여 어떠한 보안 점검도 하지 않는다. 이것은 제 18도의 공정도에 도시되어 있다. 제 18도의 공정도는 보안 점검이 생략된 제 16도의 공정도와 동일하다. 이 옵션은 바이트 코드가 안전하다는 보장이 없다면 보안성의 관점에서 바람직하지 않다.
카드 JVM(16)은 또한 다른 보안 점검을 강화하기도 한다. 바이트 코드가 지역변수를 참조하는 경우, 카드 JVM(16)은 이 참조가 유효한지를 점검하고 유효하지 않으면 에러를 나타낸다. 유효하다면, 카드 JVM(16)은 추후 점검을 위해 지역변수 유형을 저장한다. VM 스택(144a) 포인터를 점검하여 여전히 유효한 범위내에 있는지를 확인한다. 그 결과 유효한 범위내에 있지 않다면 예외를 표시한다. 바이트 코드 번호가 점검되며, 이것이 지원되지 않는 경우, 예외를 표시한다.
마지막으로, 바이트 코드 자체는 디스패치된다(단계 165d). 카드 JVM(16)에 의해 번역되는 바이트 코드는 별첨 C에 리스트되어 있다. 바이트 코드의 의미는 바이트 코드의 디스패치 전과 후의 VM 스택(144a)의 상태와 관련하여 앞서 언급한 자바 가상 기기 명세서에서 설명되어 있다. 일부 바이트 코드(INVOKESTATIC,INVOKESPECIAL, INVOKENONVIRTUAL, INVOKEVIRTUAL)는 카드 JVM(16)으로의 재엔트리를 유발할 수 있으며, 서브루틴(161)의 엔트리에서부터 프로세싱을 시작할 것을 요구한다. 제 17도는 바이트 코드 실행 루틴의 공정도를 도시하였다. 실행할 바이트 코드를 루틴에 부여한다(단계 171). 카드 JVM(16)은 바이트 코드에 필요한 명령을 실행한다(단계 172). 실행중에, 카드 JVM(16)이 리소스 제한을 만나면(단계 173), 에러로 귀환한다(단계 156). 이러한 에러는 카드 JVM(16)에 의해 단말기(16)로 귀환한다. 바이트 코드를 성공적으로 실행하면, 성공을 보고한다(단계 175).
실행 후, 결과의 유형을 사용하여 VM 스택(144a) 상태를 정확히 설정하며 (단계 165e), VM 스택(144a) 상에 데이터 유형을 적절하게 지표로 표시한다. 이전 단계(165b)에서 바이트 코드 정보 테이블에서 수집한 바이트 코드 정보는 방금 실행한 바이트 코드에 따라 VM 스택(144a)의 상태를 설정하는데 사용된다.
본 발명의 다른 실시예에서, 실행된 바이트 코드와 연관하여 VM 스택(144a)의 출력 상태를 설정하는 것은 바이트 코드를 재구성하면 간단하다. 이것은 참고문헌 별첨 I에 나타나있다.
본 발명의 또 다른 실시예에서, 카드 JVM(16)은 카드 JVM(16) 실행 속도를 위하여 VM 스택(144a)의 출력상태를 설정하는 것을 생략할 수도 있다. 이 옵션은 바이트 코드가 안전하다는 보장이 없다면 보안성의 관점에서 바람직하지 않다.
바이트 코드는 실행된 후 퇴장한다(단계 165f). 이것은 인수를 VM 스택(144a)에서 팝오프하는 것과 연관이 있다. 바이트 코드 처리가 일단 완료되면, 루프(164)는 방법에 대한 후속 바이트 코드에 대해 반복된다.
일단 디스패치 루프(164)가 종료되면, VM 스택(144a)은 비워진다(단계 166). 이렇게 함으로써, 다른 카드 JVM(16) 호출로의 오브젝트 참조의 필터링과 카드 JVM(16)의 보안 위반을 예방할 수 있다. 바이트 코드 디스패치 루프(164)의 종료(167)는 카드 JVM(16)이 요청된 방법의 실행을 종료했다는 것을 나타낸다.
집적회로카드(10)에서 데이터와 어플리케이션을 분리하기 위해, 집적회로카드(10)는 카드 JVM(16)에 의해 제공되는 방화벽 메카니즘(149)을 사용한다. 카드 JVM은 기준 패스 3, 4의 검증 점검을 실시하므로, 타 어플리케이션이 사용하는 데이터나 코드 공간을 어느 하나의 어플리케이션이 참조하고자 하는 시도를 검출하여 보안 에러를 지표로 표시한다(156). 예를 들면, 종래의 저급 어플리케이션은 참조에 비참조 데이터 유형을 투여함으로써, 허가되지 않은 메모리 영역도 액세스하며 보안을 위반할 수 있다. 본 발명에서는, 카드 어플리케이션(126z)이 비참조 데이터 유형을 참조로 사용하고자 한다면, 보안 위반이 트리거된다(156). 종래의 자바에서, 이러한 보호 어플리케이션 환경을 샌드박스(sandbox) 어플리케이션-해석 환경이라고 한다.
그러나, 이러한 방화벽들은 독립적으로 작동하지 못한다. 사실상, 이러한 시설들은 중복되며 종래의 액세스 제어 리스트와 아래 표에 보여진 암호 메카니즘을 상호강화한다.
액세스제어 리스트 가상 기기 암호화
데이터 보호 작동전에 액세스 제어 이름 공간만을 위한액세스 암호화된 다른 프로그램에 대한 데이터
프로그램 보호 실행전에 액세스 제어 정확한 유형만 실행 프로그램의 이름 공간에서 암호화된 데이터
통신 보호 채널에 대한 액세스제어 이름공간에서 채널제어 수동확인된 당사자만 통신할 수 있다
종합적으로, 이러한 시설들은 집적회로카드(10)상에서 데이터와 어플리케이션을 분리하고, 각 카드 어플리케이션(126)이 집적회로카드(10)의 확인된 리소스만을 액세스할 수 있도록 한다.
제 19도에서, 카드 어플리케이션(126x, 126y, 126z)은 카드 어플리케이션(126)이 실행될 때 특별한 이점을 누릴 수 있다. 예를 들면, 이러한 이점들로 인해 카드 어플리케이션(126)이 액세스할 수 있는 데이터파일과, 파일 시스템(147)상에서 카드 어플리케이션(126)이 어떤 동작을 실행할 수 있는지를 판단할 수 있다. 카드 어플리케이션(126)에 허용된 이점은 특정 카드 어플리케이션(126z)이 사용자에 의해 일반적으로 단말기(14)에서 시작될 때 설정된다.
집적회로카드(10)는 암호식별 검증방법을 사용하여 아이덴티티(identity)(190)를 (예를 들면, 아이덴티티(identity) 190a, 190b, 190c) 카드 어플리케이션(126) 실행의 이점과 연관시킨다. 특정 아이덴티티(identity)(190c)를 카드 어플리케이션(126z)에 연관시키는 것은 카드 어플리케이션(126z)이 실행을 시작하면 실행되어, 제 20도에 도시된 바와 같이, 특정 실행 어플리케이션(200)을 생성한다. 아이덴티티(identity)(190)는 아이덴티티(identity) 토큰과 연관된 고유의 명료한 텍스트 스트링이다. 아이덴티티(identity) 토큰(예를 들면, PIN 또는 RSA 개인 토큰)은 암호화 키이다.
제 20도에서, 특정 카드 어플리케이션(126z)을 실행하기 위해, 카드 어플리케이션(126z)의 아이덴티티(identity)(190c)를 확인해야 한다.아이덴티티(identity)(190c)는 그에 연관된 아이덴티티(identity) 토큰에 관한 정보를 보여줌으로써 확인될 수 있다. 그러므로, 카드 어플리케이션(126z)을 실행하려면, 대리인(예를 들면, 카드 보유자 또는 어플리케이션을 실행하고자하는 다른 어플리케이션)은 어플리케이션의 아이덴티티(identity)를 정의하는 암호키를 소유하거나 알고 있음을 보여주어야 한다.
암호키를 소유하고 있음을 보여주는 한가지 방법은 키를 그냥 노출하는 것이다. PIN 검증은 이러한 확인의 일례이다. 키를 노출하지 않고 암호키를 소유하고 있음을 보여주는 다른 방법은 키를 이용하여 평범한 텍스트를 암호화 또는 해독할 수 있음을 보여주는 것이다.
이렇게 하여, 집적회로카드(10)상의 특정 실행 어플리케이션(200)은 카드 어플리케이션(126z)과 확인된 아이덴티티(identity)(190c)를 포함한다. 이 두가지 요소가 제자리에 위치되지 않으면 카드 어플리케이션(126)은 실행될 수 없다. 카드 어플리케이션(126z)은 실행될 데이터 프로세싱 작동을 정의하고, 확인된 아이덴티티(identity)(190c)는 이러한 작동이 어느 컴퓨터 오브젝트상에서 실행될 것인지를 판단한다. 예를 들면, 특정 어플리케이션(126z)은 특정 아이덴티티(identity)(190c)에 연관된 파일 시스템(147)에서 액세스 아이덴티티(identity) C의 파일(202)만을 액세스할 수 있으며, 특정 카드 어플리케이션(126z)은 특정 아이덴티티(identity)(190c) 이외의 아이덴티티(identity)와 연관된 다른 파일(204)을 액세스할 수 있다.
집적회로카드(10)는 단계를 추가하여 어플리케이션과 데이터의 분리를 확인할 수 있다. 집적회로카드(10)는 확인된 아이덴티티(identity) 액세스 제어 리스트, 자바에 기초한 가상 기기, 데이터 파일, 어플리케이션 실행, 통신채널을 각각 보호하는 원타임 세션 암호키 등의 3개의 소프트웨어 특징 세트를 제공한다. 종합적으로, 일 실시예에서, 이러한 특징 세트들은 어플리케이션 데이터 방화벽(149)을 제공한다. 아래에는 각각의 소프트웨어 특징 세트를 설명하고 3개의 세트들이 어떠한 방법으로 함께 작동하여 집적회로카드(10)상의 어플리케이션과 데이터의 분리를 보장하는지가 설명되어 있다.
액세스 제어 리스트(ACL)는 보호되는, 즉, 액세스가 제어되는, 집적회로카드(10)상의 모든 컴퓨터 오브젝트(예를 들면, 데이터 파일 또는 통신 채널)와 연관된다. (특정 컴퓨터 오브젝트에 대한) ACL상의 엔트리는 e-조(tuple)이라는 데이터 포맷을 가진다.
type:아이덴티티(identity):permissions
유형(type)필드는, 예를 들면, 사용자(예: "John Smith"), 또는 그룹 등 후속 아이덴티티(identity)의 유형을 나타낸다. 허용(permissions) 필드는 컴퓨터 오브젝트상에서 아이덴티티(identity)에 의해 실행될 수 있는 작동 리스트(예: 읽기, 추가하기, 갱신하기)를 나타낸다.
예를 들면, ACL 엔트리를 가지는 데이터 필드는:
USER:AcmeAirlines:RAU
"AcmeAirlines"의 아이덴티티(identity)를 가진 모든 어플리케이션은 데이터 파일에 대해 읽기("R"), 추가하기("A"), 갱신하기("U")를 할 수 있다. 또한, ACL을 선택적으로 사용하여 데이터 파일의 생성과 삭제를 허용할 수 있다. 또한, ACL을 선택적으로 사용하여 어플리케이션의 실행을 허용할 수 있다.
어플리케이션(200)이 컴퓨터 오브젝트를 액세스할 때마다, 카드 JVM(16)에 의해 방해되며, 액세스는 오브젝트와 연관된 ACL이 있는지를 판단하는 카드 오퍼레이팅 시스템(122)으로 이동한다. 연관된 ACL이 있는 경우, 실행 어플리케이션(200)과 연관된 아이덴티티(identity)(190c)는 ACL상에서 매치된다. 아이덴티티(identity)가 검색되지 않거나 요청된 액세스 유형에 대해 허용되지 않은 아이덴티티(identity)인 경우, 액세스는 거부된다. 그외의 경우는 액세스가 허용되어 진행된다.
제 13도에서, 집적회로카드(10)와 단말기(14)간의 단일 데이터 경로로 인한 잠재적인 문제점을 예방하기 위해, 카드 어플리케이션(126z)과 단말기 어플리케이션(136)간의 원타임 세션키(session key)(209)를 아이덴티티(identity) 확인 과정에서 교환함으로써 통신채널을 분리한다. 그런 다음, 키(209)는 인증 단말기 어플리케이션(136)과 인증 카드 어플리케이션(126z)간의 후속 공정에서의 암호화를 위해 사용된다. 원-타임 세션키(session key)(209)가 부여되면, 불량 단말기 어플리케이션은 단말기(14)와 집적회로카드(10)간의 인증된 통신에 접속할 수도 없고, 자신을 대신하여 카드 어플리케이션이 인증되지 않은 작동을 실행하도록 할 수도 없다.
카드/단말기 공정의 암호화와 암호해독은 i) 카드 오퍼레이팅 시스템(122) 또는 ii)카드 어플리케이션(126z)에 의해 처리된다. i)의 경우, 단말기(14)와의 통신은 어플리케이션에 투명하도록 암호화되며, 메시지 통신량(traffic)은 어플리케이션의 데이터 공간에서 암호화된다. ii)의 경우, 카드 어플리케이션(126z)은 데이터가 생성되는 즉시 암호화하고 데이터 사용시에 해독하므로, 추가적인 보안성까지 제공할 수 있다. 그외의 경우에는, 데이터는 암호화된채로 세션키(session key)(209)에 잔류한다.
어플리케이션 방화벽은 3가지의 상호강화하는 소프트웨어 세트를 구비한다. 데이터 파일은 인증된 아이덴티티(identity) 액세스 제어 리스트에 의해 보호된다. 어플리케이션 실행 공간은 카드 JVM(16)에 의해 보호된다. 통신 채널은 원-타임 세션 암호키(109)에 의해 보호된다.
본 발명의 다른 실시예에서, 상기 설명된 기술들은 (프로세서(12)와 같은) 마이크로컨트롤러와 함께 사용되어 집적회로카드 이외의 장치들(예: 자동차엔진의 일부)을 제어한다. 이러한 어플리케이션들에 있어서, 마이크로컨트롤러는 고급 프로그래밍 언어를 저장하고 실행하기 위해 작은 플랫폼(즉, 반도체 기판상에 위치한 중앙처리장치와 메모리)을 제공한다. 본 발명은 마이크로컨트롤러를 이용한 대부분의 기존 장치들과 새로운 디자인에 적용되어, 마이크로컨트롤러에 고급 언어를 이용한 프로그래밍 기능을 제공하며, 상기에서 그러한 장치들에 적용된 본 발명을 특별히 명시하였다.
어플리케이션이라는 용어는 자바 어플리케이션, 자바 애플릿, 자바 애글릿, 자바 서브릿, 자바 컴릿, 자바 콤포넌트, 그리고 아래에 기술한 바와 같이 클래스 파일로 귀착하는 모든 비자바 프로그램을 포함한다.
클래스 파일은 자바 프로그램 파일 이외의 소스를 가진다. 자바 이외의 일부 프로그래밍 언어들도 각각의 소스 파일로부터 클래스 파일을 생성하기 위해 컴파일러 또는 어셈블러를 구비한다. 예를 들면, 프로그래밍 언어 이펠(Eiffel)은 JVM 바이트 코드 생성기능을 가진 이펠 컴파일러인 Pirmin Kalberer의 "J-Eiffel" (웹 사이트: http://www.spin.ch/~kalberer/jive/index.htm)을 이용하여 클래스 파일을 생성한다. 자바 바이트 코드 번역기인 Ada 95는 참증 Taft, S. Tucker, "Programming the Internet in Ada 95", Ada Europe '96, 1996에 설명되어 있다. Jasmin은 클래스 파일을 생성하는 자바 바이트 코드 어셈블러이며 참고문헌 Meyer, Jon and Troy Downing, "Java Virtual Machine", O'Reilly, 1997에 설명되어 있으며, 클래스 파일의 소스에 상관없이, 자바 이외의 언어에 적용되어 해석될 코드를 생성한다.
제21도는 플라스틱 카드(212)에 장착된 마이크로컨트롤러(210)를 가진 집적회로카드 또는 스마트카드를 도시한다. 플라스틱 카드(212)는 일반적인 크레디트 카드와 거의 동일한 형태를 가진다. 커뮤니케이터(12a)는 콘택트 패드(214)를 사용하여 통신 채널을 설치하거나, 무선 통신 시스템을 사용한다.
본 발명의 다른 실시예에서, 제 22도에 도시한 바와 같이, 마이크로컨트롤러(210)는 이동 또는 고정 전화기(220)에 장착되어 스마트 카드 기능을 효과적으로 전화기에 추가한다. 이러한 실시예에서, 마이크로컨트롤러(210)는 모듈(SIM과 같은)에 장착되어 전화기(220)에 삽입 및 삭제된다.
본 발명의 다른 실시예에서, 제 23도에 도시한 바와 같이,마이크로컨트롤러(210)는 키 링(key ring)(230)에 추가된다. 마이크로컨트롤러는 또한 키 링(230)상의 마이크로컨트롤러(210)와 연관된 아이덴티티(identity)를 인식하는 설비를 갖춘 자동차로의 액세스를 위해 사용될 수 있다.
제 24도에 도시한 바와 같이, 시계나 반지(240) 같은 보석류 또한 인간공학적인 방법으로 마이크로컨트롤러(210)를 내장할 수 있다. 이러한 실시예에서는 일반적으로 통신 채널을 설정하기 위해 무선 통신 시스템을 사용하며, 사용자들의 불편을 최소화하면서 액세스 제어를 할 수 있는 쉬운 방법이다.
제 25도는 자동차(254)의 전기 서브시스템(252)에 장착된 마이크로컨트롤러(210)를 도시한다. 본 실시예에서, 마이크로컨트롤러는 자동차로의 접근을 제어하거나 (예: 자동차의 점화시스템 작동 전에 아이덴티티(identity) 또는 음주상태들을 확인하는), 무선 통신을 통하여 통행료를 지불하거나, 글로벌 위치선정 시스템(GPS)과 연결하여 자동차의 위치를 추적하는 등 다양한 용도로 사용된다.
본 발명의 상세한 설명에서는 구체적인 실시예에 관해 설명하였으나, 통상의 기술을 가진 자에 의한 다양한 변형과 대체가 가능함을 물론이다. 그러한 변형과 대체는 본 발명의 범위를 벗어나지 않는 한도내에서 이루어져야하며, 첨부된 특허청구의 범위에서 다루어질 것이다.
별첨 A
실시예에 있어서 카드 클래스 파일
개요
카드 클래스 파일은 원래의 클래스 파일의 압축형이다. 카드 클래스 파일은, 원래의 클래스 파일로부터 자바 프로그램을 해석할 것을 요구하는 의미론적 정보만을 포함한다. 원래의 클래스 파일의 간접 참조는 직접 참조로 대체되며 압축된 표현의 결과로 나타난다.
카드 클래스 파일 포맷은 아래의 원리에 기초한다.
표준 클래스 파일 포맷으로의 근접성:카드 클래스 파일 포맷은 표준 클래스 파일 포맷에 최대한 근접하도록 유지되어야 한다. 클래스 파일의 자바 바이트 코드는 변경하지 않는다. 이렇게 하면 구조적 및 정적 조건을 그대로 유지할 수 있다.
실행의 용이성:카드 클래스 파일 포맷은 자바 가상 기기 실행자의 흥미를 도출할 만큼 간단해야 한다. 또한, 상이하면서도 행동은 동일한 실행자들을 모두 수용할 수 있어야 한다.
실현 가능성:카드 클래스 파일 포맷은 스마트 카드 기술을 수용하도록 간결해야 한다. 현재의 기술 조건을 충족시키면서도 미래의 혁신에 관한 통찰력을 잃지 않아야 한다.
본문은 지금부터 Red book이라고 명명할 "자바 가상 기기 명세서"의 제4장 "클래스 파일 포맷"에 기초하고 있다. 본문은 Red book에 설명된 표준 클래스 파일 포맷에 기초하고 있으므로, 상이한 정보만을 제시하기로 한다. 그외 명확성이 요구되는 문제는 Red book에 따르기로 한다.
표준 클래스 파일 포맷으로부터의 주요 변경 사항들은 아래와 같다.
상수 풀은 16비트 식별자만을 포함하도록 최적화되며, 간접 참조를 직접 참조로 대체한다.
원래 파일의 속성은 삭제 또는 재그룹화된다.
자바 카드 클래스 파일 포맷
여기에서는 자바 카드 클래스 파일 포맷을 설명한다. 각 카드 클래스 파일은 하나 또는 다수의 자바 유형을 포함한다. 여기에서, 유형이란 클래스 또는 인터페이스이다.
카드 클래스 파일은 8비트 바이트 스트림으로 구성된다. 16, 32, 64비트량는 각각 2, 4, 8개의 연속적인 8비트 바이트씩 판독하여 구성된다. 멀티바이트 데이터 항목은 항상 높은 바이트가 우선되는 big-endian 순으로 저장된다. 자바에서, 이 포맷은 java.io. DataInput 및 java.io.DataOutput과 같은 인터페이스, 그리고 java.io.DataInputStream 및 java.io.DataOutputStream과 같은 클래스에 의해 지원된다.
자바 클래스 파일 데이터를 나타내는 동일한 데이터 유형을 정의하고 사용한다: 유형 u1, u2, u4는 부호없이 1, 2, 또는 4 바이트량을 각각 나타낸다. 자바에서, 이러한 유형들은 readUnsignedByte, readUnsignedShort, 인터페이스 java.io.DataInput의 readInt 등의 방법으로 판독된다.
카드 클래스 파일 포맷은 C와 유사한 구조 표기법으로 작성된 의사 구조로표시된다. 자바 카드 가상 기기 클래스의 필드와 클래스 실례(instances)간의 혼돈을 피하기 위해, 카드 클래스 파일 포맷을 나타내는 구조의 내용을 항목(items)이라고 한다. C 구조의 필드와 달리, 일련의 항목들이 패딩이나 정렬되지 않고 카드 클래스 파일에 연속적으로 저장된다.
가변 크기의 항목들로 구성된 가변 크기의 테이블은 일부 클래스 파일구조에서 사용된다. 테이블 항목을 위해 C와 유사한 배열구문을 사용할 것이나, 테이블을 가변 크기의 구조를 가진 스트림이라는 사실은 테이블에서 테이블 인덱스를 바이트 오프셋으로 직접 번역할 수 없다는 것을 의미한다.
데이터 구조를 배열이라고 명명하는 경우, 배열은 문자 그대로 배열이다.
카드 클래스 파일 구조와 표준 카드 파일 구조를 구별하기 위해, 대문자를 사용한다. 예를 들면, 원래 클래스 파일의 field_info를 카드 클래스 파일에서는 FieldInfo하고 재명명한다.
카드 클래스 파일
카드 클래스 파일은 단일 CardClassFile 구조를 가진다.
CardClassFile 구조의 항목은 다음과 같다.
minor_version, major_version
minor_version 및 major_version 항목의 값은 이 카드 클래스 파일을 생성한 오프카드 자바 카드 가상 기기의 크고 작은 버전 번호이다. 자바 카드 가상 기기의 실행은 일반적으로 0에서 특정 minor_version까지의 크고 작은 버전 번호를 가진 카드 클래스 파일을 지원한다.
자바 카드 포럼만이 카드 클래스 파일 버전 번호의 의미를 정의할 수 있다.
name_index
name_index 항목의 값은 유효 자바 클래스 명칭을 나타낸다. name_index에 의해 표시된 자바 클래스 명칭은 카드에서 실행될 주요 어플리케이션에 대응하는 자바 클래스 명칭과 정확히 일치해야 한다. 카드 클래스 파일은 카드에서 실행되는 어플리케이션을 구성하는 몇 개의 클래스와 인터페이스를 포함한다. 자바는 각 클래스가 주요 방법을 포함하도록 허용하므로, 카드 어플리케이션에 대응하는 주요 방법을 포함하는 클래스 파일을 구별하는 방법이 필요하다.
const_size
const_size 값은 카드 클래스 파일 상수 풀에서의 엔트리 수를 나타낸다. constant_pool 인덱스는 0보다 크거나 동일한 경우, 그리고 const_size보다 작은 경우에 유효한 것으로 간주된다.
max_class
이 값은 카드 클래스 파일에 나타난 클래스의 수를 나타낸다. 자바 카드에서의 명칭 분해(name resolution)와 연결은 오프카드 자바 가상 기기에 의해 이루어지므로, 어플리케이션에서 요구되는 클래스 파일들과 클래스는 하나의 카드 클래스 파일에 함께 위치된다.
constant_pool
constant_pool은 가변 길이 구조()의 테이블이며 여러 가지 열 상수, 클래스명, 필드명, 그리고 CardClassFile 구조와 그 하위구조내의 다른 상수들을 나타낸다.
카드 클래스 파일의 제1 엔트리는 constant_pool[0]이다.
0 ~ const_size 인덱스에서의 constant_pool 테이블 엔트리 각각은 가변 길이 구조()이다.
class
class는 카드에 로딩된 어플리케이션을 구성하는 max_class 클래스의 테이블이다.
상수 풀(Constant Pool)
일반적으로 constant_pool 테이블 엔트리는 다음과 같은 포맷을 가진다.
constant_pool 테이블의 각 항목은 cp_info 엔트리의 종류를 표시하는 1 바이트 태그로 시작한다. info 배열의 내용은 태그값에 따라 다르다. 유효 태그와 그 값은 Red book에서 명시된 값과 동일하다.
각 태그 바이트 다음에는 특정 상수에 대한 정보를 나타내는 2 이상의 바이트가 수반된다. 추가 정보의 포맷은 태그 값에 따라 다르다. 현재, 포함되어야 하는 태그는 CONSTANT_Class, CONSTANT_FieldRef, CONSTANT_MethodRef, CONSTANT_InterfaceRef이다.
기타 태그들에 대한 지원은 명세서에 포함될 때 추가된다.
CONSTANT_Class
CONSTANT_Class_info 구조는 클래스 또는 인터페이스를 나타내기 위해 사용된다.
CONSTANT_Class_info 구조의 항목은 다음과 같다.
tag
태그 항목은 CONSTANT_Class(7) 값을 가진다.
name_index
이 항목의 값은 유효 자바 클래스명을 나타낸다. name_index로 나타낸 자바 클래스명은 원래 클래스 파일의 constant_pool에서 대응하는 CONSTANT_Class 엔트리에 의해 나타내는 자바 클래스명과 정확히 일치해야 한다.
CONSTANT_Fieldref, CONSTANT_Methodref,
CONSTANT_InterfaceMethodrefFields, 방법, 인터페이스 방법은 유사한 구조로 표시된다.
이러한 구조의 항목은 다음과 같다.
tag
CONSTANT_FieldrefInfo 구조의 태그 항목은 CONSTANT_Fieldref(9) 값을 가진다.
CONSTANT_MethodrefInfo 구조의 태그 항목은 CONSTANT_Methodref(10) 값을 가진다.
CONSTANT_InterfaceMethodrefInfo 구조의 태그 항목은 CONSTANT_InterfaceMethodref(11) 값을 가진다.
class_index
이 항목의 값은 유효 자바 클래스 또는 인터페이스명을 나타낸다. class_index에 의해 표시된 명칭은 원래 클래스 파일의 constant_pool에서 대응하는 CONSTANT_Class_info 엔트리에 의해 나타내는 명칭과 정확히 일치해야 한다.
name_sig_index
이 항목의 값은 유효 자바명과 유형을 나타낸다. name_sig_index에 의해 표시되는 명칭과 유형은 원래 클래스 파일의 constant_pool 구조의 CONSTANT_NameAndType_info 엔트리에 의해 나타내는 명칭및 유형과 정확히 일치해야 한다.
Class
각 클래스는 고정 길이 ClassInfo 구조에 의해 설명된다. 이 구조의 포맷은 다음과 같다.
ClassInfo 구조의 항목은 다음과 같다.
name_index
이 항목의 값은 유효 자바 클래스명을 나타낸다. name_index에 의해 표시되는 자바 클래스명은 원래 클래스 파일의 대응하는 ClassFile 구조에서 나타내는 자바 클래스명과 정확히 일치해야 한다.
max_field
이 항목의 값은 클래스 또는 인터페이스 유형으로 선언되어, 경우의 가변수를 나타내는 필드 테이블의 FieldInfo() 구조의 수를 나타낸다. 이 값은 카드 클래스 파일의 비정적 필드의 수를 참조한다. 클래스가 인터페이스를 나타내면 max_field 값은 0이다.
max_sfield
이 항목의 값은 이 클래스 또는 인터페이스 유형으로 선언되어, 클래스 가변수를 나타내는 필드 테이블의 FieldInfo 구조의 수를 나타낸다. 이 값은 카드 클래스 파일의 정적 필드의 수를 참조한다.
max_method
이 항목의 값은 방법 테이블의 MethodInfo() 구조의 수를 나타낸다.
max_interface
이 항목의 값은 이 클래스 또는 인터페이스 유형의 직접 수퍼인터페이스의 수를 나타낸다.
superclass
클래스에 대해, 수퍼클래스 항목의 값은 유효 자바 클래스명을 표시한다. 수퍼클래스에 의해 표시된 자바 클래스는 원래 클래스 파일의 대응하는 ClassFile 구조에서 나타내는 자바 클래스명과 정확히 일치해야 한다.
수퍼클래스와 그의 수퍼클래스는 최종 클래스가 될 수 없다.
수퍼클래스의 값이 0이면, 이 클래스는 수퍼클래스가 없는 유일한 클래스 또는 인터페이스인 클래스 java.lang.Object를 나타낸다.
인터페이스에 대해 수퍼클래스 값은 항상 자바 클래스 java.lang.Object를 나타낸다.
access_flags
이 항목의 값은 클래스및 인터페이스 선언에 사용되는 수정자의 마스크이다. access_flags 수정자와 그 값은 원래 클래스 파일의 대응하는 ClassFile 구조의 access_flags 수정자와 동일하다.
field
field 테이블에서 각각의 값은 고정길이 FieldInfo() 구조이며 클래스 또는 인터페이스 유형에서의 필드에 대한 완벽한 설명을 제공한다. 필드 테이블은 이 클래스 또는 인터페이스에 의해 선언되는 필드만을 포함한다. 수퍼클래스 또는 수퍼인터페이스로부터 인수된 필드를 나타내는 항목은 포함되지 않는다.
interface
인터페이스 배열에서 각각의 값은 유효 인터페이스명을 나타낸다. 각 엔트리에 의해 표시된 인터페이스명은 원래 클래스 파일의 대응하는 인터페이스 배열에서 나타내는 인터페이스명과 정확히 일치해야 한다.
method
방법 테이블에서 각각의 값은 가변길이 MethodInfo() 구조이며 클래스 또는 인터페이스에서 방법에 대한 완벽한 설명과 자바 가상 기기 코드를 제공한다.
MethodInfo 구조는 이 클래스 또는 인터페이스 유형에 의해 선언되어, 모든 방법, 경우의 방법과 클래스에 대해서는 클래스(정적) 방법을 나타낸다. 방법 테이블은 이 클래스에 의해 명확히 선언된 방법만을 포함한다. 인터페이스는 인터페이스 초기화 방법인 단일 방법 <clint>만을 가진다. 방법 테이블은 수퍼클래스 또는 수퍼인터페이스로부터 인수된 방법을 나타내는 항목은 포함하지 않는다.
Fields
각 필드는 고정길이 field_info 구조로 나타낸다. 이 구조는 다음의 포맷을 가진다.
FieldInfo 구조의 항목은 다음과 같다.
name_index
이 항목의 값은 유효 자바 필드명을 나타낸다. name_index에 의해 표시되는 자바 필드명은 원래 클래스 파일의 대응하는 field_info 구조에서 나타내는 자바 필드명과 정확히 일치해야 한다.
signature_index
이 항목의 값은 유효 자바 필드 기술자를 나타낸다. signature_index에 의해 표시되는 자바 필드 기술자는 원래 클래스 파일의 대응하는 field_info 구조에서 나타내는 자바 필드 기술자와 정확히 일치해야 한다.
access_flags
이 항목의 값은 필드로의 액세스 허용과 필드의 특징을 나타내는 수정자의 마스크이다. access_flags 수정자와 그 값은 원래 클래스 파일의 대응하는 field_info 구조의 access_flags 수정자와 동일하다.
Methods
각 방법은 가변길이 MethodInfo 구조로 나타낸다. MethodInfo 구조는 자바가상 기기 명령과, 경우 초기화 방법 또는 클래스, 인터페이스 초기화 방법 등의 단일 자바 방법에 대한 보조 정보를 포함한 가변길이 구조이다. 이 구조는 다음과 같은 포맷을 가진다.
MethodInfo 구조의 항목은 다음과 같다.
name_index
이 항목의 값은 특정 내부 방법명인 <init> 또는 <clinit>, 또는 유효 자바 방법명중 어느 하나를 나타낸다. name_index에 의해 표시되는 자바 방법명은 원래 클래스 파일의 대응하는 method_info 구조에서 나타내는 자바 방법명과 정확히 일치해야 한다.
signature_index
이 항목의 값은 유효 자바 방법 기술자를 나타낸다. signature_index에 의해 표시되는 자바 방법 기술자는 원래 클래스 파일의 대응하는 method_info 구조에서 나타내는 자바 방법 기술자와 정확히 일치해야 한다.
max_local
이 항목의 값은 이 방법에서 사용되는 지역변수의 수를 나타내며 호출 방법으로 넘겨진 파라미터는 제외된다. 제1 지역변수의 인덱스는 0이다. 1 워드값에 대한 가장 큰 지역변수 인덱스는 max_locals-1이다.
max_arg
이 항목의 값은 이 방법에 대한 인수의 최대수를 나타낸다.
max_stack
이 항목의 값은 이 방법의 실행 도중 임의의 시점에서의 연산수 스택상의 워드의 최대수를 나타낸다.
access_flags
이 항목의 값은 방법 또는 경우 초기화 방법으로의 액세스 허용과 방법의 특징을 나타내는 수정자의 마스크이다. access_flags 수정자와 그 값은 원래 클래스파일의 대응하는 method_info 구조의 access_flags 수정자와 동일하다.
code_length
이 항목의 값은 이 방법에 대한 코드 배열에 있어서의 바이트 수를 나타낸다. code_length 값은 0보다 커야하며, 코드 배열은 공백이 아니어야 한다.
exception_length
이 항목의 값은 exception_info 테이블에서의 엔트리 수를 나타낸다.
code
코드 배열은 방법을 실행하는 자바 가상 기기 코드의 실제 바이트를 나타낸다. 바이트 번지지정가능한 기기상의 메모리로 코드 배열이 판독되는 경우, 배열의 제1 바이트가 4-바이트 한도로 지정되면, 테이블스위치와 룩업스위치 32비트 오프세트는 4바이트 지정된다. 코드 배열 지정의 순서에 대한 추가 정보는 명령에 대한 설명을 참조한다. 코드 배열 내용에 대한 상세한 조건은 광범위하며 자바 가상 기기 명세서에 설명되어 있다.
einfo
einfo 배열의 각 엔트리는 코드 배열에서의 하나의 예외 핸들러를 나타낸다. 각 einfo 엔트리는 다음의 항목을 포함한다.
start_pc, end_pc
이 두가지 항목의 값은 예외 핸들러가 액티브인 코드 배열에서의 영역을 나타낸다.
start_pc값은 명령의 연산코드의 코드 배열에서의 유효 인덱스이다. end_pc값 또한 명령의 연산코드의 코드 배열에서의 유효 인덱스이거나, 코드 배열 길이인 code_length와 동일하다. start_pc값은 end_pc값보다 작다.
start_pc는 포괄적이며 end_pc는 배타적이다. 즉, 예외 핸들러는 프로그램 카운터가 [start_pc, end_pc] 중에 있을 때 액티브하다.
handler_pc
이 항목의 값은 예외 핸들러의 시작을 나타낸다. 이 항목의 값은 코드 배열에서 유효한 인덱스이며, 명령의 연산코드의 인덱스이며, code_length 항목값보다 작다.
catch_type
이 항목의 값이 0이 아닌 경우, 유효 자바 클래스 유형을 나타낸다. catch_type으로 표시된 자바 클래스 유형은 원래 클래스 파일의 대응하는 method_info 구조에서 catch_type으로 나타내는 자바 클래스 유형과 정확히 일치해야 한다. 이 클래스는 Throwable 클래스 또는 그의 서브클래스중 하나이다. 예외 핸들러는 thrown exception이, 주어진 클래스 또는 그 서브클래스들 중 하나인 경우에만 호출된다.
catch_type 항목값이 0인 경우, 예외를 위해 예외 핸들러를 호출한다. 이는 최종 실행을 위해 사용된다.
속성(Attributes)
원래 클래스 파일에서 사용된 속성은 압축을 위해 삭제되거나 재그룹화된다.
사전 정의된 속성 SourceFile, ConstantValue, Exceptions,LineNumberTable, Local-VariableTable은 자바 바이트 코드 해석을 위해 요구된 정보를 희생시키지 않고 삭제된다.
특정 방법에 대한 모든 바이트 코드를 포함한 사전 정의된 속성 Code는 대응하는 MethodInfo 구조로 이동한다.
자바 카드 가상 기기 코드 조건(Constraints on Java Card Virtual Machine code)
방법, 경우 초기화 방법, 클래스 또는 인터페이스 초기화 방법에 대한 자바 카드 가상 기기 코드는 카드 클래스 파일의 MethodInfo 구조의 배열 코드에 저장된다. 이 코드 배열에 대한 정적, 구조적 조건은 Red book에 설명된 바와 같다.
자바 카드 가상 기기와 자바 카드 클래스 파일 포맷의 제한사항
자바 카드 가상 기기에서의 아래에 설명되는 제한사항은 자바 카드 가상 기기 명세서의 이 버전에 기술되어 있다.
per-card 클래스 파일 상수 풀은 CardClassFile 구조()의 16비트 const_size 필드에 의해 65535 엔트리로 제한된다. 이렇게 함으로써, 단일 카드 클래스 파일의 전반적인 복잡성에 대하여 내부적으로 제한할 수 있다. 65535라는 숫자에는 카드의 어플리케이션에 사용가능한 클래스 계층구조의 상수 풀에 대응하는 엔트리가 포함된다.
방법당 코드량은 MethodInfo 구조의 인덱스 크기에 의해 65535 바이트로 제한된다.
방법에서 지역변수의 수는 MethodInfo 구조()의 max_local 항목 크기에 의해255로 제한된다.
클래스의 필드수는 ClassInfo 구조()의 max_field 및 max_sfield 항목 크기에 의해 510으로 제한된다.
클래스의 방법수는 ClassInfo 구조()의 max_method 항목 크기에 의해 255로 제한된다.
연산수 스택의 크기는 MethodInfo 구조()의 max_stack 필드에 의해 255 워드로 제한된다.
참고문헌
[1] Tim Lindholm and Frank Yellin, The Java Virtual Machine Specification, Addison-Wesley, 1996.
별첨 B
열->ID 입력 및 출력
Card JVM의 정확한 작동을 위해, 선언되고 생성된 ID를 정확하게 관리하는 것은 매우 중요하다. 이러한 관리는 열->ID 입력 파일 String-ID INMap의 정의에 의해 제어된다. 이 파일은 텍스트 파일로서, 아래에 근거가 제시되어 있으며, 이름공간의 어느 영역이 무슨 목적으로 사용되는 지를 선언한다. 이 맵을 정렬하는 한가지 방법은 Card JVM 인터프리터로 내부용 ID를 준비하고, 그외의 ID는 Card JVM 어플리케이션에 할당하는 것이다.
1페이지-스캔
일반적으로, 스마트카드에 로딩되는 모든 어플리케이션들에 대해서는 0x4000에서 0x7FFF의 범위에서 각각의 ID를 할당한다. 로딩된 어플리케이션의 다른 어플리케이션으로의 액세스는 허용되지 않으므로 이 공간은 각 어플리케이션에 대해 자유롭다.
사전 로딩된 클래스 라이브러리에 대한 ID 관리는 유의해서 이루어져야 한다. 이러한 ID에 대한 관리는 열->ID 출력 파일인 String-ID OUTMap 파일을 (선택적으로) 생성하여 지원받을 수 있다. 이 맵은 String-ID INMap에 새로운 String-ID 바인딩을 증가한 것이다. 이러한 바인딩은 Card Class File Converter 어플리케이션을 종료할 때 생성한다. String-ID OUTMap은 카드상에 로딩된 지원 라이브러리와 OS 인터페이스를 위해 생성된다. 이 맵은 카드상에 로딩된 지원 라이브러리와 OS 인터페이스를 이용하여 스마트카드 어플리케이션에 대한 String-ID INMap으로 사용될 수 있다. 새로운 어플리케이션을 제작시에 이 파일은 일반적으로 삭제된다.
아래의 자바 프로그램 HelloSmartCard.java를 일례로 들어 설명하면, 이 프로그램을 컴파일하면 클래스 파일인 HelloSmartCard.class가 생성된다. 이 클래스 파일은 클래스명, 방법, 유형 정보를 나타내는 열을 내장하고 있다. 상기한 String-ID INMap을 근거로, Card Class File Converter는 클래스 파일의 열을 Card Class File Converter에 의해 할당된 ID로 대체하는 카드 클래스 파일을 생성한다.
표 1에서는 HelloSmartCard.class의 상수 풀에서 검색되는 열과 그에 해당하는 Card Class File Converter에 의해 할당된 ID를 나열하였다.
("java/lang/Object" 와 같은) 일부 열들은 사전 할당된 값(F002)를 가지며, ("()V"와 같은)일부 열들은 새로운 값(4004)을 가진다.
별첨 C
실시예에서 Card JVM에 의해 지원되는 바이트 코드
실시예에서 지원되는 바이트 코드에 대한 표준 자바 바이트 코드 수
별첨 D
Card Class File Converter 바이트 코드 변환 과정
별첨 E
일례 로딩 및 실행 제어 프로그램
별첨 F
실시예에서 설명된 카드 오퍼레이팅 시스템 기능 액세스 방법
별첨 G
바이트 코드 속성 테이블
자바 바이트 코드 유형 그룹화
각 바이트코드를 그와 연관된 5비트 유형으로 지정한다. 이것은 코드를 유사 작동 세트로 그룹화하기 위함이다. 여기에서의 작동은 일반적으로 바이트 코드 유형이 스택상에서 어떻게 작동하는지를 반영하며, 유형 0, 13, 14, 15는 코멘트부에 표시된 특정 종류의 명령을 반영한다.
아래의 테이블은 각 유형의 명령이 실행되기 전과 후의 스택의 상태를 보여준다.
표준 자바 바이트 코드 사용(순서재매김 하지 않음) - 속성 룩업 테이블
별첨 H
유형별 자바 바이트 코드 점검
명령을 디코딩하여, 후속 생성될 프로그램 카운터 길이와 명령 유형을 제공한다.
아래에 기초하여 실행전 점검을 실시한다.
마지막으로 실행 후 점검을 실시한다.
별첨 I
번호 재매김한 자바 바이트 코드 점검
명령을 획득한다. 명령의 수치적 값에는 명령 유형이 암시적으로 포함된다.
아래에 기초하여 실행 전 점검을 일부 실행한다.
마지막으로, 실행 후 점검을 일부 실행한다.
지원되는 자바 바이트 코드 유형별 순서 재매김

Claims (136)

  1. 삭제
  2. 삭제
  3. 삭제
  4. 삭제
  5. 삭제
  6. 삭제
  7. 삭제
  8. 삭제
  9. 삭제
  10. 삭제
  11. 삭제
  12. 삭제
  13. 삭제
  14. 삭제
  15. 삭제
  16. 삭제
  17. 삭제
  18. 삭제
  19. 삭제
  20. 삭제
  21. 삭제
  22. 삭제
  23. 삭제
  24. 삭제
  25. 삭제
  26. 삭제
  27. 삭제
  28. 삭제
  29. 삭제
  30. 삭제
  31. 삭제
  32. 삭제
  33. 삭제
  34. 삭제
  35. 삭제
  36. 삭제
  37. 삭제
  38. 삭제
  39. 삭제
  40. 삭제
  41. 삭제
  42. 삭제
  43. 삭제
  44. 삭제
  45. 삭제
  46. 삭제
  47. 삭제
  48. 삭제
  49. 삭제
  50. 삭제
  51. 삭제
  52. 삭제
  53. 삭제
  54. 삭제
  55. 삭제
  56. 삭제
  57. 삭제
  58. 삭제
  59. 삭제
  60. 삭제
  61. 삭제
  62. 삭제
  63. 삭제
  64. 삭제
  65. 삭제
  66. 삭제
  67. 삭제
  68. 삭제
  69. 삭제
  70. 삭제
  71. 삭제
  72. 삭제
  73. 삭제
  74. 삭제
  75. 삭제
  76. 삭제
  77. 삭제
  78. 삭제
  79. 삭제
  80. 삭제
  81. 삭제
  82. 삭제
  83. 삭제
  84. 삭제
  85. 삭제
  86. 삭제
  87. 삭제
  88. 삭제
  89. 삭제
  90. 삭제
  91. 삭제
  92. 삭제
  93. 삭제
  94. 삭제
  95. 삭제
  96. 삭제
  97. 삭제
  98. 삭제
  99. 삭제
  100. 삭제
  101. 삭제
  102. 삭제
  103. 삭제
  104. 삭제
  105. 삭제
  106. 한 세트의 자원 제약을 지니는 마이크로컨트롤러(10)로서,
    메모리,
    메모리내에 로드되며 상기 한 세트의 자원 제약내에서 작동가능한 인터프리터(16)를 포함하는 마이크로컨트롤러(10)에 있어서,
    상기 인터프리터에 의해 해석되도록 상기 메모리내에 로드되는 최소한 하나의 어플리케이션으로서,
    a) 고급 언어 소스 코드 형태의 어플리케이션 소스 프로그램(20)을 컴파일된 형태(24)로 컴파일하는 컴파일러(22), 및
    b) 상기 인터프리터(16)에 의한 해석에 적합한 최소화된 형태(27)로 상기 컴파일된 형태(24)를 사후처리하는 변환기(26)
    를 포함하는 프로그래밍 환경에 의해 생성되는 최소한 하나의 어플리케이션을 지니는 것을 특징으로하는 마이크로컨트롤러(10).
  107. 제106항에 있어서, 상기 컴파일된 형태(24)는 속성을 포함하며, 상기 변환기(26)는 상기 인터프리터(16)에 의해 요구되지 않은 속성을 포함하지 않지만 상기 인터프리터(16)에 의해 요구된 속성을 포함하는 수단(51d)을 포함하는 마이크로컨트롤러(10).
  108. 제106항 또는 제107항에 있어서, 상기 컴파일된 형태(24)는 표준 자바 클래스 파일 포맷으로 되어 있고, 상기 변환기(26)는 입력으로서 상기 표준 자바 클래스 파일 포맷의 컴파일된 형태(24)를 수신하고 상기 인터프리터(16)에 의한 해석에 적합한 형태로 출력(27)을 발생시키는 마이크로컨트롤러(10).
  109. 제106항 또는 제107항에 있어서, 상기 컴파일된 형태(24)는 오브젝트, 클래스, 필드, 또는 방법에 대한 식별 열을 관련시키는 것을 포함하고, 상기 변환기는 상기 스트링들을 유일한 식별자에 매핑하는(51b) 수단(57)을 포함하는 것을 특징으로 하는 마이크로컨트롤러(10).
  110. 제109항에 있어서, 각각의 유일한 식별자는 정수인 마이크로컨트롤러(10).
  111. 제109항에 있어서, 유일한 식별자에 대한 스트링의 매핑은 식별자 맵 파일(30,32)에 대한 스트링에 저장되는 마이크로컨트롤러(10).
  112. 제106항 또는 제107항에 있어서, 상기 고급 언어는 제 1 세트의 특징들 및 제 1 세트의 데이타 유형들을 지원하며, 상기 인터프리터(16)는 상기 제 1 세트의 특징들의 부분 집합 및 상기 제 1 세트의 데이타 유형들의 부분 집합을 지원하고, 상기 변환기(26)는 상기 컴파일된 형태(24)가 상기 제 1 세트의 특징들의 부분 집합 내의 특징들만을 포함하고, 상기 제 1 세트의 데이타 유형들의 부분 집합 내의 데이타 유형들만을 포함하는 것을 검증하는 것을 특징으로 하는 마이크로컨트롤러(10).
  113. 제112항에 있어서, 상기 컴파일된 형태(24)는 바이트 코드 포맷으로 되어 있고, 상기 변환기(26)는,
    a) 원래 바이트 코드에 모든 점프 및 그의 행선지를 기록하는 단계(61);
    b) 특정 바이트 코드를 등가의 일반 바이트 코드로 또는 일반 바이트 코드를 등가의 특정 바이트 코드로 변환시키는 단계(63);
    c) 식별 열을 사용하는 기준으로부터 유일한 식별자를 사용하는 기준으로 바이트 코드 오퍼랜드를 수정하는 단계(64);
    d) 상기 컴파일된 형태(24)로 된 바이트 코드를 해석에 적합한 포맷으로 된 등가의 바이트 코드로 재배열하는 단계(66); 및
    e) 행선 어드레스가 변환 단계 a), b), c) 또는 d)에 의해 달성되는 점프를 다시 링크하는 단계(67)
    를 포함하는 프로세스에서 최소한 하나의 단계를 사용하여 상기 컴파일된 형태(24)로 된 바이트 코드로부터 인터프리터(16)에 의한 해석에 적합한 포맷으로 된 바이트 코드로 번역하는 수단(54)을 포함하는 것을 특징으로 하는 마이크로컨트롤러(10).
  114. 제106항 또는 제107항에 있어서, 상기 어플리케이션 프로그램은, 상기 컴파일된 형태(24)를 실행 또는 해석하는데 요구되는 자원이 상기 마이크로 컨트롤러상에서 사용가능한 것을 초과하는 컴파일된 형태(24)로 컴파일되는 것을 특징으로 하는 마이크로컨트롤러(10).
  115. 제106항 또는 제107항에 있어서, 상기 컴파일된 형태(24)는 상이한 컴퓨터 플랫폼상에서의 휴대가능성을 위해 설계되는 마이크로컨트롤러(10).
  116. 제106항 또는 제107항에 있어서, 상기 인터프리터(16)는,
    허가받지 않은 메모리 부분에 대한, 바이트 코드로 구성된 어플리케이션의 접근을 허용하지 않는 것,
    허가받지 않은 마이크로컨트롤러 자원에 대한 어플리케이션의 접근을 허용하지 않는 것, 및
    바이트 코드의 실행이 보안성 제약을 위반하지 않는다는 것을 검증하도록 실행 이전에 최소한 한번 복수개의 바이트 코드를 점검하는 것
    의 세트로부터 선택된 최소한 하나의 규칙을 포함하는 한 세트의 규칙으로부터 선택된 보안성 기준을 어플리케이션이 만족시키는지를 어플리케이션의 해석 중에 결정하도록 부가적으로 구성되어 있는 것을 특징으로 하는 마이크로컨트롤러(10).
  117. 제106항 또는 제107항에 있어서, 최소한 하나의 어플리케이션 프로그램은,
    상기 어플리케이션을 로딩하기전에 상기 어플리케이션이 모든 보안성 제약을 위반하지 않는다는 것을 검증하는 단계; 및
    상기 어플리케이션을 보안 방식으로 로딩하는 단계
    를 포함하는 프로세스에 의해 생성되는 마이크로컨트롤러(10).
  118. 제117항에 있어서, 상기 보안 방식으로 로딩하는 단계는, 로딩하는 아이덴티티(identity)가 상기 마이크로컨트롤러상에 어플리케이션을 로딩할 허가를 가지는지를 검증하는 단계를 포함하는 마이크로컨트롤러(10).
  119. 제117항에 있어서, 상기 보안 방식으로 로딩하는 단계는 로딩 키를 사용하여 로딩될 어플리케이션을 암호화하는 단계를 포함하는 마이크로컨트롤러(10).
  120. 메모리 및 한 세트의 자원 제약에 따라 작동하는 프로세서를 지니는 마이크로컨트롤러를 프로그래밍하는 방법으로서,
    제1프로그래밍 언어로 어플리케이션 프로그램(20)을 입력하는 단계;
    상기 제1프로그래밍 언어로 된 어플리케이션 프로그램(20)을 상기 제1프로그래밍 언어와 관련된 제 1 중간 코드(24)로 컴파일하는 단계(22)
    를 포함하고, 상기 제 1 중간 코드(24)가 최소한 하나의 제1중간 코드 가상기기에 의해 해석가능한, 마이크로컨트롤러를 프로그래밍하는 방법에 있어서,
    최소한 하나의 제 2 중간 코드 가상기기(16)에 의해 해석가능한 제2중간 코드(27)로 상기 제1중간 코드(24)를 변환하는 단계(26); 및
    상기 마이크로컨트롤러(10)의 메모리 내로 상기 제 2 중간 코드를 로딩하는 단계를 포함하는 것을 특징으로하는 마이크로컨트롤러의 프로그래밍 방법.
  121. 제120항에 있어서, 상기 변환 단계는,
    오브젝트, 클래스, 필드, 또는 방법에 대한 식별 열을 관련시키는 단계, 및
    그러한 열을 유일한 식별자에 매핑시키는 단계(51b)를 부가적으로 포함하는 마이크로컨트롤러의 프로그래밍 방법.
  122. 제120항 또는 제121항에 있어서, 상기 매핑 단계는 열을 정수에 매핑시키는 단계를 포함하는 마이크로컨트롤러의 프로그래밍 방법.
  123. 제120항 또는 제121항에 있어서,
    상기 변환 단계는,
    a) 모든 점프 및 그의 행선지를 본래 바이트 코드로 기록하는 단계(61);
    b) 특정 바이트 코드를 등가의 일반 바이트 코드로 또는 일반 바이트 코드를 등가의 특정 바이트 코드로 변환시키는 단계(63);
    c) 식별 열을 사용하는 기준으로부터 유일한 식별자을 사용하는 기준으로 바이트 코드 오퍼랜드를 수정하는 단계(64);
    d) 컴파일된 포맷으로 된 바이트 코드를, 해석에 적합한 포맷으로 된 등가의 바이트 코드로 재배열하는 단계(66); 및
    e) 행선지 어드레스가 변환 단계 a), b), c), 또는 d) 에 의해 달성되는 점프를 다시 링크시키는 단계(67);
    중 최소한 하나의 단계를 실행하는 것을 포함하는 마이크로컨트롤러의 프로그래밍 방법.
  124. 제120항 또는 제121항에 있어서, 상기 마이크로컨트롤러의 메모리 내로 제 2 중간 코드(27)를 로딩하는 단계는, 상기 제 2 중간 코드(27)가 미리정해진 정합성(integrity)점검을 만족시키고 보안성 프로토콜에 따라 로딩이 이행되는 것을 검증하도록 상기 제 2 중간 코드(27)를 로딩시키기 전에 상기 제 2 중간 코드(27)를 점검하는 단계를 부가적으로 포함하는 것을 특징으로 하는 마이크로컨트롤러의 프로그래밍 방법.
  125. 제124항에 있어서, 상기 보안성 프로토콜은 상기 제 2 중간 코드(27)의 로딩 이전에 로딩을 허용하도록 특정의 아이덴티티가 검증되는 것을 요구하는 마이크로컨트롤러의 프로그래밍 방법.
  126. 제125항에 있어서, 암호해독키를 제공하는 단계를 부가적으로 포함하며, 상기 보안성 프로토콜은 상기 암호해독키에 대응하는 로딩 키를 사용하여 상기 제 2 중간 코드(27)가 암호화되는 것을 요구하는 것을 특징으로 하는 마이크로컨트롤러의 프로그래밍 방법.
  127. 메모리 및 상기 메모리 내로 로드된 인터프리터(16)를 지니면서 해석가능한 프로그래밍 언어로 기록되는 프로그램(24)의 도출물인 도출 프로그램(27)을 실행하도록 작동될 수 있는 마이크로컨트롤러(10)에 있어서,
    a) 상기 마이크로컨트롤러는 상기 해석가능한 프로그래밍 언어로 기록되는 프로그램(24)의 해석을 허용하기에 불충분한 크기를 가진 메모리를 포함하는 한세트의 자원 제약내에서 작동하며;
    b) 상기 메모리는 상기 해석가능한 언어의 도출물로 기록된 도출 프로그램(27)을 해석하도록 작동될 수 있는 인터프리터를 포함하며, 상기 해석가능한 프로그래밍 언어로 기록되는 프로그램의 도출물은,
    (1) 식별자에 열(string)을 매핑하는 것,
    (2) 해석 이전 또는 해석 중에 보안성 점검을 이행하는 것,
    (3) 해석 이전 또는 해석 중에 구조 점검을 이행하는 것,
    (4) 해석 이전 또는 해석 중에 의미(semantic) 점검을 이행하는 것을 포함하는 한 세트의 규칙으로부터 선택되는 최소한 하나의 규칙을 적용함으로써 상기 해석 가능한 프로그래밍 언어로 기록된 프로그램으로부터 도출되는 것을 특징으로 하는 마이크로컨트롤러(10).
  128. 제127항에 있어서, 상기 도출 프로그램(27)은 클래스 파일 또는 클래스 파일의 도출물인 마이크로컨트롤러(10).
  129. 제127항 또는 제128항에 있어서, 상기 메모리는 1메가바이트미만의 저장 영역을 포함하는 것을 특징으로 하는 마이크로컨트롤러(10).
  130. 제127항 또는 제128항에 있어서,
    c) 복수개의 도출 프로그램(27)중 하나의 도출 프로그램을 액세스하기 위한 요청자로부터의 요청을 로직에 의해 수신하고;
    d) 상기 요청의 수신후에, 상기 복수개의 도출 프로그램(27)중 하나의 도출 프로그램이 미리 결정된 한 세트의 규칙에 부합하는지를 결정하며;
    e) 그러한 결정을 기초로하여, 복수개의 어플리케이션중 하나의 어플리케이션에 대한 요청자의 액세스를 선택적으로 허가하는 것을 특징으로하는 마이크로 컨트롤러(10).
  131. 제130항에 있어서, 상기 미리결정된 규칙은, 상기 도출 프로그램(27)이 액세스하려고 하는 메모리의 특정 부분에 대한 액세스 권리를 상기 도출 프로그램(27)이 지니는지를 결정함으로써 상기 도출 프로그램이 해석되는 동안 인터프리터(16)에 의해 이행되는 마이크로컨트롤러(10).
  132. 제127항 또는 제128항에 있어서, 상기 마이크로컨트롤러는,
    a) 상기 도출 프로그램(27)이 해석되는 동안 미리결정된 보안 규칙을 이행함으로써, 상기 도출 프로그램이 승인되지 않은 메모리 부분 또는 기타 승인되지 않은 마이크로컨트롤러 자원을 액세스하는 것을 방지하는 것,
    b) 상기 인터프리터(16)가, 실행 전에 최소한 한번 각각의 바이트 코드를 점검하여, 상가 바이트 코드가 실행전 점검 및 실행후 점검에 따라 실행될 수 있는 지를 결정하도록 구성되는 것, 및
    c) 상기 도출 프로그램(27)이 상기 마이크로컨트롤러내로 로딩되기전에 점검되어 상기 도출 프로그램(27)의 정합성을 검증하며 보안성 프로토콜에 따라 로딩이 이행되는 것을 포함하는 세트로부터 선택된 최소한 하나의 보안성 점검을 이행하도록 구성되어 있는 것을 특징으로 하는 마이크로컨트롤러(10).
  133. 제132항에 있어서, 상기 보안성 프로토콜은, 특정의 아이덴티티가 도출 프로그램(27)을 카드상으로 로딩하는 것을 허용하도록 검증되어야 하는 것을 요구하는 마이크로컨트롤러(10).
  134. 제132항에 있어서, 암호해독키를 지니는 것을 특징으로 하며 상기 보안성 프로토콜은 로딩될 도출 프로그램(27)이 상기 암호해독키에 대응하는 로딩 키를 사용하여 암호화되는 것을 요구하는 마이크로컨트롤러(10).
  135. 제127항 또는 제128항에 있어서, 암호화, 암호해독, 서명, 서명 검증, 상호 승인, 트랜스포트(transport)키, 및 세션 키를 포함하는 세트로부터 선택되는 암호 서비스를 제공하도록 구성되어 있는 것을 특징으로하는 마이크로컨트롤러(10).
  136. 제127항 또는 제128항에 있어서, 파일시스템을 지니고,
    a) 상기 마이크로컨트롤러가 파일로부터의 판독, 파일로의 기록, 또는 파일의 삭제를 승인하는 액세스 제어 리스트를 지니는 것,
    b) 상기 마이크로컨트롤러가 파일에의 승인된 액세스를 확립하도록 키 검증을 이행하는 것, 및
    c) 상기 마이크로컨트롤러가 파일에의 승인된 액세스를 확립하도록 카드 홀더 아이덴티티를 검증하는 것을 포함하는 세트로부터 선택된 수단을 통해 상기 파일 시스템에 대한 안전한 액세스를 제공하도록 구성되어 있는 것을 특징으로 하는 마이크로컨트롤러(10).
KR1019997003564A 1996-10-25 1997-10-22 마이크로컨트롤러를 이용한 고급 프로그래밍 언어 사용 KR100329063B1 (ko)

Applications Claiming Priority (2)

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

Publications (2)

Publication Number Publication Date
KR20000052759A KR20000052759A (ko) 2000-08-25
KR100329063B1 true KR100329063B1 (ko) 2002-03-18

Family

ID=21846980

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019997003564A KR100329063B1 (ko) 1996-10-25 1997-10-22 마이크로컨트롤러를 이용한 고급 프로그래밍 언어 사용

Country Status (15)

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

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7823140B2 (en) 2004-09-24 2010-10-26 Samsung Electronics Co., Ltd. Java bytecode translation method and Java interpreter performing the same
KR101894894B1 (ko) * 2017-06-16 2018-09-05 서울대학교산학협력단 바이트코드 처리 장치 및 동작 방법

Families Citing this family (287)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE69519473T2 (de) 1995-08-04 2001-05-10 Belle Gate Invest B V Datenaustauschlsysteme mit tragbaren Datenverarbeitungseinheiten
EP0825506B1 (en) 1996-08-20 2013-03-06 Invensys Systems, Inc. Methods and apparatus for remote process control
PT932865E (pt) 1996-10-25 2002-12-31 Schlumberger Systems & Service Utilizacao de linguagem de programacao de nivel elevado com um microcontrolador
WO1998041918A1 (en) * 1997-03-14 1998-09-24 Ian Charles Ogilvy Method and apparatus for controlling communications
ES2180142T3 (es) 1997-06-27 2003-02-01 Swisscom Mobile Ag Procedimiento de transaccion con un elemento de identificacion portatil.
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
CZ20003437A3 (cs) * 1998-03-23 2001-11-14 International Business Machines Corporation Java runtime systém s upravenou sdílenou oblastí konstant
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
WO2000019699A1 (en) 1998-09-29 2000-04-06 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
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
US7139915B2 (en) * 1998-10-26 2006-11-21 Microsoft Corporation Method and apparatus for authenticating an open system application to a portable IC device
US7194092B1 (en) * 1998-10-26 2007-03-20 Microsoft Corporation Key-based secure storage
US6609199B1 (en) * 1998-10-26 2003-08-19 Microsoft Corporation Method and apparatus for authenticating an open system application to a portable IC device
CN1249578C (zh) * 1998-11-03 2006-04-05 汤姆森特许公司 使用集成电路接口升级计算机代码的方法和装置
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
US6823520B1 (en) * 1999-01-22 2004-11-23 Sun Microsystems, Inc. Techniques for implementing security on a small footprint device using a context barrier
US6633984B2 (en) * 1999-01-22 2003-10-14 Sun Microsystems, Inc. Techniques for permitting access across a context barrier on a small footprint device using an entry point object
US6581206B2 (en) * 1999-11-12 2003-06-17 Sun Microsystems, Inc. Computer program language subset validation
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
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
US6848111B1 (en) 1999-02-02 2005-01-25 Sun Microsystems, Inc. Zero overhead exception handling
US6880155B2 (en) * 1999-02-02 2005-04-12 Sun Microsystems, Inc. Token-based linking
US7200842B1 (en) * 1999-02-02 2007-04-03 Sun Microsystems, Inc. Object-oriented instruction set for resource-constrained devices
AU3346400A (en) * 1999-02-05 2000-08-25 Cyrus Intersoft, Inc. Instrumenting streamed classes
FR2790629A1 (fr) * 1999-02-19 2000-09-08 Bull Cp8 Procede d'activation d'applications localisees dans une carte a puce par un navigateur du type dit "web"
US7127605B1 (en) * 1999-05-10 2006-10-24 Axalto, Inc. Secure sharing of application methods on a microcontroller
US6845498B1 (en) * 1999-05-11 2005-01-18 Microsoft Corporation Method and apparatus for sharing data files among run time environment applets in an integrated circuit card
US6547150B1 (en) * 1999-05-11 2003-04-15 Microsoft Corporation Smart card application development system and method
US6938244B1 (en) 1999-05-11 2005-08-30 Microsoft Corp. Interlaced protocol for smart card application development
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
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 Europ Gmbh 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
AU4294099A (en) 1999-06-10 2001-01-02 Belle Gate Investment B.V. Arrangements storing different versions of a set of data in separate memory areas and method for updating a set of data in a memory
US6788980B1 (en) * 1999-06-11 2004-09-07 Invensys Systems, Inc. Methods and apparatus for control using control devices that provide a virtual machine environment and that communicate via an IP network
US6463521B1 (en) * 1999-06-23 2002-10-08 Sun Microsystems, Inc. Opcode numbering for meta-data encoding
FR2795835B1 (fr) * 1999-07-01 2001-10-05 Bull Cp8 Procede de verification de transformateurs de codes pour un systeme embarque, notamment sur une carte a puce
US7908216B1 (en) 1999-07-22 2011-03-15 Visa International Service Association Internet payment, authentication and loading system using virtual smart card
US6684389B1 (en) * 1999-08-05 2004-01-27 Canon Kabushiki Kaisha Compiler that decrypts encrypted source code
US7376583B1 (en) 1999-08-10 2008-05-20 Gofigure, L.L.C. Device for making a transaction via a communications link
AU6631600A (en) * 1999-08-11 2001-03-05 Spinware, Inc. System and method for controlling access to data stored in portable storage medium
FR2797963B1 (fr) * 1999-08-23 2002-11-29 Trusted Logic Protocole de gestion, procede de verification et de transformation d'un fragment de programme telecharge et systemes correspondants
US6560774B1 (en) * 1999-09-01 2003-05-06 Microsoft Corporation Verifier to check intermediate language
KR20010050212A (ko) * 1999-09-13 2001-06-15 스테븐 디.피터스 메모리 카드에 기록된 파일에 대한 접근 제어 시스템
GB9921720D0 (en) 1999-09-14 1999-11-17 Tao Group Ltd Loading object-oriented computer programs
US7231411B1 (en) * 1999-09-15 2007-06-12 Koninklijke Philips Electronics N.V. Removable card system with downloadable agent for communicating with a digital television receiver or other host device
AU1223901A (en) * 1999-10-20 2001-04-30 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
US6363523B1 (en) * 1999-11-12 2002-03-26 Sun Microsystems, Inc. Optimization of N-base typed arithmetic expressions
US7107581B2 (en) * 1999-11-12 2006-09-12 Sun Microsystems, Inc. Overflow predictive arithmetic instruction optimization using chaining
US7010786B2 (en) 1999-11-12 2006-03-07 Sun Microsystems, Inc. Predictive arithmetic overflow detection
US8453133B2 (en) * 1999-11-12 2013-05-28 Oracle America, Inc. Optimization of N-base typed arithmetic instructions via rework
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
FR2801118B1 (fr) * 1999-11-17 2001-12-21 Bull Cp8 Procede de chargement d'applications dans un systeme embarque multi-application, systeme embarque correspondant, et procede d'execution d'une application du systeme embarque
AU1145800A (en) 1999-11-19 2001-06-04 Swisscom Mobile Ag Adaptable chip card
WO2001040910A1 (en) 1999-12-06 2001-06-07 De Jong, Eduard, Karel Computer arrangement using non-refreshed dram
WO2001043080A1 (en) 1999-12-07 2001-06-14 Sun Microsystems Inc. Secure photo carrying identification device, as well as means and method for authenticating such an identification device
WO2001043129A1 (en) 1999-12-07 2001-06-14 Sun Microsystems Inc. Computer-readable medium with microprocessor to control reading and computer arranged to communicate with such a medium
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カードのプログラム更新装置、および、その方法
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
US6986132B1 (en) 2000-04-28 2006-01-10 Sun Microsytems, Inc. Remote incremental program binary compatibility verification using API definitions
FR2812101A1 (fr) * 2000-07-24 2002-01-25 Bull Cp8 Protocole d'echange de messages entre applications implantees sur un systeme embarque, et systeme embarque correspondant
US6675338B1 (en) 2000-08-09 2004-01-06 Sun Microsystems, Inc. Internally generated vectors for burnin system
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
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
US6724220B1 (en) 2000-10-26 2004-04-20 Cyress Semiconductor Corporation Programmable microcontroller architecture (mixed analog/digital)
US8149048B1 (en) 2000-10-26 2012-04-03 Cypress Semiconductor Corporation Apparatus and method for programmable power management in a programmable analog circuit block
US8176296B2 (en) 2000-10-26 2012-05-08 Cypress Semiconductor Corporation Programmable microcontroller architecture
US20020108054A1 (en) * 2001-02-02 2002-08-08 Moore Christopher S. Solid-state memory device storing program code and methods for use therewith
EP1358639A1 (en) * 2001-02-08 2003-11-05 Nokia Corporation Smart card reader
US7080373B2 (en) * 2001-03-07 2006-07-18 Freescale Semiconductor, Inc. Method and device for creating and using pre-internalized program files
FR2822334A1 (fr) * 2001-03-16 2002-09-20 Schlumberger Systems & Service Module d'idente d'abonne a gestion independante et securisee d'une pluralite de commandes d'au moins une appliquette, notamment pour un equipement mobile de communication
AU2006200734B2 (en) * 2001-05-17 2007-12-13 Accenture Global Services Limited Pipeline architecture for use with net-centric application program architectures
US6971001B1 (en) * 2001-05-17 2005-11-29 Accenture Global Services Gmbh General and reusable components for defining net-centric application program architectures
US8209753B2 (en) * 2001-06-15 2012-06-26 Activcard, Inc. Universal secure messaging for remote security tokens
US20040218762A1 (en) 2003-04-29 2004-11-04 Eric Le Saint Universal secure messaging for cryptographic modules
PE20030375A1 (es) * 2001-08-13 2003-04-12 Qualcomm Inc Privilegio de acceso de nivel de aplicacion para un area de almacenamiento en un dispositivo de computadora
US7155702B2 (en) * 2001-09-13 2006-12-26 Axalto Sa Interface and stub generation for code distribution and synthesis
US7406674B1 (en) 2001-10-24 2008-07-29 Cypress Semiconductor Corporation Method and apparatus for generating microcontroller configuration information
US7275260B2 (en) 2001-10-29 2007-09-25 Sun Microsystems, Inc. Enhanced privacy protection in identification in a data communications network
US7085840B2 (en) 2001-10-29 2006-08-01 Sun Microsystems, Inc. Enhanced quality of identification in a data communications network
US20030084302A1 (en) * 2001-10-29 2003-05-01 Sun Microsystems, Inc., A Delaware Corporation Portability and privacy with data communications network browsing
US20030084172A1 (en) * 2001-10-29 2003-05-01 Sun Microsystem, Inc., A Delaware Corporation Identification and privacy in the World Wide Web
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
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
US7844437B1 (en) 2001-11-19 2010-11-30 Cypress Semiconductor Corporation System and method for performing next placements and pruning of disallowed placements for programming an integrated circuit
US7774190B1 (en) 2001-11-19 2010-08-10 Cypress Semiconductor Corporation Sleep and stall in an in-circuit emulation system
US7243853B1 (en) 2001-12-04 2007-07-17 Visa U.S.A. Inc. Method and system for facilitating memory and application management on a secured token
KR20040073562A (ko) * 2002-01-11 2004-08-19 시에라 와이어리스 인코포레이티드 호스트 확장형 무선 어플리케이션 인터페이스
EP1355268B1 (en) * 2002-02-28 2006-04-05 Matsushita Electric Industrial Co., Ltd. Memory card
US20100174717A1 (en) * 2002-02-28 2010-07-08 Olivier Fambon Interative serialisation procedure for structured software objects
US8769517B2 (en) * 2002-03-15 2014-07-01 International Business Machines Corporation Generating a common symbol table for symbols of independent applications
US6996802B2 (en) 2002-03-18 2006-02-07 Sun Microsystems, Inc. Method and apparatus for deployment of high integrity software using initialization order and calling order constraints
US6912633B2 (en) 2002-03-18 2005-06-28 Sun Microsystems, Inc. Enhanced memory management for portable devices
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
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
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
US7363055B2 (en) * 2002-05-09 2008-04-22 Casabyte, Inc. Method, apparatus and article to remotely associate wireless communications devices with subscriber identities and/or proxy wireless communications devices
FR2840084A1 (fr) * 2002-05-27 2003-11-28 Gemplus Card Int Procede de verification de codes pour microcircuits a ressources limitees
NO20023194D0 (no) * 2002-07-01 2002-07-01 Sospita As Fremgangsmåte og apparatur for eksekvering av programvareapplikasjoner i et multiprosessormiljö
US20040122774A1 (en) * 2002-08-02 2004-06-24 Martin Studd Method and system for executing applications on a mobile device
US7761845B1 (en) 2002-09-09 2010-07-20 Cypress Semiconductor Corporation Method for parameterizing a user module
AU2003266320A1 (en) * 2002-09-16 2004-04-30 Telefonaktiebolaget Lm Ericsson (Publ) Secure access to a subscription module
EP1398934B1 (en) 2002-09-16 2008-01-02 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
US7484095B2 (en) 2003-01-16 2009-01-27 Sun Microsystems, Inc. System for communicating program data between a first device and a second device
US7281244B2 (en) 2003-01-16 2007-10-09 Sun Microsystems, Inc. Using a digital fingerprint to commit loaded data in a device
US7272830B2 (en) 2003-01-16 2007-09-18 Sun Microsystems, Inc. Ordering program data for loading on a device
US7165246B2 (en) 2003-01-16 2007-01-16 Sun Microsystems, Inc. Optimized representation of data type information in program verification
US8121955B2 (en) * 2003-01-16 2012-02-21 Oracle America, Inc. Signing program data payload sequence in program loading
US20040143739A1 (en) * 2003-01-16 2004-07-22 Sun Mircosystems, Inc., A Delaware Corporation Run time code integrity checks
US7222331B2 (en) 2003-01-16 2007-05-22 Sun Microsystems, Inc. Linking of virtual methods
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
US7339513B1 (en) 2004-02-10 2008-03-04 Zilog, Inc. Interpreting a script to generate an operational signal on a remote control device
US7227492B1 (en) * 2004-02-10 2007-06-05 Zilog, Inc. Interpreting a common script block to output various forms of data according to a common protocol
US7259696B1 (en) * 2004-02-10 2007-08-21 Zilog, Inc. Interactive web-based codeset selection and development tool
US7436345B1 (en) * 2004-02-10 2008-10-14 Zilog, Inc. Script instruction for jumping to a location, interpreting a predetermined number of instructions and then jumping back
US7091857B2 (en) * 2004-02-12 2006-08-15 Mi-Jack Products, Inc. Electronic control system used in security system for cargo trailers
US7140549B2 (en) 2004-02-24 2006-11-28 Sun Microsystems, Inc. Method and apparatus for selecting a desired application on a smart card
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
US7374099B2 (en) 2004-02-24 2008-05-20 Sun Microsystems, Inc. Method and apparatus for processing an application identifier from a smart card
US8321923B2 (en) * 2004-03-04 2012-11-27 Gemalto Sa 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
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 セイコーエプソン株式会社 ファイル操作制限システムおよびファイル操作制限プログラム、ファイル操作制限方法、電子機器並びに印刷装置
EP1864236A1 (en) * 2005-02-17 2007-12-12 Acterna, LLC Methods and apparatuses 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
US9092635B2 (en) 2006-03-31 2015-07-28 Gemalto Sa Method and system of providing security services using a secure device
US20080052770A1 (en) * 2006-03-31 2008-02-28 Axalto Inc Method and system of providing security services using a secure device
DE102006023436A1 (de) * 2006-05-18 2007-11-22 Giesecke & Devrient Gmbh Authentisierung für entfernte Funktionsaufrufe
EP1860589B1 (en) * 2006-05-26 2013-11-27 Incard SA Method for accessing structured data in IC Cards
EP1881404A1 (fr) * 2006-07-20 2008-01-23 Gemplus Procédé de protection dynamique des données lors de l'exécution d'un code logiciel en langage intermédiaire dans un appareil numérique
US7817799B2 (en) * 2006-09-07 2010-10-19 International Business Machines Corporation Maintaining encryption key integrity
EP1936574A1 (en) * 2006-12-01 2008-06-25 Cassis International PTE Ltd. CAP file for the personalisation of a Java application
US7971061B2 (en) * 2006-12-11 2011-06-28 Pitney Bowes Inc. E-mail system and method having certified opt-in capabilities
US8285329B1 (en) 2007-04-02 2012-10-09 Sprint Communications Company L.P. Mobile device-based control of smart card operation
US9564902B2 (en) 2007-04-17 2017-02-07 Cypress Semiconductor Corporation Dynamically configurable and re-configurable data path
US8516025B2 (en) 2007-04-17 2013-08-20 Cypress Semiconductor Corporation Clock driven dynamic datapath chaining
US7737724B2 (en) * 2007-04-17 2010-06-15 Cypress Semiconductor Corporation Universal digital block interconnection and channel routing
US8040266B2 (en) 2007-04-17 2011-10-18 Cypress Semiconductor Corporation Programmable sigma-delta analog-to-digital converter
US8130025B2 (en) 2007-04-17 2012-03-06 Cypress Semiconductor Corporation Numerical band gap
US8092083B2 (en) 2007-04-17 2012-01-10 Cypress Semiconductor Corporation Temperature sensor with digital bandgap
US8026739B2 (en) 2007-04-17 2011-09-27 Cypress Semiconductor Corporation System level interconnect with programmable switching
US8266575B1 (en) 2007-04-25 2012-09-11 Cypress Semiconductor Corporation Systems and methods for dynamically reconfiguring a programmable system on a chip
US8065653B1 (en) 2007-04-25 2011-11-22 Cypress Semiconductor Corporation Configuration of programmable IC design elements
US9720805B1 (en) 2007-04-25 2017-08-01 Cypress Semiconductor Corporation System and method for controlling a target device
ITMI20070996A1 (it) 2007-05-17 2008-11-18 Incard Sa Metodo per il controllo di esecuzione di un'applet per una ic card
US8049569B1 (en) 2007-09-05 2011-11-01 Cypress Semiconductor Corporation Circuit and method for improving the accuracy of a crystal-less oscillator having dual-frequency modes
US8249654B1 (en) * 2007-09-27 2012-08-21 Sprint Communications Company L.P. Dynamic smart card application loading
US9883381B1 (en) 2007-10-02 2018-01-30 Sprint Communications Company L.P. Providing secure access to smart card applications
JP5262089B2 (ja) * 2007-11-30 2013-08-14 凸版印刷株式会社 Icカードに実装されるコンピュータ装置及びその処理方法
CN101520733B (zh) * 2008-02-27 2014-04-16 国际商业机器公司 装载类的方法和装置及重组类存档文件方法
CN101256612B (zh) * 2008-04-01 2010-11-03 北京飞天诚信科技有限公司 基于.Net卡的程序保护方法和系统
CN101419549B (zh) * 2008-05-13 2012-04-18 飞天诚信科技股份有限公司 基于.Net卡查找类和函数的方法和装置
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
US8127060B2 (en) 2009-05-29 2012-02-28 Invensys Systems, Inc Methods and apparatus for control configuration with control objects that are fieldbus protocol-aware
US8463964B2 (en) 2009-05-29 2013-06-11 Invensys Systems, Inc. Methods and apparatus for control configuration with enhanced change-tracking
US9384063B2 (en) * 2009-06-18 2016-07-05 Microsoft Technology Licensing, Llc Eliding synchronization in a concurrent data structure
JP5449905B2 (ja) * 2009-07-29 2014-03-19 フェリカネットワークス株式会社 情報処理装置、プログラム、および情報処理システム
EP2497055B1 (en) * 2009-11-05 2018-07-18 Trusted Logic Secure portable object
KR101054596B1 (ko) * 2009-11-18 2011-08-04 에스케이씨앤씨 주식회사 자바카드용 마이그레이터를 이용한 메모리 절감 방법
US8276188B2 (en) * 2009-12-03 2012-09-25 Condel International Technologies Inc. Systems and methods for managing storage devices
DE102010004446A1 (de) * 2010-01-13 2011-07-14 Giesecke & Devrient GmbH, 81677 Verfahren zum Bereitstellen eines sicheren Zählers auf einem Endgerät
US8307134B2 (en) * 2010-01-15 2012-11-06 Apple Inc. Multiple communication interfaces on a portable storage device
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
US8732670B1 (en) 2010-06-29 2014-05-20 Ca, Inc. Ensuring determinism during programmatic replay in a virtual machine
US8499299B1 (en) 2010-06-29 2013-07-30 Ca, Inc. Ensuring deterministic thread context switching in virtual machine applications
US8769518B1 (en) 2010-06-29 2014-07-01 Ca, Inc. Ensuring determinism during programmatic replay in a virtual machine
US8959492B2 (en) * 2010-12-14 2015-02-17 Ngmoco, Llc Communication protocol between a high-level language and a native language
US8352749B2 (en) 2010-12-17 2013-01-08 Google Inc. Local trusted services manager for a contactless smart card
US8807440B1 (en) 2010-12-17 2014-08-19 Google Inc. Routing secure element payment requests to an alternate application
US8335921B2 (en) 2010-12-17 2012-12-18 Google, Inc. Writing application data to a secure element
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
KR101826275B1 (ko) 2011-11-01 2018-02-06 구글 엘엘씨 다수의 서비스 제공자 신뢰된 서비스 관리자 및 보안 요소와 인터페이싱하기 위한 시스템, 방법 및 컴퓨터 프로그램 제품
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 コード変換方法、プログラム及びシステム
EP2808821A1 (en) 2012-01-25 2014-12-03 Sony Corporation Information processing apparatus, 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
WO2016073578A1 (en) * 2014-11-05 2016-05-12 WWTemplar LLC Remote control of fire suppression systems
US10176094B2 (en) 2015-06-30 2019-01-08 Renesas Electronics America Inc. Common MCU self-identification information
WO2017066194A1 (en) * 2015-10-11 2017-04-20 Renesas Electronics America Inc. Data driven embedded application building and configuration
JP6275098B2 (ja) * 2015-10-16 2018-02-07 三菱電機株式会社 制御装置およびレジスタの故障復帰方法
WO2017209876A1 (en) * 2016-05-31 2017-12-07 Brocade Communications Systems, Inc. Buffer manager
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 华为技术有限公司 一种文件访问权限认证方法及电子设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1996025724A1 (en) * 1995-02-17 1996-08-22 Europay International S.A. Integrated circuit controlled transaction management system

Family Cites Families (105)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
DE408455C (de) 1923-07-15 1925-01-19 Georg Koenig Verfahren zur fortlaufenden Bestimmung des Heizwerts von Gasgemischen
FR2386080A1 (fr) 1977-03-31 1978-10-27 Cii Honeywell Bull Systeme de comptabilisation d'unites homogenes predeterminees
US4650975A (en) * 1984-08-30 1987-03-17 Casio Computer Co., Ltd. IC card and an identification system thereof
US4667290A (en) * 1984-09-10 1987-05-19 501 Philon, Inc. Compilers using a universal intermediate language
JPS61204741A (ja) 1985-03-06 1986-09-10 Nec Corp ソ−スプログラムの圧縮方法
JPH0635227B2 (ja) 1985-07-31 1994-05-11 トツパン・ム−ア株式会社 更新情報と履歴情報の読出し手段を有するicカ−ド
US4905138A (en) * 1985-10-17 1990-02-27 Westinghouse Electric Corp. Meta-interpreter
US4874935A (en) * 1986-03-10 1989-10-17 Data Card Coprporation Smart card apparatus and method of programming same
GB2191029B (en) 1986-05-29 1990-12-12 Almex Systems Ltd Electronic pass
JPH07104891B2 (ja) 1986-08-05 1995-11-13 沖電気工業株式会社 取引処理装置
US5133072A (en) * 1986-11-13 1992-07-21 Hewlett-Packard Company Method for improved code generation in reduced instruction set computers
JPS63156255A (ja) 1986-12-19 1988-06-29 Fujitsu Ltd インタプリタにおけるオ−バレイ方法
JPS63156254A (ja) 1986-12-19 1988-06-29 Fujitsu Ltd インタプリタにおける中間テキストの管理方法
US4777355A (en) 1986-12-24 1988-10-11 Mitsubishi Denki Kabushiki Kaisha IC card and system for checking the functionality thereof
US4791558A (en) * 1987-02-13 1988-12-13 International Business Machines Corporation System and method for generating an object module in a first format and then converting the first format into a format which is loadable into a selected computer
JPS63231692A (ja) * 1987-03-20 1988-09-27 Mitsubishi Electric Corp 機密コ−ド書込装置
FR2626095B1 (fr) * 1988-01-20 1991-08-30 Sgs Thomson Microelectronics Systeme de securite pour proteger des zones de programmation d'une carte a puce
US4892974A (en) 1988-03-10 1990-01-09 Air Products And Chemicals, Inc. Process for producing mono-ortho-tert-butyl-aniline using silica-alumina catalysts
JPH01243125A (ja) * 1988-03-24 1989-09-27 Fuji Electric Co Ltd 解釈プログラムの実行速度向上方法
US5195130A (en) 1988-05-05 1993-03-16 Transaction Technology, Inc. Computer and telephone apparatus with user friendly computer interface and enhanced integrity features
JP2666847B2 (ja) * 1988-06-06 1997-10-22 日本電気株式会社 異種言語間連絡方式
US5313614A (en) 1988-12-06 1994-05-17 At&T Bell Laboratories Method and apparatus for direct conversion of programs in object code form between different hardware architecture computer systems
US5119465A (en) * 1989-06-19 1992-06-02 Digital Equipment Corporation System for selectively converting plurality of source data structures through corresponding source intermediate structures, and target intermediate structures into selected target structure
JPH0378082A (ja) 1989-08-21 1991-04-03 Hitachi Ltd 予約取引処理方法
CA2025170A1 (en) * 1989-09-28 1991-03-29 John W. White Portable and dynamic distributed applications architecture
US5120939A (en) 1989-11-09 1992-06-09 At&T Bell Laboratories Databaseless security system
US5339419A (en) * 1990-06-25 1994-08-16 Hewlett-Packard Company ANDF compiler using the HPcode-plus compiler intermediate language
FR2667171B1 (fr) * 1990-09-25 1994-08-26 Gemplus Card Int Support portable a micro-circuit facilement programmable et procede de programmation de ce micro-circuit.
US5450575A (en) * 1991-03-07 1995-09-12 Digital Equipment Corporation Use of stack depth to identify machine code mistakes
US5307492A (en) * 1991-03-07 1994-04-26 Digital Equipment Corporation Mapping assembly language argument list references in translating code for different machine architectures
JP3602857B2 (ja) * 1991-04-23 2004-12-15 株式会社日立製作所 多機種対応型情報処理システム、および、方法
JP2690229B2 (ja) 1991-11-26 1997-12-10 三菱電機株式会社 非接触icカード
US5406380A (en) 1991-12-30 1995-04-11 Management Graphics, Inc. Film recorder with interface for user replaceable memory element
US5682027A (en) * 1992-10-26 1997-10-28 Intellect Australia Pty Ltd. System and method for performing transactions and a portable intelligent device therefore
US5469572A (en) * 1992-12-01 1995-11-21 Taylor; James M. Post compile optimizer for linkable object code
US5367685A (en) * 1992-12-22 1994-11-22 Firstperson, Inc. Method and apparatus for resolving data references in generated code
FR2705810B1 (fr) 1993-05-26 1995-06-30 Gemplus Card Int Puce de carte à puce munie d'un moyen de limitation du nombre d'authentifications.
US5519866A (en) * 1993-06-28 1996-05-21 Taligent, Inc. Method and apparatus of incrementally linking components of a modeled computer program
EP0711441A1 (en) 1993-07-30 1996-05-15 Intellect Australia Pty. Ltd. Device and method for ic cards
US5650761A (en) 1993-10-06 1997-07-22 Gomm; R. Greg Cash alternative transaction system
GB2283349A (en) 1993-10-29 1995-05-03 Ibm Transaction processing system
FR2713803B1 (fr) * 1993-12-07 1996-01-12 Gemplus Card Int Carte à mémoire et procédé de fonctionnement.
US5457799A (en) * 1994-03-01 1995-10-10 Digital Equipment Corporation Optimizer for program loops
US5537474A (en) * 1994-07-29 1996-07-16 Motorola, Inc. Method and apparatus for authentication in a communication system
US5500517A (en) * 1994-09-02 1996-03-19 Gemplus Card International Apparatus and method for data transfer between stand alone integrated circuit smart card terminal and remote computer of system operator
US5732270A (en) 1994-09-15 1998-03-24 Visual Edge Software Limited System and method for providing interoperability among heterogeneous object systems
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
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
US6226789B1 (en) * 1996-01-29 2001-05-01 Compaq Computer Corporation Method and apparatus for data flow analysis
US6535903B2 (en) * 1996-01-29 2003-03-18 Compaq Information Technologies Group, L.P. Method and apparatus for maintaining translated routine stack in a binary translation environment
US5860008A (en) * 1996-02-02 1999-01-12 Apple Computer, Inc. Method and apparatus for decompiling a compiled interpretive code
US5742756A (en) * 1996-02-12 1998-04-21 Microsoft Corporation System and method of using smart cards to perform security-critical operations requiring user authorization
TW369753B (en) * 1996-02-14 1999-09-11 Mitsubishi Electric Corp Data security method and system
US5761306A (en) 1996-02-22 1998-06-02 Visa International Service Association Key replacement in a public key cryptosystem
US6075863A (en) * 1996-02-28 2000-06-13 Encanto Networks Intelligent communication device
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
JPH09244904A (ja) * 1996-03-12 1997-09-19 Matsushita Electric Ind Co Ltd 仮想コード翻訳系および仮想マシンシステム
US5889941A (en) * 1996-04-15 1999-03-30 Ubiq Inc. System and apparatus for smart card personalization
US5915226A (en) * 1996-04-19 1999-06-22 Gemplus Card International Prepaid smart card in a GSM based wireless telephone network and method for operating prepaid cards
US5815657A (en) * 1996-04-26 1998-09-29 Verifone, Inc. System, method and article of manufacture for network electronic authorization utilizing an authorization instrument
US6151703A (en) * 1996-05-20 2000-11-21 Inprise Corporation Development system with methods for just-in-time compilation of programs
US5794049A (en) * 1996-06-05 1998-08-11 Sun Microsystems, Inc. Computer system and method for executing architecture specific code with reduced run-time memory space requirements
US5946487A (en) * 1996-06-10 1999-08-31 Lsi Logic Corporation Object-oriented multi-media architecture
GB9613450D0 (en) 1996-06-27 1996-08-28 Europay Int Sa Payment system
US5844218A (en) * 1996-07-16 1998-12-01 Transaction Technology, Inc. Method and system for using an application programmable smart card for financial transactions in multiple countries
US5923884A (en) * 1996-08-30 1999-07-13 Gemplus S.C.A. System and method for loading applications onto a smart card
EP0829828A1 (en) 1996-09-13 1998-03-18 Koninklijke KPN N.V. Multiple tickets in smart cards
US5875335A (en) 1996-09-30 1999-02-23 Apple Computer, Inc. Parameter marshaling techniques for dynamic object-oriented programming languages
US6438573B1 (en) * 1996-10-09 2002-08-20 Iowa State University Research Foundation, Inc. Real-time programming method
US6094528A (en) * 1996-10-24 2000-07-25 Sun Microsystems, Inc. Method and apparatus for system building with a transactional interpreter
PT932865E (pt) * 1996-10-25 2002-12-31 Schlumberger Systems & Service Utilizacao de linguagem de programacao de nivel elevado com um microcontrolador
US5905895A (en) * 1997-03-07 1999-05-18 International Business Machines Corporation Method and system for optimizing non-native bytecodes before bytecode interpretation
US5966536A (en) * 1997-05-28 1999-10-12 Sun Microsystems, Inc. Method and apparatus for generating an optimized target executable computer program using an optimized source executable
US6055211A (en) 1997-07-03 2000-04-25 Microchip Technology Incorporated Force page zero paging scheme for microcontrollers using data random access memory
US6078744A (en) * 1997-08-01 2000-06-20 Sun Microsystems Method and apparatus for improving compiler performance during subsequent compilations of a source program
US5987256A (en) * 1997-09-03 1999-11-16 Enreach Technology, Inc. System and process for object rendering on thin client platforms
US6233733B1 (en) * 1997-09-30 2001-05-15 Sun Microsystems, Inc. Method for generating a Java bytecode data flow graph
US6061520A (en) * 1998-04-07 2000-05-09 Sun Microsystems, Inc. Method and system for performing static initialization
US8127121B2 (en) * 1999-01-28 2012-02-28 Ati Technologies Ulc Apparatus for executing programs for a first computer architechture on a computer of a second architechture
US6880155B2 (en) * 1999-02-02 2005-04-12 Sun Microsystems, Inc. Token-based linking
US9086931B2 (en) * 2002-11-20 2015-07-21 Purenative Software Corporation System for translating diverse programming languages
US20080282238A1 (en) * 2007-05-10 2008-11-13 Microsoft Corporation Static type for late binding

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1996025724A1 (en) * 1995-02-17 1996-08-22 Europay International S.A. Integrated circuit controlled transaction management system

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7823140B2 (en) 2004-09-24 2010-10-26 Samsung Electronics Co., Ltd. Java bytecode translation method and Java interpreter performing the same
KR101894894B1 (ko) * 2017-06-16 2018-09-05 서울대학교산학협력단 바이트코드 처리 장치 및 동작 방법
US10732977B2 (en) 2017-06-16 2020-08-04 Seoul National University R&Db Foundation Bytecode processing device and operation method thereof

Also Published As

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

Similar Documents

Publication Publication Date Title
KR100329063B1 (ko) 마이크로컨트롤러를 이용한 고급 프로그래밍 언어 사용
JP3689368B2 (ja) データ処理リソースを備えたマルチアプリケーション組込システムにアプリケーションをローディングする方法、対応するシステムおよび実行方法
FI117990B (fi) Tiedonvaihtojärjestelmä, joka käsittää kannettavia tietojenkäsittely-yksiköitä
US7165727B2 (en) Method and apparatus for installing an application onto a smart card
US7140549B2 (en) Method and apparatus for selecting a desired application on a smart card
US6880155B2 (en) Token-based linking
US7506175B2 (en) File language verification
US20050184163A1 (en) Method and apparatus for processing an application identifier from a smart card
JP4378459B2 (ja) 特にスマートカードにおけるダウンロードしたアプリケーションの機密保護化
WO2006038103A1 (en) System and method for post-issuance code update employing embedded native code.
Markantonakis et al. Multi-application smart card platforms and operating systems
Cap et al. Extending the data storage capabilities of a Java-Based smartcard
US6793143B2 (en) Data carrier
US7246347B1 (en) Method and apparatus for loading class files into non-volatile memory
Jean et al. Using some database principles to improve cooperation in multi-application smart cards
Bouffard et al. Java Card Virtual Machine Memory Organization: a Design Proposal
MXPA99003796A (en) Using a high level programming language with a microcontroller
Andronick et al. Certifying an embedded remote method invocation protocol
Markantonakis Java card technology and security
Ma et al. Implementing FISC IC card specification and developing health care application using Java Card

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20130304

Year of fee payment: 12

FPAY Annual fee payment

Payment date: 20140303

Year of fee payment: 13

FPAY Annual fee payment

Payment date: 20150302

Year of fee payment: 14

LAPS Lapse due to unpaid annual fee