La Java Card est aujourd'hui le type de cartes à puce le plus déployé dans le milieu bancaire ou dans la téléphonie mobile. Outre la présence de nombreuses contre-mesures physiques pour protéger le microprocesseur contre les attaques externes, la machine virtuelle Java Card possède un ensemble de mécanismes (comme le vérificateur de \textit{bytecode} et le pare-feu) qui, combinés avec le typage du langage Java, offrent des propriétés d'isolation forte des applications (applets) vis-à-vis de l'exécution de la machine virtuelle Java Card. Mais l'évolution des attaques logicielles par confusion de type et par des moyens physiques a montré des limitations au modèle d'isolation de la machine virtuelle. Dans un premier temps, plusieurs travaux montrent des nouvelles menaces logiques, physiques et hybrides afin de lever des secrets enfouis dans des instances de Java Card en exploitant les applications chargées comme cibles et vecteurs d'attaque. Par la suite, plusieurs stratégies de contre-mesures sont construites selon deux point de vue. D'une part des protections réactives (contre les attaques en fautes) et proactives (par mise à jour dynamique) sont intégrées dans la machine virtuelle Java Card. D'autre part, des solutions d'analyse de code permettant d'aider le développeur sont évaluées afin de renforcer la sécurité des applets contre des faiblesses de développement ou les exploitations possibles du \textit{bytecode} par des attaques en faute.
soutenue le 04/12/2014