a generic approach for protecting java card smart card...

63
A Generic Approach for Protecting Java Card TM Smart Card Against Software Attacks Guillaume BOUFFARD PhD Defenced the 10 th of October, 2014 Supervised by Pr. Jean-Louis Lanet guillaume.bouff[email protected] Prix de thèse CNRS 2015 Action: « Objects intelligents Sécurisés et Internet des Objets » June 17 th , 2015 institut de recherche Guillaume BOUFFARD A Generic Approach for Protecting Java Card TM Smart Card Against Software Attacks 1/30 1 / 30

Upload: others

Post on 01-Aug-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

A Generic Approach for Protecting Java CardTMSmart Card Against Software Attacks

Guillaume BOUFFARD

PhD Defenced the 10th of October, 2014Supervised by Pr. Jean-Louis Lanet

[email protected]

Prix de thèse CNRS 2015Action: « Objects intelligents Sécurisés et Internet des Objets »

June 17th, 2015

i nst i tut de recherche

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 1/301/30

Page 2: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

Outline

IntroductionSmart CardJava Card Technology

ContributionFault Tree AnalysisSmart Card Vulnerability Analysis using Fault Tree AnalysisCorrupting the Java Card’s Control FlowSecurity Automatons to Protect the Java Card Control Flow

Conclusion

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 2/302/30

Page 3: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

The Smart Card

I Used in our everyday life:◦ Credit Card;◦ (U)SIM Card;◦ Health Card (French Vitale card);◦ Pay TV;◦ . . .

I Tamper-Resistant Computer;I Securely stores and processes information;I Most of the smart cards are based on Java

Card technology.

This device contains sensitive data

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 3/303/30

Page 4: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

Java Card Security Model

I Off-card security

Java Class Files Java Card Files

Byte Code Converter Byte Code Verifier (BCV) Byte Code Signer

I On-card security

JavaCardFiles

EmbeddedLightweight BCV

Installedapplet

Firewall

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 4/304/30

Page 5: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

Java Card Attacks

Physical attacksI Side Channel attacks (timing

attacks, power analysis attack,etc.);

I Fault attacks (electromagneticinjection, laser beam injection,etc.).

Logical attacksI Execution of malicious Java

Card byte codes.

Combined attacksI Mix of physical and logical

attacks.

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 5/305/30

Page 6: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

Problematic

I Inductive Approach:◦ 1 attack = 1 countermeasure;◦ Bottom-up approach.

I Thesis Objectives:◦ Find and prevent each undesirable events;◦ Global vision to protect the smart card’s assets;◦ Design a top-down analytic approach.

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 6/306/30

Page 7: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

Problematic

I Inductive Approach:◦ 1 attack = 1 countermeasure;◦ Bottom-up approach.

I Thesis Objectives:◦ Find and prevent each undesirable events;◦ Global vision to protect the smart card’s assets;◦ Design a top-down analytic approach.

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 6/306/30

Page 8: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

The Fault Tree Analysis (FTA)

Root unde-sirable event

Intermediateundesir-

able event

Effect 3Effect 2

E1

Effect 1

E1

I Undesirable events;I Initial causes;I Gate connectors.

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 7/307/30

Page 9: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

The Fault Tree Analysis (FTA)

Root unde-sirable event

Intermediateundesir-

able event

Effect 3Effect 2

E1

Effect 1

E1

I Undesirable events;I Initial causes;I Gate connectors.

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 7/307/30

Page 10: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

The Fault Tree Analysis (FTA)

Root unde-sirable event

Intermediateundesir-

able event

Effect 3Effect 2

E1

Effect 1

E1

I Undesirable events;I Initial causes;I Gate connectors.

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 7/307/30

Page 11: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

The Fault Tree Analysis (FTA)

Root unde-sirable event

Intermediateundesir-

able event

Effect 3Effect 2

E1

Effect 1

E1

I Undesirable events;I Initial causes;I Gate connectors.

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 7/307/30

Page 12: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

Smart Card’s Assets

I The smart card’s assets are the code and the data;I Security properties:◦ Integrity;◦ Confidentiality;

I Undesirable events can affect:◦ Code integrity;◦ Data integrity;◦ Code confidentiality;◦ Data confidentiality;

An attack offers the execution of a malicious byte code.

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 8/308/30

Page 13: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

Smart Card’s Assets

I The smart card’s assets are the code and the data;I Security properties:◦ Integrity;◦ Confidentiality;

I Undesirable events can affect:◦ Code integrity;◦ Data integrity;◦ Code confidentiality;◦ Data confidentiality;

An attack offers the execution of a malicious byte code.

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 8/308/30

Page 14: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

Execution of a malicious code

Execution of amalicious code

Control flowcorruption

Typeconfusion

Invoking anunexpectedfunction

Foolingthe

exceptionmechanism

Corruptingfinally-clause

Faultytable

jumpingoperations

Corruptingthe

branchinginstructions

RA

FrameCorruption

Confusinginvoker’sstate

Contextcorruption

Returnaddress

modification

Code desynchronisation

RA

I For this presentation, two vulnerabilities will be introduced:◦ Modifying the return address;◦ Corrupting the finally-clause.

I Thanks to minimal cut set, a countermeasure to protect theexecution flow was developed: the security automatons.

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 9/309/30

Page 15: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

Execution of a malicious code

Execution of amalicious code

Control flowcorruption

Typeconfusion

Invoking anunexpectedfunction

Foolingthe

exceptionmechanism

Corruptingfinally-clause

Faultytable

jumpingoperations

Corruptingthe

branchinginstructions

RA

FrameCorruption

Confusinginvoker’sstate

Contextcorruption

Returnaddress

modification

Code desynchronisation

RA

I For this presentation, two vulnerabilities will be introduced:◦ Modifying the return address;◦ Corrupting the finally-clause.

I Thanks to minimal cut set, a countermeasure to protect theexecution flow was developed: the security automatons.

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 9/309/30

Page 16: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

Execution of a malicious code

Execution of amalicious code

Control flowcorruption

Typeconfusion

Invoking anunexpectedfunction

Foolingthe

exceptionmechanism

Corruptingfinally-clause

Faultytable

jumpingoperations

Corruptingthe

branchinginstructions

RA

FrameCorruption

Confusinginvoker’sstate

Contextcorruption

Returnaddress

modification

Code desynchronisation

RA

I For this presentation, two vulnerabilities will be introduced:◦ Modifying the return address;◦ Corrupting the finally-clause.

I Thanks to minimal cut set, a countermeasure to protect theexecution flow was developed: the security automatons.

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 9/309/30

Page 17: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

Execution of a malicious code

Execution of amalicious code

Control flowcorruption

Typeconfusion

Invoking anunexpectedfunction

Foolingthe

exceptionmechanism

Corruptingfinally-clause

Faultytable

jumpingoperations

Corruptingthe

branchinginstructions

RA

FrameCorruption

Confusinginvoker’sstate

Contextcorruption

Returnaddress

modification

Code desynchronisation

RA

I For this presentation, two vulnerabilities will be introduced:◦ Modifying the return address;◦ Corrupting the finally-clause.

I Thanks to minimal cut set, a countermeasure to protect theexecution flow was developed: the security automatons.

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 9/309/30

Page 18: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

Execution of a malicious codeExecution of amalicious code

Control flowcorruption

Typeconfusion

Invoking anunexpectedfunction

Foolingthe

exceptionmechanism

Corruptingfinally-clause

Faultytable

jumpingoperations

Corruptingthe

branchinginstructions

RA

FrameCorruption

Confusinginvoker’sstate

Contextcorruption

Returnaddress

modification

Code desynchronisation

RA

SecurityAutomatons

I For this presentation, two vulnerabilities will be introduced:◦ Modifying the return address;◦ Corrupting the finally-clause.

I Thanks to minimal cut set, a countermeasure to protect theexecution flow was developed: the security automatons.

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 9/309/30

Page 19: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

The Java Method Return

“ The current frame is used in this case to restore the state ofthe invoker, including its local variables and operand stack,with the program counter of the invoker appropriatelyincremented to skip past the method invocation instruction.Execution then continues normally in the invoking method’sframe with the returned value (if any) pushed onto the operandstack of that frame. (source: Java 8 Virtual Machine Specification) ”

I A frame header may include:

◦ Previous frame’s size;◦ Program counter of the

invoker (the return address) ;◦ Security context of the

invoker.

Operand stack

Header data

Local variables

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 10/3010/30

Page 20: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

The Java Method Return

“ The current frame is used in this case to restore the state ofthe invoker, including its local variables and operand stack,with the program counter of the invoker appropriatelyincremented to skip past the method invocation instruction.Execution then continues normally in the invoking method’sframe with the returned value (if any) pushed onto the operandstack of that frame. (source: Java 8 Virtual Machine Specification) ”

I A frame header may include:

◦ Previous frame’s size;◦ Program counter of the

invoker (the return address) ;◦ Security context of the

invoker.

Operand stack

Header data

Local variables

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 10/3010/30

Page 21: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

EMAN2: A Ghost In the StackI Modifying the return address;

Return addressmodification

ill-formed code

Code modification

FaultInjection

No framecheck

No BCV

Override thereturn address

Underflow fromthe operandstack [Faugeron,CARDIS 2013]

Overflow fromthe local variable

[Bouffard et al.,CARDIS 2011]

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 11/3011/30

Page 22: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

EMAN2 and Its Avatars

I Stack overflow from the local variables [Bouffard et al., CARDIS 2011]

◦ sstore, sinc, etc.;

I Stack underflow from the operand stack [Faugeron, CARDIS 2013]

◦ dup_x, swap_x, etc.;

I Countermeasures from the literature:◦ Checking the integrity of the frame’s header data;◦ Verifying each access to the frame’s areas [Lackner et al., CARDIS 2012];◦ Scrambling the memory [Barbu’s PhD Thesis, 2012] [Razafindralambo et al.,

SNDS 2012];◦ These countermeasures are at the same level than the attacks which

they prevent;

I This attack modifies the Java Program Counter value upon thereturn address register. Recent smart cards embed countermeasuresagainst this attack! . . . only the path is protected;

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 12/3012/30

Page 23: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

EMAN2 and Its Avatars

I Stack overflow from the local variables [Bouffard et al., CARDIS 2011]

◦ sstore, sinc, etc.;

I Stack underflow from the operand stack [Faugeron, CARDIS 2013]

◦ dup_x, swap_x, etc.;

I Countermeasures from the literature:◦ Checking the integrity of the frame’s header data;◦ Verifying each access to the frame’s areas [Lackner et al., CARDIS 2012];◦ Scrambling the memory [Barbu’s PhD Thesis, 2012] [Razafindralambo et al.,

SNDS 2012];◦ These countermeasures are at the same level than the attacks which

they prevent;I This attack modifies the Java Program Counter value upon the

return address register. Recent smart cards embed countermeasuresagainst this attack! . . . only the path is protected;

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 12/3012/30

Page 24: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

The finally-Clause

I A finally-statement used the jsr (“jump to subroutine”) andret (“return from subroutine”) instructions (deprecated sinceJava 6) ;

I The jsr pushes the address of the instruction immediatelyfollowing it (typed as ReturnAddress);

I Saves the return value (if any) in a local variable;I The ret instruction continues the execution from the value saved

in the local variable.

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 13/3013/30

Page 25: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

Corrupting the finally-ClauseCorrupting

finally-clause

Malicious code

Code modification

Fault InjectionType confusion

No typed heap[Bouffard et al.,CARDIS 2014]

No typed stack

No BCV

Setting a creepyReturnAddress

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 14/3014/30

Page 26: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

How to Exploit the jsr instruction?

I Hypothesis:◦ No verified by a BCV◦ No typed stack

short jsrAttack () {01 // flags: 0 max_stack : 111 // nargs: 1 max_locals: 1/*0x53*/ L0: jsr L2/*0x56*/ L1: sspush 0xCAFE/*0x59*/ sreturn/*0x5A*/ sspush 0xBEEF/*0x5D*/ sreturn/*0x5E*/ L2: astore_1/*0x5F*/ sinc 0x1, 0x4/*0x62*/ ret 1 // -> L1

}

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 15/3015/30

Page 27: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

How to Exploit the jsr instruction?

I Hypothesis:◦ No verified by a BCV◦ No typed stack

short jsrAttack () {01 // flags: 0 max_stack : 111 // nargs: 1 max_locals: 1/*0x53*/ L0: jsr L2/*0x56*/ L1: sspush 0xCAFE/*0x59*/ sreturn/*0x5A*/ sspush 0xBEEF/*0x5D*/ sreturn/*0x5E*/ L2: astore_1/*0x5F*/ sinc 0x1, 0x4/*0x62*/ ret 1 // -> L1

}

Type confusion

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 15/3015/30

Page 28: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

Cheating the BCV component

I The BCV checks the structure and the semantics of the application;I To verify the byte code semantics, the BCV starts its analyse from

an entry point;I Unreachable code has no entry point ⇒ B it is not checked by

the BCV!I A malicious byte code can be hidden through the BCV verification!

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 16/3016/30

Page 29: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

An Unreachable Code. . .void cheatingBCV () {

04 // flags: 0 max_stack : 403 // nargs: 0 max_locals: 3/*0x05B*/ L0: jsr L1// .../*0x066*/ L1: astore_3

L2: ... // Set of instructions/*0x163*/ if_scmpeq_w 0xFF05 // -> L2/*0x166*/ return/*0x167*/ sinc 0x3, 0x4/*0x16A*/ ret 0x3

}

Checked by the BCV

Unchecked by the BCV

verifycap api_export_files/**/*.exp maliciousCAPFile.cap[ INFO: ] Verifier [v3.0.5][ INFO: ] Copyright (c) 2015, Oracle and/or its affiliates.

All rights reserved.

[ INFO: ] Verifying CAP file maliciousCAPFile.cap[ INFO: ] Verification completed with 0 warnings and 0 errors.

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 17/3017/30

Page 30: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

An Unreachable Code. . .void cheatingBCV () {

04 // flags: 0 max_stack : 403 // nargs: 0 max_locals: 3/*0x05B*/ L0: jsr L1// .../*0x066*/ L1: astore_3

L2: ... // Set of instructions/*0x163*/ if_scmpeq_w 0xFF05 // -> L2/*0x166*/ return/*0x167*/ sinc 0x3, 0x4/*0x16A*/ ret 0x3

}

Checked by the BCV

Unchecked by the BCV

verifycap api_export_files/**/*.exp maliciousCAPFile.cap[ INFO: ] Verifier [v3.0.5][ INFO: ] Copyright (c) 2015, Oracle and/or its affiliates.

All rights reserved.

[ INFO: ] Verifying CAP file maliciousCAPFile.cap[ INFO: ] Verification completed with 0 warnings and 0 errors.

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 17/3017/30

Page 31: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

An Unreachable Code. . .void cheatingBCV () {

04 // flags: 0 max_stack : 403 // nargs: 0 max_locals: 3/*0x05B*/ L0: jsr L1// .../*0x066*/ L1: astore_3

L2: ... // Set of instructions/*0x163*/ if_scmpeq_w 0xFF05 // -> L2/*0x166*/ return/*0x167*/ sinc 0x3, 0x4/*0x16A*/ ret 0x3

}

Checked by the BCV

Unchecked by the BCV

verifycap api_export_files/**/*.exp maliciousCAPFile.cap[ INFO: ] Verifier [v3.0.5][ INFO: ] Copyright (c) 2015, Oracle and/or its affiliates.

All rights reserved.

[ INFO: ] Verifying CAP file maliciousCAPFile.cap[ INFO: ] Verification completed with 0 warnings and 0 errors.

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 17/3017/30

Page 32: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

. . . Can Be Executed

I EMAN4 [Bouffard et al., CARDIS 2011] introduced a way to change aninstruction’s parameter upon a laser beam injection;◦ This attack focuses on wide instructions;◦ goto_w, if_*_w, . . .

I if_scmpeq_w 0xFF05

⇒ if_scmpeq_w 0x0005

I That can be viewed as a logical attack enabler.

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 18/3018/30

Page 33: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

. . . Can Be Executed

I EMAN4 [Bouffard et al., CARDIS 2011] introduced a way to change aninstruction’s parameter upon a laser beam injection;◦ This attack focuses on wide instructions;◦ goto_w, if_*_w, . . .

I if_scmpeq_w 0xFF05

⇒ if_scmpeq_w 0x0005I That can be viewed as a logical attack enabler.

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 18/3018/30

Page 34: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

. . . Can Be Executed

I EMAN4 [Bouffard et al., CARDIS 2011] introduced a way to change aninstruction’s parameter upon a laser beam injection;◦ This attack focuses on wide instructions;◦ goto_w, if_*_w, . . .

I if_scmpeq_w 0xFF05 ⇒ if_scmpeq_w 0x0005

I That can be viewed as a logical attack enabler.

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 18/3018/30

Page 35: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

. . . Can Be Executed

I EMAN4 [Bouffard et al., CARDIS 2011] introduced a way to change aninstruction’s parameter upon a laser beam injection;◦ This attack focuses on wide instructions;◦ goto_w, if_*_w, . . .

I if_scmpeq_w 0xFF05 ⇒ if_scmpeq_w 0x0005I That can be viewed as a logical attack enabler.

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 18/3018/30

Page 36: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

Protecting the Execution Flow

I Direct modification:◦ Integrity → can be bypassed when the JPC is updated by the JCVM;

I Transient fault:◦ Executing twice the same piece of code;◦ It is a very expensive solution;

I Solution: dynamically check the applet’s CFG:◦ Séré’s countermeasures [Séré’s PhD thesis, 2010] based on Field of bits,

Basic block method or Path check technique;◦ This kind of countermeasure can be computed in the card?

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 19/3019/30

Page 37: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

Security Automatons and Execution MonitorPrinciple

I Detecting a deviant behaviour ⇒ safety property “nothing badhappens”;

I Preventing some attacks: several partial traces of events aredefined:◦ Property can be encoded by a finite state automaton;

I Schneider automatons: (Q, q0, δ), where Q is a set of states, qo isthe initial state and δ is a transition function (Q · I)→ 2Q);

I The CFG can be computed during the loading process;I When interpreting a byte code, the monitor checks:◦ If the transition generates an authorized partial trace;◦ If not, it takes an appropriate countermeasure.

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 20/3020/30

Page 38: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

Security Automatons and Execution Monitor (Cont.)Principle

q0start

q1

q2

δ3

δ1

δ2

δ4

δ5

Security automaton(computed inside the card)

State q0 q1 q2q0 δ1 δ3q1 δ2q2 δ5 δ4

State matrix (binary implementationof the security automaton)

I [Bouffard et al., SSCC 2013], [Bouffard et al., SAR-SSI 2013] and extended in[Bouffard et al., IJTMCC 2014].

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 21/3021/30

Page 39: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

Security Automaton in Practiceprotected Protocolpayment (byte[] buffer, short offset, byte length) {

A[0] = 0; // initialisation of array Afor (byte j = 0; j < buffer[(byte)(offset+12)]; j++) {

D[j] = 0; // initialisation of array D}pin = new OwnerPIN((byte) TRY_LIMIT, (byte) MAX_PIN_SIZE);// Initialisation of pinpin.update(myPin, (short) START_OFFSET, (byte) myPin.length);register(); // registering this instance

} // source: (Girard et al., CRiSIS 2010)

I To create the security automaton:◦ Local view of the method’s CFG;◦ The set S contains the element of a language which expresses the

control flow integrity policy:• ifeq, ifne, goto, invoke, return, etc.;• plus the dummy instruction join representing any other instruction

pointed by a label.

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 22/3022/30

Page 40: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

Security Automaton in Practiceprotected Protocolpayment (byte[] buffer, short offset, byte length) {

A[0] = 0; // initialisation of array Afor (byte j = 0; j < buffer[(byte)(offset+12)]; j++) {

D[j] = 0; // initialisation of array D}pin = new OwnerPIN((byte) TRY_LIMIT, (byte) MAX_PIN_SIZE);// Initialisation of pinpin.update(myPin, (short) START_OFFSET, (byte) myPin.length);register(); // registering this instance

} // source: (Girard et al., CRiSIS 2010)

I To create the security automaton:◦ Local view of the method’s CFG;◦ The set S contains the element of a language which expresses the

control flow integrity policy:• ifeq, ifne, goto, invoke, return, etc.;• plus the dummy instruction join representing any other instruction

pointed by a label.

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 22/3022/30

Page 41: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

Security Automaton included in the JCVM

/*0x03*/ L0: aload_0/*0x04*/ invokespecial 6/*0x2E*/ goto L2

/*0x3A*/ L2: sload_3.../*0x42*/ if_scmplt L1

/*0x30*/ L1: getfield_a_this 1.../*0x39*/ sstore_3

/*0x4A*/ L3: aload_0.../*0x4B*/ invokespecial 5.../*0x56*/ invokevirtual 7.../*0x5A*/ invokevirtual 8/*0x5D*/ return

0start 2

1

3goto

if_scmplt join

!if_scmplt

The trace recognised would be:(goto, (if_scmplt, join)*,!if_scmplt, return)

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 23/3023/30

Page 42: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

Security Automaton included in the JCVM

/*0x03*/ L0: aload_0/*0x04*/ invokespecial 6/*0x2E*/ goto L2

/*0x3A*/ L2: sload_3.../*0x42*/ if_scmplt L1

/*0x30*/ L1: getfield_a_this 1.../*0x39*/ sstore_3

/*0x4A*/ L3: aload_0.../*0x4B*/ invokespecial 5.../*0x56*/ invokevirtual 7.../*0x5A*/ invokevirtual 8/*0x5D*/ return

0start 2

1

3goto

if_scmplt join

!if_scmplt

The trace recognised would be:(goto, (if_scmplt, join)*,!if_scmplt, return)

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 23/3023/30

Page 43: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

Security Automaton included in the JCVM

/*0x03*/ L0: aload_0/*0x04*/ invokespecial 6/*0x2E*/ goto L2

/*0x3A*/ L2: sload_3.../*0x42*/ if_scmplt L1

/*0x30*/ L1: getfield_a_this 1.../*0x39*/ sstore_3

/*0x4A*/ L3: aload_0.../*0x4B*/ invokespecial 5.../*0x56*/ invokevirtual 7.../*0x5A*/ invokevirtual 8/*0x5D*/ return

0start 2

1

3goto

if_scmplt join

!if_scmplt

The trace recognised would be:(goto, (if_scmplt, join)*,!if_scmplt, return)

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 23/3023/30

Page 44: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

Security Automaton included in the JCVM

/*0x03*/ L0: aload_0/*0x04*/ invokespecial 6/*0x2E*/ goto L2

/*0x3A*/ L2: sload_3.../*0x42*/ if_scmplt L1

/*0x30*/ L1: getfield_a_this 1.../*0x39*/ sstore_3

/*0x4A*/ L3: aload_0.../*0x4B*/ invokespecial 5.../*0x56*/ invokevirtual 7.../*0x5A*/ invokevirtual 8/*0x5D*/ return

0start 2

1

3goto

if_scmplt join

!if_scmplt

The trace recognised would be:(goto, (if_scmplt, join)*,!if_scmplt, return)

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 23/3023/30

Page 45: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

Security Automaton included in the JCVM

/*0x03*/ L0: aload_0/*0x04*/ invokespecial 6/*0x2E*/ goto L2

/*0x3A*/ L2: sload_3.../*0x42*/ if_scmplt L1

/*0x30*/ L1: getfield_a_this 1.../*0x39*/ sstore_3

/*0x4A*/ L3: aload_0.../*0x4B*/ invokespecial 5.../*0x56*/ invokevirtual 7.../*0x5A*/ invokevirtual 8/*0x5D*/ return

0start 2

1

3goto

if_scmplt join

!if_scmplt

The trace recognised would be:(goto, (if_scmplt, join)*,!if_scmplt, return)

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 23/3023/30

Page 46: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

Security Automaton included in the JCVM

/*0x03*/ L0: aload_0/*0x04*/ invokespecial 6/*0x2E*/ goto L2

/*0x3A*/ L2: sload_3.../*0x42*/ if_scmplt L1

/*0x30*/ L1: getfield_a_this 1.../*0x39*/ sstore_3

/*0x4A*/ L3: aload_0.../*0x4B*/ invokespecial 5.../*0x56*/ invokevirtual 7.../*0x5A*/ invokevirtual 8/*0x5D*/ return

0start 2

1

3goto

if_scmplt join

!if_scmplt

The trace recognised would be:(goto, (if_scmplt, join)*,!if_scmplt, return)

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 23/3023/30

Page 47: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

Security Automaton included in the JCVM

/*0x03*/ L0: aload_0/*0x04*/ invokespecial 6/*0x2E*/ goto L2

/*0x3A*/ L2: sload_3.../*0x42*/ if_scmplt L1

/*0x30*/ L1: getfield_a_this 1.../*0x39*/ sstore_3

/*0x4A*/ L3: aload_0.../*0x4B*/ invokespecial 5.../*0x56*/ invokevirtual 7.../*0x5A*/ invokevirtual 8/*0x5D*/ return

0start 2

1

3goto

if_scmplt join

!if_scmplt

The trace recognised would be:(goto, (if_scmplt, join)*,!if_scmplt, return)

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 23/3023/30

Page 48: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

Security Automaton included in the JCVM

/*0x03*/ L0: aload_0/*0x04*/ invokespecial 6/*0x2E*/ goto L2

/*0x3A*/ L2: sload_3.../*0x42*/ if_scmplt L1

/*0x30*/ L1: getfield_a_this 1.../*0x39*/ sstore_3

/*0x4A*/ L3: aload_0.../*0x4B*/ invokespecial 5.../*0x56*/ invokevirtual 7.../*0x5A*/ invokevirtual 8/*0x5D*/ return

0start 2

1

3goto

if_scmplt join

!if_scmplt

The trace recognised would be:(goto, (if_scmplt, join)*,!if_scmplt, return)

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 23/3023/30

Page 49: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

Security Automaton included in the JCVM

/*0x03*/ L0: aload_0/*0x04*/ invokespecial 6/*0x2E*/ goto L2

/*0x3A*/ L2: sload_3.../*0x42*/ if_scmplt L1

/*0x30*/ L1: getfield_a_this 1.../*0x39*/ sstore_3

/*0x4A*/ L3: aload_0.../*0x4B*/ invokespecial 5.../*0x56*/ invokevirtual 7.../*0x5A*/ invokevirtual 8/*0x5D*/ return

0start 2

1

3goto

if_scmplt join

!if_scmplt

The trace recognised would be:(goto, (if_scmplt, join)*,!if_scmplt, return)

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 23/3023/30

Page 50: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

Security Automaton included in the JCVM

/*0x03*/ L0: aload_0/*0x04*/ invokespecial 6/*0x2E*/ goto L2

/*0x3A*/ L2: sload_3.../*0x42*/ if_scmplt L1

/*0x30*/ L1: getfield_a_this 1.../*0x39*/ sstore_3

/*0x4A*/ L3: aload_0.../*0x4B*/ invokespecial 5.../*0x56*/ invokevirtual 7.../*0x5A*/ invokevirtual 8/*0x5D*/ return

0start 2

1

3goto

if_scmplt join

!if_scmplt

The trace recognised would be:(goto, (if_scmplt, join)*,!if_scmplt, return)

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 23/3023/30

Page 51: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

Security Automaton included in the JCVM

/*0x03*/ L0: aload_0/*0x04*/ invokespecial 6/*0x2E*/ goto L2

/*0x3A*/ L2: sload_3.../*0x42*/ if_scmplt L1

/*0x30*/ L1: getfield_a_this 1.../*0x39*/ sstore_3

/*0x4A*/ L3: aload_0.../*0x4B*/ invokespecial 5.../*0x56*/ invokevirtual 7.../*0x5A*/ invokevirtual 8/*0x5D*/ return

0start 2

1

3goto

if_scmplt join

!if_scmplt

The trace recognised would be:(goto, (if_scmplt, join)*,!if_scmplt, return)

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 23/3023/30

Page 52: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

Security Automaton included in the JCVM

/*0x03*/ L0: aload_0/*0x04*/ invokespecial 6/*0x2E*/ goto L2

/*0x3A*/ L2: sload_3.../*0x42*/ if_scmplt L1

/*0x30*/ L1: getfield_a_this 1.../*0x39*/ sstore_3

/*0x4A*/ L3: aload_0.../*0x4B*/ invokespecial 5.../*0x56*/ invokevirtual 7.../*0x5A*/ invokevirtual 8/*0x5D*/ return

0start 2

1

3goto

if_scmplt join

!if_scmplt

The trace recognised would be:(goto, (if_scmplt, join)*,!if_scmplt, return)

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 23/3023/30

Page 53: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

Security Automaton included in the JCVM

/*0x03*/ L0: aload_0/*0x04*/ invokespecial 6/*0x2E*/ goto L2

/*0x3A*/ L2: sload_3.../*0x42*/ if_scmplt L1

/*0x30*/ L1: getfield_a_this 1.../*0x39*/ sstore_3

/*0x4A*/ L3: aload_0.../*0x4B*/ invokespecial 5.../*0x56*/ invokevirtual 7.../*0x5A*/ invokevirtual 8/*0x5D*/ return

0start 2

1

3goto

if_scmplt join

!if_scmplt

The trace recognised would be:(goto, (if_scmplt, join)*,!if_scmplt, return)

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 23/3023/30

Page 54: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

Security Automaton included in the JCVM

/*0x03*/ L0: aload_0/*0x04*/ invokespecial 6/*0x2E*/ goto L2

/*0x3A*/ L2: sload_3.../*0x42*/ if_scmplt L1

/*0x30*/ L1: getfield_a_this 1.../*0x39*/ sstore_3

/*0x4A*/ L3: aload_0.../*0x4B*/ invokespecial 5.../*0x56*/ invokevirtual 7.../*0x5A*/ invokevirtual 8/*0x5D*/ return

0start 2

1

3goto

if_scmplt join

!if_scmplt

The trace recognised would be:(goto, (if_scmplt, join)*,!if_scmplt, return)

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 23/3023/30

Page 55: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

Security Automaton included in the JCVM

/*0x03*/ L0: aload_0/*0x04*/ invokespecial 6/*0x2E*/ goto L2

/*0x3A*/ L2: sload_3.../*0x42*/ if_scmplt L1

/*0x30*/ L1: getfield_a_this 1.../*0x39*/ sstore_3

/*0x4A*/ L3: aload_0.../*0x4B*/ invokespecial 5.../*0x56*/ invokevirtual 7.../*0x5A*/ invokevirtual 8/*0x5D*/ return

0start 2

1

3goto

if_scmplt join

!if_scmplt

The trace recognised would be:(goto, (if_scmplt, join)*,!if_scmplt, return)

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 23/3023/30

Page 56: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

Security Automaton included in the JCVM

/*0x03*/ L0: aload_0/*0x04*/ invokespecial 6/*0x2E*/ goto L2

/*0x3A*/ L2: sload_3.../*0x42*/ if_scmplt L1

/*0x30*/ L1: getfield_a_this 1.../*0x39*/ sstore_3

/*0x4A*/ L3: aload_0.../*0x4B*/ invokespecial 5.../*0x56*/ invokevirtual 7.../*0x5A*/ invokevirtual 8/*0x5D*/ return

0start 2

1

3goto

if_scmplt join

!if_scmplt

The trace recognised would be:(goto, (if_scmplt, join)*,!if_scmplt, return)

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 23/3023/30

Page 57: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

Security Automaton included in the JCVM (Cont.)

0start

1 2

3

4

5 6

7 8

invokespecial 6

goto

if_scmplt join

!if_scmplt

invokespecial 5

invokevirtual 7

invokevirtual 8

return

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 24/3024/30

Page 58: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

Security Automaton included in the JCVM (Cont.)

HHHHHHδq

q0 q1 q2 q3 q4 q5 q6 q7

invokespecial 6 q1goto q2join q2if_scmplt q3,4invokespecial 5 q5invokevirtual 7 q6invokevirtual 8 q7return +

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 25/3025/30

Page 59: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

The Security Automaton

I The execution flow is checked by the security automaton upon afinite state machine;

I Each transition is verified by the execution monitor;I The CFG can be automatically computed by the loading process;I The CFG can be encoded upon a sparse matrix → optimised solution

to store the CFGI The JCVM and the loader should be modified to handle

automatons.

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 26/3026/30

Page 60: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

Conclusion

I This thesis aimed at designing efficient and affordablecountermeasure using a top-down approach;

I It is based on the Fault Tree Analysis which this approach aims atbeing generic;

I We identified major undesirable events:◦ We discovered new attack paths, someones are generic;◦ And introduced high level-countermeasures.

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 27/3027/30

Page 61: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

Conclusion (Cont.)

I We focused on the code integrity:◦ Modification of the control flow;◦ Corruption of the Java Card Linker [Hamadouche et al., SAR-SSI 2012],

[Razafindralambo et al., SNDS 2012] and [Bouffard et al., CRiSIS 2013];

I Each evaluated attacks succeeded on different cards◦ Bottom-up approach ?◦ We wear a white hat;

I Our approach aims at helping card manufacturers to clearly identifythe assets to protect.

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 28/3028/30

Page 62: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

Thank you for your attention!Questions?

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 29/3029/30

Page 63: A Generic Approach for Protecting Java Card Smart Card ...cedric.cnam.fr/workshops/iot-cybersecurite-cyber... · A Generic Approach for Protecting Java CardTM Smart Card Against Software

Publications

During my PhD thesis, I have co-written 27 publications:I 2 book chapters;I 5 journal articles;I 3 invited conferences;I 12 articles in international conferences with review and proceedings;I 4 articles in national conferences with review and proceedings;I 1 articles in national conferences with review and without

proceeding;I 1 posters.

Guillaume BOUFFARD A Generic Approach for Protecting Java CardTM Smart Card Against Software Attacks 30/3030/30