Contributions à la sécurité des Java Card Julien Iguchi-Cartigny To cite this version: Julien Iguchi-Cartigny. Contributions à la sécurité des Java Card. Cryptographie et sécurité [cs.CR]. Université de Limoges, 2014. tel-01249879 HAL Id: tel-01249879 https://hal.archives-ouvertes.fr/tel-01249879 Submitted on 4 Jan 2016 HAL is a multi-disciplinary open access L’archive ouverte pluridisciplinaire HAL, est archive for the deposit and dissemination of sci- destinée au dépôt et à la diffusion de documents entific research documents, whether they are pub- scientifiques de niveau recherche, publiés ou non, lished or not. The documents may come from émanant des établissements d’enseignement et de teaching and research institutions in France or recherche français ou étrangers, des laboratoires abroad, or from public or private research centers. publics ou privés. Distributed under a Creative Commons Attribution - NonCommercial| 4.0 International License Contributions à la sécurité des Java Card Mémoire pour l’obtention de l’Habilitation à diriger des recherches Discipline : Informatique par Julien IGUCHI-CARTIGNY présenté le 4 décembre 2014 Composition du jury : Président : Gilles Grimaud Professeur - Université Lille 1 - LIFL Rapporteurs : Pierre Paradinas Professeur titulaire de la chaire Systèmes embarqués au CNAM Didier Donsez Professeur à l’Université de Grenoble 1 Daniel Hagimont Professeur à l’INPT/ENSEEIHT Examinateur : Christophe Bidan Professeur à Supélec Rennes Directeur : Jean-Louis Lanet Professeur à l’Université de Limoges Table des matières Table des matières 3 Table des figures 5 1 Présentation 13 1.1 Contexte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14 2 Problématiques 17 2.1 De la réalité de la sécurité des cartes . . . . . . . . . . . . . . . . . . . . 17 2.2 De l’attaque des et par des applications . . . . . . . . . . . . . . . . . . . 22 2.3 De l’importance des relations industrielles . . . . . . . . . . . . . . . . . 22 2.4 De l’évaluation de nos propositions de contre-mesures . . . . . . . . . . . 23 2.5 De l’intégration dans l’écosystème Java Card . . . . . . . . . . . . . . . . 24 2.6 Exposé des verrous scientifiques . . . . . . . . . . . . . . . . . . . . . . . 26 2.7 Programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 3 De l’attaque de la JCVM par les applications 29 3.1 Évaluation des protocoles de communication . . . . . . . . . . . . . . . . 29 3.2 Évaluation par applet frauduleux . . . . . . . . . . . . . . . . . . . . . . 35 3.3 Bilan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39 3.4 Ressources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 4 De la sécurité de la machine virtuelle Java Card 43 4.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 4.2 Contrer les attaques en faute contre les applets . . . . . . . . . . . . . . . 43 4.3 Bilan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48 4.4 Mise à jour dynamique des applets . . . . . . . . . . . . . . . . . . . . . 49 4.5 Ressources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57 5 De la défense des applications par analyse statique 59 5.1 Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 59 5.2 De l’analyse d’applet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60 5.3 Protection du code du programmeur . . . . . . . . . . . . . . . . . . . . 61 5.4 Défense des applications web contre les attaques XSS . . . . . . . . . . . 62 5.5 Protection contre les attaques en fautes . . . . . . . . . . . . . . . . . . . 65 5.6 Bilan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67 5.7 Ressources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68 6 Autre Travaux 71 3 4 TABLE DES MATIÈRES 6.1 Authentification par test de Turing graphique sur mobile . . . . . . . . . 71 6.2 VoIP complètement anonyme . . . . . . . . . . . . . . . . . . . . . . . . 71 6.3 Réseau domestique sécurisé . . . . . . . . . . . . . . . . . . . . . . . . . 72 6.4 Sécurité des mécanismes d’hypervision . . . . . . . . . . . . . . . . . . . 72 7 Bilan 73 7.1 Originalité de l’approche . . . . . . . . . . . . . . . . . . . . . . . . . . . 74 7.2 Bilan personnel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75 8 Perspectives 77 8.1 Contexte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77 8.2 Propositions . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78 8.3 MesoVisor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 79 8.4 Programme . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 8.5 Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81 9 Ressources 83 9.1 Projets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86 9.2 Spin-off . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87 9.3 Thèses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88 9.4 Ingénieurs associés . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 89 9.5 Stages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90 9.6 Projets étudiants . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94 10 Bibliographie personnelle 97 Thèses encadrées . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 Éditeur . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 97 Revues internationales avec comité de lecture . . . . . . . . . . . . . . . . . . 97 Chapitres d´ouvrage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 98 Conférences internationales avec actes et comités de sélection . . . . . . . . . . 98 Workshops internationaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 Conférences internationales . . . . . . . . . . . . . . . . . . . . . . . . . . . . 100 Conférences nationales avec actes et comités de sélection . . . . . . . . . . . . 101 Conférences nationales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 Workshops nationaux . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 102 Conférences invitées nationales . . . . . . . . . . . . . . . . . . . . . . . . . . 102 Posters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 Rapports de recherche . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 Thèses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103 Bibliographie 105 I Annexes 119 A CV détaillé 121 B Sélection d’articles 129 Table des figures 1.1 Flot de développement Java Card . . . . . . . . . . . . . . . . . . . . . . . . 15 2.1 Flot de développement Java Card . . . . . . . . . . . . . . . . . . . . . . . . 26 3.1 Support HTTP et BIP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30 3.2 Flot de fuzzing sur Java Card . . . . . . . . . . . . . . . . . . . . . . . . . . 32 4.1 Surcoût d’exécution des contre-mesures. . . . . . . . . . . . . . . . . . . . . 48 4.2 Architecture de EmbedDSU . . . . . . . . . . . . . . . . . . . . . . . . . . . 54 5.1 Flot d’analyse de SmartCM . . . . . . . . . . . . . . . . . . . . . . . . . . . 66 8.1 Modèle du MesoVisor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80 9.1 Légende des ressources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83 9.2 Détails des ressources de l’axe 1 et 2 . . . . . . . . . . . . . . . . . . . . . . 84 9.3 Détails des ressources de l’axe 3 . . . . . . . . . . . . . . . . . . . . . . . . . 85 5 Remerciements J’exprime ma gratitude à : — Pierre Paradinas, Professeur titulaire de la chaire Systèmes embarqués au CNAM; — Didier Donsez, Professeur à l’Université de Grenoble 1; — Daniel Hagimont, Professeur à l’INPT/ENSEEIHT; pour l’honneur qu’ils me font d’avoir accepté la charge d’être rapporteurs et de participer au Jury de ma soutenance d’Habilitation à Diriger les Recherches. Je voudrais aussi remercier : — Christophe Bidan, Professeur à Supélec Rennes; — Gilles Grimaud, Professeur à l’Université de Lille 1; — Jean-Louis Lanet, Professeur à l’Université de Limoges; de les accompagner en tant qu’examinateurs durant cette soutenance. Le garant de cette habilitation, Jean-Louis Lanet, m’a invité à joindre l’équipe SSD après sa nomination en tant que Professeur à l’université de Limoges en 2007. Pendant 6 ans j’ai travaillé sous ses conseils sur les travaux développés dans ce mémoire. Je lui serai éternellement reconnaissant pour cette expérience extrêmement enrichissante. Je n’oublie pas l’ensemble des personnes qui ont partagé cette aventure académique, que cela soit dans le travail de recherche mais aussi dans l’enseignement à l’université de Limoges et plus particulièrement dans le Master CRYPTIS. Je pense dans un premier temps à l’ensemble des membres de l’équipe SSD et plus particulièrement à Christophe Clavier qui, outre son amitié, a partagé son expérience sur la cryptanalyse des cartes à puce. L’équipe de cryptographie du département de mathématiques a aussi contribué à cette aventure, notamment avec des personnes comme Thierry Berger, Philippe Gaborit, Marc Rybowicz et Carlos Aguilar Melchior avec lesquelles j’ai collaboré sur des travaux pré-SSD et avec qui je garde une sympathie profonde. Je n’oublie pas non plus l’autre côté de l’informatique à Limoges avec l’ensemble des membres de l’équipe d’image et plus particulièrement Benoit Crespin. Je remercie les doctorants co-encadrés avec Jean-Louis Lanet : Agnès Noubisi, Ahma- dou Séré et Nassima Kamel. Je garde aussi une pensée émue pour Céline Burgod, David Pequegnot et Amaury Gauthier. De plus, je remercie l’ensemble des ingénieurs ayant travaillé sur nos projets dans l’équipe SSD : Hanan Tadmori, Bhagyalekshmy Narayanan Thampi et Matthieu Barreaud. J’accompagne plus particulièrement ces remerciements à Clément Mazin et Jean-Baptiste Machemie qui furent non seulement ingénieurs dans notre équipe mais ont aussi porté la spin-off Arya Security développée sur nos travaux. De même je remercie les étudiants qui ont effectués sous ma responsabilité ou co- responsabilité des travaux dans notre équipe sous la forme de stages ou de projets. Je pense notamment à Pierrick Buret, Jean Dubreuil, Josselin Dolhen, Patrick Silvera, An- thony Gautrault, Jordan Bouyat, Tiana Razafindralambo, Yorick Lesecque,Josselin Dol- hen,LouisBida,LonnyBrissac,GuillaumeBouffard,JulienBoutet,EmilieFaugeron,An- thony Dessiatnikoff, Damien Arcuset, Eric Linke, Romain Severin, Mamadou L. Balde, 7 8 Table des figures Lylia Tikobaini, Nicolas Tarriol, Jérémy Clément, Silvère Cainaud, Amine Belhociné, Aymerick Savary, Keita Ansoumane et Julie Rispal. Endehorsdemontravail,jevoudraisparticulièrementremercierdufondducœurmon épouse et mes enfants pour leur patience durant l’écriture de ce mémoire. Je prolonge ces remerciements à l’ensemble de ma famille et plus particulièrement à mon père, à ma mère et Vinca pour m’avoir encouragé dans mes études. Enfin, un dernier paragraphe se doit d’évoquer l’ensemble des personnes qui ont relus ce mémoire et plus particulièrement Elisabeth pour avoir survécu au travail de relecture tardif. Résumé 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. Outres la présence de nombreuses contre-mesures physiques pour protéger le microprocesseur contre les attaques externes, la machine vir- tuelle Java Card possède un ensemble de mécanismes (comme le vérificateur de bytecode et le pare-feu) qui, combinés avec le typage du langage Java, offrent des propriétés d’iso- lation 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 points 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 bytecode par des attaques en faute. 9
Description: