PP Jcs Open 392788
PP Jcs Open 392788
Open Configuration
May 2012
Version 3.0
Security Evaluations
Oracle Corporation
500 Oracle Parkway
Redwood Shores, CA 94065
Copyright 2012, Oracle Corporation. All rights reserved. This documentation contains proprietary information of Oracle
Corporation; it is protected by copyright law. Reverse engineering of the software is prohibited. If this documentation is
delivered to a U.S. Government Agency of the Department of Defense, then it is delivered with Restricted Rights and the
following legend is applicable:
For any correspondence on this document please contact the following organisations:
Oracle Corporation,
500 Oracle Parkway
Redwood City,
CA 94065 USA
http://www.oracle.com
[email protected].
This document has been generated with Trusted Labs Security Editor Tool TL SET version 3.0.
This document presents a set of security requirements for a Java Card technology-
enabled system (Java Card System), compliant with Java Card platform specifications
(Java Card specifications). These requirements should serve as a template for writing
Common Criteria security targets of specific implementations of Java Card Systems. It
therefore almost solely looks at the Java Card System from the security angle, a
viewpoint that somewhat sets it apart from the usual functional documentation; that is,
focused on what can happen rather than what should happen. It was written with
critical reallife applications in mind. Accordingly, some aspects of the development and
lifecycle of the applications are controlled, even though they are out of the scope of
the software embedded on a Java Card platform.
In order to achieve a better understanding of the security issues of the Java Card
System, this document provides a precise description of its background and possible
environments, which is the first step to risk analysis. The division of duties and
assignment of responsibilities among the several involved actors (both physical and IT
components) leads to the definition of detailed security policies. Of course, there are
cases where the choice is left to implementers; in all cases, risks and assets at stake are
described to pave the way to security targets (ST).
One of the challenges of writing a Protection Profile for the Java Card technology is to
address in a single description the wide range of choices offered (logical communication
channels with the card, remote invocations of services, object deletion, among others),
and the different security architectures that have been conceived so far (closed
platforms, off-card verification of applications code, embedded verifiers, and so on).
The answer to this challenge is the definition of two main configurations corresponding
to standard use-cases, the Closed Configuration and the Open Configuration. Each
The Closed and Open Configuration address versions 2.2.x and versions 3.0.x Classic
Edition of Java Card Platform specifications. The Closed Configuration addresses Java
Card Systems without post-issuance loading and installation of applets; the Open
Configuration addresses Java Card Systems with full capabilities, in particular post-
issuance content management; the Remote Method Invocation is optional. Both
configurations consider off-card bytecode verification.
The Java Card System - Closed Configuration Protection Profile replaces the Java Card
System Minimal Configuration Protection Profile, version 1.0b, registered under the
reference PP/0303.
The Java Card System - Open Configuration Protection Profile replaces the Java Card
System Standard 2.2 Configuration Protection Profile, version 1.0b, registered under
the reference PP/0304.
A dedicated Protection Profile shall address the Java Card Platform version 3 Connected
Edition.
This chapter provides the identification of the Protection Profile, presents its general structure
and introduces key notions used in the following chapters.
Version: 3.0
Sponsor: Oracle Corporation, 500 Oracle Parkway, Redwood City, CA 94065 USA.
This Protection Profile is conformant to the Common Criteria version 3.1 revision 3.
The minimum assurance level for this Protection Profile is EAL 4 augmented with AVA_VAN.5
Advanced methodical vulnerability analysis and ALC_DVS.2 Sufficiency of security
measures.
1
In this document, any reference to a specific version of Java Card Platform Specification can be replaced by any
newer version of specification. For instance [JCRE22] can be replaced by [JCRE3] but not the inverse.
This Protection Profile applies to evaluations of open Java Card Platforms, that is, smart cards
or similar devices enabled with Java Card technology that support post-issuance downloading
of applications, referred to as Java Card technology-based applets (Java Card applets or
applets). The Java Card technology combines a subset of the Java programming language
with a runtime environment optimized for smart cards and similar small-memory embedded
devices. The main security goal of the Java Card platform is to counter the unauthorized
disclosure or modification of the code and data (keys, PINs, biometric templates, etc) of
applications and platform. In order to achieve this goal, the Java Card System provides strong
security features such as the secure installation mechanism, firewall mechanism, dedicated
API for security services, etc.
Figure 1 shows the typical architecture of a Java Card Platform (JCP), composed of a Smart
Card Platform (SCP), a Java Card System (JCS) and of native code running on top of the SCP.
The SCP is the combination of a Security Integrated Circuit (hereafter the Security IC or
simply the IC) consisting of processing units, security components, I/O ports and
volatile/non-volatile memories, with a native Operating System (hereafter the OS). The Java
Card System implements the Java Card RE, the Java Card VM and the Java Card API along
with the native libraries that supports the Java Card API. The Java Card System provides a
layer between the SCP and the applets space. This layer allows applications written for one
SCP enabled with Java Card technology to run on any other such platform. The applets space
is out of the scope of this Protection Profile.
Native code is usually compiled to the native instruction set of the platform, hence their name.
There are two kinds of native code:
Native Applications: This is native code, which resides in parallel to the Java Card
System and can be used from outside the card in the same way as a Java Card applet.
Native Libraries: This code can be used by the implementation of some Java Card APIs
(e.g. cryptographic libraries) or by native applications. This code cannot be used from
the outside of the card directly.
Application note:
The Additional Native Code block shown in Figure 1 represents all the native code other than
the native application implementing the JCS and the native libraries used by the JCS.
This Protection Profile does not require formal compliance to a specific IC Protection Profile or
a smart card OS Protection Profile but those IC and OS evaluated against [PP0035] and [PP-
ESforSSD] respectively, fully meet the objectives.
2
A product evaluation against this PP stands for a product evaluation claiming conformance to this PP.
1.3 REFERENCES
[JCVM21] Java Card Platform, version 2.1.1 Virtual Machine (JCVM) Specification.
Revision 1.0. May 18, 2000. Published by Sun Microsystems, Inc.
[JCRE21] Java Card Platform 2.1.1 Runtime Environment (Java Card RE)
Specification. Revision 1.0. May 18, 2000. Published by Sun Microsystems,
Inc.
[JCVM22] Java Card Platform, version 2.2 Virtual Machine (Java Card VM)
Specification. June 2002. Published by Sun Microsystems, Inc.
[JCAPI22] Java Card Platform, version 2.2 Application Programming Interface. June
2002. Published by Sun Microsystems, Inc.
[JCVM221] Java Card Platform, version 2.2.1 Virtual Machine (Java Card VM)
Specification. October 2003. Published by Sun Microsystems, Inc.
[JCRE221] Java Card Platform, version 2.2.1 Runtime Environment (Java Card RE)
Specification. October 2003. Published by Sun Microsystems, Inc.
[JCVM222] Java Card Platform, version 2.2.2 Virtual Machine (Java Card VM)
Specification. Beta release, October 2005. Published by Sun
Microsystems, Inc.
[JCRE222] Java Card Platform, version 2.2.2 Runtime Environment (Java Card RE)
Specification. March 2006. Published by Sun Microsystems, Inc.
[JCVM3] Java Card Platform, versions 3.0 (March 2008) and 3.0.1 (April 2009),
Classic Edition, Virtual Machine (Java Card VM) Specification. Published by
Sun Microsystems, Inc.
[JCAPI3] Java Card Platform, versions 3.0 (March 2008) and 3.0.1 (April 2009),
Classic Edition, Application Programming Interface, March 2008. Published
by Sun Microsystems, Inc.
[JCRE3] Java Card Platform, versions 3.0 (March 2008) and 3.0.1 (April 2009),
Classic Edition, Runtime Environment (Java Card RE) Specification. March
2008. Published by Sun Microsystems, Inc.
[JAVASPEC] The Java Language Specification. Third Edition, May 2005. Gosling, Joy,
Steele and Bracha. ISBN 0-321-24678-0.
[JVM] The Java Virtual Machine Specification. Lindholm, Yellin. ISBN 0-201-
43294-3.
[PP-ESforSSD] Embedded Software for Smart Secure Devices Protection Profile, v1.0,
November 27th 2009, ANSSI.
[PP JCS] Java Card Protection Profile Collection, Version 1.0b, August 2003,
registered and certified by the French certification body (ANSSI) under
This chapter defines the Target of Evaluation (TOE) type and describes the main security
features of the TOE, the components of the TOE environment, the TOE life-cycle and TOE
intended usage.
The TOE type in this PP is the Java Card System (Java Card RE, Java Card VM and Java Card
API) along with the additional native code embedded in a Smart Card Platform. The Java Card
System is compliant with Java Card specifications versions 2.2.x or 3 Classic Edition, including
post-issuance installation facilities of applications verified off-card. The TOE may implement
the Java Card Remote Method Invocation functionality, which is optional in this PP. Native
code post-issuance downloading is out of the scope in this PP.
This TOE constitutes the target of the security requirements stated in this Protection Profile. It
defines the perimeter of the security requirements stated in this Protection Profile but does
not define the perimeter of an actual evaluated product (TOE of the ST) that must include the
Smart Card Platform.
The TOE type of the Security Target (ST) that declares conformity to this PP is the Smart Card
Platform (IC and OS) along with the native applications (if any), pre-issuance applets (if any)
and the Java Card System.
Any evaluation of a Smart Secure Device against this PP must include this type of TOE. The
ST writer shall indicate whether JCRMI is implemented in the TOE and whether it is activated
or not. If the TOE provides JCRMI functionality, the full range of SFRs applies. Otherwise, the
ST writer shall ignore JCRMI dedicated threats, objectives and requirements.
Application note:
In case where the TOE of the ST includes additional native code that provides security
features, the writer of the ST that complies with this PP shall add specific security objectives
and security functional requirements for the TOE. He shall then provide full Common Criteria
evidence that the additional native code satisfies all these new requirements. In addition,
since the TOE of the ST includes the Smart Card Platform which belongs to the operational
The Java Card System Open Configuration considered in this Protection Profile implements
Java Card Specifications versions 2.2.x or 3 Classic Edition and allows post-issuance
downloading of applications that have been previously verified by an off-card trusted IT
component.
Figure 2 shows the Java Card System and the relationship with the environment for applet
installation purposes in two scenarios: one relying on off-card verification (black lines),
described hereafter, the other one relying on on-card verification by the installer (dotted red
lines).
The loading of a file into the card embodies two main steps: First an authentication step by
which the card issuer and the card recognize each other, for instance by using a type of
cryptographic certification. Once the identification step is accomplished, the CAP file is
transmitted to the card. Due to resource limitations, usually the file is split by the card issuer
into a list of Application Protocol Data Units (APDUs), which are in turn sent to the card. Once
loaded into the card the file is linked, what makes it possible in turn to install, if defined,
instances of any of the applets defined in the file.
3
The converter is defined in the specifications [JCVM221] as the off-card component of the Java Card virtual
machine.
The linking process consists of a rearrangement of the information contained in the CAP file in
order to speed up the execution of the applications. There is a first step where indirect
external and internal references contained in the file are resolved by replacing those
references with direct ones. This is what is referred to as the resolution step in the [JVM]. In
the next step, called the preparation step in [JVM], the static field image4 and the statically
initialized arrays defined in the file are allocated. Those arrays in turn are also initialized, thus
giving rise to what shall constitute the initial state of the package for the embedded
interpreter.
During the installation process the applet is registered on the card by using an application
identifier (AID). This AID will allow the identification of unique applet instances within the
card. In particular, the AID is used for selecting the applet instance for execution. In some
cases, the actual installation (and registration) of applets is postponed; in the same vein, a
package may contain several applets, and some of them might never be installed. Installation
is then usually separated from the process of loading and linking a CAP file on the card.
4
The memory area containing the static fields of the file.
The Java Card VM is the bytecode interpreter as specified in [JCVM22]. The Java Card RE is
responsible for card resource management, communication, applet execution, on-card system
and applet security. The Java Card API provides classes and interfaces to the Java Card
applets. It defines the calling conventions by which an applet may access the Java Card RE
and native services such as, I/O management functions, PIN and cryptographic specific
management and the exceptions mechanism.
While the Java Card VM is responsible for ensuring language-level security, the Java Card RE
provides additional security features for Java Card technology-enabled devices. Applets from
different vendors can coexist in a single card, and they can even share information. An applet,
however, is usually intended to store highly sensitive information, so the sharing of that
information must be carefully limited. In the Java Card platform, applet isolation is achieved
through the applet firewall mechanism ([JCRE22] and [JCRE3] 6.1). That mechanism
confines an applet to its own designated memory area, thus each applet is prevented from
accessing fields and operations of objects owned by other applets, unless a shareable
interface is explicitly provided (by the applet who owns it) for allowing access to that
information. The Java Card RE allows sharing using the concept of shareable interface
objects (SIO) and static public variables. Java Card VM dynamically enforces the firewall, that
is, at runtime. However applet isolation cannot be entirely granted by the firewall mechanism
if certain integrity conditions are not satisfied by the applications loaded on the card. Those
conditions can be statically verified to hold by a bytecode verifier ([JCRE22], 6.1.1).
The Java Card VM ensures that the only way for applets to access any resources are either
through the Java Card RE or through the Java Card API (or other vendor-specific APIs). This
objective can only be guaranteed if applets are correctly typed (all the must clauses imposed
in chapter 7 of [JCVM22] on the bytecodes and the correctness of the CAP file format are
satisfied).
The Java Card System compliant with Java Card specification versions 2.2.x or 3 Classic
Edition supports the Java Card System Remote Method Invocation (JCRMI) and logical
channels.
JCRMI provides a mechanism for a client application running on the CAD platform to invoke a
method on a remote object on the card. The CAD issues commands to the card, which in turn
Logical channels allow a terminal to open multiple sessions into the smart card, one session
per logical channel ([JCRE22], 4). Commands may be issued on a logical channel to instruct
the card either to open or to close a logical channel. An applet instance that is selected to be
active on a channel shall process all the commands issued to that channel. The platform also
introduces the possibility for an applet instance to be selected on multiple logical channels at
the same time, or accepting other applets belonging to the same package to be selected
simultaneously. These applets are referred to as multiselectable. A non-multiselectable applet
can be active at most on one channel. Applets within a package are either all multiselectable
or all non-multiselectable.
Java Card System 2.2.2 also provides support for biometric templates management, external
memory access and contactless I/O interface.
Note that the optional features Extended memory and biometric templates are not part of
the TOE since they are not included in the Java Card System 2.2.1. Nonetheless, they are
detailed in Appendix 2 for informative purposes.
Lastly, Java Card System 3 Classic Edition provides support for ETSI defined SWP protocol for
contactless communication, and for independent contacted and contactless interfaces.
Moreover, it provides support for USB connected interface communication.
The following sections further describe the components involved in the environment of the
Java Card System. The role they play will help in understanding the importance of the
assumptions on the environment of the TOE.
The bytecode verifier is a program that performs static checks on the bytecodes of the
methods of a CAP file prior to the execution of the file on the card. Bytecode verification is a
key component of security: applet isolation, for instance, depends on the file satisfying the
properties a verifier checks to hold. A method of a CAP file that has been verified shall not
contain, for instance, an instruction that allows forging a memory address or an instruction
that makes improper use of a return address as if it were an object reference. In other words,
bytecodes are verified to hold up to the intended use to which they are defined. Bytecode
verification could be performed totally or partially dynamically. No standard procedure in that
concern has yet been recognized. Furthermore, different approaches have been proposed for
the implementation of bytecode verifiers, most notably data flow analysis, model checking and
lightweight bytecode verification, this latter being an instance of what is known as proof
carrying code. The actual set of checks performed by the verifier is implementation-
dependent, but it is required that it should at least enforce all the must clauses imposed in
[JCVM22] on the bytecodes and the correctness of the CAP files format.
The card manager is an application with specific rights, which is responsible for the
administration of the smart card. This component will in practice be tightly connected with the
Java Card RE. The card manager is in charge of the life cycle of the whole card, as well as the
installed applications (applets). It may have other roles (such as the management of security
domains and enforcement of the card issuer security policies) that we do not detail here, as
they are not in the scope of the TOE and are implementationdependent.
The card managers role is also to manage and control the communication between the card
and the card acceptance device (CAD) or the proximity-coupling device (PCD)5. It is the
controller of the card, but relies on the TOE to manage the runtime of client applets.
A candidate for this component is the Global Platform card manager [GP].
The SCP is composed of an IC with a Dedicated Software (DS) if any and a native OS. SCP
provides memory management functions, I/O functions that are compliant with ISO
standards, transaction facilities and secure (shielded, native) implementation of cryptographic
functions. The SCP shall be evaluated along with the TOE in a product evaluation6.
5
The acronym CAD is used here and throughout this specification to refer to both types of card readers - the
conventional Card Acceptance Device (CAD) for contacted I/O interfaces and the Proximity Coupling Device (PCD)
for contactless interfaces.
6
This is true for a product which security target is claiming conformance to this PP.
The Java Card System (the TOE) life cycle is part of the product life cycle, i.e. the Java Card
platform with applications, which goes from product development to its usage by the final
user. The product life cycle phases are those detailed in Figure 3. We refer to [PP0035] for a
thorough description of Phases 1 to 7:
Phases 1 and 2 compose the product development: Embedded Software (IC Dedicated
Software, OS, Java Card System, other platform components such as Card Manager,
Applets) and IC development.
Phase 3 and Phase 4 correspond to IC manufacturing and packaging, respectively.
Some IC pre-personalisation steps may occur in Phase 3.
Phase 5 concerns the embedding of software components within the IC.
Phase 6 is dedicated to the product personalisation prior final use.
Phase 7 is the product operational phase.
JCS Phase 2
Delivery Security IC Development
Phase 4
Security IC packaging
TOE Storage
JCS Storage, Phase 5
pre-perso, Composite Product Integration
testing
JCS Phase 6
Personalisation Personalisation
TOE Storage
JCS Final usage Phase 7
Operational Usage
JCS Development is performed during Phase 1. This includes JCS conception, design,
implementation, testing and documentation. The JCS development shall fulfill requirements of
the final product, including conformance to Java Card Specifications, and recommendations of
the SCP user guidance. The JCS development shall occur in a controlled environment that
avoids disclosure of source code, data and any critical documentation and that guarantees the
integrity of these elements. The evaluation of a product against this PP shall include the JCS
development environment.
The delivery of the JCS may occur either during Security IC Manufacturing (Phase 3) or during
Composite Product Integration (Phase 5). It is also possible that part of the JCS is delivered in
Phase 3 and the rest is delivered in Phase 5. Delivery and acceptance procedures shall
guarantee the authenticity, the confidentiality and integrity of the exchanged pieces. JCS
delivery shall usually involve encrypted signed sending and it supposes the previous exchange
of public keys. The evaluation of a product against this PP shall include the delivery process.
In Phase 5, the Composite Product Integrator may store, pre-personalize the JCS and
potentially conduct tests on behalf of the JCS developer. The Composite Product Integration
environment shall protect the integrity and confidentiality of the JCS and of any related
material, for instance test suites. Note that (part of) JCS storage in Phase 5 implies a product
delivery after Phase 5. Hence, the evaluation of such product against this PP shall include the
Composite Product Integrator environment (may be more than one if there are many
integrators).
The JCS final usage environment is that of the product where the JCS is embedded in. It
covers a wide spectrum of situations that cannot be covered by evaluations. The JCS and the
product shall provide the full set of security functionalities to avoid abuse of the product by
untrusted entities.
Application note:
The Security Target writer shall specify the life cycle of the product, the JCS delivery point and
the product delivery point. The product delivery point may arise at the end of Phase 3, 4, 5 or
6 depending on the product itself. Note that JCS delivery precedes product delivery. During
product evaluation against this Protection Profile, the ALC security assurance requirements
apply to the whole product life cycle up to delivery.
Smart cards are used as data carriers that are secure against forgery and tampering as well as
personal, highly reliable, small size devices capable of replacing paper transactions by
electronic data processing. Data processing is performed by a piece of software embedded in
the smart card chip, called an application.
Applications installed on a Java Card platform can be selected for execution when the card
communicates with a card reader.
Notice that these applications may contain other confidentiality (or integrity) sensitive data
than usual cryptographic keys and PINs; for instance, passwords or pass-phrases are as
confidential as the PIN, or the balance of an electronic purse.
This Protection Profile is CC Part 2 [CC2] and CC Part 3 [CC3] conformant of Common Criteria
version 3.1, revision 3.
The minimum assurance level for the evaluation of a Java Card Platform with a TOE
conformant to this PP is EAL4 augmented with AVA_VAN.5 Advanced methodical vulnerability
analysis and ALC_DVS.2 Sufficiency of security measures.
This Protection Profile does not claim conformance to any other Protection Profile.
The conformance to this PP, required for the Security Targets and Protection Profiles claiming
conformance to it, is demonstrable, as defined in CC Part 1 [CC1].
This chapter describes the main security issues of the Java Card System and its environment
addressed in this Protection Profile, called security aspects, in a CC-independent way. In
addition to this, they also give a semi-formal framework to express the CC security
environment and objectives of the TOE. They can be instantiated as assumptions, threats,
objectives (for the TOE and the environment) or organizational security policies. For instance,
we will define hereafter the following aspect:
#.OPERATE (1) The TOE must ensure continued correct operation of its security functions. (2)
The TOE must also return to a well-defined valid state before a service request in case of failure
during its operation.
TSFs must be continuously active in one way or another; this is called OPERATE. The
Protection Profile may include an assumption, called A.OPERATE, stating that it is assumed
that the TOE ensures continued correct operation of its security functions, and so on.
However, it may also include a threat, called T.OPERATE, to be interpreted as the negation
of the statement #.OPERATE. In this example, this amounts to stating that an attacker may
try to circumvent some specific TSF by temporarily shutting it down. The use of OPERATE is
intended to ease the understanding of this document.
This section presents security aspects that will be used in the remainder of this document.
Some being quite general, we give further details, which are numbered for easier cross-
reference within the document. For instance, the two parts of #.OPERATE, when instantiated
with an objective O.OPERATE, may be met by separate SFRs in the rationale. The
numbering then adds further details on the relationship between the objective and those
SFRs.
4.1 CONFIDENTIALITY
#.CONFID-APPLI-DATA Application data must be protected against unauthorized disclosure.
This concerns logical attacks at runtime in order to gain read access
to other applications data.
4.2 INTEGRITY
#.INTEG-APPLI-CODE Application code must be protected against unauthorized
modification. This concerns logical attacks at runtime in order to gain
write access to the memory zone where executable code is stored. In
post-issuance application loading, this threat also concerns the
modification of application code in transit to the card.
#.NATIVE Because the execution of native code is outside of the JCS TSF scope,
it must be secured so as to not provide ways to bypass the TSFs of
the JCS. Loading of native code, which is as well outside those TSFs,
is submitted to the same requirements. Should native software be
privileged in this respect, exceptions to the policies must include a
rationale for the new security framework they introduce.
Bytecode verification includes checking at least the following properties: (3) bytecode
instructions represent a legal set of instructions used on the Java Card platform; (4) adequacy
of bytecode operands to bytecode semantics; (5) absence of operand stack
overflow/underflow; (6) control flow confinement to the current method (that is, no control
jumps to outside the method); (7) absence of illegal data conversion and reference forging;
(8) enforcement of the private/public access modifiers for class and class members; (9)
validity of any kind of reference used in the bytecodes (that is, any pointer to a bytecode,
class, method, object, local variable, etc actually points to the beginning of piece of data of
the expected kind); (10) enforcement of rules for binary compatibility (full details are given in
[JCVM22], [JVM], [JCBV]). The actual set of checks performed by the verifier is
implementation-dependent, but shall at least enforce all the must clauses imposed in
[JCVM22] on the bytecodes and the correctness of the CAP files format.
As most of the actual Java Card VMs do not perform all the required checks at runtime, mainly
because smart cards lack memory and CPU resources, CAP file verification prior to execution is
mandatory. On the other hand, there is no requirement on the precise moment when the
verification shall actually take place, as far as it can be ensured that the verified file is not
7
This concerns in particular the arrays, which are considered as instances of the Object class in the Java
programming language.
Verification off-card is useless if the application package is modified afterwards. The usage of
cryptographic certifications coupled with the verifier in a secure module is a simple means to
prevent any attempt of modification between package verification and package installation.
Once a verification authority has verified the package, it signs it and sends it to the card. Prior
to the installation of the package, the card verifies the signature of the package, which
authenticates the fact that it has been successfully verified. In addition to this, a secured
communication channel is used to communicate it to the card, ensuring that no modification
has been performed on it.
Alternatively, the card itself may include a verifier and perform the checks prior to the
effective installation of the applet or provide means for the bytecodes to be verified
dynamically. On-card bytecode verifier is out of the scope of this Protection Profile.
Beyond functional issues, the installer ensures at least a property that matters for security:
the loading order shall guarantee that each newly loaded package references only packages
that have been already loaded on the card. The linker can ensure this property because the
Java Card platform does not support dynamic downloading of classes.
#.INSTALL (1) The TOE must be able to return to a safe and consistent state
when the installation of a package or an applet fails or be cancelled
(whatever the reasons). (2) Installing an applet must have no effect
on the code and data of already installed applets. The installation
procedure should not be used to bypass the TSFs. In short, it is an
atomic operation, free of harmful effects on the state of the other
#.SID (1) Users and subjects of the TOE must be identified. (2) The identity
of sensitive users and subjects associated with administrative and
privileged roles must be particularly protected; this concerns the Java
Card RE, the applets registered on the card, and especially the
default applet and the currently selected applet (and all other active
applets in Java Card System 2.2.x). A change of identity, especially
standing for an administrative role (like an applet impersonating the
Java Card RE), is a severe violation of the Security Functional
Requirements (SFR). Selection controls the access to any data
exchange between the TOE and the CAD and therefore, must be
protected as well. The loading of a package or any exchange of data
through the APDU buffer (which can be accessed by any applet) can
lead to disclosure of keys, application code or data, and so on.
#OBJ-DELETION (1) Deallocation of objects should not introduce security holes in the
form of references pointing to memory zones that are not longer in
use, or have been reused for other purposes. Deletion of collection of
objects should not be maliciously used to circumvent the TSFs.
(2) Erasure, if deemed successful, shall ensure that the deleted class
instance is no longer accessible.
#DELETION (1) Deletion of installed applets (or packages) should not introduce
security holes in the form of broken references to garbage collected
code or data, nor should they alter integrity or confidentiality of
remaining applets. The deletion procedure should not be maliciously
used to bypass the TSFs. (2) Erasure, if deemed successful, shall
ensure that any data owned by the deleted applet is no longer
accessible (shared objects shall either prevent deletion or be made
inaccessible). A deleted applet cannot be selected or receive APDU
commands. Package deletion shall make the code of the package no
longer available for execution. (3) Power failure or other failures
during the process shall be taken into account in the implementation
so as to preserve the SFRs. This does not mandate, however, the
process to be atomic. For instance, an interrupted deletion may result
in the loss of user data, as long as it does not violate the SFRs.
The deletion procedure and its characteristics (whether deletion is
either physical or logical, what happens if the deleted application was
the default applet, the order to be observed on the deletion steps)
are implementation-dependent. The only commitment is that deletion
shall not jeopardize the TOE (or its assets) in case of failure (such as
power shortage).
Deletion of a single applet instance and deletion of a whole package
are functionally different operations and may obey different security
rules. For instance, specific packages can be declared to be
undeletable (for instance, the Java Card API packages), or the
dependency between installed packages may forbid the deletion (like
4.6 SERVICES
#.ALARM The TOE shall provide appropriate feedback upon detection of a
potential security violation. This particularly concerns the type errors
detected by the bytecode verifier, the security exceptions thrown by
the Java Card VM, or any other security-related event occurring
during the execution of a TSF.
#.OPERATE (1) The TOE must ensure continued correct operation of its security
functions. (2) In case of failure during its operation, the TOE must
also return to a well-defined valid state before the next service
request.
#.RESOURCES The TOE controls the availability of resources for the applications and
enforces quotas and limitations in order to prevent unauthorized
denial of service or malfunction of the TSFs. This concerns both
execution (dynamic memory allocation) and installation (static
memory allocation) of applications and packages.
#.CIPHER The TOE shall provide a means to the applications for ciphering
sensitive data, for instance, through a programming interface to low-
level, highly secure cryptographic services. In particular, those
services must support cryptographic algorithms consistent with
cryptographic usage policies and standards.
#.PIN-MNGT The TOE shall provide a means to securely manage PIN objects. This
includes: (1) Atomic update of PIN value and try counter, (2) No
rollback on the PIN-checking function, (3) Keeping the PIN value
(once initialized) secret (for instance, no clear-PIN-reading function),
(4) Enhanced protection of PINs security attributes (state, try
counter) in confidentiality and integrity.
#.SCP The smart card platform must be secure with respect to the SFRs.
Then: (1) After a power loss, RF signal loss or sudden card removal
prior to completion of some communication protocol, the SCP will
allow the TOE on the next power up to either complete the
interrupted operation or revert to a secure state. (2) It does not allow
the SFRs to be bypassed or altered and does not allow access to
5.1 ASSETS
Assets may overlap, in the sense that distinct assets may refer (partially or wholly) to the
same piece of information or data. For example, a piece of software may be either a piece of
source code (one asset) or a piece of compiled code (another asset), and may exist in various
formats at different stages of its development (digital supports, printed paper). This
separation is motivated by the fact that a threat may concern one form at one stage, but be
meaningless for another form at another stage.
The assets to be protected by the TOE are listed below. They are grouped according to
whether it is data created by and for the user (User data) or data created by and for the TOE
(TSF data). For each asset it is specified the kind of dangers that weigh on it.
D.APP_CODE
The code of the applets and libraries loaded on the card.
To be protected from unauthorized modification.
D.APP_C_DATA
Confidential sensitive data of the applications, like the data contained in an object, a static
field of a package, a local variable of the currently executed method, or a position of the
operand stack.
To be protected from unauthorized disclosure.
D.APP_I_DATA
Integrity sensitive data of the applications, like the data contained in an object, a static
field of a package, a local variable of the currently executed method, or a position of the
operand stack.
To be protected from unauthorized modification.
D.APP_KEYs
Cryptographic keys owned by the applets.
To be protected from unauthorized disclosure and modification.
D.API_DATA
Private data of the API, like the contents of its private fields.
To be protected from unauthorized disclosure and modification.
D.CRYPTO
Cryptographic data used in runtime cryptographic computations, like a seed used to
generate a key.
To be protected from unauthorized disclosure and modification.
D.JCS_CODE
The code of the Java Card System.
To be protected from unauthorized disclosure and modification.
D.JCS_DATA
The internal runtime data areas necessary for the execution of the Java Card VM, such as,
for instance, the frame stack, the program counter, the class of an object, the length
allocated for an array, any pointer used to chain data-structures.
To be protected from unauthorized disclosure or modification.
D.SEC_DATA
The runtime security data of the Java Card RE, like, for instance, the AIDs used to identify
the installed applets, the currently selected applet, the current context of execution and the
owner of each object.
To be protected from unauthorized disclosure and modification.
5.2 THREATS
This section introduces the threats to the assets against which specific protection within the
TOE or its environment is required. Several groups of threats are distinguished according to
the configuration chosen for the TOE and the means used in the attack. The classification is
also inspired by the components of the TOE that are supposed to counter each threat.
5.2.1 CONFIDENTIALITY
T.CONFID-APPLI-DATA
The attacker executes an application to disclose data belonging to another application. See
#.CONFID-APPLI-DATA for details.
Directly threatened asset(s): D.APP_C_DATA, D.PIN and D.APP_KEYs.
T.CONFID-JCS-DATA
The attacker executes an application to disclose data belonging to the Java Card System.
See #.CONFID-JCS-DATA for details.
Directly threatened asset(s): D.API_DATA, D.SEC_DATA, D.JCS_DATA and D.CRYPTO.
5.2.2 INTEGRITY
T.INTEG-APPLI-CODE
The attacker executes an application to alter (part of) its own code or another application's
code. See #.INTEG-APPLI-CODE for details.
Directly threatened asset(s): D.APP_CODE.
T.INTEG-APPLI-CODE.LOAD
The attacker modifies (part of) its own or another application code when an application
package is transmitted to the card for installation. See #.INTEG-APPLI-CODE for details.
Directly threatened asset(s): D.APP_CODE.
T.INTEG-APPLI-DATA
The attacker executes an application to alter (part of) another application's data. See
#.INTEG-APPLI-DATA for details.
Directly threatened asset(s): D.APP_I_DATA, D.PIN and D.APP_KEYs.
T.INTEG-APPLI-DATA.LOAD
The attacker modifies (part of) the initialization data contained in an application package
when the package is transmitted to the card for installation. See #.INTEG-APPLI-DATA for
details.
Directly threatened asset(s): D.APP_I_DATA and D_APP_KEY.
T.INTEG-JCS-CODE
The attacker executes an application to alter (part of) the Java Card System code. See
#.INTEG-JCS-CODE for details.
Directly threatened asset(s): D.JCS_CODE.
T.INTEG-JCS-DATA
The attacker executes an application to alter (part of) Java Card System or API data. See
#.INTEG-JCS-DATA for details.
Directly threatened asset(s): D.API_DATA, D.SEC_DATA, D.JCS_DATA and D.CRYPTO.
T.SID.1
An applet impersonates another application, or even the Java Card RE, in order to gain
illegal access to some resources of the card or with respect to the end user or the terminal.
See #.SID for details.
Directly threatened asset(s): D.SEC_DATA (other assets may be jeopardized should this
attack succeed, for instance, if the identity of the JCRE is usurped), D.PIN and
D.APP_KEYs.
T.SID.2
The attacker modifies the TOE's attribution of a privileged role (e.g. default applet and
currently selected applet), which allows illegal impersonation of this role. See #.SID for
further details.
Directly threatened asset(s): D.SEC_DATA (any other asset may be jeopardized should this
attack succeed, depending on whose identity was forged).
T.EXE-CODE.1
An applet performs an unauthorized execution of a method. See #.EXE-JCS-CODE and
#.EXE-APPLI-CODE for details.
Directly threatened asset(s): D.APP_CODE.
T.EXE-CODE.2
An applet performs an execution of a method fragment or arbitrary data. See #.EXE-JCS-
CODE and #.EXE-APPLI-CODE for details.
Directly threatened asset(s): D.APP_CODE.
T.EXE-CODE-REMOTE
The attacker performs an unauthorized remote execution of a method from the CAD. See
#.EXE-APPLI-CODE for details.
Directly threatened asset(s): D.APP_CODE.
Application Note:
This threat concerns versions 2.2.x and 3 Classic Edition of the Java Card RMI, which allow
external users (that is, other than on-card applets) to trigger the execution of code
belonging to an on-card applet. On the contrary, T.EXE-CODE.1 is restricted to the applets
under the TSF.
This threat applies only if the TOE provides JCRMI functionality.
T.RESOURCES
An attacker prevents correct operation of the Java Card System through consumption of
some resources of the card: RAM or NVRAM. See #.RESOURCES for details.
Directly threatened asset(s): D.JCS_DATA.
T.DELETION
The attacker deletes an applet or a package already in use on the card, or uses the
deletion functions to pave the way for further attacks (putting the TOE in an insecure
state). See #.DELETION for details).
Directly threatened asset(s): D.SEC_DATA and D.APP_CODE.
T.INSTALL
The attacker fraudulently installs post-issuance of an applet on the card. This concerns
either the installation of an unverified applet or an attempt to induce a malfunction in the
TOE through the installation process. See #.INSTALL for details.
Directly threatened asset(s): D.SEC_DATA (any other asset may be jeopardized should this
attack succeed, depending on the virulence of the installed application).
5.2.7 SERVICES
T.OBJ-DELETION
The attacker keeps a reference to a garbage collected object in order to force the TOE to
execute an unavailable method, to make it to crash, or to gain access to a memory
containing data that is now being used by another application. See #.OBJ-DELETION for
further details.
Directly threatened asset(s): D.APP_C_DATA, D.APP_I_DATA and D.APP_KEYs.
5.2.8 MISCELLANEOUS
T.PHYSICAL
The attacker discloses or modifies the design of the TOE, its sensitive data or application
code by physical (opposed to logical) tampering means. This threat includes IC failure
analysis, electrical probing, unexpected tearing, and DPA. That also includes the
modification of the runtime execution of Java Card System or SCP software through
alteration of the intended execution order of (set of) instructions through physical
tampering techniques.
This section describes the organizational security policies to be enforced with respect to the
TOE environment.
OSP.VERIFICATION
This policy shall ensure the consistency between the export files used in the verification
and those used for installing the verified file. The policy must also ensure that no
modification of the file is performed in between its verification and the signing by the
verification authority. See #.VERIFICATION for details.
If the application development guidance provided by the platform developer contains
recommandations related to the isolation property of the platform, this policy shall also
ensure that the verification authority checks that these recommandations are applied in the
application code.
5.4 ASSUMPTIONS
This section introduces the assumptions made on the environment of the TOE.
A.APPLET
Applets loaded post-issuance do not contain native methods. The Java Card specification
explicitly "does not include support for native methods" ([JCVM22], 3.3) outside the API.
A.DELETION
Deletion of applets through the card manager is secure. Refer to #.DELETION for details
on this assumption.
A.VERIFICATION
All the bytecodes are verified at least once, before the loading, before the installation or
before the execution, depending on the card capabilities, in order to ensure that each
bytecode is valid at execution time.
6.1.1 IDENTIFICATION
O.SID
The TOE shall uniquely identify every subject (applet, or package) before granting it access
to any service.
6.1.2 EXECUTION
O.FIREWALL
The TOE shall ensure controlled sharing of data containers owned by applets of different
packages or the JCRE and between applets and the TSFs. See #.FIREWALL for details.
O.GLOBAL_ARRAYS_CONFID
The TOE shall ensure that the APDU buffer that is shared by all applications is always
cleaned upon applet selection.
The TOE shall ensure that the global byte array used for the invocation of the install
method of the selected applet is always cleaned after the return from the install method.
O.GLOBAL_ARRAYS_INTEG
The TOE shall ensure that only the currently selected applications may have a write access
to the APDU buffer and the global byte array used for the invocation of the install method
of the selected applet.
O.NATIVE
The only means that the Java Card VM shall provide for an application to execute native
code is the invocation of a method of the Java Card API, or any additional API. See
#.NATIVE for details.
O.OPERATE
The TOE must ensure continued correct operation of its security functions. See #.OPERATE
for details.
O.REALLOCATION
The TOE shall ensure that the re-allocation of a memory block for the runtime areas of the
Java Card VM does not disclose any information that was previously stored in that block.
6.1.3 SERVICES
O.ALARM
The TOE shall provide appropriate feedback information upon detection of a potential
security violation. See #.ALARM for details.
O.CIPHER
The TOE shall provide a means to cipher sensitive data for applications in a secure way. In
particular, the TOE must support cryptographic algorithms consistent with cryptographic
usage policies and standards. See #.CIPHER for details.
O.KEY-MNGT
The TOE shall provide a means to securely manage cryptographic keys. This concerns the
correct generation, distribution, access and destruction of cryptographic keys. See #.KEY-
MNGT.
O.PIN-MNGT
The TOE shall provide a means to securely manage PIN objects. See #.PIN-MNGT for
details.
Application Note:
PIN objects may play key roles in the security architecture of client applications. The way
they are stored and managed in the memory of the smart card must be carefully
considered, and this applies to the whole object rather than the sole value of the PIN. For
instance, the try counter's value is as sensitive as that of the PIN.
O.REMOTE
The TOE shall provide restricted remote access from the CAD to the services implemented
by the applets on the card. This particularly concerns the Java Card RMI services
introduced in version 2.2.x of the Java Card platform and that became optional in version 3
Classic Edition.
Application Note:
This objective applies only if the TOE provides JCRMI functionality.
O.TRANSACTION
The TOE must provide a means to execute a set of operations atomically. See
#.TRANSACTION for details.
O.OBJ-DELETION
The TOE shall ensure the object deletion shall not break references to objects. See #.OBJ-
DELETION for further details.
O.DELETION
The TOE shall ensure that both applet and package deletion perform as expected. See
#.DELETION for details.
O.LOAD
The TOE shall ensure that the loading of a package into the card is safe.
Besides, for code loaded post-issuance, the TOE shall verify the integrity and authenticity
evidences generated during the verification of the application package by the verification
authority. This verification by the TOE shall occur during the loading or later during the
install process.
Application Note:
Usurpation of identity resulting from a malicious installation of an applet on the card may
also be the result of perturbing the communication channel linking the CAD and the card.
Even if the CAD is placed in a secure environment, the attacker may try to capture,
duplicate, permute or modify the packages sent to the card. He may also try to send one of
its own applications as if it came from the card issuer. Thus, this objective is intended to
ensure the integrity and authenticity of loaded CAP files.
O.INSTALL
The TOE shall ensure that the installation of an applet performs as expected (See
#.INSTALL for details).
Besides, for code loaded post-issuance, the TOE shall verify the integrity and authenticity
evidences generated during the verification of the application package by the verification
authority. If not performed during the loading process, this verification by the TOE shall
occur during the install process.
OE.APPLET
No applet loaded post-issuance shall contain native methods.
OE.SCP.IC
The SCP shall provide all IC security features against physical attacks.
This security objective for the environment refers to the point (7) of the security aspect
#.SCP:
o It is required that the IC is designed in accordance with a well-defined set of policies
and Standards (likely specified in another protection profile), and will be tamper resistant to
actually prevent an attacker from extracting or altering security data (like cryptographic
keys) by using commonly employed techniques (physical probing and sophisticated analysis
of the chip). This especially matters to the management (storage and operation) of
cryptographic keys.
OE.SCP.RECOVERY
If there is a loss of power, or if the smart card is withdrawn from the CAD while an
operation is in progress, the SCP must allow the TOE to eventually complete the
interrupted operation successfully, or recover to a consistent and secure state.
This security objective for the environment refers to the security aspect #.SCP(1): The
smart card platform must be secure with respect to the SFRs. Then after a power loss or
sudden card removal prior to completion of some communication protocol, the SCP will
allow the TOE on the next power up to either complete the interrupted operation or revert
to a secure state.
OE.SCP.SUPPORT
The SCP shall support the TSFs of the TOE.
This security objective for the environment refers to the security aspects 2, 3, 4 and 5 of
#.SCP:
(2) It does not allow the TSFs to be bypassed or altered and does not allow access to other
low-level functions than those made available by the packages of the API. That includes
the protection of its private data and code (against disclosure or modification) from the
Java Card System.
(3) It provides secure low-level cryptographic processing to the Java Card System.
(4) It supports the needs for any update to a single persistent object or class field to be
atomic, and possibly a low-level transaction mechanism.
OE.VERIFICATION
All the bytecodes shall be verified at least once, before the loading, before the installation
or before the execution, depending on the card capabilities, in order to ensure that each
bytecode is valid at execution time. See #.VERIFICATION for details.
Additionally, the applet shall follow all the recommendations, if any, mandated in the
platform guidance for maintaining the isolation property of the platform.
Application Note:
Constraints to maintain the isolation property of the platform are provided by the platform
developer in application development guidance. The constraints apply to all application
code loaded in the platform.
OE.CODE-EVIDENCE
For application code loaded pre-issuance, evaluated technical measures implemented by
the TOE or audited organizational measures must ensure that loaded application has not
been changed since the code verifications required in OE.VERIFICATION.
For application code loaded post-issuance and verified off-card according to the
requirements of OE.VERIFICATION, the verification authority shall provide digital evidence
to the TOE that the application code has not been modified after the code verification and
that he is the actor who performed code verification.
For application code loaded post-issuance and partially or entirely verified on-card,
technical measures must ensure that the verification required in OE.VERIFICATION are
performed. On-card bytecode verifier is out of the scope of this Protection Profile.
Application Note:
For application code loaded post-issuance and verified off-card, the integrity and
authenticity evidence can be achieved by electronic signature of the application code, after
code verification, by the actor who performed verification.
6.3.1.1 CONFIDENTIALITY
6.3.1.2 INTEGRITY
T.SID.1 As impersonation is usually the result of successfully disclosing and modifying some
assets, this threat is mainly countered by the objectives concerning the isolation of
application data (like PINs), ensured by the (O.FIREWALL). Uniqueness of subject-identity
(O.SID) also participates to face this threat. It should be noticed that the AIDs, which are
used for applet identification, are TSF data.
In this configuration, usurpation of identity resulting from a malicious installation of an
applet on the card is covered by the objective O.INSTALL.
The installation parameters of an applet (like its name) are loaded into a global array that
is also shared by all the applications. The disclosure of those parameters (which could be
used to impersonate the applet) is countered by the objectives
O.GLOBAL_ARRAYS_CONFID and O.GLOBAL_ARRAYS_INTEG.
T.SID.2 This is covered by integrity of TSF data, subject-identification (O.SID), the firewall
(O.FIREWALL) and its good working order (O.OPERATE).
The objective O.INSTALL contributes to counter this threat by ensuring that installing an
applet has no effect on the state of other applets and thus can't change the TOE's
attribution of privileged roles.
The objectives OE.SCP.RECOVERY and OE.SCP.SUPPORT are intended to support the
O.OPERATE objective of the TOE, so they are indirectly related to the threats that this
latter objective contributes to counter.
T.NATIVE This threat is countered by O.NATIVE which ensures that a Java Card applet can
only access native methods indirectly that is, through an API. OE.APPLET also covers this
threat by ensuring that no native applets shall be loaded in post-issuance. In addition to
this, the bytecode verifier also prevents the program counter of an applet to jump into a
piece of native code by confining the control flow to the currently executed method
(OE.VERIFICATION).
T.DELETION This threat is covered by the O.DELETION security objective which ensures that
both applet and package deletion perform as expected.
The objective OE.CARD-MANAGEMENT controls the access to card management functions
and thus contributes to cover this threat.
T.INSTALL This threat is covered by the security objective O.INSTALL which ensures that the
installation of an applet performs as expected and the security objectives O.LOAD which
ensures that the loading of a package into the card is safe.
The objective OE.CARD-MANAGEMENT controls the access to card management functions
and thus contributes to cover this threat.
6.3.1.7 SERVICES
6.3.1.8 MISCELLANEOUS
T.PHYSICAL Covered by OE.SCP.IC. Physical protections rely on the underlying platform and
are therefore an environmental issue.
A.APPLET This assumption is upheld by the security objective for the operational
environment OE.APPLET which ensures that no applet loaded post-issuance shall contain
native methods.
Organisational Security
Security Objectives Rationale
Policies
OE.VERIFICATION, O.LOAD, OE.CODE- Section
OSP.VERIFICATION
EVIDENCE 6.3.2
Group Description
The CoreG_LC contains the requirements concerning the runtime
environment of the Java Card System implementing logical channels.
Core with
This includes the firewall policy and the requirements related to the
Logical
Java Card API. Logical channels are a Java Card specification version
Channels
2.2 feature. This group is the union of requirements from the Core
(CoreG_LC)
(CoreG) and the Logical channels (LCG) groups defined in [PP/0305]
(cf. Java Card System Protection Profile Collection [PP JCS]).
The InstG contains the security requirements concerning the
installation of post-issuance applications. It does not address card
Installation
management issues in the broad sense, but only those security
(InstG)
aspects of the installation procedure that are related to applet
execution.
The ADELG contains the security requirements for erasing installed
Applet deletion
applets from the card, a feature introduced in Java Card specification
(ADELG)
version 2.2.
The RMIG contains the security requirements for the remote method
invocation feature, which provides a new protocol of communication
Remote Method
between the terminal and the applets. This feature was introduced in
Invocation
Java Card specification version 2.2 and became optional in Java Card
(RMI)
specification version 3 Classic Edition. This group of SFRs applies only
if the TOE provides JCRMI functionality.
The ODELG contains the security requirements for the object deletion
Object deletion
capability. This provides a safe memory recovering mechanism. This is
(ODELG)
a Java Card specification version 2.2 feature.
The CarG group contains minimal requirements for secure
downloading of applications on the card. This group contains the
Secure carrier security requirements for preventing, in those configurations that do
(CarG) not support on-card static or dynamic bytecode verification, the
installation of a package that has not been bytecode verified, or that
has been modified after bytecode verification.
Subjects are active components of the TOE that (essentially) act on the behalf of users. The
users of the TOE include people or institutions (like the applet developer, the card issuer, the
verification authority), hardware (like the CAD where the card is inserted or the PCD) and
software components (like the application packages installed on the card). Some of the users
may just be aliases for other users. For instance, the verification authority in charge of the
bytecode verification of the applications may be just an alias for the card issuer.
Subject Description
The applet deletion manager which also acts on behalf of the card issuer.
It may be an applet ([JCRE22], 11), but its role asks anyway for a
S.ADEL
specific treatment from the security viewpoint. This subject is unique and
is involved in the ADEL security policy defined in 7.1.3.1.
S.APPLET Any applet instance.
The bytecode verifier (BCV), which acts on behalf of the verification
authority who is in charge of the bytecode verification of the packages.
S.BCV
This subject is involved in the PACKAGE LOADING security policy defined
in 7.1.7.
The CAD represents off-card entity that communicates with the
S.INSTALLER. If the TOE provides JCRMI functionality, this subject can
S.CAD
also plays the role of the actor that requests, by issuing commands to the
card, for RMI services.
The installer is the on-card entity which acts on behalf of the card issuer.
S.INSTALLER This subject is involved in the loading of packages and installation of
applets.
The runtime environment under which Java programs in a smart card are
S.JCRE
executed.
S.JCVM The bytecode interpreter that enforces the firewall at runtime.
Operand stack of a JCVM frame, or local variable of a JCVM frame
S.LOCAL
containing an object or an array of references.
S.MEMBER Any object's field, static field or array position.
A package is a namespace within the Java programming language that
S.PACKAGE may contain classes and interfaces, and in the context of Java Card
technology, it defines either a user library, or one or several applets.
Information Description
I.APDU Any APDU sent to or from the card through the communication channel.
JCVM Reference Data: objectref addresses of APDU buffer, JCRE-owned
I.DATA
instances of APDU class and byte array for install method.
Remote object reference descriptors which provide information
concerning: (i) the identification of the remote object and (ii) the
implementation class of the object or the interfaces implemented by the
I.RORD
class of the object. The descriptor is the only object's information to
which the CAD can access. It applies only if the TOE provides JCRMI
functionality.
Security attributes linked to these subjects, objects and information are described in the
following table with their values:
(*) Transient objects of type CLEAR_ON_RESET behave like persistent objects in that they can be
accessed only when the Currently Active Context is the object's context.
Operation Description
OP.ARRAY_ACCESS(O.JAVAOBJECT, field) Read/Write an array component.
Creation of an object (new or
OP.CREATE(Sharing, LifeTime) (*)
makeTransient call).
Delete an installed applet and its objects,
OP.DELETE_APPLET(O.APPLET,...)
either logically or physically.
Delete a package, either logically or
OP.DELETE_PCKG(O.CODE_PKG,...)
physically.
Delete a package and its installed
OP.DELETE_PCKG_APPLET(O.CODE_PKG,...)
applets, either logically or physically.
This operation retrieves the initial remote
object reference of a RMI based applet.
This reference is the seed which the CAD
OP.GET_ROR(O.APPLET,...)
client application needs to begin remote
method invocations. It applies only if the
TOE provides JCRMI functionality.
Read/Write a field of an instance of a
OP.INSTANCE_FIELD(O.JAVAOBJECT, field)
class in the Java programming language.
OP.INVK_VIRTUAL(O.JAVAOBJECT, method, Invoke a virtual method (either on a
arg1,...) class instance or an array object).
OP.INVK_INTERFACE(O.JAVAOBJECT,
Invoke an interface method.
method, arg1,...)
This operation requests a remote method
invocation on the remote object. It
OP.INVOKE(O.RMI_SERVICE,...)
applies only if the TOE provides JCRMI
functionality.
Any access in the sense of [JCRE22],
6.2.8. It stands for one of the
operations OP.ARRAY_ACCESS,
OP.JAVA(...) OP.INSTANCE_FIELD,
OP.INVK_VIRTUAL,
OP.INVK_INTERFACE, OP.THROW,
OP.TYPE_ACCESS.
Transfer a piece of information I from S1
OP.PUT(S1,S2,I)
to S2.
Operations (prefixed with "OP") are described in the following table. Each operation has
parameters given between brackets, among which there is the "accessed object", the first
one, when applicable. Parameters may be seen as security attributes that are under the
control of the subject performing the operation.
(*) For this operation, there is no accessed object. This rule enforces that shareable transient objects
are not allowed. For instance, during the creation of an object, the JavaCardClass attribute's value is
chosen by the creator.
This group is focused on the main security policy of the Java Card System, known as the
firewall.
FDP_ACC.2.1/FIREWALL The TSF shall enforce the FIREWALL access control SFP on
S.PACKAGE, S.JCRE, S.JCVM, O.JAVAOBJECT and all operations among subjects and
objects covered by the SFP.
Refinement:
The operations involved in the policy are:
o OP.CREATE,
o OP.INVK_INTERFACE,
o OP.INVK_VIRTUAL,
o OP.JAVA,
o OP.THROW,
o OP.TYPE_ACCESS.
Application Note:
It should be noticed that accessing array's components of a static array, and more generally
fields and methods of static objects, is an access to the corresponding O.JAVAOBJECT.
FDP_ACF.1.1/FIREWALL The TSF shall enforce the FIREWALL access control SFP to
objects based on the following:
FDP_ACF.1.4/FIREWALL The TSF shall explicitly deny access of subjects to objects based
on the following additional rules:
o 1) Any subject with OP.JAVA upon an O.JAVAOBJECT whose LifeTime
attribute has value "CLEAR_ON_DESELECT" if O.JAVAOBJECT's Context
attribute is not the same as the Selected Applet Context.
o 2) Any subject attempting to create an object by the means of OP.CREATE
and a "CLEAR_ON_DESELECT" LifeTime parameter if the active context is not
the same as the Selected Applet Context.
Application Note:
FDP_ACF.1.4/FIREWALL:
The deletion of applets may render some O.JAVAOBJECT inaccessible, and the Java
Card RE may be in charge of this aspect. This can be done, for instance, by ensuring that
references to objects belonging to a deleted application are considered as a null reference.
Such a mechanism is implementation-dependent.
In the case of an array type, fields are components of the array ([JVM], 2.14, 2.7.7), as
well as the length; the only methods of an array object are those inherited from the Object
class.
Standard ones, whose both fields and methods are under the firewall policy,
Shareable interface Objects (SIO), which provide a secure mechanism for inter-applet
communication,
JCRE entry points (Temporary or Permanent), who have freely accessible methods but
protected fields,
When a new object is created, it is associated with the Currently Active Context. But the
object is owned by the applet instance within the Currently Active Context when the object is
instantiated ([JCRE22], 6.1.3). An object is owned by an applet instance, by the JCRE or by
the package library where it has been defined (these latter objects can only be arrays that
initialize static fields of packages).
([JCRE22], Glossary) Selected Applet Context. The Java Card RE keeps track of the currently selected
Java Card applet. Upon receiving a SELECT command with this applet's AID, the Java Card RE makes
this applet the Selected Applet Context. The Java Card RE sends all APDU commands to the Selected
Applet Context.
While the expression "Selected Applet Context" refers to a specific installed applet, the
relevant aspect to the policy is the context (package AID) of the selected applet. In this
policy, the "Selected Applet Context" is the AID of the selected package.
([JCRE22], 6.1.2.1) At any point in time, there is only one active context within the Java
Card VM (this is called the Currently Active Context).
It should be noticed that the invocation of static methods (or access to a static field) is not
considered by this policy, as there are no firewall rules. They have no effect on the active
context as well and the "acting package" is not the one to which the static method belongs to
in this case.
It should be noticed that the Java Card platform, version 2.2.x and version 3 Classic Edition,
introduces the possibility for an applet instance to be selected on multiple logical channels at
the same time, or accepting other applets belonging to the same package being selected
simultaneously. These applets are referred to as multiselectable applets. Applets that belong
to a same package are either all multiselectable or not ([JCVM22], 2.2.5). Therefore, the
selection mode can be regarded as an attribute of packages. No selection mode is defined for
a library package.
FDP_IFC.1.1/JCVM The TSF shall enforce the JCVM information flow control SFP on
S.JCVM, S.LOCAL, S.MEMBER, I.DATA and OP.PUT(S1, S2, I).
Application Note:
FDP_IFF.1.1/JCVM The TSF shall enforce the JCVM information flow control SFP based
on the following types of subject and information security attributes:
FDP_IFF.1.2/JCVM The TSF shall permit an information flow between a controlled subject
and controlled information via a controlled operation if the following rules hold:
o An operation OP.PUT(S1, S.MEMBER, I.DATA) is allowed if and only if the
Currently Active Context is "Java Card RE";
o other OP.PUT operations are allowed regardless of the Currently Active
Context's value.
FDP_IFF.1.4/JCVM The TSF shall explicitly authorise an information flow based on the
following rules: [assignment: rules, based on security attributes, that explicitly
authorise information flows].
FDP_IFF.1.5/JCVM The TSF shall explicitly deny an information flow based on the following
rules: [assignment: rules, based on security attributes, that explicitly deny
information flows].
Application Note:
It should be noticed that this policy essentially applies to the execution of bytecode. Native
methods, the Java Card RE itself and possibly some API methods can be granted specific
rights or limitations through the FDP_IFF.1.3/JCVM to FDP_IFF.1.5/JCVM elements. The way
the Java Card virtual machine manages the transfer of values on the stack and local variables
(returned values, uncaught exceptions) from and to internal registers is implementation-
dependent. For instance, a returned reference, depending on the implementation of the stack
FDP_RIP.1.1/OBJECTS The TSF shall ensure that any previous information content of a
resource is made unavailable upon the allocation of the resource to the following
objects: class instances and arrays.
Application Note:
The semantics of the Java programming language requires for any object field and array
position to be initialized with default values when the resource is allocated [JVM], 2.5.1.
FMT_MSA.1.1/JCRE The TSF shall enforce the FIREWALL access control SFP to restrict
the ability to modify the security attributes Selected Applet Context to the Java Card
RE.
Application Note:
The modification of the Selected Applet Context should be performed in accordance with the
rules given in [JCRE22], 4 and [JCVM22], 3.4.
FMT_MSA.1.1/JCVM The TSF shall enforce the FIREWALL access control SFP and the
JCVM information flow control SFP to restrict the ability to modify the security
attributes Currently Active Context and Active Applets to the Java Card VM
(S.JCVM).
Application Note:
The modification of the Currently Active Context should be performed in accordance with the
rules given in [JCRE22], 4 and [JCVM22], 3.4.
FMT_MSA.2.1/FIREWALL_JCVM The TSF shall ensure that only secure values are
accepted for all the security attributes of subjects and objects defined in the
FIREWALL access control SFP and the JCVM information flow control SFP.
Application Note:
The following rules are given as examples only. For instance, the last two rules are motivated
by the fact that the Java Card API defines only transient arrays factory methods. Future
versions may allow the creation of transient objects belonging to arbitrary classes; such
evolution will naturally change the range of "secure values" for this component.
FMT_MSA.3.1/FIREWALL The TSF shall enforce the FIREWALL access control SFP to
provide restrictive default values for security attributes that are used to enforce the SFP.
FMT_MSA.3.2/FIREWALL [Editorially Refined] The TSF shall not allow any role to
specify alternative initial values to override the default values when an object or
information is created.
Application Note:
FMT_MSA.3.1/FIREWALL
Objects' security attributes of the access control policy are created and initialized at
the creation of the object or the subject. Afterwards, these attributes are no longer
mutable (FMT_MSA.1/JCRE). At the creation of an object (OP.CREATE), the newly created
object, assuming that the FIREWALL access control SFP permits the operation, gets its
Lifetime and Sharing attributes from the parameters of the operation; on the contrary, its
Context attribute has a default value, which is its creator's Context attribute and AID
respectively ([JCRE22], 6.1.3). There is one default value for the Selected Applet Context
FMT_MSA.3.2/FIREWALL
The intent is that none of the identified roles has privileges with regard to the default
values of the security attributes. It should be noticed that creation of objects is an
operation controlled by the FIREWALL access control SFP. The operation shall fail anyway if
the created object would have had security attributes whose value violates
FMT_MSA.2.1/FIREWALL_JCVM.
FMT_MSA.3.1/JCVM The TSF shall enforce the JCVM information flow control SFP to
provide restrictive default values for security attributes that are used to enforce the SFP.
FMT_MSA.3.2/JCVM [Editorially Refined] The TSF shall not allow any role to specify
alternative initial values to override the default values when an object or information is
created.
FMT_SMF.1.1 The TSF shall be capable of performing the following management functions:
o modify the Currently Active Context, the Selected Applet Context and the
Active Applets.
It should be noticed that the execution of the additional native code is not within the TSF.
Nevertheless, access to API native methods from the Java Card System is controlled by TSF
because there is no difference between native and interpreted methods in their interface or
invocation mechanism.
FCS_CKM.1.1 The TSF shall generate cryptographic keys in accordance with a specified
cryptographic key generation algorithm [assignment: cryptographic key generation
algorithm] and specified cryptographic key sizes [assignment: cryptographic key
sizes] that meet the following: [assignment: list of standards].
Application Note:
The keys can be generated and diversified in accordance with [JCAPI22] specification
in classes KeyBuilder and KeyPair (at least Session key generation).
This component shall be instantiated according to the version of the Java Card API
applying to the security target and the implemented algorithms ([JCAPI22], [JCAPI221],
[JCAPI222] and [JCAPI3]).
FCS_CKM.2.1 The TSF shall distribute cryptographic keys in accordance with a specified
cryptographic key distribution method [assignment: cryptographic key distribution
method] that meets the following: [assignment: list of standards].
Application Note:
FCS_CKM.3.1 The TSF shall perform [assignment: type of cryptographic key access]
in accordance with a specified cryptographic key access method [assignment:
Application Note:
FCS_CKM.4.1 The TSF shall destroy cryptographic keys in accordance with a specified
cryptographic key destruction method [assignment: cryptographic key destruction
method] that meets the following: [assignment: list of standards].
Application Note:
The keys are reset as specified in [JCAPI22] Key class, with the method clearKey().
Any access to a cleared key for ciphering or signing shall throw an exception.
This component shall be instantiated according to the version of the Java Card API
applicable to the security target and the implemented algorithms ([JCAPI22], [JCAPI221],
[JCAPI222] and [JCAPI3]).
Application Note:
The TOE shall provide a subset of cryptographic operations defined in [JCAPI22] (see
javacardx.crypto.Cipher and javacardx.security packages).
This component shall be instantiated according to the version of the Java Card API
applicable to the security target and the implemented algorithms ([JCAPI22], [JCAPI221],
[JCAPI222] and [JCAPI3]).
FDP_RIP.1.1/ABORT The TSF shall ensure that any previous information content of a
resource is made unavailable upon the deallocation of the resource from the following
objects: any reference to an object instance created during an aborted
transaction.
Application Note:
The events that provoke the de-allocation of a transient object are described in [JCRE22],
5.1.
FDP_RIP.1.1/APDU The TSF shall ensure that any previous information content of a
resource is made unavailable upon the allocation of the resource to the following
objects: the APDU buffer.
Application Note:
The allocation of a resource to the APDU buffer is typically performed as the result of a call to
the process() method of an applet.
FDP_RIP.1.1/bArray The TSF shall ensure that any previous information content of a
resource is made unavailable upon the deallocation of the resource from the following
objects: the bArray object.
Application Note:
A resource is allocated to the bArray object when a call to an applet's install() method is
performed. There is no conflict with FDP_ROL.1 here because of the bounds on the rollback
mechanism (FDP_ROL.1.2/FIREWALL): the scope of the rollback does not extend outside the
execution of the install() method, and the de-allocation occurs precisely right after the return
of it.
FDP_RIP.1.1/KEYS The TSF shall ensure that any previous information content of a
resource is made unavailable upon the deallocation of the resource from the following
objects: the cryptographic buffer (D.CRYPTO).
Application Note:
FDP_RIP.1.1/TRANSIENT The TSF shall ensure that any previous information content of a
resource is made unavailable upon the deallocation of the resource from the following
objects: any transient object.
Application Note:
The events that provoke the de-allocation of any transient object are described in
[JCRE22], 5.1.
The clearing of CLEAR_ON_DESELECT objects is not necessarily performed when the
owner of the objects is deselected. In the presence of multiselectable applet instances,
CLEAR_ON_DESELECT memory segments may be attached to applets that are active in
different logical channels. Multiselectable applet instances within a same package must
share the transient memory segment if they are concurrently active ([JCRE22], 4.2.
FDP_ROL.1.1/FIREWALL The TSF shall enforce the FIREWALL access control SFP and
the JCVM information flow control SFP to permit the rollback of the operations
OP.JAVA and OP.CREATE on the object O.JAVAOBJECT.
FDP_ROL.1.2/FIREWALL The TSF shall permit operations to be rolled back within the
scope of a select(), deselect(), process(), install() or uninstall() call,
notwithstanding the restrictions given in [JCRE22], 7.7, within the bounds of
the Commit Capacity ([JCRE22], 7.8), and those described in [JCAPI22].
Application Note:
Transactions are a service offered by the APIs to applets. It is also used by some APIs to
guarantee the atomicity of some operation. This mechanism is either implemented in Java
Card platform or relies on the transaction mechanism offered by the underlying platform.
Refinement:
The "potential security violation" stands for one of the following events:
Application Note:
The developer shall provide the exhaustive list of actual potential security violations
the TOE reacts to. For instance, other runtime errors related to applet's failure like
uncaught exceptions.
The bytecode verification defines a large set of rules used to detect a "potential
security violation". The actual monitoring of these "events" within the TOE only makes
sense when the bytecode verification is performed on-card.
Depending on the context of use and the required security level, there are cases where
the card manager and the TOE must work in cooperation to detect and appropriately react
in case of potential security violation. This behavior must be described in this component.
It shall detail the nature of the feedback information provided to the card manager (like the
identity of the offending application) and the conditions under which the feedback will
occur (any occurrence of the java.lang.SecurityException exception).
FDP_SDI.2.1 The TSF shall monitor user data stored in containers controlled by the TSF for
[assignment: integrity errors] on all objects, based on the following attributes:
[assignment: user data attributes].
FDP_SDI.2.2 Upon detection of a data integrity error, the TSF shall [assignment: action
to be taken].
Application Note:
FPR_UNO.1.1 The TSF shall ensure that [assignment: list of users and/or subjects]
are unable to observe the operation [assignment: list of operations] on [assignment:
list of objects] by [assignment: list of protected users and/or subjects].
Application Note:
FPT_FLS.1.1 The TSF shall preserve a secure state when the following types of failures
occur: those associated to the potential security violations described in
FAU_ARP.1.
Application Note:
The Java Card RE Context is the Current context when the Java Card VM begins running after
a card reset ([JCRE22], 6.2.3) or after a proximity card (PICC) activation sequence
([JCRE222]). Behavior of the TOE on power loss and reset is described in [JCRE22], 3.6 and
7.1. Behavior of the TOE on RF signal loss is described in [JCRE222], 3.6.1.
FPT_TDC.1.1 The TSF shall provide the capability to consistently interpret the CAP files,
the bytecode and its data arguments when shared between the TSF and another
trusted IT product.
Application Note:
FIA_ATD.1.1/AID The TSF shall maintain the following list of security attributes belonging
to individual users:
o Package AID,
o Applet's version number,
o Registered applet AID,
o Applet Selection Status ([JCVM22], 6.5).
Refinement:
"Individual users" stand for applets.
FIA_UID.2.1/AID The TSF shall require each user to be successfully identified before
allowing any other TSF-mediated actions on behalf of that user.
Application Note:
By users here it must be understood the ones associated to the packages (or applets)
that act as subjects of policies. In the Java Card System, every action is always performed
by an identified user interpreted here as the currently selected applet or the package that
is the subject's owner. Means of identification are provided during the loading procedure of
the package and the registration of applet instances.
The role Java Card RE defined in FMT_SMR.1 is attached to an IT security function
rather than to a "user" of the CC terminology. The Java Card RE does not "identify" itself to
the TOE, but it is part of it.
FIA_USB.1.1/AID The TSF shall associate the following user security attributes with
subjects acting on the behalf of that user: Package AID.
FIA_USB.1.2/AID The TSF shall enforce the following rules on the initial association of user
security attributes with subjects acting on the behalf of users: [assignment: rules for
the initial association of attributes].
FIA_USB.1.3/AID The TSF shall enforce the following rules governing changes to the user
security attributes associated with subjects acting on the behalf of users: [assignment:
rules for the changing of attributes].
Application Note:
The user is the applet and the subject is the S.PACKAGE. The subject security attribute
"Context" shall hold the user security attribute "package AID".
FMT_MTD.1.1/JCRE The TSF shall restrict the ability to modify the list of registered
applets' AIDs to the JCRE.
Application Note:
The installer and the Java Card RE manage other TSF data such as the applet life cycle
or CAP files, but this management is implementation specific. Objects in the Java
programming language may also try to query AIDs of installed applets through the
lookupAID(...) API method.
The installer, applet deletion manager or even the card manager may be granted the
right to modify the list of registered applets' AIDs in specific implementations (possibly
needed for installation and deletion; see #.DELETION and #.INSTALL).
FMT_MTD.3.1/JCRE The TSF shall ensure that only secure values are accepted for the
registered applets' AIDs.
This group consists of the SFRs related to the installation of the applets, which addresses
security aspects outside the runtime. The installation of applets is a critical phase, which lies
partially out of the boundaries of the firewall, and therefore requires specific treatment. In this
FDP_ITC.2.1/Installer The TSF shall enforce the PACKAGE LOADING information flow
control SFP when importing user data, controlled under the SFP, from outside of the TOE.
FDP_ITC.2.2/Installer The TSF shall use the security attributes associated with the
imported user data.
FDP_ITC.2.3/Installer The TSF shall ensure that the protocol used provides for the
unambiguous association between the security attributes and the user data received.
FDP_ITC.2.4/Installer The TSF shall ensure that interpretation of the security attributes of
the imported user data is as intended by the source of the user data.
FDP_ITC.2.5/Installer The TSF shall enforce the following rules when importing user data
controlled under the SFP from outside the TOE:
Package loading is allowed only if, for each dependent package, its AID
attribute is equal to a resident package AID attribute, the major (minor)
Version attribute associated to the dependent package is lesser than or equal to
the major (minor) Version attribute associated to the resident package
([JCVM22], 4.5.2)..
Application Note:
FDP_ITC.2.1/Installer:
The most common importation of user data is package loading and applet installation
on the behalf of the installer. Security attributes consist of the shareable flag of the class
component, AID and version numbers of the package, maximal operand stack size and
number of local variables for each method, and export and import components
(accessibility).
FDP_ITC.2.3/Installer:
The format of the CAP file is precisely defined in [JCVM22] specifications; it contains
the user data (like applet's code and data) and the security attributes altogether. Therefore
there is no association to be carried out elsewhere.
FDP_ITC.2.4/Installer:
Each package contains a package Version attribute, which is a pair of major and minor
version numbers ([JCVM22], 4.5). With the AID, it describes the package defined in the
CAP file. When an export file is used during preparation of a CAP file, the versions numbers
FDP_ITC.2.5/Installer:
A package may depend on (import or use data from) other packages already installed.
This dependency is explicitly stated in the loaded package in the form of a list of package
AIDs.
The intent of this rule is to ensure the binary compatibility of the package with those
already on the card ([JCVM22], 4.4).
The installation (the invocation of an applet's install method by the installer) is
implementation dependent ([JCRE22], 11.2).
Other rules governing the installation of an applet, that is, its registration to make it
SELECTable by giving it a unique AID, are also implementation dependent (see, for
example, [JCRE22], 11).
FPT_FLS.1.1/Installer The TSF shall preserve a secure state when the following types of
failures occur: the installer fails to load/install a package/applet as described in
[JCRE22] 11.1.5.
Application Note:
The TOE may provide additional feedback information to the card manager in case of potential
security violations (see FAU_ARP.1).
FPT_RCV.3.3/Installer The functions provided by the TSF to recover from failure or service
discontinuity shall ensure that the secure initial state is restored without exceeding
[assignment: quantification] for loss of TSF data or objects under the control of the
TSF.
FPT_RCV.3.4/Installer The TSF shall provide the capability to determine the objects that
were or were not capable of being recovered.
Application Note:
FPT_RCV.3.1/Installer:
This element is not within the scope of the Java Card specification, which only
mandates the behavior of the Java Card System in good working order. Further details on
the "maintenance mode" shall be provided in specific implementations. The following is an
excerpt from [CC2], p298: In this maintenance mode normal operation might be impossible or
severely restricted, as otherwise insecure situations might occur. Typically, only authorised users
should be allowed access to this mode but the real details of who can access this mode is a
function of FMT: Security management. If FMT: Security management does not put any controls on
who can access this mode, then it may be acceptable to allow any user to restore the system if the
TOE enters such a state. However, in practice, this is probably not desirable as the user restoring
the system has an opportunity to configure the TOE in such a way as to violate the SFRs.
FPT_RCV.3.2/Installer:
FPT_RCV.3.3/Installer:
The quantification is implementation dependent, but some facts can be recalled here.
First, the SCP ensures the atomicity of updates for fields and objects, and a power-failure
This group consists of the SFRs related to the deletion of applets and/or packages, enforcing
the applet deletion manager (ADEL) policy on security aspects outside the runtime. Deletion is
a critical operation and therefore requires specific treatment. This policy is better thought as a
frame to be filled by ST implementers.
FDP_ACC.2.1/ADEL The TSF shall enforce the ADEL access control SFP on S.ADEL,
S.JCRE, S.JCVM, O.JAVAOBJECT, O.APPLET and O.CODE_PKG and all operations
among subjects and objects covered by the SFP.
Refinement:
The operations involved in the policy are:
o OP.DELETE_APPLET,
o OP.DELETE_PCKG,
o OP.DELETE_PCKG_APPLET.
FDP_ACC.2.2/ADEL The TSF shall ensure that all operations between any subject controlled
by the TSF and any object controlled by the TSF are covered by an access control SFP.
FDP_ACF.1.1/ADEL The TSF shall enforce the ADEL access control SFP to objects based
on the following:
Subject/Object Attributes
S.JCVM Active Applets
Selected Applet Context, Registered Applets, Resident
S.JCRE
Packages
O.CODE_PKG Package AID, Dependent Package AID, Static References
O.APPLET Applet Selection Status
O.JAVAOBJECT Owner, Remote
FDP_ACF.1.3/ADEL The TSF shall explicitly authorise access of subjects to objects based on
the following additional rules: none.
FDP_ACF.1.4/ADEL [Editorially Refined] The TSF shall explicitly deny access of any
subject but S.ADEL to O.CODE_PKG or O.APPLET for the purpose of deleting
them from the card.
Application Note:
FDP_ACF.1.2/ADEL:
This policy introduces the notion of reachability, which provides a general means to
describe objects that are referenced from a certain applet instance or package.
S.ADEL calls the "uninstall" method of the applet instance to be deleted, if
implemented by the applet, to inform it of the deletion request. The order in which these
calls and the dependencies checks are performed are out of the scope of this protection
profile.
FDP_RIP.1.1/ADEL The TSF shall ensure that any previous information content of a
resource is made unavailable upon the deallocation of the resource from the following
objects: applet instances and/or packages when one of the deletion operations
in FDP_ACC.2.1/ADEL is performed on them.
Application Note:
Deleted freed resources (both code and data) may be reused, depending on the way they
were deleted (logically or physically). Requirements on de-allocation during applet/package
deletion are described in [JCRE22], 11.3.4.1, 11.3.4.2 and 11.3.4.3.
FMT_MSA.1.1/ADEL The TSF shall enforce the ADEL access control SFP to restrict the
ability to modify the security attributes Registered Applets and Resident Packages to
the Java Card RE.
FMT_MSA.3.1/ADEL The TSF shall enforce the ADEL access control SFP to provide
restrictive default values for security attributes that are used to enforce the SFP.
FMT_MSA.3.2/ADEL The TSF shall allow the following role(s): none, to specify
alternative initial values to override the default values when an object or information is
created.
FMT_SMR.1.1/ADEL The TSF shall maintain the roles: applet deletion manager.
FPT_FLS.1.1/ADEL The TSF shall preserve a secure state when the following types of
failures occur: the applet deletion manager fails to delete a package/applet as
described in [JCRE22], 11.3.4.
Application Note:
The TOE may provide additional feedback information to the card manager in case of a
potential security violation (see FAU_ARP.1).
The Package/applet instance deletion must be atomic. The "secure state" referred to in
the requirement must comply with Java Card specification ([JCRE22], 11.3.4.)
This group specifies the policies that control the access to the remote objects and the flow of
information that takes place when the RMI service is used. The rules relate mainly to the
lifetime of the remote references. Information concerning remote object references can be
sent out of the card only if the corresponding remote object has been designated as
exportable. Array parameters of remote method invocations must be allocated on the card as
global arrays. Therefore, the storage of references to those arrays must be restricted as well.
The JCRMI policy embodies both an access control and an information flow control policy.
This group of SFRs applies only if the TOE provides JCRMI functionality. Otherwise, it shall be
ignored.
FDP_ACC.2.1/JCRMI The TSF shall enforce the JCRMI access control SFP on S.CAD,
S.JCRE, O.APPLET, O.REMOTE_OBJ, O.REMOTE_MTHD, O.ROR, O.RMI_SERVICE
and all operations among subjects and objects covered by the SFP.
Refinement:
The operations involved in this policy are:
o OP.GET_ROR,
o OP.INVOKE.
FDP_ACC.2.2/JCRMI The TSF shall ensure that all operations between any subject
controlled by the TSF and any object controlled by the TSF are covered by an access
control SFP.
FDP_ACF.1.1/JCRMI The TSF shall enforce the JCRMI access control SFP to objects
based on the following:
Subject/Object Attributes
S.JCRE Selected Applet Context
O.REMOTE_OBJ Owner, Class, Identifier, ExportedInfo
O.REMOTE_MTHD Identifier
O.RMI_SERVICE Owner, Returned References
FDP_ACF.1.2/JCRMI The TSF shall enforce the following rules to determine if an operation
among controlled subjects and controlled objects is allowed:
o R.JAVA.18: S.CAD may perform OP.GET_ROR upon O.APPLET only if
O.APPLET is the currently selected applet, and there exists an O.RMI_SERVICE
FDP_ACF.1.3/JCRMI The TSF shall explicitly authorise access of subjects to objects based
on the following additional rules: none.
FDP_ACF.1.4/JCRMI [Editorially Refined] The TSF shall explicitly deny access of any
subject but S.JCRE to O.REMOTE_OBJ and O.REMOTE_MTHD for the purpose of
performing a remote method invocation.
Application Note:
FDP_ACF.1.2/JCRMI:
FDP_IFC.1.1/JCRMI The TSF shall enforce the JCRMI information flow control SFP on
S.JCRE, S.CAD, I.RORD and OP.RET_RORD(S.JCRE,S.CAD,I.RORD).
Application Note:
FDP_IFC.1.1/JCRMI:
FDP_IFF.1.1/JCRMI The TSF shall enforce the JCRMI information flow control SFP
based on the following types of subject and information security attributes:
FDP_IFF.1.2/JCRMI The TSF shall permit an information flow between a controlled subject
and controlled information via a controlled operation if the following rules hold:
OP.RET_RORD(S.JCRE, S.CAD, I.RORD) is permitted only if the attribute
ExportedInfo of I.RORD has the value "true" ([JCRE22], 8.5).
FDP_IFF.1.4/JCRMI The TSF shall explicitly authorise an information flow based on the
following rules: [assignment: rules, based on security attributes, that explicitly
authorise information flows].
FDP_IFF.1.5/JCRMI The TSF shall explicitly deny an information flow based on the
following rules: [assignment: rules, based on security attributes, that explicitly
deny information flows].
Application Note:
The ExportedInfo attribute of I.RORD indicates whether the O.REMOTE_OBJ which I.RORD
identifies is exported or not (as indicated by the security attribute ExportedInfo of the
O.REMOTE_OBJ).
FMT_MSA.1.1/EXPORT The TSF shall enforce the JCRMI access control SFP to restrict
the ability to modify the security attributes: ExportedInfo of O.REMOTE_OBJ to its
owner applet.
Application Note:
FMT_MSA.1.1/REM_REFS The TSF shall enforce the JCRMI access control SFP to
restrict the ability to modify the security attributes Returned References of
O.RMI_SERVICE to its owner applet.
FMT_MSA.3.1/JCRMI The TSF shall enforce the JCRMI access control SFP and the
JCRMI information flow control SFP to provide restrictive default values for security
attributes that are used to enforce the SFP.
FMT_MSA.3.2/JCRMI The TSF shall allow the following role(s): none, to specify
alternative initial values to override the default values when an object or information is
created.
Application Note:
FMT_MSA.3.1/JCRMI:
Remote objects' security attributes are created and initialized at the creation of the
object, and except for the ExportedInfo attribute, the values of the attributes are not
longer modifiable. The default value of the Exported attribute is true. There is one default
value for the Selected Applet Context that is the default applet identifier's context, and one
default value for the active context, that is "Java Card RE".
FMT_MSA.3.2/JCRMI:
The intent is to have none of the identified roles to have privileges with regards to the
default values of the security attributes. It should be noticed that creation of objects is an
operation controlled by the FIREWALL access control SFP.
FMT_REV.1.1/JCRMI [Editorially Refined] The TSF shall restrict the ability to revoke the
Returned References of O.RMI_SERVICE to the Java Card RE.
FMT_REV.1.2/JCRMI The TSF shall enforce the rules that determine the lifetime of
remote object references.
Application Note:
Application Note:
Applets own remote interface objects and may choose to allow or forbid their exportation,
which is managed through a security attribute.
The following requirements concern the object deletion mechanism. This mechanism is
triggered by the applet that owns the deleted objects by invoking a specific API method.
FDP_RIP.1.1/ODEL The TSF shall ensure that any previous information content of a
resource is made unavailable upon the deallocation of the resource from the following
objects: the objects owned by the context of an applet instance which triggered
the execution of the method
javacard.framework.JCSystem.requestObjectDeletion().
Application Note:
FPT_FLS.1.1/ODEL The TSF shall preserve a secure state when the following types of
failures occur: the object deletion functions fail to delete all the unreferenced
objects owned by the applet that requested the execution of the method.
Application Note:
The TOE may provide additional feedback information to the card manager in case of potential
security violation (see FAU_ARP.1).
This group includes requirements for preventing the installation of packages that has not been
bytecode verified, or that has been modified after bytecode verification.
FCO_NRO.2.1/CM The TSF shall enforce the generation of evidence of origin for transmitted
application packages at all times.
FCO_NRO.2.2/CM [Editorially Refined] The TSF shall be able to relate the identity of
the originator of the information, and the application package contained in the
information to which the evidence applies.
FCO_NRO.2.3/CM The TSF shall provide a capability to verify the evidence of origin of
information to recipient given [assignment: limitations on the evidence of origin].
Application Note:
FCO_NRO.2.1/CM:
Upon reception of a new application package for installation, the card manager shall
first check that it actually comes from the verification authority. The verification authority is
the entity responsible for bytecode verification.
FCO_NRO.2.3/CM:
The exact limitations on the evidence of origin are implementation dependent. In most
of the implementations, the card manager performs an immediate verification of the origin
of the package using an electronic signature mechanism, and no evidence is kept on the
card for future verifications.
FDP_IFC.2.1/CM The TSF shall enforce the PACKAGE LOADING information flow
control SFP on S.INSTALLER, S.BCV, S.CAD and I.APDU and all operations that
cause that information to flow to and from subjects covered by the SFP.
FDP_IFC.2.2/CM The TSF shall ensure that all operations that cause any information in the
TOE to flow to and from any subject in the TOE are covered by an information flow control
SFP.
Application Note:
The subjects covered by this policy are those involved in the loading of an application
package by the card through a potentially unsafe communication channel.
The operations that make information to flow between the subjects are those enabling
to send a message through and to receive a message from the communication channel
linking the card to the outside world. It is assumed that any message sent through the
channel as clear text can be read by an attacker. Moreover, an attacker may capture any
FDP_IFF.1.1/CM The TSF shall enforce the PACKAGE LOADING information flow
control SFP based on the following types of subject and information security attributes:
[assignment: list of subjects and information controlled under the indicated
SFP, and for each, the security attributes].
FDP_IFF.1.2/CM The TSF shall permit an information flow between a controlled subject and
controlled information via a controlled operation if the following rules hold: [assignment:
the rules describing the communication protocol used by the CAD and the card
for transmitting a new package].
FDP_IFF.1.3/CM The TSF shall enforce the [assignment: additional information flow
control SFP rules].
FDP_IFF.1.4/CM The TSF shall explicitly authorise an information flow based on the
following rules: [assignment: rules, based on security attributes, that explicitly
authorise information flows].
FDP_IFF.1.5/CM The TSF shall explicitly deny an information flow based on the following
rules:
o The TOE fails to verify the integrity and authenticity evidences of the
application package
o [assignment: rules, based on security attributes, that explicitly deny
information flows].
Application Note:
FDP_IFF.1.1/CM:
The security attributes used to enforce the PACKAGE LOADING SFP are
implementation dependent. More precisely, they depend on the communication protocol
enforced between the CAD and the card. For instance, some of the attributes that can be
used are: (1) the keys used by the subjects to encrypt/decrypt their messages; (2) the
number of pieces the application package has been split into in order to be sent to the
card; (3) the ordinal of each piece in the decomposition of the package, etc. See for
example Appendix D of [GP].
FDP_IFF.1.2/CM:
FDP_IFF.1.5/CM:
The verification of the integrity and authenticity evidences can be performed either
during loading or during the first installation of an application of the package.
FDP_UIT.1.1/CM The TSF shall enforce the PACKAGE LOADING information flow
control SFP to [selection: transmit, receive] user data in a manner protected from
[selection: modification, deletion, insertion, replay] errors.
Application Note:
FIA_UID.1.2/CM The TSF shall require each user to be successfully identified before
allowing any other TSF-mediated actions on behalf of that user.
Application Note:
FMT_MSA.1.1/CM The TSF shall enforce the PACKAGE LOADING information flow
control SFP to restrict the ability to [selection: change_default, query, modify,
delete, [assignment: other operations]] the security attributes [assignment: list of
security attributes] to [assignment: the authorised identified roles].
FMT_MSA.3.1/CM The TSF shall enforce the PACKAGE LOADING information flow
control SFP to provide restrictive default values for security attributes that are used to
enforce the SFP.
FMT_MSA.3.2/CM The TSF shall allow the [assignment: the authorised identified
roles] to specify alternative initial values to override the default values when an object or
information is created.
FMT_SMR.1.1/CM The TSF shall maintain the roles [assignment: the authorised
identified roles].
FTP_ITC.1.1/CM The TSF shall provide a communication channel between itself and another
trusted IT product that is logically distinct from other communication channels and provides
assured identification of its end points and protection of the channel data from modification
or disclosure.
FTP_ITC.1.2/CM [Editorially Refined] The TSF shall permit the CAD placed in the
card issuer secured environment to initiate communication via the trusted channel.
FTP_ITC.1.3/CM The TSF shall initiate communication via the trusted channel for
loading/installing a new application package on the card.
Application Note:
There is no dynamic package loading on the Java Card platform. New packages can be
installed on the card only on demand of the card issuer.
The Evaluation Assurance Level is EAL4 augmented with ALC_DVS.2 and AVA_VAN.5.
7.3.1.1.1 IDENTIFICATION
O.SID Subjects' identity is AID-based (applets, packages), and is met by the following SFRs:
FDP_ITC.2/Installer, FIA_ATD.1/AID, FMT_MSA.1/JCRE, FMT_MSA.1/JCVM,
FMT_MSA.1/REM_REFS, FMT_MSA.1/EXPORT, FMT_MSA.1/ADEL, FMT_MSA.1/CM,
FMT_MSA.3/ADEL, FMT_MSA.3/FIREWALL, FMT_MSA.3/JCVM, FMT_MSA.3/CM,
FMT_SMF.1/CM, FMT_SMF.1/ADEL, FMT_SMF.1/ADEL, FMT_MTD.1/JCRE and
FMT_MTD.3/JCRE.
Additionaly, if the TOE provides JCRMI functionality, subjects' identity is also met by the
following SFRs: FMT_MSA.3/JCRMI, FMT_SMF.1/JCRMI, FMT_SMF.1/JCRMI. Lastly,
installation procedures ensure protection against forgery (the AID of an applet is under the
control of the TSFs) or re-use of identities (FIA_UID.2/AID, FIA_USB.1/AID).
7.3.1.1.2 EXECUTION
O.GLOBAL_ARRAYS_CONFID Only arrays can be designated as global, and the only global
arrays required in the Java Card API are the APDU buffer and the global byte array input
parameter (bArray) to an applet's install method. The clearing requirement of these arrays
is met by (FDP_RIP.1/APDU and FDP_RIP.1/bArray respectively). The JCVM information
flow control policy (FDP_IFF.1/JCVM, FDP_IFC.1/JCVM) prevents an application from
keeping a pointer to a shared buffer, which could be used to read its contents when the
buffer is being used by another application.
If the TOE provides JCRMI functionality, protection of the array parameters of remotely
invoked methods, which are global as well, is covered by the general initialization of
method parameters (FDP_RIP.1/ODEL, FDP_RIP.1/OBJECTS, FDP_RIP.1/ABORT,
FDP_RIP.1/KEYS, FDP_RIP.1/ADEL and FDP_RIP.1/TRANSIENT).
O.OPERATE The TOE is protected in various ways against applets' actions (FPT_TDC.1), the
FIREWALL access control policy FDP_ACC.2/FIREWALL and FDP_ACF.1/FIREWALL, and is
able to detect and block various failures or security violations during usual working
(FPT_FLS.1/ADEL, FPT_FLS.1, FPT_FLS.1/ODEL, FPT_FLS.1/Installer, FAU_ARP.1). Its
security-critical parts and procedures are also protected: safe recovery from failure is
ensured (FPT_RCV.3/Installer), applets' installation may be cleanly aborted
(FDP_ROL.1/FIREWALL), communication with external users and their internal subjects is
well-controlled (FDP_ITC.2/Installer, FIA_ATD.1/AID, FIA_USB.1/AID) to prevent alteration
of TSF data (also protected by components of the FPT class).
Almost every objective and/or functional requirement indirectly contributes to this one too.
Application note: Startup of the TOE (TSF-testing) can be covered by FPT_TST.1. This SFR
component is not mandatory in [JCRE22], but appears in most of security requirements
7.3.1.1.3 SERVICES
O.KEY-MNGT This relies on the same security functional requirements as O.CIPHER, plus
FDP_RIP.1 and FDP_SDI.2 as well. Precisely it is met by the following components:
FCS_CKM.1, FCS_CKM.2, FCS_CKM.3, FCS_CKM.4, FCS_COP.1, FPR_UNO.1,
FDP_RIP.1/ODEL, FDP_RIP.1/OBJECTS, FDP_RIP.1/APDU, FDP_RIP.1/bArray,
FDP_RIP.1/ABORT, FDP_RIP.1/KEYS, FDP_RIP.1/ADEL and FDP_RIP.1/TRANSIENT.
O.REMOTE If the TOE provides JCRMI functionality, the access to the TOE's internal data and
the flow of information from the card to the CAD required by the JCRMI service is under
control of the JCRMI access control policy (FDP_ACC.2/JCRMI, FDP_ACF.1/JCRMI) and the
JCRMI information flow control policy (FDP_IFC.1/JCRMI, FDP_IFF.1/JCRMI). The security
functional requirements of the class FMT (FMT_MSA.1/EXPORT, FMT_MSA.1/REM_REFS,
O.OBJ-DELETION This security objective specifies that deletion of objects is secure. The
security objective is met by the security functional requirements FDP_RIP.1/ODEL and
FPT_FLS.1/ODEL.
O.DELETION This security objective specifies that applet and package deletion must be
secure. The non-introduction of security holes is ensured by the ADEL access control policy
(FDP_ACC.2/ADEL, FDP_ACF.1/ADEL). The integrity and confidentiality of data that does
not belong to the deleted applet or package is a by-product of this policy as well. Non-
accessibility of deleted data is met by FDP_RIP.1/ADEL and the TSFs are protected against
possible failures of the deletion procedures (FPT_FLS.1/ADEL, FPT_RCV.3/Installer). The
security functional requirements of the class FMT (FMT_MSA.1/ADEL, FMT_MSA.3/ADEL,
FMT_SMR.1/ADEL) included in the group ADELG also contribute to meet this objective.
O.LOAD This security objective specifies that the loading of a package into the card must be
secure. Evidence of the origin of the package is enforced (FCO_NRO.2/CM) and the
integrity of the corresponding data is under the control of the PACKAGE LOADING
information flow policy (FDP_IFC.2/CM, FDP_IFF.1/CM) and FDP_UIT.1/CM. Appropriate
identification (FIA_UID.1/CM) and transmission mechanisms are also enforced
(FTP_ITC.1/CM).
O.INSTALL This security objective specifies that installation of applets must be secure.
Security attributes of installed data are under the control of the FIREWALL access control
policy (FDP_ITC.2/Installer), and the TSFs are protected against possible failures of the
installer (FPT_FLS.1/Installer, FPT_RCV.3/Installer).
EAL4 is required for this type of TOE and product since it is intended to defend against
sophisticated attacks. This evaluation assurance level allows a developer to gain maximum
assurance from positive security engineering based on good practices. EAL4 represents the
highest practical level of assurance expected for a commercial grade product. In order to
provide a meaningful level of assurance that the TOE and its embedding product provide an
adequate level of defense against such attacks: the evaluators should have access to the low
level design and source code. The lowest for which such access is required is EAL4.
Development security is concerned with physical, procedural, personnel and other technical
measures that may be used in the development environment to protect the TOE and the
embedding product. The standard ALC_DVS.1 requirement mandated by EAL4 is not enough.
Due to the nature of the TOE and embedding product, it is necessary to justify the sufficiency
of these procedures to protect their confidentiality and integrity. ALC_DVS.2 has no
dependencies.
This Appendix provides guidance for editing security targets for products compliant with Java
Card version 2.1.1.
The Java Card System 2.1.1 - Open Configuration corresponds to a platform that implements
all the functionalities described in Java Card specifications, version 2.1.1. This configuration
does not provide functionalities for Logical Channels, RMI, Object deletion, Applet deletion or
the External Memory. Therefore, the groups of security requirements RMIG, ODELG, ADELG
and EMG that are defined in this PP do not apply to a TOE compliant with Java Card
specifications version 2.1.1. Moreover, the group CoreG_LC must be replaced by the group
CoreG introduced below.
The following table shows the relationship between the security functional requirements
groups for the Open 2.2.x and 3 Classic Edition Configuration and for the Open 2.1.1
Configuration.
Java Card System Open Java Card System Open 2.2.x and 3
Group
2.1.1 Classic Edition
Core (CoreG) X
Core with Logical
X
Channels (CoreG_LC)
Installer (InstG) X X
X (if the TOE provides JCRMI
RMI (RMIG)
functionality)
Object deletion
X
(ODELG)
Applet deletion
X
(ADELG)
Secure carrier (CarG) X X
External memory
X (Open 2.2.2 optional feature)
(EMG)
Table A1-1: Open 2.1.1 vs. Open 2.2.x and 3 Classic Edition
The group Core (CoreG) focuses on the main security policy of the Java Card System, known as
the firewall. CoreG is the counterpart of CoreG_LC applicable to a Java Card System v2.1.1,
that is, without logical channels. All the requirements from CoreG_LC belong to CoreG without
any modification, except the following ones:
The TSF shall permit operations to be rolled back within the scope of a select(),
deselect(), process() or install() call, notwithstanding the restrictions given in
[JCRE21], within the bounds of the Commit Capacity and those described in
[JCAPI21].
As for the security elements in this PP (threats, objectives and assumptions) that are related
to the SFRs in the groups RMIG, ODELG, ADELG and EMG two cases arise:
they must be removed along with their coverage rationales provided they are not
linked to the SFRs in the remaining groups CoreG, InstG or CarG,
otherwise they must be kept, but the coverage rationales must be reworked to avoid
referring to logical channels properties.
1. OVERVIEW
This Appendix introduces the security elements specific to the optional features in Java Card
specifications. This concerns the biometric templates management and the extended memory
feature described hereafter:
What follows are security elements related to these optional features introduced in Java Card
specifications. Therefore, it is the responsibility of the Security Target editor to include these
security elements.
D.BIO
Any biometric template.
To be protected from unauthorized disclosure and modification.
Application note:
This asset is similar to D.PIN asset. This means that all the attacks that threaten the PIN code
shall threaten the Biometric template and therefore the same Security Objectives and SFRs
apply.
O.BIO-MNGT
The TOE shall provide a means to securely manage biometric templates. This concerns the
optional package javacardx.biometry of the Java Card platform.
Security
Threats
Objectives
T.CONFID-JCS-CODE, T.CONFID-APPLI-DATA, T.CONFID-JCS-DATA,
O.EXT-MEM
T.INTEG-APPLI-CODE, T.INTEG-JCS-CODE, T.INTEG-JCS-DATA
O.BIO-MNGT T.CONFID-APPLI-DATA, T.INTEG-APPLI-DATA
The group EMG contains the following security requirements for the management of the
external memory, introduced in the version 2.2.2 of the Java Card System (cf. [JCAPI222],
optional package javacardx.external).
The External Memory access policy relies on the following additional objects, operations and
security attributes.
Object/Operation/Attribute Description
Any External Memory
Instance created from the
O.EXT_MEM_INSTANCE MemoryAccess Interface of
the Java Card API
[JCAPI222].
Creation of an instance of
OP.CREATE_EXT_MEM_INSTANCE the MemoryAccess
Interface.
OP.READ_EXT_MEM(O.EXT_MEM_INSTANCE, Reading the external
address) memory.
OP.WRITE_EXT_MEM(O.EXT_MEM_INSTANCE, Writing the external
address) memory.
Address space Accessible memory portion.
FDP_ACC.1.1/EXT_MEM The TSF shall enforce the EXTERNAL MEMORY access control
SFP on subject S.APPLET, object O.EXT_MEM_INSTANCE, and operations
OP.CREATE_EXT_MEM_INSTANCE, OP.READ_EXT_MEM and
OP.WRITE_EXT_MEM.
FDP_ACF.1.1/EXT_MEM The TSF shall enforce the EXTERNAL MEMORY access control
SFP to objects based on the following:
FDP_ACF.1.4/EXT_MEM The TSF shall explicitly deny access of subjects to objects based
on the following additional rules: [assignment: rules, based on security attributes,
that explicitly deny access of subjects to objects].
Application note:
The creation and the access to an external memory instance fall in the scope of the Firewall
rules.
FMT_MSA.3.2/EXT_MEM The TSF shall allow the Java Card RE to specify alternative
initial values to override the default values when an object or information is created.
Application note:
Upon creation of an external memory instance, the Java Card RE gets the address space value
for the newly created object. This is implementation-dependent.
O.EXT-MEM The Java Card System memory is protected against applet's attempts of
unauthorized access through the external memory facilities by the EXTERNAL MEMORY
access control policy (FDP_ACC.1/EXT_MEM, FDP_ACF.1/EXT_MEM), which first controls
the accessible address space, then controls the effective read and write operations.
External memory management is controlled by the TSF (FMT_SMF.1/EXT_MEM).
The following tables show the relationship between SFRs and objectives and the SFR
dependencies.
Security
Security Functional Requirements Rationale
Objectives
FMT_SMF.1/EXT_MEM, FMT_MSA.1/EXT_MEM, Section
O.SID
FMT_MSA.3/EXT_MEM 9.4.1
FDP_RIP.1/ODEL, FDP_RIP.1/OBJECTS,
FDP_RIP.1/APDU, FDP_RIP.1/bArray,
Section
O.BIO-MNGT FDP_RIP.1/ABORT, FDP_RIP.1/KEYS, FPR_UNO.1,
9.4.1
FDP_ROL.1/FIREWALL, FDP_SDI.2,
FDP_ACC.2/FIREWALL, FDP_ACF.1/FIREWALL
Section
O.RESOURCES FMT_SMF.1/EXT_MEM
9.4.1
FMT_SMF.1/EXT_MEM, FMT_MSA.1/EXT_MEM, Section
O.FIREWALL
FMT_MSA.3/EXT_MEM 9.4.1
FDP_ACC.1/EXT_MEM, FDP_ACF.1/EXT_MEM, Section
O.EXT-MEM
FMT_SMF.1/EXT_MEM 9.4.1
Security Functional
Security Objectives
Requirements
FDP_ACC.1/EXT_MEM O.EXT-MEM
FDP_ACF.1/EXT_MEM O.EXT-MEM
FMT_MSA.1/EXT_MEM O.SID, O.FIREWALL
FMT_MSA.3/EXT_MEM O.SID, O.FIREWALL
FMT_SMF.1/EXT_MEM O.SID, O.RESOURCES, O.FIREWALL, O.EXT-MEM
Assets are common to all configurations. Those corresponding to User data are:
D.APP_CODE, D.APP_C_DATA, D.APP_I_DATA, D.PIN and D.APP_KEYs. D.BIO is also
user data in version 2.2.2 and version 3 Classic Edition of the Java Card platform. Those
corresponding to TSF data are: D.JCS_CODE, D.JCS_DATA, D.SEC_DATA, D.API_DATA,
and D.CRYPTO.
The threats to the assets against which specific protection is required within the
configurations or their environments are displayed in Table A3-2. The post-issuance
installation of applets introduces one threat (T.INSTALL), and two more (T.INTEG-APPLI-
CODE.LOAD T.INTEG-APPLI-DATA.LOAD) since bytecode verification is performed off-card.
Table A3-3 lists the security objectives addressed by each of these TOEs.
Table A3-4 displays the security objectives to be achieved by the environment associated to
each TOE configuration.
Configuration Roles
Java Card System -
Java Card RE, Java Card VM
Closed Configuration
Java Card System - Open
Java Card RE, Java Card VM, Installer
2.1.1 Configuration
Java Card RE, Java Card VM, Installer, applet deletion
Java Card System - Open
manager, applets (RMIG), role for CarG functionalities (non
Configuration
specified)
Term Definition
Application identifier, an ISO-7816 data format used for unique
identification of Java Card applets (and certain kinds of files in
card file systems). The Java Card platform uses the AID data
format to identify applets and packages. AIDs are administered by
the International Opens Organization (ISO), so they can be used
AID as unique identifiers.
AIDs are also used in the security policies (see Context below):
applets AIDs are related to the selection mechanisms, packages
AIDs are used in the enforcement of the firewall. Note: although
they serve different purposes, they share the same namespace.
The APDU buffer is the buffer where the messages sent (received)
by the card depart from (arrive to). The Java Card RE owns an
APDU object (which is a Java Card RE Entry Point and an instance
of the javacard.framework.APDU class) that encapsulates APDU
APDU buffer messages in an internal byte array, called the APDU buffer. This
object is made accessible to the currently selected applet when
needed, but any permanent access (out-of selection-scope) is
strictly prohibited for security reasons.
Card Acceptance Device or card reader. The device where the card
is inserted, and which is used to communicate with the card.
CAD Unless explicitly said otherwise, in this document, CAD covers
PCD.
The Java Card RE keeps track of the current Java Card System
context (also called the active context). When a virtual method is
invoked on an object, and a context switch is required and
permitted, the current context is changed to correspond to the
Current context context of the applet that owns the object. When that method
returns, the previous context is restored. Invocations of static
methods have no effect on the current context. The current
context and sharing status of an object together determine if
access to an object is permissible.
The applet has been selected for execution in the current session.
The Java Card RE keeps track of the currently selected Java Card
applet. Upon receiving a SELECT command from the CAD or PCD
Currently selected with this applets AID, the Java Card RE makes this applet the
applet currently selected applet over the I/O interface that received the
command. The Java Card RE sends all further APDU commands
received over each interface to the currently selected applet on
Java Card System includes the Java Card RE, the Java Card VM,
Java Card System the Java Card API and the installer.
End of Document