La sécurité de l’information
Les algorithmes cryptographiques
Un algorithme cryptographique est un calcul mathématique de chiffrement et déchiffrement, qui permet d’assurer un échange entre un émetteur et un récepteur de manière sécurisée. On définit quatre propriétés qui peuvent être assurées par l’algorithme (certains algorithmes ne remplissent pas ces quatre conditions simultanément) :
♦ Seuls l’émetteur et le récepteur sont capables de lire le message (confidentialité)
♦ Le message provient bien de l’émetteur (authenticité)
♦ Le message n’a pas été modifiée (intégrité)
♦ Aucune partie ne peut remettre en cause l’échange (non-répudiation) .
Afin d’assurer ces fonctions, l’algorithme s’appuie sur un secret ou une clé secrète. On différencie deux types d’algorithmes de chiffrement: les algorithmes symétriques et asymétriques. Les algorithmes symétriques ont pour particularité d’utiliser une seule et même clé pour le chiffrement et le déchiffrement. Les deux interlocuteurs doivent partager la même clé, ils ont donc dû se rencontrer afin de convenir d’une clé secrète pour leur communication. Ce genre d’algorithme, par exemple l’AES [1], est très souvent utilisé pour les transactions sécurisées utilisant un support matériel. En effet, les algorithmes symétriques nécessitent moins de ressources de calcul que les algorithmes asymétriques et sont donc plus rapides.
C’est pour répondre à la problématique de l’échange de clés entre les deux interlocuteurs que les algorithmes asymétriques ont été développés. Ils ont la particularité d’utiliser deux clés, une pour le chiffrement et une pour le déchiffrement d’un message, respectivement la clé publique et privée. Le récepteur possède une clé secrète qui lui est propre et qu’il ne partagera avec personne (clé privée). A partir de cette clé privée, une clé publique est générée. Il peut donner cette clé à ses correspondants sans aucune restriction. La clé publique sert à tous les correspondants pour lui faire parvenir un message chiffré. L’émetteur chiffre le message avec la clé publique et envoie le message chiffré au récepteur. Celui-ci utilise alors sa clé privée afin de déchiffrer le message et d’obtenir le contenu en clair. Cependant le récepteur ne peut envoyer de message à l’émetteur avec sa clé publique. L’émetteur doit donner au récepteur sa propre clé publique. En effet, la clé publique du récepteur ne sert qu’à chiffrer des messages qui lui sont destinés.
Les algorithmes asymétriques, comme le RSA [2], sont généralement utilisés pour les transactions pour lesquelles les deux interlocuteurs ne sont pas en contact (échange distant de donnée sur un support non physique). Le RSA est notamment utilisé pour la sécurisation de transaction sur internet. Les recommandations en termes de taille de clé afin d’assurer une sécurité suffisante est souvent de l’ordre de 2048bits et plus [3]. Cette taille de clé est difficilement compatible avec les contraintes liés à la taille du circuit pour des supports de type carte à puces.
Ces algorithmes de cryptographie sont conçus de telle manière qu’il est impossible (avec les moyens de calculs actuels et en un temps raisonnable) de trouver la clé ou le contenu du message par simple observation des messages chiffrés. L’implantation de ces algorithmes peut se retrouver sur des plateformes diverses et variées (implantation logicielle ou bien matérielle). On s’intéresse ici à l’implantation matérielle sur support tels que des smartcard (cartes de paiement, d’accès, etc.). La différence du support d’implantation va influencer la méthode d’intégration de l’algorithme (contraintes de temps, ressources de calculs, etc.). De tels algorithmes permettent de communiquer des données « sensibles » (code d’accès, authentification, message secret, etc.). C’est la sensibilité de ces données et les utilisations possibles de celles-ci qui ont amené des personnes mal intentionnées à développer des méthodes afin d’obtenir la clé secrète. Ces méthodes sont appelées attaques.
Les attaques cryptographiques matérielles
L’objectif d’une personne malveillante est d’obtenir la clé afin par exemple de déchiffrer les messages, se faire passer pour l’émetteur ou même altérer une partie du message. Deux types d’attaques peuvent être distingués, les attaques mathématiques ou logicielles qui s’attaquent aux vulnérabilités de l’algorithme et les attaques matérielles qui se concentrent sur les vulnérabilités dues à l’implantation de cet algorithme. On s’intéresse dans ce manuscrit plus particulièrement aux attaques matérielles qui nécessitent d’avoir accès au support physique réalisant le chiffrement. On distingue trois grands types d’attaques matérielles sur des circuits microélectroniques implantant des algorithmes cryptographiques :
♦ Les attaques non-invasives
♦ Les attaques invasives
♦ Les attaques semi-invasives .
S. Skorobogatov dans [4], présente cette classification ainsi qu’une description de chacune d’elles. Ces types d’attaques peuvent également être différenciés en deux classes, celle des attaques par observation ou attaques dites passives (attaque par canaux auxiliaires) ou par perturbation du circuit ou attaques actives (injection de fautes). Dans la première catégorie, l’attaquant obtient l’information en observant le circuit lors de son fonctionnement, en mesurant la consommation de celui-ci par exemple. La seconde catégorie (i.e. les attaques actives) nécessite une intervention active de l’attaquant sur le circuit durant le calcul afin de le perturber, par illumination laser par exemple.
La catégorie des attaques non-invasives regroupe les attaques ne nécessitant pas de préparation particulière du circuit. L’attaquant pourra par exemple observer la consommation du circuit [5] ou perturber son fonctionnement en faisant varier la tension d’alimentation de celui-ci brutalement [6]. Les attaques invasives au contraire nécessitent une préparation du circuit. Une fois le circuit ouvert (retrait du capot), l’attaquant peut à l’aide de sondes, par exemple posées sur le bus de données, lire le flux de données transitant dans le circuit (probing) [7] . Le circuit peut aussi être altéré notamment par l’utilisation d’un laser de découpe ou un Focus Ion Beam (FIB). Celui-ci permettant de sectionner des capteurs ou des chemins de donnés du circuit.
Introduction |