Download Lecture 6

Document related concepts
no text concepts found
Transcript
Java Card Technology
Ch03: Overview
Instructors:
Fu-Chiung Cheng
(鄭福炯)
Associate Professor
Computer Science & Engineering
Tatung University
Content
Architecture Overview
 Java Card Language Subset
 Java Card Virtual Machine
 Java Card Installer and off Card
Installation Program
 Java Card Runtime Environment

Architecture Overview



Java card technology enables programs
written in Java to run on smart cards and
other resource-constrained devices.
Smart cards represent one of the smallest
computing platforms in use.
How to fit Java system into a smart card?
(Smart cards have 1K of RAM,16K of EEPROM, 24K
of ROM)
Support only a subset of features
 apply a split model to implement JVM

Architecture Overview


JCVM (Java Card Virtual Machine) is split
into :
 Part that runs off-card
 Part that runs on-card
Off-card process:
 Processing tasks that are not constrained
to execute at runtime
 Class loading, bytecode verification,
resolution and linking, and optimization
Architecture Overview

On-card process:
 defines a runtime environment that
supports the smart card memory,
communication, security and
application execution model
 Java Card runtime environment
conforms to the smart card
international standard ISO 7816
Architecture Overview

Java Card Technology contains:



Java Card Virtual Machine (JCVM) Specification:
define a subset of the Java Programming
language and virtual machine architecture suitable
for smart card applications
Java Card Runtime environment (JCRE): describe
Java Card runtime behavior, including memory
management, applet management and other
runtime features
Java Card Application Programming Interface
Specification (APIs): describe the set of core and
extension Java package and class for
programming smart card applications
Java Card Language Subset


Support only a carefully chosen, customized
subset of feature of java language
 Due to small memory footprint of Java card
 Well suited for writing programs for smart
card applications
 Preserving the object-oriented capabilities
Many advanced smart cards provide a
garbage collection mechanism to enable
object deletion
Java Card Language Subset
Supported Java feature





Small primitive data types:
boolean, byte, short
One-dimensional array
Java packages, classes,
interfaces, and exceptions
Java object-oriented
feature: inheritance, virtual
methods, overloading and
dynamic object creation,
access scope, and binding
rules
The int keyword and 32-bit
integer data type support
are optional
Unsupported Java feature








Large primitive data type:
long, double, float
Characters and strings
Multidimensional arrays
Dynamic class loading
Security manager
Thread
Object serialization
Object cloning
Java Card Virtual Machine

Java card virtual machine(JCVM) is
implemented as two separate pieces:



The on card portion of JCVM includes the java
bytecode interpreter
The converter is the off-card piece of JCVM
which runs on a PC or workstation
The two pieces implement all the VM function
and generate some output file like CAP
(converted applet) file and export file
Java Card Virtual Machine
Converter
Class
files
CAP
file
interpreter
CAP File and Export File





The converter loads and preprocess the class files
and outputs a CAP file
A CAP file contains an executable binary
representation of the class in Java package
A CAP file is a JAR file that contains a set of
components.
Each component describes an aspect of CAP file
content, such as class information, executable
bytecode, linking information, verification information
and so forth
The CAP file format is optimized for small small
footprint by compact data structure and limited
indirection.
CAP File and Export File


Export file are not loaded onto smart card and
thus are not directly used by interpreter
Export file can be thought of as the header
files in C programming language
 It contains public API information for an
entire package of classes
 It defines access scoop, class name,
signature of method and fields
 It contains linking information used for
resolving interpackage references on the
card
Java Card Converter


The converter processed one class at a time,
the conversion unit of it is a package
The converter takes two input : class files and
export files
Java Card Converter

During the conversion, the converter
performs tasks that a JVM in a desktop
environment would perform at class-loading
time:





Verifies that the load images of the java classes
are well formed
Checks for Java Card language subset violations
Performs static variables initialization
Optimizes bytecode
Allocates storage and creates VM data structures
to represent classes
Java Card interpreter


Java Card interpreter provides runtime
support of Java language model and thus
allows hardware independence of applet
code
Tasks:
 Executes byecode instructions and
ultimately execute applets
 Controls memory allocation and object
creation
 Plays a crucial role in ensuring runtime
security
Java Card Installer and Off-Card
Installation Program






The interpreter does not itself load CAP file.
Java card installer is the mechanism to download and
install a CAP file
The Java Card installer resides within card.
Java card installer cooperates with an off-card
installation program.
The installation program transmits the executable
binary in a CAP file to installer via card acceptance
(CAD)
Then the JC installer writes the binary into memory of
card, links with other class and creates and initializes
any data structures that are used
Java Card Installer and Off-Card
Installation Program
Java Card Runtime Environment


Java card runtime environment (JCRE)
consists of a Java Card system components
that run inside a smart card
 JCVM, JC APIs, industry-specific extension
and JCRE system classes.
JCRE is responsible for (JCRE == JC OS)
 Card resource management
 Network communication
 Applet execution
 On-card system and applet security
On-Card System Architecture
On-Card System Architecture


JCVM
 executes bytecodes,
 controls memory allocation,
 manages objects, and
 enforces the runtime security
Native methods:
 Provide support to the JCVM and system
classes
 Handle low-level communication protocols,
memory management, crytographic
support
On-Card System Architecture

System classes
 are analogues to an OS core
 manage transactions
 manage communication between the host
applications and Java Card applet
 control applet creation, selection and
deseletion
On-Card System Architecture

Java Card Application framework classes




define the four core and extension API packages
This framework makes it relatively easy to create
an applet.
Applets access JCRE services through framework
classes.
Industry-specific extension


Add-on libraries to provide additional services or
to refine the security and system model
Example: Open Platform extends the JCRE
services to meet financial industries’ specific
security needs.
On-Card System Architecture

Installer
 Enables the secure downloading of
software and applets onto the card after
the card is made and issued to the card
holder
 Cooperates with the off-card installation
program
 Is an optional JCRE component

Java Card applet
 User applications on JC platform
 Applets are downloadable
JCRE Lifetime




JCRE is initialized at card initialization time
JCRE initialization is performed only once
during the card lifetime
JCRE initialization:
 initialize the virtual machine
 Create objects for providing JCRE services
 Manage applets
Applets installation
 JCRE creates applet instance
 Applets create objects to store data
CAD Session


CAD Session:
 The period from the time the card is
inserted into the card acceptance devices
(CAD) and is powered up until the time the
card is removed from the CAD
During a CAD session, the JCRE operates
like a typical smart card (i.e. support APDU
I/O communication). See Fig 3.5 on page 38
 APDUs are sent (Command APDUs and
Response APDUs)
CAD Session



After a JCRE is reset, the JCRE enters into a
loop, waiting for APDU commands from the
host
The host sends APDU commands to the Java
Card, using the serial communication
interface via the card input/output contact
point
When a command arrives, the JCRE either
selects an applet to run as instructed in the
command or forwards the command to the
currently selected applet
CAD Session
The selected applet then takes control
and processes the APDU command
 When finished, the applet sends a
response to the host application and
surrenders control to the JCRE
 This process repeats when the next
command arrives.

Java Card Runtime Features

Besides supporting the Java language
runtime model, the JCRE supports three
additional runtime features
 Persistent and transient objects
 Atomic operations and transaction
 Applet firewall and the sharing
mechanisms
Java Card Runtime Features

Persistent and transient objects





By default, Java Card objects are persistent and
are created in persistent memory
The space and data of such objects span CAD
sessions
For security and performance reasons, applet can
create objects in RAM
Such objects are called transient objects
Transient objects contain temporary data that are
not persistent across CAD sessions
Java Card Runtime Features

Atomic operations and transaction
 JCVM ensures that each write operation to
a single field in an object or in a class is
atomic
 The updated field either gets the new value
or is restored to the previous value
 JCRE provides transaction APIs
 An applet can include several write
operations in a transaction
 Either all updates in a transaction are
complete or none of them proceeds
Java Card Runtime Features

Applet firewall and the sharing mechanisms
 The applet firewall isolates applets
 Each applet runs within a designated
space
 The existence and operation of one applet
has no effect on the other applets on the
card
 The applet firewall is enforced by the
JCVM as it executes bytecodes
 JCVM permits shared data access through
secure sharing mechanishms
Java Card APIs


Java Card APIs consist of customized classes
for programming smart card applications
according to the ISO 7816 models
Java Card APIs contains
 3 Core packages
 java.lang
 javacard.framework
 javacard.security
 One extension package
 javacardx.crypto
Java Card APIs

Classes are not supported
 GUI interfaces
 Network I/O
 Desktop file system I/O

The reasons:
 No display
 Different network protocol
 Different file system structure
Java.lang Package
Table 3.2
Object
Throwable
Exception
RuntimeException
ArithematicException
ArrayIndexOutOfBoun
dsException
ArrayStoreException
NullPointerException
ClassCastException
SecurityException
IndexOutOfBoundsException
NegativeArraySizeException
Javacard.framework Package


javacard.framework provides framework
classes and interfaces for the core
functionality of Java Card applet
Import classes:



Applet class: provides a framework for applet
execution
APDU class: APDUs are carried by the
transmission protocol (Transmission protocol are
T=0 or T=1)
JCSystem class: control applet execution,
resource management, transaction management
and inter-applet object sharing
Javacard.framework Package

Import classes:
 PIN class:
 Short for personal identification
number
 provide the common form of
password to authenticating card
holders
Javacard.security Package


Provides a framework for cryptographic
functions
javacard.security
 defines a key factory class keyBuilder and
various interfaces used in symmetric (DES)
and asymmetric (DSA and RSA) algorithms
 Supports abstract base classes
RandomData, Signature, and
MessageDigest
Javacardx.crypto Package




Is an extension package
Contains cryptographic classes and
interfaces
Defines the abstract base class Clipher
 Support encryption and decryption
functions
 Does not provide any implementation
There is a coprocessor on smart cards to
perform crytographic computation
Java Card Applet




Java Card Applets is not the same as the
J2SE Applet
JC applet is a Java program, that adhere to a
set of conventions, and can run within the
Java Card runtime environment
They can be dynamically downloaded onto
the card
Multiple applets can coexist on a single Java
card, and an applet can have multiple
instances
Package and Applet Naming
Convention



Each applet instance is uniquely identified by
Application Identifier (AID)
Each Java package is also assigned an AID
ISO 7816 specifies AIDs to be used for
unique identification of card application and
certain kinds of files
RID (5 bytes)
Resource Identifier
PIX (0-11 bytes)
Proprietary Identifier Extension
Package and Applet Naming
Convention (cont.)




The AID for a package is constructed by
concatenating
 the company’s RID
 A PIX for that package
ISO controls the assignment of RIDs to
companies; each company has a unique RID.
Companies manage assignment of PIXs
The RID in an AID identifies an applet
provider
Package and Applet Naming
Convention (cont.)

Package AID =
 Company’s RID
 Package PIX

Applet AID =
 Company’s RID (Applet provider’s RID)
 Applet PIX
Package and Applet Naming
Convention (cont.)

The package AID and the default applet
AID for each applet defined in the
package
 Specified in the CAP file
 Supplied to the converter when the
CAP file is generated
Applet Development Process
Step 1:
Java
files
export
file(s)
Java Card
converter
CAP
file(s)
Step 4:
class
files
Java Card
simulator
Step 2:
Step 3:
Java
compiler
Java Card
emulator
export
files
Applet Development Process


Step 1:
 A developer writes one or more Java
Classes and
 compiles the source code with a Java
compiler
 Produce one or more class files
Step 2:
 Applet is run, tested and debugged in a
simulation environment
 The overall functional aspects of applet are
tested
Applet Development Process


Step 3:
 Class files are converted to a CAP file
 A CAD file and an export file are created
for each package
Step 4:
 CAP files are loaded and tested in an
emulation environment
 Runtime behaviors of applet are tested
 Applet firewall
 Transient and persistent objects
Applet Installation
ROM Applets
 Pre-issuance or Post-issuance Applets
 Post-issuance Applets Installation
 Error Recovery during Applet
Installation
 Installation Constraints

Applet Installation `


Masking
 The process of writing the permanent
components into the non-mutable memory
of a chip
When a Java Card is manufactured, the
smart card proprietary system and Java Card
runtime environment (native methods, JCVM,
Framework APIs and libraries) are burned
into ROM.
ROM Applets




Applet classes can be masked in ROM
together with JCRE and other system
components during the process of card
manufacturing
Applet instances are instantiated in EEPROM
by the JCRE during the JCRE initialization.
Such applets are called ROM applets
ROM applet content are controlled by issuers
ROM applet are allowed to declare native
methods (not checked by JCVM)
Pre-issuance or Post-issuance
Applets




Java Card applet classes and associated
class libraries can be downloaded and written
into the mutable memory (EEPROM) after the
card is manufactured
Pre-issuance and post-issuance are
downloaded before or after the card has been
issued
Pre-issuance applets are treated the same
way as the ROM applets
Post-issuance applets are not allowed to
declare native methods (security reason)
Post-issuance Applets
Installation



Applet installation refers to the process of
 loading applet classes in a CAP file,
 combining them with the execution state of
JCRE and
 creating an applet instance to bring the
applet into a selectable and execution state
On the Java Card platform, the loading and
installable unit is a CAP file.
A CAP file consists of classes and a minimal
applet is a Java package with a single class
derived from the javacard.framework.Applet
Post-issuance Applets
Installation

To load an applet
 The off-card installer takes the CAP file
and transforms it into a sequence of APDU
commands which contain the CAP file
content
 By exchanging the APDU commands with
the off-card installer, the on-card installer
 writes the CAP file into card’s persistent
memory and
 links the classes in the CAP file with
other classes reside on the card
Post-issuance Applets
Installation


The on-card installer also creates and initializes and
data that are used internally by the JCRE to support
the applet
The on-card installer create an applet instance and
registers the instance with the JCRE by using install
method
 Public static void install(byte[] bArray, short offset,
byte length)
 bArray: installation parameters for applet
initialization
Postissuance Applets
Installation(cont.)





The install method is an applet entry point
method, similar to the main method in Java
applications
An applet must implement the install method
The install method calls applet’s constructor
to create and initialize an applet instance
After the applet is initialized and registered
with JCRE, it can be selected and run
The install method can be called more than
once to create multiple applet instances
Error Recovery during Applet
Installation
The installation process is transactional
 The installer will discard the CAP file
and any applets it had created during
installation when
 Programmatic failure
 Running out of memory
 Card tear
 Other errors

Installation Constraints

Java Card Applet installation has two points
 Applets executing on the card may refer
only to classes that already exist on the
card
 The order of loading must guarantee that
each newly loaded package references
only packages that are already on the card