Les systèmes d'exploitation pour carte à puce aussi appelés COSqui sont nommés dans la littérature scientifique anglo-saxonne COS pour Chip Operating System assurent fondamentalement les mêmes fonctions que les autres systèmes d'exploitation, mais dans un contexte matériel où les limitations matérielles et les problématiques de sécurité sont exacerbées.

Ainsi, à l'instar des autres systèmes d'exploitation, ceux des cartes à puce gèrent le matériel qui leur est assigné. Une carte à puce comporte notamment une mémoire de travail volatile (sous la forme de SRAM), une mémoire non ré-inscriptible (ROM) qui contient le code du système d'exploitation et éventuellement celui d'application pré-déployé ainsi qu'une mémoire morte ré-inscriptible (typiquement de l'EPROM), permettant de stocker des données qui resteront disponibles lorsque la carte sera redémarrée. Le système d'exploitation gère aussi le Microprocesseur, parfois assorti d’un processeur destiné à la cryptographie et le protocole de communication (généralement celui spécifié par la norme ISO 7816).

Les possibilités matérielles des cartes étant limitées en mémoire et en puissance de calcul, les systèmes d’exploitation de ces équipements se doivent d'être les plus légers possibles afin d'être embarqués dans la mémoire des cartes. Malgré ces limites matérielles, ces COS doivent intégrer des fonctionnalités ainsi que des spécificités telles que : L’allocation de mémoire (RAM, EEPROM) ; Le système de fichiers ; Le contrôle d'exécution de code ; Le chargement, le lancement et la gestion des applications ; La transmission de données ; L'exécution et la gestion des algorithmes cryptographiques.

D'un système mono-applicatif où le système d'exploitation et l'applicatif ne font qu'un (1981), aux cartes à puces les plus récentes pouvant gérer plusieurs applications sur une même carte, les architectures ont évolué et se classifient selon trois modèles. Les systèmes fermés, généralement propriétaires et étroitement liés au matériel sont réalisés pour supporter une application, ou un ensemble d'application prédéfinit. Les systèmes post-issuance repose sur la mise en œuvre d'une machine virtuelle applicative tel que « Java Card Virtual Machine » et « Multos » ou l'environnement d'exécution est sécurisé et authentifié. L'utilisation d'hyperviseurs a plus récemment été envisagé, avec le système d'exploitation CAMILLE.

D'un point de vue économique, le marché des cartes à puce, en perpétuelle évolution, est présent dans divers domaines (télécommunication, bancaire, télévision…).

Description technologique

Une carte à puce ou est constituée d'un CPU, de mémoire RAM (ses données seront perdues quand celle-ci sera retirée du lecteur), d'une mémoire ROM (où est pré-enregistré en usine le système d'exploitation), et d'une EEPROM (qui conserve les données qui y sont inscrites même après que la carte n'est plus électriquement alimentée). En cela, il s'agit d'un ordinateur classique, réduit à la taille d'une puce.

Elle permet la communication, le stockage et l'exécution de code avec un haut degré de sécurité. Les circuits logiques qui composent la puce supervisent la transmission des données via interface série pour faire communiquer la carte vers l'extérieur et notamment un lecteur. Comme pour n'importe quel autre système d'exploitation, comme le DOS, les fonctions et les instructions d'un ne sont pas dépendantes d'une application en particulier mais se veulent être génériques pour un ensemble de besoins communs à toute application désirant fonctionner dans un environnement de carte à puce. Et tout comme le , ce type d' n'est pas conçu pour fournir d'interface graphique.

Environnement matériel

Ci-dessus une illustration simpliste d'une carte à puce. Le schéma montre qu'elle est composée :

D'une partie logique avec un CPU et un NPU (spécialisé pour la partie réseau) mais plus généralement on pourrait employer le terme de MPU ou Multi-core processor. Cette partie logique est le siège de l'exécution du code applicatif que ce soit l'OS comme les applicatifs installés dans la carte.

D'une partie mémoire qui permet de stocker l'information volatile (mémoire RAM) durant l'exécution du code. De la EEPROM qui stocke soit des applicatifs ou des données qui peuvent être modifiées pendant le fonctionnement de la carte mais qui ne doivent pas être perdus après la perte d'alimentation. Et la mémoire ROM qui stockera le code, notamment l'OS, ou les données figés en usine durant la conception de la puce.

Une partie communication qui permet la communication avec l'extérieur et notamment le lecteur de carte à puce. Le schéma présenté ci-dessus montre un seul type de communication extérieur avec un contacteur physique, mais d'autres types de communication sont possibles comme les ondes radios mais aussi les ondes lumineuses.

Le système d'exploitation est ainsi localisé essentiellement au niveau de la mémoire ROM, sous une forme non altérable, et pour éventuellement certaines de ses fonctions modifiables dans l'EEPROM. Il offre les fonctions pour contrôler les différents éléments de la carte et la communication avec le lecteur.

Normes

La norme de référence est la norme (Identification cards — Integrated circuit cards), le tableau suivant répertorie les différentes parties de cette norme. Référence Titre Cards with contacts: Physical characteristics ISO/CEI 7816-2 Cards with contacts: Dimensions and location of the contacts ISO/CEI 7816-3 Cards with contacts: Electrical interface and transmission protocols ISO/CEI 7816-4 Organization, security and commands for interchange ISO/CEI 7816-5 Registration of application providers ISO/CEI 7816-6 Interindustry data elements for interchange ISO/CEI 7816-7 Interindustry commands for Structured Card Query Language (SCQL) ISO/CEI 7816-8 Commands for security operations ISO/CEI 7816-9 Commands for card management ISO/CEI 7816-10 Cards with contacts: Electronic signals and answer to reset for synchronous cards ISO/CEI 7816-11 Personal verification through biometric methods ISO/CEI 7816-12 Cards with contacts: USB electrical interface and operating procedures ISO/CEI 7816-13 Commandes pour la gestion d'application dans un environnement de plusieurs applications ISO/CEI 7816-15 Application des informations cryptographiques

D'autres normes qui concernent les cartes contactless (radio et optique).

Référence Titre ISO/CEI 14443 Identification cards -- Contactless integrated circuit cards vicinity cards, i.e. cards which can be read from a greater distance ISO/CEI 11693 Identification Cards - Optical Memory Cards - General Characteristics ISO/CEI 11694 Identification Cards - Optical Memory Cards - Linear recording method

Fonctionnalités

Le COS est stocké dans la ROM de la carte à puce. On peut trouver un synonyme au terme COS avec le terme de mask. Pour être plus précis on trouve deux types de mask:

hard mask Indique que le COS est stocké dans une mémoire ROM. Il devient alors non modifiable après l'avoir écrit dans ce type de mémoire.

soft mask Indique au contraire un COS dont une partie ou la totalité est stockée dans une mémoire EEPROM. Il devient donc possible de modifier une partie ou la totalité du système après sa première écriture dans l'EEPROM.

Il fournit une API complète afin de communiquer vers les zones mémoire mais également et surtout vers l'extérieur.

Spécificités

Une des grosses problématiques des outils d'exploitation pour carte à puce est qu'ils doivent être implémentés dans la ROM. De même la quantité de RAM disponible étant relativement faible, il faut que le code écrit soit le plus compact possible et que l'utilisation des capacités mémoire soit raisonnée .

+ Capacité Mémoire Cartes à puce Élément Taille en 1996 Taille en 2001 Taille en 2004 ROM EEPROM RAM

Un autre aspect important est l'usage souvent fait pour ce type de carte, comme l'acte du paiement ou l'identification d'une personne. Il est donc essentiel que ces systèmes d'exploitation embarquent des fonctionnalités de cryptographie et d'authentification forte.

Parfois, certaines de ces fonctionnalités sont directement intégrées au niveau matérielProcessor for Contactless Smart CardsArea-Efficient Universal Cryptography Processor for SmartCards.

Il est également important que ces systèmes d'exploitation se conforment à des standards en ce qui concerne leur mode de communication. Notamment la norme ISO 7816-4 (specifics organization, security and command for interchange), a été rédigée pour cet usage en définissant la structure des commandes-réponses. Elle définit également une structure pour les données et les applications ainsi qu'une architecture pour la sécurité.

Ainsi ces systèmes d'exploitation sont responsables de : La gestion de la mémoire (ROM, RAM, EEPROM) ; La gestion de fichiers ; Le contrôle d'exécution de code ; Le chargement, le lancement et la gestion des applications ; La transmission de données ; L'exécution et la gestion des algorithmes de cryptographie.

Gestion des fichiers

Une des premières fonction c'est la gestion de fichiers avec les opérations de lecture, écriture, création, suppression sur les fichiers. Pour cela un COS doit suivre les préconisations de la norme ISO/CEI 7816-4.

Le stockage des fichiers en mémoire s'organise selon une méthode classique d'arborescence avec une racine et des feuilles. On peut trouver plusieurs types de Système de fichiers :

(SmartCard Filesystem)

...

La cryptographie

La majorité des applications des cartes à puce étant utilisées pour authentifier de manière forte des individus, un COS pour carte à puce implémente généralement une API de cryptographie. La norme a été conçue pour standardiser ce besoin .

L'utilisation des algorithmes de cryptographie (PKCS) avec la manipulation de grands nombres comme les algorithmes à clefs symétriques (RSA ou DSA) sont une source de consommation de puissance de calcul. C'est pourquoi on trouve, de plus en plus, adjoint au microprocesseur traditionnel de la carte à puce un cryptoprocesseur sécurisé qui accélère les calculs sur les grands nombres.

Communication avec le lecteur

Un COS doit également interagir avec un lecteur, pour cela plusieurs mode de transmission possible : par contact physique sur la carte elle-même (Contact Smarcard) / ISO/IEC 7816-3 ; par onde radio (Contactless SmartCard) / ISO/IEC 14443, ISO 15693 ; par onde lumineuse ( Contactless Optical SmartCard) / ISO/IEC 11693 and 11694.

Rapide historique

En 1977, Michel Ugon découvre l'architecture du SPOM (Self Programmable One-Chip Microcomputer). En 1981, la CP8 sort avec le masque PC0L. Guillou 2004, page 5.

Une importante évolution des outils d'exploitation se fit dans les deux décennies qui suivirent: Tout d'abord monolithique, rien ne distingue l'application de l'outil d'exploitation ; Puis toujours monolithique mais application et outil d'exploitation sont séparés en trois couchesG.Grimaud et Al, 2001, p. ???. Dans ces phases les cartes sont mono-application et l'outil d'exploitation gère des zonesGIE carte bancaire 1984 p. ???. Puis l'outil d'exploitation gère un système de fichier mais est toujours monoapplicationW. Rankl et Al. 2007, page 16 . L'évolution suivante est la gestion de plusieurs applicationsU. Hansmann et Al. 2002, page 28-34.