06.11.2014 Views

A User Centric Security Model for Tamper-Resistant Devices

A User Centric Security Model for Tamper-Resistant Devices

A User Centric Security Model for Tamper-Resistant Devices

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

8.2 Smart Card Runtime Environment<br />

values, and dynamically resolved links, associated with a single method - not the related<br />

class. These frames are stored on a last-in rst-out (LIFO) stack referred to as Java Stack.<br />

For each thread, there will be a dierent Java Stack. For security reasons, Java Stacks are<br />

not directly manipulated by individual applications. The JCVM can only issue the push<br />

and pop instructions to Java Stacks. The data structures that reside on a frame include<br />

an array of local variables, operand stack, and references to constant pool. The operand<br />

stack is a LIFO stack and it is empty when a frame is created. During the execution of a<br />

method, JCVM will load data values (of either constant or non-constant variables/elds)<br />

onto the operand stack. The JCVM will operate on the values at the top of the operand<br />

stack and push the results back on it.<br />

JCVMs provide well-dened interfaces to access native methods; however, contrary to traditional<br />

Java virtual machines it does not allow user-dened native methods. Each JCVM<br />

has an execution engine that is responsible <strong>for</strong> execution of the individual instructions<br />

(opcodes) in an application code. The design of the execution engine is dependent on<br />

the underlying hardware plat<strong>for</strong>m and in a simple way, it can be considered as a software<br />

interface to the plat<strong>for</strong>m's processor.<br />

8.2.2 Related Work<br />

Earlier work on Java Cards was mainly related to the semantic and <strong>for</strong>mal modelling of<br />

the JCVM [?, 84, 201, 202], Java Card rewall mechanism [191, 203], and applets [204]<br />

[206]. The assurance <strong>for</strong> the JCRE reliability against ill-<strong>for</strong>med applications was based on<br />

bytecode verication [128, 161][163], which became a compulsory part of the Java Card<br />

specication version 3 [16].<br />

In the early 2000s, side channel analysis and fault attacks on smart card plat<strong>for</strong>ms were<br />

mainly focussed on the cryptographic algorithms [197, 207][211]. However, in the second<br />

half of the 2000s, logical and fault attacks were combined to target the JCRE [212][214].<br />

The discussed attacks in this paragraph are purely logical attacks that use the bugs and<br />

inecient implementation of the JCVM. In 2008, Mostowski and Poll [190] loaded an illtyped<br />

bytecode on various smart cards to test their security and reliability mechanisms.<br />

In this work, they showed that on certain smart cards they were able to execute code<br />

that should not be possible in the rst place (i.e. accessing byte array as short). However,<br />

they also noted that smart cards that had an eective on-card bytecode verier were less<br />

susceptible than others.<br />

In 2009, Hogenboom and Mostowski [215] managed to read arbitrary contents of the memory.<br />

They per<strong>for</strong>med this attack even in the presence of the Java Card rewall mechanism.<br />

192

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!