Fault ¡enabled ¡viruses ¡against ¡smart ¡cards ¡ 1 ¡ 2 ¡ 1 ¡ Samiya ¡HAMADOUCHE ¡ ¡ ¡, ¡ Jean-‑Louis ¡LANET ¡ ¡ ¡ ¡, ¡Mohamed ¡MEZGHICHE ¡ 1 ¡ LIMOSE ¡Laboratory, ¡University ¡of ¡Boumerdès ¡(Algeria) ¡ 2 ¡ INRIA ¡LHS-‑PEC, ¡Rennes ¡ SDTA ¡2014 ¡ Clermont ¡Ferrand, ¡France, ¡ 5th ¡of ¡December ¡ ¡ Jean-‑Louis ¡LANET ¡ Fault ¡enabled ¡viruses ¡against ¡smart ¡cards ¡ ¡
Outline ¡ � ¡ ¡Context ¡ ¡ � ¡ ¡MoSvaSon ¡ � ¡ ¡Example ¡: ¡Get ¡the ¡secret ¡key ¡ � ¡ ¡The ¡proposed ¡approach ¡ � ¡ ¡Concepts ¡ � ¡ ¡Principal ¡ � ¡ ¡Conclusion ¡and ¡future ¡work ¡ ¡ Jean-‑Louis ¡LANET ¡ Fault ¡enabled ¡viruses ¡against ¡smart ¡cards ¡ ¡
Context ¡ Smart ¡Card ¡ � ¡ ¡Computer ¡with ¡reduced ¡resources ¡ � ¡ ¡Secured ¡device ¡that ¡stores ¡and ¡processes ¡ ¡ ¡ ¡ ¡ ¡sensiSve ¡data ¡ � ¡ ¡Many ¡uses ¡ ¡ � ¡ ¡Telecom ¡ ¡ ¡ � ¡ ¡Banking ¡ ¡ � ¡ ¡IdenSty ¡(passport, ¡etc.) ¡ � ¡ ¡Transport ¡ � ¡ ¡Others ¡… ¡ � ¡ ¡Java ¡Card ¡Pla[orm ¡ ¡ 1 ¡ Jean-‑Louis ¡LANET ¡ Fault ¡enabled ¡viruses ¡against ¡smart ¡cards ¡ ¡
Context ¡ Java ¡Card ¡security ¡ � ¡ ¡Security ¡assured ¡by ¡: ¡ � ¡Java ¡language ¡ ¡ � ¡Embedded ¡security ¡mechanisms ¡ ¡ ¡ ¡ ¡ ¡(byte ¡code ¡verifier, ¡firewall ¡, ¡transacSon, ¡etc.) ¡ ¡ ¡ ¡ ¡ ¡ ¡ 2 ¡ Jean-‑Louis ¡LANET ¡ Fault ¡enabled ¡viruses ¡against ¡smart ¡cards ¡ ¡
Context ¡ Java ¡Card ¡security ¡ � ¡ ¡Security ¡assured ¡by ¡: ¡ � ¡Java ¡language ¡ ¡ � ¡Embedded ¡security ¡mechanisms ¡ ¡ ¡ ¡ ¡ ¡(byte ¡code ¡verifier, ¡firewall ¡, ¡transacSon, ¡etc.) ¡ ¡ � ¡ ¡SensiSve ¡data ¡to ¡protect ¡ ¡ ¡ Physical ¡ ¡ ¡ Logical Attacks Combined ¡ 2 ¡ Jean-‑Louis ¡LANET ¡ Fault ¡enabled ¡viruses ¡against ¡smart ¡cards ¡ ¡
Context ¡ Fault ¡A]acks ¡ � ¡ ¡Introduce ¡perturbaSons ¡in ¡the ¡execuSon ¡environment ¡of ¡the ¡chip ¡ � ¡ ¡Means ¡ � ¡ ¡Clock ¡glitches ¡ � ¡ ¡Power ¡spikes ¡ � ¡ ¡Temperature ¡modificaSon ¡ � ¡ ¡ElectromagneSc ¡disturbance ¡ ¡ � ¡ ¡IlluminaSon ¡(OpScal ¡a]ack ¡/ ¡Light ¡a]ack) ¡ � ¡ ¡… ¡ ¡ ¡ ¡ ¡ ¡ 3 ¡ Jean-‑Louis ¡LANET ¡ Fault ¡enabled ¡viruses ¡against ¡smart ¡cards ¡ ¡
Context ¡ Fault ¡A]acks ¡ � ¡ ¡Fault ¡models: ¡Fault ¡a]acks ¡classificaSon ¡ � ¡ ¡Is ¡only ¡available ¡at ¡the ¡binary ¡level, ¡ � ¡ ¡Depend ¡on ¡the ¡source ¡(laser ¡or ¡EM). ¡ ¡ ¡ Fault ¡model ¡ Precision ¡ Posi?on ¡ Timing ¡ Fault ¡type ¡ Precise ¡bit ¡error ¡ Bit ¡ full ¡control ¡ full ¡control ¡ BSR* ¡ Precise ¡byte ¡error ¡ Byte ¡ full ¡control ¡ full ¡control ¡ BSR*, ¡random ¡ Unknown ¡byte ¡error ¡ Byte ¡ lose ¡control ¡ full ¡control ¡ BSR*, ¡random ¡ Random ¡error ¡ Variable ¡ no ¡control ¡ parSal ¡control ¡ Random ¡ * ¡BSR ¡: ¡Bit ¡Set ¡(0x00) ¡or ¡Reset ¡(0xFF) ¡ ¡ 4 ¡ Jean-‑Louis ¡LANET ¡ Fault ¡enabled ¡viruses ¡against ¡smart ¡cards ¡ ¡
Outline ¡ � ¡ ¡Context ¡ ¡ � ¡ ¡MoSvaSon ¡ � ¡ ¡Example ¡: ¡Get ¡the ¡secret ¡key ¡ � ¡ ¡The ¡proposed ¡approach ¡ � ¡ ¡Concepts ¡ � ¡ ¡Principal ¡ � ¡ ¡Conclusion ¡and ¡future ¡work ¡ ¡ Jean-‑Louis ¡LANET ¡ Fault ¡enabled ¡viruses ¡against ¡smart ¡cards ¡ ¡
MoSvaSon ¡ Fault ¡Enabled ¡Viruses ¡ � ¡ ¡A ¡malicious ¡code ¡that ¡can ¡be ¡loaded ¡into ¡the ¡card ¡without ¡being ¡detected ¡ ¡ ¡ ¡ ¡ ¡ ¡by ¡the ¡security ¡mechanisms ¡ ¡ � ¡ ¡AcSvated, ¡aaer ¡being ¡loaded ¡in ¡the ¡card, ¡using ¡a ¡fault ¡injecSon ¡ ¡ � ¡ ¡Consequence ¡: ¡modificaSon ¡of ¡the ¡loaded ¡code ¡behavior ¡to ¡a ¡hosSle ¡one ¡ ¡ 5 ¡ Jean-‑Louis ¡LANET ¡ Fault ¡enabled ¡viruses ¡against ¡smart ¡cards ¡ ¡
MoSvaSon ¡ Fault ¡Enabled ¡Viruses ¡ Ques?on ¡: ¡ ¡Is ¡it ¡possible ¡to ¡hide ¡a ¡hosSle ¡code ¡inside ¡a ¡well-‑ typed ¡program ¡and ¡then ¡acSvate ¡it ¡using ¡a ¡fault ¡injecSon ¡ once ¡loaded ¡in ¡the ¡card? ¡ ¡ Fault ¡enabled ¡viruses ¡construc?on ¡methodology ¡ ¡ 6 ¡ Jean-‑Louis ¡LANET ¡ Fault ¡enabled ¡viruses ¡against ¡smart ¡cards ¡ ¡
MoSvaSon ¡ Basic ¡idea ¡ Hypothesis ¡ Ins Inoffensive Inoffensive Hostile Code ¡ Code Code ?? � ¡ ¡Byte ¡code ¡level ¡ � ¡ ¡Fault ¡model ¡ � ¡ ¡Precise ¡byte ¡error ¡ � ¡ ¡Single ¡fault ¡ ¡ Opcode op1 op2 � ¡ ¡BSR ¡(0x00) ¡ ¡ � ¡ ¡Non-‑encrypted ¡memory ¡ ¡ 7 ¡ Jean-‑Louis ¡LANET ¡ Fault ¡enabled ¡viruses ¡against ¡smart ¡cards ¡ ¡
MoSvaSon ¡ Basic ¡idea ¡ Hypothesis ¡ Ins Inoffensive Inoffensive Hostile Code ¡ Code Code ?? � ¡ ¡Byte ¡code ¡level ¡ � ¡ ¡Fault ¡model ¡ � ¡ ¡Precise ¡byte ¡error ¡ Nop � ¡ ¡Single ¡fault ¡ ¡ Ins1 op2 (0x00) � ¡ ¡BSR ¡(0x00) ¡ ¡ � ¡ ¡Non-‑encrypted ¡memory ¡ Potentially a valid instruction To find the instructions sequence to add, at the beginning of the hostile code, respecting a set of defined constraints ¡ 8 ¡ Jean-‑Louis ¡LANET ¡ Fault ¡enabled ¡viruses ¡against ¡smart ¡cards ¡ ¡
MoSvaSon ¡ Basic ¡idea ¡ Byte code Instructions Inoffensive Code Code to hide Ins … . Ins i ?? ?? Ins j … . Ins n ?? Path Start state Arrival state A Constraints Satisfaction Problem ¡ 9 ¡ Jean-‑Louis ¡LANET ¡ Fault ¡enabled ¡viruses ¡against ¡smart ¡cards ¡ ¡
Outline ¡ � ¡ ¡Context ¡ ¡ � ¡ ¡MoSvaSon ¡ � ¡ ¡Example ¡: ¡Get ¡the ¡secret ¡key ¡ � ¡ ¡The ¡proposed ¡approach ¡ � ¡ ¡Concepts ¡ � ¡ ¡Principal ¡ � ¡ ¡Conclusion ¡and ¡future ¡work ¡ ¡ Jean-‑Louis ¡LANET ¡ Fault ¡enabled ¡viruses ¡against ¡smart ¡cards ¡ ¡
Example ¡: ¡Get ¡the ¡secret ¡key ¡ public void process (APDU apdu ) { short localS ; byte localB ; // get the APDU buffer byte [] apduBuffer = apdu.getBuffer (); B1 if (selectingApplet ()) { return ; } byte receivedByte=(byte)apdu.setIncomingAndReceive(); // any code can be placed here // ... B2 ¡ DES keys.getKey (apduBuffer , (short) 0) ; B3 ¡ apdu.setOutgoingAndSend ((short) 0 ,16) ; } ¡ 10 ¡ Jean-‑Louis ¡LANET ¡ Fault ¡enabled ¡viruses ¡against ¡smart ¡cards ¡ ¡
Example ¡: ¡Get ¡the ¡secret ¡key ¡ OFFSETS INSTRUCTIONS OPERANDS ... ... /*00d6*/ getfield_a_this 1 // DES keys /*00d8*/ aload 4 // L4=> apdubuffer /*00da*/ sconst_0 /*00db*/ invokeinterface nargs: 3, index: 0 , const: 3 , method :4 /*00e0*/ pop // returned byte ... ... ¡ 11 ¡ Jean-‑Louis ¡LANET ¡ Fault ¡enabled ¡viruses ¡against ¡smart ¡cards ¡ ¡
Example ¡: ¡Get ¡the ¡secret ¡key ¡ OFFSETS INSTRUCTIONS OPERANDS . . . /*00d6*/ getfield_a_this 1 // DES keys /*00d8*/ aload 4 // L4=> apdubuffer /*00da*/ sconst_0 /*00db*/ invokeinterface nargs: 3, index: 2 , const:60 , method :4 /*00e0*/ pop // returned byte ... ... ¡ 12 ¡ Jean-‑Louis ¡LANET ¡ Fault ¡enabled ¡viruses ¡against ¡smart ¡cards ¡ ¡
Example ¡: ¡Get ¡the ¡secret ¡key ¡ OFFSETS INSTRUCTIONS OPERANDS . . . /*00d6*/ getfield_a_this 1 // DES keys /*00d8*/ aload 4 // L4=> apdubuffer /*00da*/ sconst_0 /*00db*/ invokeinterface 03, 02, 3C, 04 /*00e0*/ pop // returned byte ... ... ¡ 12 ¡ Jean-‑Louis ¡LANET ¡ Fault ¡enabled ¡viruses ¡against ¡smart ¡cards ¡ ¡
Example ¡: ¡Get ¡the ¡secret ¡key ¡ OFFSETS INSTRUCTIONS OPERANDS . . . /*00d6*/ getfield_a_this 1 // DES keys /*00d8*/ aload 4 // L4=> apdubuffer /*00da*/ sconst_0 /*00db*/ ifle ?? //no operand /*00dc*/ invokeinterface 03, 02, 3C, 04 /*00e1*/ pop // returned byte ... ... ¡ 13 ¡ Jean-‑Louis ¡LANET ¡ Fault ¡enabled ¡viruses ¡against ¡smart ¡cards ¡ ¡
Recommend
More recommend