La dernière génération de cartes à puce permet le téléchargement d'applications après leur mise en circulation. Outre les problèmes de sécurité que cela implique, cette capacité d'extension applicative reste encore aujourd'hui bridée par un espace de stockage adressable restreint. La thèse défendue dans ce mémoire est qu'il est possible d'exécuter efficacement des applications stockées dans la mémoire non-adressable des cartes à puce, disponible en plus grande quantité, et ce, malgré ses temps de latences très longs, donc peu favorables a priori à l'exécution de code. Notre travail consiste d'abord à étudier les forces et faiblesses de la principale réponse proposée par l'état de l'art qu'est un cache. Cependant, dans notre contexte, il ne peut être implémenté qu'en logiciel, avec alors une latence supplémentaire. De plus, ce cache doit respecter les contraintes mémoires des cartes à puce et doit donc avoir une empreinte mémoire faible. Nous montrons comment et pourquoi ces deux contraintes réduisent fortement les performances d'un cache, qui devient alors une réponse insuffisante pour la résolution de notre challenge. Nous appliquons notre démonstration aux caches de code natif, puis de code et méta-données Java et JavaCard2. Fort de ces constats, nous proposons puis validons une solution reposant sur une pré-interprétation de code, dont le but est à la fois de détecter précocement les données manquantes en cache pour les charger à l'avance et en parallèle, mais aussi grouper des accès au cache et réduire ainsi l'impact de son temps de latence logiciel, démontré comme son principal coût. Le tout produit alors une solution efficace, passant l'échelle des cartes à puce. / The latest generation of smart cards allows to download applications after they are released. In addition to new security issues, this ability still remains constrained by a limited addressable storage space. The claim of our thesis is that it is possible to efficiently execute applications stored in the non-addressable memory of smart cards, available in larger quantities, and, despite its very long latency. Our work is first a study of the strengths and weaknesses of the main solution provided by the state of the art : caching. However, in our context, it can be implemented only in software,then with an additional latency. In addition, the cache must comply with memory constraints of smart cards and must then have on a low memory footprint. We show how and why these two constraints greatly reduce the performance of a cache, that finally becomes inadequate to fully tackle our challenge. We apply our demonstration to native instructions caches, then to Java/JavaCard2 instructions and metadata caches. Based on our observations, we propose and validate a solution based on a code pre-interpretation, whose purpose is to early detect of missing data in the cache to fetch them in advance, then to group accesses to the cache in order to reduce the impact of its software latency, that we demonstrate to be its main cost. Our result is an effective solution, that fits smart cards size and constraints.
Identifer | oai:union.ndltd.org:theses.fr/2012LIL10200 |
Date | 13 December 2012 |
Creators | Cogniaux, Geoffroy |
Contributors | Lille 1, Grimaud, Gilles, Hauspie, Michaël |
Source Sets | Dépôt national des thèses électroniques françaises |
Language | French |
Detected Language | French |
Type | Electronic Thesis or Dissertation, Text |
Page generated in 0.0017 seconds