FR 2926912 A1 20090731 FR 0800491 A 20080130 1 La présente invention concerne un procédé de vérification d'un code personnel utilisable notamment pour autoriser des transactions initiées entre une carte à circuit intégré et un terminal tel qu'un terminal de paiement ou un distributeur automatique de billets. ARRIERE PLAN DE L'INVENTION Une carte à circuit intégré, comme une carte bancaire, permet la mémorisation de données relatives à son propriétaire, telles que des données d'identification et des coordonnées bancaires. Lorsqu'une transaction est initiée avec un terminal, ces données sont communiquées par la carte au terminal afin que celui-ci puisse demander l'exécution d'opérations sur le compte bancaire du propriétaire de la carte. Toutefois, il est nécessaire au préalable de vérifier que le détenteur de la carte est bien la personne à qui la carte a été délivrée ou a bien été autorisée à utiliser la carte par cette personne. Pour ce faire, un code secret est mémorisé sous forme chiffrée dans une mémoire non volatile de la carte à cir- cuit intégré et ce code est demandé par le terminal au détenteur de la carte qui désire initier une transaction. Afin de faciliter sa mémorisation par les propriétaires de cartes, le code secret comporte générale-ment quatre chiffres autorisant dix mille combinaisons. On comprend qu'un fraudeur pourrait être tenté d'essayer toutes les combinaisons possibles jusqu'à trouver le code secret de manière à pouvoir effectuer des transactions au moyen de la carte. Pour empêcher cela, il est connu de recourir à un compteur de ratification qui limite le nom- bre de tentatives de vérification à un nombre prédéterminé, généralement trois. Si au bout de trois tentatives, le détenteur de la carte n'est pas parvenu à fournir le code correct, la carte se bloque et devient inutilisable jusqu'à ce que le détenteur de la carte se soit identifié auprès de l'organisme émetteur de la carte et ait démon-- 2 tré à celui_-ci qu'il est autorisé à utiliser ladite carte. Le nombre maximal possible de tentatives et le nombre restant de tentatives sont enregistrés dans une mémoire non volatile de la carte. Un procédé basique de vérification du code secret pourrait prévoir de décrémenter le nombre restant de tentatives après chaque échec de la vérification. Or, cette opération, comme toute opération d'écriture d'une donnée dans une mémoire non volatile, nécessite un apport d'énergie fournie au circuit intégré par le lecteur. On s'exposerait alors au risque qu'un fraudeur coupe l'alimentation du circuit intégré de la carte après chaque tentative infructueuse pour empêcher la décrémentatiori du nombre restant de tentatives. Pour obvier à cet inconvénient, il existe un pro-cédé de vérification plus élaboré dans lequel on commence par décrémenter le nombre restant de tentatives préalablement à chaque vérification. Après chaque vérification réussie, le nombre maximal possible de tentatives est en-- registré en mémoire comme nombre restant de tentatives alors qu'après chaque échec, le nombre restant de tentatives est laissé inchangé en mémoire. Un inconvénient de cette solution est qu'elle nécessite deux opérations d'écritures en mémoire non volatile, ce qui accroît la consommation énergétique de la carte. En outre, en cas de rupture accidentelle de l'alimentation du circuit intégré après une vérification correcte du code, il existe un risque que l'enregistrement du nombre maximal possible de tentatives comme nombre restant de tentatives ne puisse être réalisé. Cet inconvénient est part:_culièrement préjudiciable, mais pas uniquement, dans le cas des cartes sans contact dans lesquelles l'alimentat:_on en énergie de la carte est assurée par un champ électromagnétique dans lequel se trouve la carte. Un déplacement de la carte ou d'un objet voisin venant masquer l'émetteur du champ éle- 3 ctromagnétique peut entraîner une interruption de l'alimentation en énergie du circuit intégré. OBJET DE L'INVENTION Par L'invention, on propose un procédé de vérifi- cation qui soit fiable et économe en énergie. RESUME DE L'INVENTION A cet effet, l'invention concerne un procédé de vérification d'un code au moyen d'une mémoire contenant des nombres aléatoires associés chacun à un numéro d'or-- dre, des résultats d'un calcul effectué sur chaque nombre aléatoire en utilisant une fonction bijective et le code comme paramètre de spécification de la fonction bijective, un nombre maximal possible de tentatives de vérification, un nombre théorique restant de tentatives de vé- rification et une valeur de contrôle qui est associée à un numéro d'ordre, le procédé comprenant les étapes de : - comparer la valeur de contrôle et le nombre aléatoire correspondant au numéro d'ordre associé à la valeur de contrôle ; si la valeur de contrôle et ledit nombre aléatoire sont identiques, prendre comme nombre réel restant: de tentatives de vérification le nombre maximal possible ; si la valeur de contrôle est différente dudit nombre aléatoire, prendre comme nombre réel restant le nombre théorique restant, - récupérer un code soumis par un utilisateur lorsque le nombre réel restant est différent de zéro et calculer une valeur de contrôle sur le résultat correspondant à un numéro d'ordre sélectionné, avec une fonction inverse de la fonction bijective en utilisant le code soumis comme paramètre de spécification de la fonction inverse, - mémoriser la valeur de contrôle calculée associée au numéro d'ordre sélectionné, décrémenter le nombre réel restant et mémoriser comme nombre théorique restant: le nombre réel restant décrémenté, - vérifier que la valeur de contrôle est identique au nombre aléatoire correspondant au numéro d'ordre sélectionné. Ainsi, la valeur de contrôle et le numéro d'ordre qui lui est associé permettent : - d'une part, de vérifier par comparaison avec le nombre aléatoire correspondant à ce numéro d'ordre si le code soumis est identique au code mémorisé, et - d'autre part, de déterminer pour la vérifica- tion suivante le nombre restant de tentatives de vérification. En effet, a titre d'exemple la fonction bijective peut être une fonction de chiffrement de type DES ou autre dont le paramètre de spécification constitue la clé de chiffrement. L'identité de la valeur de contrôle et du nombre aléatoire correspondant signifie que la vérification précédente était réussie. Le nombre restant de tentatives est alors égal au nombre maximal possible de tentatives. Une différence entre la valeur de contrôle et le nombre aléatoire révèle que la vérification précédente était un échec. Le nombre restant de tentatives est alors égal au nombre théorique restant de tentatives. Par para-mètre de spécification, on entend un paramètre tel que pour une première valeur du paramètre la fonction donne un premier résultat et, pour une deuxième valeur du para-mètre différente de la première valeur du paramètre, la fonction donne un deuxième résultat différent du premier, tous termes égaux par ailleurs. La mise en oeuvre du procédé conforme à l'inven- tion ne nécessite donc qu'une seule opération d'écriture qui précède la vérification. D'autres caractéristiques et avantages de l'invention ressortiront à la lecture de la description qui suit d'un mode de mise en oeuvre particulier non limita- tifs de l'invention. BREVE DESCRIPTION DES DESSINS Il sera fait référence à la figure unique annexée représentant schématiquement une carte à circuit intégré adaptée pour la mise en oeuvre du procédé conforme à l'in- 5 vention. DESCRIPTION DETAILLEE DE L'INVENTION L'invention est ici décrite en application à une carte de données comportant un corps de carte 1 dans le-quel est enchâssé un circuit intégré 2 définissant de fa- çon connue en soi un microprocesseur relié à une mémoire volatile et à une mémoire non volatile symbolisée en 3. La structure du circuit intégré et son mode de fonctionnement sont classiques et sans rapport direct avec l'invention, de sorte qu'ils ne seront pas décrits plus en détail ici. Le circuit intégré 2 est relié à des moyens de communication avec l'extérieur. Ces moyens, qui ne sont pas représentés sur la figure, sont par exemple des plages de contact permettant, par contact avec des conducteurs d'un lecteur de carte, d'échanger des infor- mations avec un terminal, tel qu'un terminal de paiement relié au lecteur de carte. En variante, les moyens de communication comprennent une antenne noyée dans le corps de carte pour alimenter le processeur et échanger des in-formations avec un terminal lorsque la carte se trouve dans un champ électromagnétique produit. par un émetteur récepteur relié audit terminal. La mémoire non volatile 3 contient un programme assurant le fonctionnement de la carte et des données utilisées par le programme pour assurer le fonctionnement de la carte. Le fonctionnement de la carte nécessite la mise en oeuvre d'un code personnel PIN. Parmi les données mémorisées dans la mémoire non volatile 3 se trouvent : - des nombres aléatoires al associés chacun à un numéro d'ordre i, les nombres aléatoires aisont au nombre de n, i variant de 1 à n, - des résultats WPIN (agi) d'un calcul effectué sur chaque nombre aléatoire en utilisant une fonction bijec- tive yJavec :e code PIN comme paramètre de spécification, - un nombre maximal possible de tentatives de vé- rification, noté PTL, - un nombre théorique restant de tentatives de vérification, noté PTC, - une valeur de contrôle Ri qui est associée à un numéro d'ordre i et qui correspond à un calcul effectué sur le résultat yJPIN (agi) correspondant au numéro d'ordre i en utilisant la fonction inverse yJN-' de la fonction bijective WN où M est un code préalablement soumis ainsi que cela sera explicité dans la suite de la description. Lors du premier enregistrement des valeurs (3i dans la mémoire (initialisation de la carte), on prend M = PIN. La fonction bijective yl ici choisie est une fonction facilement inversible de chiffrement utilisant un algorithme DES ("Data Encryption Standard" ou standard de chiffrement de données) dans lequel le code mémorisé PIN chiffré sert de clé de chiffrement. Pour servir de para-mètre de spécification, le code PIN a été préalablement chiffré par un algorithme DES utilisant une clé K comme clé de chiffrement. La clé est définie dans la mémoire non volatile de la carte et sa valeur est propre à chaque carte. Une opération de vérification d'un code soumis va maintenant être décrite. Pour qu'une telle vérification ait lieu, il est: nécessaire dans le présent mode de réalisation, que le circuit intégré 2 de la carte soit en liaison avec un terminal 10 équipé d'un lecteur de carte 11, d'un clavier 12 sur lequel le détenteur de la carte peut taper son code et d'un écran 13 sur lequel sont affichés des messa- 7 ges à destination du détenteur de la carte. Le nombre maximal possible de tentatives est dans cet exemple égal à trois, de sorte que la valeur PTL vaut trois et que la carte est bloquée lorsque la valeur PTC vaut zéro. Le nombre n de nombres aléatoires ai est au moins égal à PTL (ici n vaut 3). Lorsque le microprocesseur 2 est; en liaison avec le terminal et que le détenteur de la carte souhaite initier une transaction nécessitant qu'il s'identifie en donnant son code personnel, le terminal commence par interroger le microprocesseur 2 pour obtenir le nombre restant actualisé de tentatives de vérification, noté PTC', qui va être affiché sur l'écran 13 à destination du détenteur de la carte pour que ce dernier sache combien de tentatives i:L lui reste pour faire vérifier son code. Le programme exécuté par le microprocesseur compare alors la valeur de contrôle (3i et le nombre aléatoire ai correspondant au numéro d'ordre i associé à la valeur de contrôle (3~. Si la valeur de contrôle (Let ce nombre aléatoire ai sont identiques, le microprocesseur affecte au nombre restant actualisé PTC' le nombre maximal possible, à sa-voir la valeur PTL. En revanche, si la valeur de contrôle (Lest différente du nombre aléatoire agi, le programme af- fecte la valeur PTC au nombre restant actualisé PTC'. Lorsque la valeur PTC est égale à zéro, une transaction ne peut être initiée et la carte se bloque. Il peut alors être également prévu dans ce cas que le lecteur ne restitue pas la carte. Lorsque la valeur PTC est différente de zéro, le terminal 10 affiche un message demandant au détenteur de la carte de soumettre un code au moyen du clavier 12 et: transmet le code soumis M au programme exécuté par le microprocesseur. Une :Fois le code soumis M récupéré par le pro- 8 gramme, le programme chiffre le code soumis M en utilisant l'algorithme de chiffrement DES et la clé K mémorisée dans la carte. Un numéro d'ordre i est ensuite sélectionné, ici par tirage au sort. Une valeur de contrôle (3i correspondant à ce numéro d'ordre est ensuite calculée en utilisant la fonction yJ"1 inverse de la fonction bijective inversible yJ avec comme paramètre de spécification le code soumis M chiffré, soit Pi = WM 1(yJPIN(ai) ) . La fonction y[1 inverse de la fonction bijective inversible y est une fonction de déchiffrement basée sur l'algorithme DES dans lequel le code soumis M chiffré sert de clé de déchiffre-ment. Le programme inscrit alors en mémoire non vola-- tile 3 le numéro d'ordre i dernièrement sélectionné, la valeur de contrôle (3i dernièrement calculée et une nouvelle valeur PTC du nombre théorique restant correspondant à la valeur du nombre réel restant décrémentée de un. La vérification du code soumis M est ensuite réalisée, à savoir que le programme compare la valeur (3i dernièrement enregistrée en mémoire non volatile 3 au nombre aléatoire ai correspondant au numéro d'ordre _L dernièrement enregistré dans la mémoire non volatile 3. Si la valeur de contrôle (3i est identique au nom- bre aléatoire alors le code soumis M est identique au code PIN et =La transaction est autorisée. A l'inverse, si le code soumis M est différent du code PIN, le programme informe le terminal 10 que la transaction est refusée. Le terminal demande alors au programme le nombre restant actualisé PTC' de tentatives. La suite de la nouvelle opération de vérification se déroule comme décrit précédemment. Dans un mode de réalisation préféré, la carte su- bit une phase d'initialisation avant sa première utilisa-- tion. Cette phase d'initialisation consiste à enregistrer dans la mémoire non volatile 3 de la carte un numéro d'ordre i sélectionné et comme valeur de contrôle P. le nombre aléatoire ai correspondant. Ainsi, lors de la première interrogation de la carte pour connaître le nombre restant actualisé de tentatives PTC', la valeur de contrôle Ri est forcémen= égale au nombre aléatoire ai correspondant au numéro d'ordre i associé à la valeur de contrôle R= de sorte que la carte renvoie automatiquement la valeur PTL comme nombre restant actualisé. Bien entendu, l'invention n'est pas limitée au mode de réalisation décrit et on peut y apporter des va-riantes de réalisation sans sortir du cadre de l'inven- tion telle que définie par les revendications. En particulier, le chiffrement du code secret et du code soumis n'est pas indispensable à la mise en oeuvre du procédé conforme à l'invention. Il est possible d'utiliser toute fonction bi_iec-- tive et pas seulement une fonction de chiffrement utilisant un algorithme de type DES. Le numéro d'ordre i peut être sélectionné par un autre moyen comme un calcul et notamment une incrémentation ou une décrémentation du numéro d'ordre précédemment sélectionné. REVENDICATIONS 1. Procédé de vérification d'un code personnel au moyen d'une mémoire contenant des nombres aléatoires as- sociés chacun à un numéro d'ordre, des résultats d'un calcul effectué sur chaque nombre aléatoire en utilisant une fonction bijective et le code personnel comme paramètre de spécification de la fonction bijective, un nombre maximal possible de tentatives de vérification, un nombre théorique restant de tentatives de vérification et une valeur de contrôle qui est associée à un numéro d'ordre, le procédé comprenant les étapes de : - comparer la valeur de contrôle et le nombre aléatoire correspondant au numéro d'ordre associé à la valeur de contrôle ; si la valeur de contrôle et ledit nombre aléatoire sont identiques, prendre comme nombre réel restant: de tentatives de vérification le nombre maximal possible ; si la valeur de contrôle est différente dudit nombre aléatoire, prendre comme nombre réel restant le nombre théorique restant, - récupérer un code soumis par un utilisateur lorsque le nombre réel restant est différent de zéro et calculer une valeur de contrôle sur le résultat correspondant à un numéro d'ordre sélectionné, avec une fonc-- tion inverse de la fonction bijective en utilisant le code soumis comme paramètre de spécification de la fonction inverse, - mémoriser la valeur de contrôle calculée associée au numéro d'ordre sélectionné, décrémenter le nombre réel restant et mémoriser comme nombre théorique restant: le nombre réel restant décrémenté, - vérifier que la valeur de contrôle est identique au nombre aléatoire correspondant au numéro d'ordre sélectionné. 2. Procédé de vérification selon la revendication 11 1, dans lequel le code personnel est chiffré avant d'être utilisé comme paramètre de spécification dans la fonction bijective et le code soumis est chiffré de la même manière avant d'être utilisé comme paramètre de spécifica- tion dans la fonction inverse de la fonct:ion bijective. 3. Procédé de vérification selon la revendication 2, dans lequel la fonction bijective est: une fonction de chiffrement dans laquelle le code est utilisé comme clé de chiffrement. 4. Procédé selon la revendication 3, dans lequel la fonction de chiffrement est un algorithme de type DES. 5. Procédé selon la revendication 1, comprenant: une phase d'initialisation comprenant les étapes de sélectionner un numéro d'ordre et d'enregistrer comme va-- leur de contrôle le nombre aléatoire correspondant à ce numéro d'ordre. 6. Procédé selon la revendication 1, dans lequel le nombre de nombres aléatoires est au moins égal au nombre maximal possible de tentatives. 7. Procédé selon la revendication 1, dans lequel le numéro d'ordre est déterminé à chaque vérification par tirage au sort ou par un calcul tel qu'une incrémenta--tion.