Résumé :
La sécurité des cartes à puce est menacée par des attaques physiques et
logiques. Dans ce mémoireRQV¶intéresse à une contremesure pour une attaque Java
Card qui effectuer une lecture arbitraire de la mémoire. Cette attaque utilise la
confusion de type en exploitant le bug G¶LPSOpPHQWDWLRQ du mécanisme de
transaction de la machine virtuelle Java Card. Une attaque par confusion de type nous
SHUPHWG¶DFFpGHUDX[PpWDV-données des applications, par conséquent lire et écrire la
plus part des locations mémoire de la carte. Cette attaque nous donne une bonne vue
GH O¶RUJDQLVDWLRQ GH OD PpPRLUH GH OD FDUWH. Nous discuterons dans la suite de ce
mémoire l¶H[SORLWDWLRQHQGpWDLOHQSUpVHQWDQWOHFRGHVRXUFHGHO¶DSSOHWTXLSHUPHW
de reproduire cette attaque. Par la suite, nous présenterons notre solution contre une
telle attaque en faisant une extension du vérificateur hors carte afin de détecter le bloc
PDOYHLOODQWTXLSHXWrWUHXQHVRXUFHG¶XQHFRQIXVLRQGHW\SH.
Mots-clé : Contre attaque, Java Card, Carte à puce, Attaque de mémoire, Confusion
de type, transaction, Bug, vérificateur.
Abstract :
Security of smart cards is continuously threatened by many software and hardware
attacks. We present a simple countermeasure against an attack on a Java Card witch
perform arbitrary memory reads. The attack use a known technique of type confusion
of the card's Java Virtual Machine by exploiting the faulty transaction mechanism
implementation. The type confusion attack lets us access the application's private
meta-data, and in turn get full read and write access to arbitrary memory locations on
the card. The attack gives us good insights into overall memory organization of the
card. We discuss the exploit in detail, including the exploit applet source code, to
provide a reproducible attack. Then we expose our approach against such attack by
extending off-card verifier in order to detect ill-formed bloc witch probably make type
confusion.
Keywords: Countermeasure, Java Card, Smart Card, memory attack, type confusion,
Transactions, Bug, verifier.