Résumé
Les cartes à puce sont devenues maintenant des mini-micro-ordinateurs
programmables avec des langages orientés objet. Leurs capacités de calcul et de stockage leur
permettent de contenir plusieurs applications. Aujourd’hui, une grande quantité de ces cartes
sont équipées avec un sous-ensemble de la plate-forme Java. Elles sont appelées Java Cards.
L’utilisation de Java dans les cartes à puce leur apporte la possibilité de charger du
code exécutable après la délivrance de la carte. Ce code est chargé sur la carte sous forme de
code intermédiaire (bytecode). Après la compilation de ce code, il peut transiter sur un réseau
pour arriver à la carte. Rien n’assure que ce code n’a pas était modifié et qu’il ne contient pas
une attaque qui peut menacer la sécurité de la carte à puce en tant que plate-forme
d’exécution.
Le point clé des mécanismes de sécurité mises en œuvre par Java Card pour faire face
à ce type d’attaques est l’utilisation du vérifieur de bytecode fournis par SUN Microsystems.
Dans ce mémoire, nous proposons et réalisons un module de vérification de bytecode qui
permet de détecter des erreurs de confusion de type qui ne sont pas détectées par le vérifieur
de bytecode de SUN. Nous reproduisons un nouveau vérifieur en ajoutons le module de
vérification que nous avons réalisé au vérifieur de bytecode de SUN.
Mots clés : Systèmes Embarqués, Cartes à puce, Java Card, Sécurité, Vérification, Bytecode.