Brevet FR2983990A1 — publié le 20130614

Arrière-plan de l'invention L'invention se rapporte au domaine des composants sécurisés de carte à puce, ou carte à circuit intégré. Lorsqu'une carte à puce est insérée dans un lecteur de carte à puce, le lecteur fournit un signal d'alimentation à la carte à puce. Ainsi alimentée, la carte à puce peut exécuter des commandes qui lui sont transmises par le lecteur. La norme ISO 7816 normalise la communication entre un lecteur de carte à puce et une carte à puce. On fait référence ici par exemple à la norme ISO 7816-3 section 10.2, de référence par exemple ISO/IEC JTC 1/FC 17 N2837 portant la mention de date 2005-09-07. Notamment, ce protocole prévoit que, lorsqu'il envoie une commande vers la carte, le lecteur déclenche un compteur qui s'incrémente progressivement avec le temps. Si le compteur atteint une valeur correspondant à l'écoulement d'une durée appelée Waiting Time (WT) depuis l'envoi de la commande sans réception d'une réponse de la carte, on considère que la carte ne répondra plus. Le lecteur coupe alors l'alimentation de la carte pour la réinitialiser. Selon la norme ISO 7816, la durée WT est calculée à chaque réinitialisation du composant de carte à puce, notamment en fonction de la fréquence de l'horloge de l'interface de communication ISO 7816 (entre le lecteur et la carte) appliquée par le lecteur et de la vitesse de communication de l'interface de communication ISO 7816 négociée durant l'initialisation. Par exemple, la durée WT est égale à 714ms pour une fréquence de 5MHz et une vitesse de communication par défaut (c'est-à-dire la vitesse selon laquelle la durée d'un bit sur l'interface de communication ISO 7816 est égale à 372 coups d'horloge). Lors de l'exécution d'une commande nécessitant plus que la durée WT, la carte peut envoyer périodiquement un message prédéterminé, appelé octet de protocole, pour demander plus de temps au lecteur. Selon la norme ISO 7816, il s'agit d'un octet 0x60. En réponse à la réception de l'octet de protocole, le lecteur réinitialise le compteur. Ce mécanisme propose donc une réponse efficace à un blocage d'une carte lors de son utilisation « normale ». Cependant, ce mécanisme peut poser problème à une carte soumise à des attaques. On sait que, pour sécuriser le fonctionnement d'un composant de carte à puce, par exemple un microcontrôleur, les constructeurs mettent en oeuvre des verrous sécuritaires implantés dans le code du composant. Une attaque par injection de faute consiste à perturber le composant afin de le dérouter de son comportement normal et essayer ainsi de faire « sauter » ses verrous sécuritaires. Une telle attaque par injection de faute est par exemple réalisée en envoyant une impulsion lumineuse sur le composant de carte à puce à un instant correspondant à l'exécution d'une instruction déterminée. Pour tester la sécurité de ses cartes à puce face à de telles attaques, un constructeur de cartes à puce peut être amené à réaliser lui-même des attaques ou à faire réaliser des attaques par un tiers, par exemple un organisme de certification. Lors d'une attaque par injection de faute, les erreurs injectées déroutent complètement le composant et celui-ci peut être amené à exécuter un code différent de celui prévu par le développeur d'une application. Il arrive souvent que la carte exécute une boucle de code dont l'exécution ne se termine jamais à cause d'une faute injectée : on appelle cela une boucle infinie. Ceci peut arriver si par exemple, la faute injectée modifie la condition de sortie de la boucle. Si la condition de sortie ne peut plus être retrouvée dans la suite du code, la carte restera alors dans sa boucle. En parallèle à l'exécution continue de cette boucle de code, la carte envoie de façon automatique l'octet de protocole (octet 0x60) pour demander une rallonge de temps. Cette itération empêche au lecteur de reprendre la main. Le lecteur reste donc dans un état d'attente. La norme ISO 7816 ne propose aucun mécanisme permettant de réagir lorsque la carte exécute une telle boucle infinie. Or, ce genre de situation arrive fréquemment lorsque l'on essaye de valider la résistance d'une implémentation contre les attaques par injection de faute. Dans ce cas, la seule solution pour continuer l'analyse est, pour l'évaluateur, de sortir manuellement la carte du lecteur et de la réinsérer. Ceci fait perdre beaucoup de temps lorsque l'évaluateur mène des attaques manuelles (le lecteur et la carte étant situés dans un caisson de protection contenant le laser, le fait de retirer la carte et de la réinsérer demande à l'évaluateur le respect d'une procédure stricte car il est extrêmement dangereux de s'exposer aux rayons laser). Ceci est d'autant plus problématique lorsque des attaques automatiques sont lancées (pendant toute une nuit par exemple) car lorsqu'une perturbation génère une boucle infinie, les attaques s'arrêtent et l'évaluateur perd donc beaucoup de temps. Ceci arrive fréquemment pendant les attaques par injection de fautes et reste un problème majeur. Objet et résumé de l'invention La présente invention propose un lecteur de carte à puce apte, à déterminer une durée WT appelée Waiting Time conformément à la norme ISO 7816 et à envoyer des commandes vers la carte à puce, le lecteur comprenant un détecteur pour détecter une condition de disfonctionnement de la carte à puce et étant configuré pour commander une réinitialisation de la carte à puce lorsque la condition de disfonctionnement est satisfaite. Ce lecteur est remarquable en ce que ladite condition de disfonctionnement est différente de l'atteinte, par un compteur configuré pour s'incrémenter avec le temps à partir de l'envoi d'une commande vers la carte à puce, d'une valeur correspondant la durée WT écoulée depuis l'envoi de la commande ou la réinitialisation du compteur en réponse à la réception d'un message de protocole de la carte à puce. Corrélativement, l'invention propose un procédé d'alimentation mis en oeuvre par un lecteur de carte à puce apte à déterminer une durée WT appelée Waiting Time conformément à la norme ISO 7816 et à envoyer des commandes une la carte à puce, comprenant les étapes consistant à - détecter une condition de disfonctionnement de la carte à puce, et - commander une réinitialisation de la carte à puce lorsque la condition de disfonctionnement est satisfaite. Ce procédé d'alimentation est remarquable en ce que ladite condition de disfonctionnement est différente de l'atteinte, par un compteur configuré pour s'incrémenter avec le temps à partir de l'envoi d'une commande vers la carte à puce, d'une valeur correspondant la durée WT écoulée depuis l'envoi de la commande ou la réinitialisation du compteur en réponse à la réception d'un message de protocole de la carte à puce. Grâce à ces caractéristiques, le lecteur peut détecter un disfonctionnement de la carte d'une autre manière que celle prévue dans la norme ISO 7816. Il est donc possible pour le lecteur de détecter un disfonctionnement et de réinitialiser la carte en coupant le signal d'alimentation lorsque la carte exécute une boucle infinie. Ainsi, lors de la réalisation d'attaques par injection de fautes pouvant provoquer une boucle infinie, il n'est pas nécessaire de réinitialiser la carte en la sortant du lecteur puis en la réinsérant. Le lecteur est par exemple apte à transmettre un signal d'alimentation à une carte à puce et à commander la réinitialisation de la carte à puce en coupant le signal d'alimentation. Plusieurs conditions peuvent permettre de détecter un tel disfonctionnement. Ainsi, dans un premier mode de réalisation, le lecteur comprend un compteur configuré pour s'incrémenter avec le temps à partir de l'envoi d'une commande vers la carte à puce, dans lequel ladite condition de disfonctionnement est l'atteinte, par ledit compteur, d'une valeur correspondant à un délai inférieur à la durée WT écoulé depuis l'envoi de la commande, sans réception d'une réponse de la carte à puce. Dans un deuxième mode de réalisation, la condition de disfonctionnement est la réception d'un nombre prédéterminé de message de protocole depuis la carte à puce. Dans un troisième mode de réalisation, le lecteur comprend un premier compteur et un deuxième compteur configurés pour s'incrémenter avec le temps à partir de l'envoi d'une commande vers la carte à puce, dans lequel ladite condition de disfonctionnement comprend l'atteinte, par ledit premier compteur, d'une valeur correspondant à la durée WT écoulée depuis l'envoi de la commande ou la réinitialisation du compteur en réponse à la réception d'un message de protocole depuis la carte à puce, sans réception d'une réponse de la carte à puce, la condition de disfonctionnement comprenant en outre l'atteinte, par le deuxième compteur, d'une valeur correspondant à un délai différent de la durée WT écoulé depuis l'envoi de la commande, sans réception d'une réponse de la carte à puce. La condition de disfonctionnement peut comprendre la réception d'un message de coupure provenant d'un dispositif de détection de boucle infinie. L'invention propose alors également un système comprenant un lecteur de carte à puce conforme à l'invention et un dispositif de détection de boucle infinie apte à envoyer un message de coupure vers le lecteur de carte à puce. Ainsi, dans un mode de réalisation qui peut être considéré comme une variante du troisième mode de réalisation précité dans lequel le deuxième compteur est placé dans un dispositif externe, le dispositif de détection de boucle comprend un compteur configuré pour s'incrémenter avec le temps à partir de l'envoi d'une commande du lecteur vers une carte à puce, le dispositif de détection de boucle infinie étant configuré pour envoyer ledit message de coupure lorsque le compteur atteint une valeur correspondant à un délai différent de la durée WT écoulé depuis l'envoi de la commande. Dans un quatrième mode de réalisation, le dispositif de détection de boucle infinie est configuré pour détecter l'exécution d'une boucle infinie par une carte à puce en fonction d'un signal d'analyse provenant de la carte à puce et pour envoyer le message de coupure en réponse à ladite détection. Le système peut comprendre en outre une carte à puce configurée pour envoyer régulièrement des octets de protocole 0x60 de la norme ISO 7816 lors de l'exécution d'une commande nécessitant plus de temps que la durée WT. Brève description des dessins D'autres caractéristiques et avantages de la présente invention ressortiront de la description faite ci-dessous, en référence aux dessins annexés qui en illustrent un exemple de réalisation dépourvu de tout caractère limitatif. Sur les figures : la figure 1 représente un lecteur de carte à puce conforme à l'invention, et une carte à puce, la figure 2 représente deux lignes du temps illustrant le fonctionnement du lecteur de la figure 1, conformément à un premier mode de réalisation de l'invention, la figure 3 représente deux lignes du temps illustrant le fonctionnement du lecteur de la figure 1, conformément à un deuxième mode de réalisation de l'invention, la figure 4 représente deux lignes du temps illustrant le fonctionnement du lecteur de la figure 1, conformément à un troisième mode de réalisation de l'invention, - la figure 5 représente un lecteur de carte à puce conforme à l'invention, une carte à puce et un dispositif de détection de boucle infinie, - la figure 6 représente de manière plus détaillée un exemple de réalisation du dispositif de détection de boucle infinie de la figure 5, et les figures 7 et 8 sont des graphes qui illustrent le fonctionnement du dispositif de détection de boucle infinie de la figure 6. Description détaillée de modes de réalisation La figure 1 représente un lecteur 1 de carte à puce et une carte à puce 2 reliée au lecteur. Dans cette situation, le lecteur 1 fournit un signal d'alimentation à la carte à puce 2 et peut transmettre des commandes à la carte à puce 2. La carte à puce 2 est conçue pour communiquer avec le lecteur 1 conformément à la norme ISO 7816. Ainsi, lors de l'initialisation de la carte à puce 2, le lecteur 1 déterminée une durée WT (pour « Waiting Time ») conformément à la norme ISO 7816 et, lorsqu'elle reçoit du lecteur 1 une commande dont l'exécution nécessite une durée supérieure à la durée WT, la carte à puce 2 envoie, en parallèle à l'exécution de la commande, un octet de protocole (octet 0x60) de manière périodique vers le lecteur 2, à une période légèrement inférieur à la durée WT. Le lecteur 1 présente l'architecture matérielle d'un ordinateur et comprend notamment un microprocesseur 3, une mémoire non-volatile 4, une mémoire volatile 5, une interface de communication 6 avec la carte à puce 2 et une interface de communication 7 avec un autre dispositif (par exemple un ordinateur personnel). Ci-après, on décrit plusieurs modes de réalisation du lecteur 1 en détaillant le fonctionnement du lecteur 1. Il faut comprendre que chaque fonctionnement décrit peut correspondre à l'exécution, par le microprocesseur 3, d'un programme d'ordinateur mémorisé dans la mémoire non-volatile 4 en utilisant la mémoire volatile 4. Dans un premier mode de réalisation, dont le fonctionnement est illustré sur la figure 2, le lecteur 1 comprend un compteur configuré pour s'incrémenter avec le temps. Le lecteur 1 déclenche le compteur lors de l'envoi d'une commande vers la carte à puce 2 et réinitialise le compteur en réponse à la réception d'un octet de protocole M de la carte à puce 1. Lorsque le compteur atteint une valeur prédéterminée sans réception d'une réponse de la carte à puce 2 ni de l'octet de protocole M, le lecteur 1 coupe le signal d'alimentation de la carte à puce 1. Le fonctionnement du lecteur 1 de ce mode de réalisation est donc similaire à celui du lecteur de l'art antérieur cité en introduction. Toutefois, ici, la durée prédéterminée T' après laquelle le lecteur 1 coupe le signal d'alimentation est inférieure à la durée WT déterminée lors de l'initialisation de la carte à puce 2. Par exemple, la durée T' est égale à 200ms et la durée WT déterminée est égale à 714ms. Le fonctionnement du lecteur 1 est illustré sur la figure 2. La ligne du temps supérieure de la figure 2 correspond au fonctionnement de la carte 1 en l'absence d'attaque. Le lecteur 1 envoie une commande CMD à l'instant to et déclenche son compteur. La commande CMD nécessite un temps d'exécution sensiblement inférieur à la durée WT. Il s'agit par exemple d'une commande de l'exécution d'un algorithme RSA, nécessitant environ 100ms. La carte à puce 1 exécute alors la commande CMD reçue et répond par une réponse R. La réponse R est donc reçue par le lecteur 1 à l'instant t1, environ 100ms après l'envoi de la commande CMD. Comme à l'instant t1, la durée T' ne s'est pas encore écoulée, le lecteur 1 ne coupe pas le signal d'alimentation de la carte à puce 2. La ligne du temps inférieure correspond cas où la carte à puce 2 subit une attaque ayant pour effet de lui faire exécuter une boucle infinie. Le lecteur 1 envoie également la commande CMD à l'instant to et déclenche son compteur. Puis, à l'instant t2, la carte à puce 2 subit une attaque et entre dans une boucle infinie. La carte à puce 2 n'exécute donc pas entièrement la commande CMD reçue et ne répond par une réponse R à l'instant t1. Le lecteur 1 constate alors, à l'instant t3, l'écoulement de la durée T' sans réception d'une réponse R ni d'un octet de protocole M de la carte à puce 1. En effet, la carte à puce 2 étant conçue pour communiquer selon la norme ISO 7816, un éventuel octet de protocole M envoyé par la carte à puce 1 aurait été envoyé juste avant l'écoulement de la durée WT, donc après l'instant t3. Ainsi, à l'instant t3, le lecteur 1 coupe l'alimentation de la carte à puce 2 pour la réinitialiser. La boucle infinie est donc interrompue. Dans ce mode de réalisation, le lecteur 1 permet donc la réalisation d'attaques sur une carte à puce 1 à laquelle on demande d'exécuter une commande dont la durée d'exécution est inférieure à la durée WT, tout en empêchant l'entrée de la carte dans une boucle infinie ininterrompue. Dans un deuxième mode de réalisation, dont le fonctionnement est illustré sur la figure 3, le lecteur 1 comprend un compteur configuré pour compter le nombre de réception d'octet de protocole M provenant de la carte à puce 2. Le lecteur 1 initialise le compteur lors de l'envoi d'une commande vers la carte à puce 2 et le réinitialise à la réception d'une réponse R. Lorsque le compteur atteint un seuil prédéterminé sans réception d'une réponse R de la carte à puce 2, le lecteur 1 coupe le signal d'alimentation de la carte à puce 2. Le fonctionnement du lecteur 1 de ce mode de réalisation est donc différent du mode de réalisation de la figure 2 puisque le lecteur ne compte pas l'écoulement du temps mais le nombre d'octets de protocole M reçus. Le fonctionnement du lecteur 1 selon ce deuxième mode de réalisation est illustré sur la figure 3, dans le cas où le lecteur 1 coupe l'alimentation de la carte après deux octets de protocole M et ou la durée WT est égale à 714ms. La ligne du temps supérieure de la figure 3 correspond au fonctionnement de la carte 1 en l'absence d'attaque. Le lecteur 1 envoie une commande CMD à l'instant to et initialise son compteur. La commande CMD nécessite un temps d'exécution compris entre une et deux fois la durée WTVVVVT. La carte à puce 2 commence à exécuter la commande CMD reçue. A l'instant t1, peu avant l'écoulement de la durée WT, la carte à puce 2 n'a pas encore terminé d'exécuter la commande CMD et envoi donc un octet de protocole M pour demander plus de temps au lecteur 1. Ensuite, à l'instant t2, l'exécution de la commande CMD est terminée et la carte à puce 2 répond par une réponse R. La réponse R est donc reçue par le lecteur 1 à l'instant t2, avant la réception d'un deuxième octet de protocole M. Le lecteur 1 ne coupe donc pas le signal d'alimentation de la carte à puce 2. La ligne du temps inférieure de la figure 3 correspond au cas où la carte à puce 2 subit une attaque ayant pour effet de lui faire exécuter une boucle infinie. Le lecteur 1 envoie également la commande CMD à l'instant to et initialise son compteur. Puis, à l'instant t3, la carte à puce 2 subit une attaque A et entre dans une boucle infinie. A l'instant t1, la carte à puce 2 envoie un octet de protocole M comme dans le cas de la ligne du temps supérieure. Toutefois, dans ce cas, la carte à puce 2 n'exécute pas entièrement la commande CMD en raison de l'attaque A et ne répond donc par une réponse R à l'instant t2. La carte à puce 2 étant conçue pour communiquer selon la norme ISO 7816, un nouvel octet de protocole M est envoyé vers le lecteur 1 à l'instant t4. Le lecteur 1 constate alors, à l'instant t4, que deux octet de protocole M ont été reçus sans réception d'une réponse R et coupe donc l'alimentation de la carte à puce 2 pour la réinitialiser. La boucle infinie est donc interrompue. Dans ce mode de réalisation, le lecteur 2 permet donc la réalisation d'attaques sur une carte à puce 1 à laquelle on demande d'exécuter une commande dont la durée d'exécution est comprises entre une et deux fois la durée WT, tout en empêchant l'entrée de la carte dans une boucle infinie ininterrompue. En changeant le nombre d'octets de protocole M comptés avant de couper l'alimentation de la carte, le lecteur 2 peut être utilisé pour des commandes dont l'exécution nécessite une durée quelconque. Dans un troisième mode de réalisation, dont le fonctionnement est illustré sur la figure 4, le lecteur 1 comprend un premier compteur et un deuxième compteur, configurés pour s'incrémenter avec le temps. Le lecteur 1 déclenche les deux compteurs lors de l'envoi d'une commande vers la carte à puce 2. Le premier compteur est un compteur dont le fonctionnement est conforme à la norme ISO 7816. Autrement dit, le premier compteur est réinitialisé en réponse à la réception d'un octet de protocole M de la carte à puce 2 et, lorsque le premier compteur atteint une valeur prédéterminée correspondant à l'écoulement de la durée WT sans réception d'une réponse R de la carte à puce 2 ni de l'octet de protocole M, le lecteur 1 coupe le signal d'alimentation de la carte à puce 1. Le deuxième compteur est un compteur destiné à mesurer une durée T' différente de WT depuis l'envoi de la commande CMD. Lorsque le deuxième compteur atteint une valeur prédéterminée correspondant à l'écoulement de la durée T' sans réception d'une réponse R de la carte à puce 2, le lecteur 1 coupe le signal d'alimentation de la carte à puce 1, indépendamment de la réception d'un octet de protocole M. Le fonctionnement du lecteur 1 selon ce troisième mode de réalisation est illustré sur la figure 4, dans le cas d'une durée T'=1,5 seconde et d'une durée WT égale à une seconde. La ligne du temps supérieure de la figure 4 correspond au fonctionnement de la carte 1 en l'absence d'attaque. Le lecteur 1 envoie une commande CMD à l'instant to et initialise ses deux compteurs. La commande CMD nécessite un temps d'exécution compris entre la durée WT et la durée T' de 1,5 secondes. La carte à puce 2 commence à exécuter la commande CMD reçue. A l'instant t1, peu avant l'écoulement de la durée WT, la carte à puce 2 n'a pas encore terminé d'exécuter la commande CMD et envoi donc un octet de protocole M pour demander plus de temps au lecteur 1. Ensuite, à l'instant t2, l'exécution de la commande CMD est terminée et la carte à puce 2 répond par une réponse R. La réponse R est donc reçue par le lecteur 1 à l'instant t2, avant l'écoulement de la durée T'=1,5 seconde. Le lecteur 1 ne coupe donc pas le signal d'alimentation de la carte à puce 2. La ligne du temps inférieure de la figure 4 correspond cas où la carte à puce 2 subit une attaque A ayant pour effet de lui faire exécuter une boucle infinie. Le lecteur 1 envoie également la commande CMD à l'instant to et initialise ses compteurs. Puis, à l'instant t3, la carte à puce 2 subit une attaque A et entre dans une boucle infinie. A l'instant t1, la carte à puce 2 envoie un octet de protocole M comme dans le cas de la ligne du temps supérieure. Toutefois, dans ce cas, la carte à puce 1 n'exécute pas entièrement la commande CMD en raison de l'attaque A et ne répond donc par une réponse R à l'instant t2. Le lecteur 1 constate alors, à l'instant t4, l'écoulement de la durée T' sans réception d'une réponse R. Ainsi, à l'instant t4, le lecteur 1 coupe l'alimentation de la carte à puce 2 pour la réinitialiser. La boucle infinie est donc interrompue. Dans ce mode de réalisation également, le lecteur 1 permet donc la réalisation d'attaques sur une carte à puce 1, tout en empêchant l'entrée de la carte dans une boucle infinie ininterrompue. La figure 5 représente une variante de la figure 1, dans laquelle le lecteur 1 est relié également à un dispositif de détection de boucle infinie 8. Dans cette variante, le lecteur 1 est configuré pour couper l'alimentation de la carte à puce 2 en réponse à la réception d'un message de coupure du dispositif de détection de boucle infinie 8. Une variante du troisième mode de réalisation décrit ci-dessus en référence à la figure 4 consiste à placer le deuxième compteur dans le dispositif de détection de boucle infinie 8 externe au lecteur 1. Dans ce cas, à l'instant to, le dispositif de détection de boucle infinie 8 déclenche le deuxième compteur soit en réponse à un message du lecteur 1 qui signale l'envoi de la commande, soit parce qu'il observe la liaison entre le lecteur 1 et la carte à puce 2 et constate l'envoi de la commande CMD. A l'instant t4, le dispositif de détection de boucle infinie 8 envoie un message de coupure au lecteur 1. Si aucune réponse R n'a été reçue (instant t2), le lecteur 1 coupe le signal d'alimentation de la carte 1 en réponse à la réception du message de coupure. Dans un quatrième mode de réalisation, le dispositif de détection de boucle infinie 8 est un détecteur de motif configuré pour analyser un signal d'analyse SA provenant de la carte à puce 2. On sait en effet que les interactions physiques d'un module électronique embarqué, par exemple un module à microcontrôleur de carte à puce, avec son environnement extérieur sont dépendantes des opérations effectuées par le module ainsi que des valeurs des variables manipulées par ces opérations. Des exemples de telles interactions sont la consommation de courant du module (signal PA), le rayonnement électromagnétique (signal EMA) ou bien le signal de radio fréquence (signal RFA) qui permet à une carte sans contact de s'alimenter et de communiquer. Ainsi, sur la figure 6 qui représente le dispositif de détection de boucle infinie 8 de manière plus détaillée, on note SA le signal d'analyse mesuré pour analyser les opérations effectuées par la carte à puce 2. Le signal d'analyse SA peut être par exemple la consommation de courant, le rayonnement électromagnétique ou le signal radio fréquence de la carte à puce 2. Le signal SA est fourni au dispositif de détection de boucle infinie 8. Le dispositif de détection de boucle infinie 8 de la figure 6 est un détecteur de motif qui comprend un filtre 31, un convertisseur analogique/numérique 32 et un circuit d'analyse 33. Le filtre 31 effectue un traitement analogique sur le signal d'analyse SA, typiquement un filtrage passe-bas. Le signal filtré est numérisé sur n bits par le convertisseur analogique/numérique 32. Le circuit d'analyse 33 comprend une mémoire tampon 34, une autre mémoire 35, une unité de comparaison et un compteur 38. Dans le mode de réalisation représenté, l'unité de comparaison est composée d'une unité d'inter-corrélation 36 effectuant un algorithme d'inter-corrélation et d'un détecteur de seuil 37 permettant de mesurer la ressemblance entre deux courbes. La mémoire tampon 34 mémorise à la volée m échantillons de n bits provenant du convertisseur analogique/numérique 32, sur le principe du « premier arrivé, premier sorti ». Ainsi, le contenu de la mémoire tampon 34 représente, sous la forme de m échantillons de n bits, la partie la plus récente du signal d'analyse SA. La mémoire 35 mémorise un motif de m valeurs de n bits, correspondant à l'évènement qui doit être détecté sur le signal d'analyse SA. L'unité d'inter-corrélation 36 détermine un degré de ressemblance entre la courbe mémorisée dans la mémoire tampon 34 et la courbe mémorisée dans l'autre mémoire 35 en utilisant un algorithme d'inter-corrélation. Ensuite, le degré de ressemblance est comparé avec un seuil S prédéterminé dans l'unité de détection de seuil 37. Si le degré de ressemblance est inférieur au seuil S, on considère que le signal d'analyse SA est différent du motif mémorisé dans la mémoire 35 et le compteur 38 n'est pas incrémenté. Par contre, si le degré de ressemblance est supérieur au seuil S, on considère que le signal d'analyse SA correspond au motif mémorisé dans la mémoire 35 et le compteur 38 est incrémenté. Le circuit d'analyse 33 comprend de préférence une unité de transformation 39 située entre la sortie du convertisseur analogique/numérique 32 et l'entrée des mémoires 34 et 35. L'unité de transformation 39 réalise une transformation de Fourrier de type FFT. Sachant qu'il est plus facile de mettre en oeuvre un algorithme d'inter- corrélation dans le domaine fréquentiel que le domaine temporel, cela facilite le travail de l'unité de comparaison. Le circuit d'analyse 33 est réalisé par exemple par un circuit logique programmable de type FPGA. En variante, il s'agit d'un processeur numérique de signaux (DSP) configuré pour mettre en oeuvre les fonctions de la mémoire tampon 34, de l'autre mémoire 35 et de l'unité de comparaison. Lorsque le compteur 38 atteint une valeur prédéterminée, le dispositif de détection de boucle infinie 8 envoie un message de coupure MC vers le lecteur 1. En fonctionnement, le dispositif de détection de boucle infinie 8 alterne entre deux modes de fonctionnement : Dans un premier mode de fonctionnement, un motif à détecter est mémorisé dans la mémoire 35. - Dans un deuxième mode de fonctionnement, le motif mémorisé dans la mémoire 35 est recherché par comparaison avec la portion de signal mémorisée dans la mémoire tampon 34, comme décrit précédemment. Le passage d'un mode de fonctionnement à l'autre est par exemple commandé par le lecteur 1. Les figures 7 et 8 illustrent le fonctionnement du lecteur 1 et du dispositif de détection de boucle infinie 8 dans ce quatrième mode de réalisation. La figure 7 correspond au fonctionnement en l'absence d'attaques. Le lecteur 1 envoie une commande CMD à l'instant to et l'activité de la carte à puce 2 lors de l'exécution de cette commande est révélé par le signal d'analyse SA. Parallèlement à l'envoi de la commande CMD, le lecteur 1 demande au dispositif de détection de boucle infinie 8 d'enregistrer un motif dans sa mémoire 35, selon le premier mode de fonctionnement, noté M1. Ensuite, le lecteur 1 demande au dispositif de détection de boucle infinie 8 de fonctionner selon le deuxième mode de fonctionnement, noté M2, dans lequel le dispositif de détection de boucle infinie 8 compare le motif mémorisé avec le signal d'analyse SA. Comme la carte à puce 2 exécute la commande CMD sans boucle infinie, aucune répétition du motif mémorisé n'est détectée dans le signal d'analyse SA. Le compteur 38 n'est donc pas incrémenté et le message de coupure MC n'est pas envoyé. Le lecteur 1 ne coupe donc pas l'alimentation de la carte à puce 2. La figure 8 correspond au fonctionnement en cas d'attaques. Ainsi, le lecteur 1 envoie une commande CMD à l'instant to et la carte à puce subit une attaque à l'instant t1, qui provoque l'exécution d'une boucle infinie. L'activité de la carte à puce 2 lors de l'exécution de cette boucle infinie est révélé par le signal d'analyse SA. Comme dans le cas de la figure 7, le dispositif de détection de boucle infinie 8 fonctionne d'abord selon le premier mode de fonctionnement, noté Ml, et enregistre un motif dans sa mémoire 35. Ensuite, dans le deuxième mode de fonctionnement, noté M2, le dispositif de détection de boucle infinie 8 compare le motif mémorisé avec le signal d'analyse SA. Comme la carte à puce 2 exécute la boucle infinie, la répétition du motif mémorisé est détectée dans le signal d'analyse SA aux instants t2, t3,.... Le compteur 38 est donc incrémenté. Lorsque le compteur atteint une valeur prédéterminée, le message de coupure MC est envoyé. Dans l'exemple représenté, le message de coupure MC est envoyé après deux détections du motif mémorisé, à l'instant t3. Le lecteur 1 coupe donc l'alimentation de la carte à puce 2 à cet instant. Dans les modes de réalisations précédents, l'alimentation de la carte à puce 2 est coupée lorsqu'une condition laissant supposer que la carte à puce 2 exécute une boucle infinie est satisfaite. Dans le mode de réalisation des figures 5 à 8, le dispositif de détection de boucle infinie permet, grâce à l'analyse de l'activité de la carte à puce, de détecter effectivement la répétition d'une boucle. Si cette boucle est répétée un nombre prédéterminé de fois, on considère qu'il s'agit d'une boucle infinie et le signal d'alimentation de la carte à puce 2 est coupé. Ce mode de réalisation permet donc une détection plus rapide et plus fiable d'une boucle infinie. Dans les différents modes de réalisation décrits ci-dessus, le lecteur 1 coupe l'alimentation de la carte à puce 2 en réponse à la détection d'une condition de disfonctionnement de la carte à puce. Dans le mode de réalisation de la figure 2, la condition de disfonctionnement est l'écoulement d'une durée T' inférieure à la durée WT déterminée selon la norme ISO 7816, par exemple de 200ms, sans réception d'une réponse R de la carte à puce 2. Dans le mode de réalisation de la figure 3, la condition de disfonctionnement est la réception d'un nombre prédéterminé de messages prédéterminés, par exemple d'octets de protocole M, sans réception d'une réponse R de la carte à puce 2. Dans le mode de réalisation de la figure 4, la condition de disfonctionnement est l'écoulement d'une durée T', qui peut être inférieure ou supérieure à la durée WT, sans réception d'une réponse R de la carte à puce 2, alors qu'un autre compteur peut couper l'alimentation de la manière prescrite par la norme ISO 7816. Enfin, dans le mode de réalisation de la figure 5, la condition de disfonctionnement est la réception d'un message de coupure du dispositif de détection de boucle infinie 8. Le dispositif de détection de boucle infinie 8 peut envoyer le message de coupure après l'écoulement d'une durée prédéterminée T', de manière similaire au mode de réalisation de la figure 4, ou en réponse à la détection d'une boucle infinie par analyse de l'activité de la carte à puce. Le lecteur 1 et le dispositif de détection de boucle infinie 8 peuvent être deux appareils distincts reliés par exemple par un câble. En variante, un même appareil peut comprendre le lecteur 1 et le dispositif de détection de boucle infinie 8. Dans les modes de réalisation décrit précédemment, la carte (autrement dit son composant électronique) est réinitialisée par une coupure de l'alimentation de la carte par le lecteur. En général, le lecteur envoie également un signal de réinitialisation à la carte lorsqu'elle est ensuite remise sous tension par le lecteur. Il ne s'agit que d'un exemple de mode de réalisation pour la réinitialisation (ou, autrement dit, l'initialisation) de la carte par le lecteur. Ainsi, en variante, cette réinitialisation peut être réalisée par l'envoie par le lecteur d'un signal de réinitialisation à la carte, sans couper l'alimentation de la carte.30 REVENDICATIONS1. Lecteur (1) de carte à puce apte, à déterminer une durée WT appelée Waiting Time conformément à la norme ISO 7816 et à envoyer des commandes (CMD) vers une carte à puce (2), le lecteur (1) comprenant un détecteur pour détecter une condition de disfonctionnement de la carte à puce (2) et étant configuré pour commander une réinitialisation de la carte lorsque la condition de disfonctionnement est satisfaite, caractérisé en ce que ladite condition de disfonctionnement est différente de l'atteinte, par un compteur configuré pour s'incrémenter avec le temps à partir de l'envoi d'une commande (CMD) vers la carte à puce (2), d'une valeur correspondant à la durée WT écoulée depuis l'envoi de la commande ou une réinitialisation du compteur en réponse à la réception d'un message de protocole (M) de la carte à puce (2). 2. Lecteur selon la revendication 1, comprenant un compteur configuré pour s'incrémenter avec le temps à partir de l'envoi d'une commande (CMD) vers la carte à puce, dans lequel ladite condition de disfonctionnement est l'atteinte, par ledit compteur, d'une valeur correspondant à un délai (T') inférieur à la durée WT écoulé depuis l'envoi de la commande (CMD), sans réception d'une réponse (R) de la carte à puce. 3. Lecteur selon la revendication 1, dans lequel ladite condition de disfonctionnement est la réception d'un nombre prédéterminé de messages de protocole (M) de la carte à puce (2). 4. Lecteur selon la revendication 1, comprenant un premier compteur et un deuxième compteur configurés pour s'incrémenter avec le temps à partir de l'envoi d'une commande (CMD) vers la carte à puce, dans lequel ladite condition de disfonctionnement comprend l'atteinte, par ledit premier compteur, d'une valeur correspondant à la durée WT écoulée depuis l'envoi de la commande (CMD) ou la réinitialisation du premier compteur en réponse à la réception d'un message de protocole (M) de la carte à puce (2), sans réception d'une réponse (R) de la carte à puce (2), ladite condition de disfonctionnement comprenant en outre l'atteinte, par ledit deuxième compteur, d'une valeur correspondant à un délai (T') différent de la durée WT écoulé depuis l'envoi de la commande (CMD), sans réception d'une réponse (R) de la carte à puce (2). 5. Lecteur selon la revendication 1, dans lequel ladite condition de disfonctionnement comprend la réception d'un message de coupure (MC) provenant d'un dispositif de détection de boucle infinie (8). 6. Système comprenant un lecteur (1) de carte à puce selon la revendication 5 et un dispositif de détection de boucle infinie (8) apte à envoyer un message de coupure (MC) vers le lecteur de carte à puce. 7. Système selon la revendication 6, dans lequel le dispositif de détection de boucle infinie (8) comprend un compteur configuré pour s'incrémenter avec le temps à partir de l'envoi d'une commande (CMD) du lecteur (1) vers une carte à puce (2), le dispositif de détection de boucle infinie (8) étant configuré pour envoyer ledit message de coupure (MC) lorsque le compteur atteint une valeur correspondant à un délai (T') différent de la durée WT écoulé depuis l'envoi de la commande (CMD). 8. Système selon la revendication 6, dans lequel le dispositif de détection de boucle infinie (8) est configuré pour détecter l'exécution d'une boucle infinie par une carte à puce (2) en fonction d'un signal d'analyse (SA) provenant de la carte à puce (2) et pour envoyer le message de coupure (MC) en réponse à ladite détection. 9. Système selon l'une des revendications 6 à 8, comprenant en outre une carte à puce (2) configurée pour envoyer régulièrement des octets de protocole (M) 0x60 de la norme ISO 7816 lors de l'exécution d'une commande (CMD) nécessitant plus de temps que la durée WT. 10. Procédé d'alimentation mis en oeuvre par un lecteur (1) de carte à puce apte à déterminer une durée WT appelée Waiting Time conformément à la norme ISO 7816 et à envoyer des commandes (CMD) vers une carte à puce (2), comprenant les étapes consistant à : - détecter une condition de disfonctionnement de la carte à puce (2), - commander une réinitialisation de la carte à puce (2) lorsque la condition de disfonctionnement est satisfaite, caractérisé en ce que ladite condition de disfonctionnement est différente de l'atteinte, par un compteur configuré pour s'incrémenter avec le temps à partir de l'envoi d'une commande (CMD) vers la carte à puce, d'une valeur correspondant à un la durée WTécoulée depuis l'envoi de la commande (CMD) ou une réinitialisation du compteur en réponse à la réception d'un message de protocole (M) de la carte à puce (2).