FR 2786013 A1 20000519 FR 9814224 A 19981112 PROCEDE D'AUTHENTIFICATION ENTRE UNE CARTE A MEMOIRE ET UN TERMINAL L'invention concerne les cartes à mémoire et les terminaux auxquels elles sont susceptibles d'tre connectées de temps à autre et, plus particulièrement, un procédé qui permet à la carte à mémoire et au terminal de s'authentifier. Les cartes à mémoire, du fait qu'elles ne comportent pas un microprocesseur, ne peuvent pas mettre en oeuvre un algorithme d'authentification qui implique des calculs. Cependant, certaines cartes à mémoire mettent en oeuvre un algorithme sous forme câblée qui permet l'authentification dite"active"de la carte par le terminal mais pas l'authentification inverse du terminal par la carte. Par suite de leur faible coût, les cartes à mémoire sont très utilisées dans de nombreuses applications telles que les cartes de fidélité, les contrôles d'accès, les paiements privatifs, etc.... Cependant, par suite de l'absence d'authentification, leur sécurité d'emploi est vulnérable de sorte qu'on leur préfère parfois des cartes à microprocesseur pour certaines applications. Mais ces cartes à microprocesseur sont d'un coût nettement plus élevé, d'autant plus élevé que l'algorithme d'authentification est élaboré, ce qui conduit à les écarter pour des applications bon marché. Aussi, le but de la présente invention est d'obtenir la sécurité d'emploi des cartes à mémoire. Ce but est atteint en mettant en oeuvre un procédé d'authentification dans lequel tous les calculs algorithmiques sont effectués par le terminal auquel la carte à mémoire est connectée. Par ailleurs, les opérations à l'authentification sont effectuées avant le début d'une transaction proprement dite et après la fin de cette transaction en vue de l'authentification au début de la transaction suivante. L'invention concerne donc un procédé d'authentification entre une carte à mémoire comportant au moins un compteur et un terminal, caractérisé en ce qu'il comprend les étapes suivantes consistant à : (a) Insérer la carte à mémoire dans le terminal, (b) Calculer dans le terminal un code secret CSC1 selon une fonction cryptographique F de plusieurs variables comprenant au moins un code CSN identifiant la carte à mémoire et la valeur dudit compteur, (c) Authentifier le terminal par la carte lorsque le code secret calculé CSC1 est identique à un code CSCo enregistré dans la mémoire à la fin de la précédente authentification selon l'opération (f) ci-après, (d) exécuter la transaction prévue et modifier la valeur dudit compteur, (e) calculer dans le terminal un nouveau code secret CSC2 selon la fonction cryptographique F du code CSN identifiant la carte à mémoire et de la nouvelle valeur dudit compteur, (f) mettre à jour la carte à mémoire pour la prochaine transaction en enregistrant dans la mémoire, le nouveau code secret CSC2 calculé par l'opération (e). Pour obtenir l'authentification de la carte par le terminal, le procédé comprend les étapes supplémentaires suivantes entre les étapes (c) et (d) consistant à : (x) calculer dans le terminal un certificat d'authentification CAl selon une fonction cryptographique G de plusieurs variables comprenant au moins le code CSN identifiant la carte à mémoire et la valeur dudit compteur, (y) authentifier la carte par le terminal lorsque le certificat d'authentification calculé CA1 est identique à un certificat CAo calculé et enregistré dans la carte à la fin de la précédente transaction selon les étapes (e') et (f') ci-après : -en ce que l'étape (e) est complétée par l'étape suivante consistant à : (e') calculer dans le terminal un nouveau certificat d'authentification CA2 selon la fonction cryptographique G, -et en ce que l'étape (f) est complétée par l'étape suivante consistant à : (f') mettre à jour la carte à mémoire pour la prochaine transaction en enregistrant dans la mémoire le nouveau certificat d'authentification CA2 calculé selon l'étape (e'). D'autres caractéristiques et avantages de la présente invention apparaîtront à la lecture de la description suivante d'un exemple particulier de réalisation, ladite description étant faite en relation avec le dessin joint dans lequel : -la figure 1 est un schéma simplifié d'une carte à mémoire, et -la figure 2 est un diagramme montrant les opérations effectuées entre le terminal et la carte à mémoire lors d'une transaction. Le procédé de l'invention s'applique (figure 1) à une carte à mémoire CM qui comprend bien entendu une mémoire M mais aussi un compteur CT dit de transactions qui compte les transactions effectuées entre la carte CM et un terminal TE auquel la carte est connectée par insertion. La carte à mémoire CM peut aussi comprendre un deuxième compteur CE dit d'authentification qui compte les demandes d'authentification, ces demandes d'authentification pouvant intervenir à tout moment lors d'une transaction et indépendamment de cette dernière. Ces deux compteurs CE et CT peuvent faire partie de la mémoire M selon des dispositifs connus. En outre, la mémoire M de la carte comprend une première zone à accès non protégé en lecture dans laquelle est enregistré, par exemple le numéro de série CSN de la carte dans une partie ZCSN, et une deuxième zone à accès protégé pour le reste de la mémoire, cette deuxième zone comportant des parties qui sont affectées à l'enregistrement de valeurs particulières telles qu'un Certificat d'Authentification CA dans la partie ZCA et une balance BAL et son certificat d'authentification CBAL dans la partie ZBAL. Une troisième zone ZCSC est réservée à l'enregistrement d'un code secret CSC et son accès pour enregistrement est soumis à la présentation du code secret CSC. La mémoire M est adressée par un circuit d'adressage ADR et la transmission bilatérale des signaux entre le terminal TE et la carte CM s'effectue par l'intermédiaire d'un circuit interface INT. Par ailleurs, la carte comprend un comparateur CP qui compare le code CSC lu dans la partie ZCSC à un code fourni par le terminal TE, le résultat de la comparaison permettant ou non l'adressage de la zone protégée de la mémoire M. Le procédé selon l'invention sera décrit dans le cadre d'une authentification mutuelle entre la carte et le terminal en mettant en oeuvre le seul compteur de transactions CT et des fonctions cryptographiques dites à sens unique mais le procédé de l'invention peut également s'appliquer à la seule authentification du terminal par la carte, à la mise en oeuvre simultanée des deux compteurs CE et CT et de fonctions cryptographiques autres que celles à sens unique. Les différentes opérations, notamment cryptographiques, peuvent tre réalisées soit dans le terminal TE, soit dans un module de sécurité, soit encore dans un dispositif distant. De préférence, le procédé d'authentification mutuelle selon l'invention comprend les étapes suivantes consistantà : (m) Insérer la carte CM dans le terminal TE, cette étape pouvant comporter la présentation d'un code personnel PIN de l'utilisateur de la carte, (n) Calculer dans le terminal TE une clé de session Ksi en : (ni) lisant le numéro de série CSN de la carte CM, (n2) lisant le contenu CTC1 du compteur de transactions CT de la carte CM et, (n3) calculant une clé de session Ksi selon une fonction cryptographique à sens unique Fks telle que : Ksi = Fks (Km, CSN, CTC1) -Km étant une clé-mère enregistrée dans le terminal TE, -Fks étant par exemple une fonction du type hachage, (o) Calculer, dans le terminal TE, un code secret CSC1 de la carte à l'aide d'une fonction cryptographique F telle que : CSC1 = F (Ksl), (p) Authentifier le terminal TE par la carte CM en : (pl) transmettant le code secret CSC1 à la carte (P2) comparant dans le comparateur CP ce code secret CSC1 à un code secret CSCO enregistré dans la carte CM à la fin de la précédente transaction avec la carte, et (p3) autorisant la suite des opérations si la comparaison indique l'identité CSCn = CSC ou en la refusant dans le cas contraire ; (q) Calculer dans le terminal TE un Certificat d'Authentification CA1 tel que : CA1 = G (Ksl) -G étant une fonction cryptographique, et (r) Authentifier la carte CM par le terminal TE en : (rl) lisant le contenu CAo de la zone ZCA de la mémoire de la carte CM, (r2) transmettant au terminal TE le contenu CAo de cette zone protégée ZCA qui correspond à un Certificat d'Authentification CAo calculé à la fin de la précédente transaction, (r3) comparant dans le terminal TE le Certificat d'Authentification calculé CA1 au certificat CAo, et (r4) autorisant la suite des opérations si la comparaison indique l'identité CA1 = CAQ ; (s) Exécuter la transaction, cette transaction pouvant consister par exemple à mettre à jour une zone de mémoire ZBAL indiquant l'état du crédit ou balance BAL restant dans la carte CM en : (sl) lisant dans la zone ZBAL la valeur BALo de la balance résultant de la transaction précédente et le certificat correspondant CALO, (s2) vérifiant que le certificat CBALo correspond bien au résultat de la fonction cryptographique telle que : CBALQ = H (Kt, BALo, CSN, CTC1), -Kt étant une clé de transaction, (s3) incrémentant le compteur de transactions à la valeur (CTC1 + 1) = CTC2 (s4) enregistrant la nouvelle balance BAL1 dans la zone ZBAL, (s5) calculant un Certificat CBAL1 de la nouvelle balance BAL1 telle que : CBAL1 = H (Kt, BAL1, CSN, CTC2), et (s6) enregistrant CBAL1 dans la zone ; (t) Mettre à jour la carte CM pour la prochaine transaction avec un nouveau code secret CSC2 et un nouveau certificat CA2, en (tl) calculant dans le terminal TE : -la future clé de session Ks2 telle que : Ks2 = F (Km, CSN, CTC2) -le futur code secret CSC2 tel que : CSC2 = F (Ks2), -le futur certificat d'authentification CA2 tel que : CA2 = G (Ks2), (t2) enregistrant le code secret CSC2 dans la mémoire M de la carte CM dans la zone protégée et le certificat d'authentification CA2 dans la zone protégée ZCA. L'invention a été décrite avec un exemple particulier de réalisation dans lequel la transaction est une opération sur la valeur balance de la carte ; cependant, l'invention s'applique à toute autre transaction selon les applications prévues pour la carte considérée. Dans cet exemple particulier, la transaction se termine par une incrémentation du compteur de transactions CT à une valeur CTC2 qui est égale habituellement à (CTC1 + 1). Cependant, cette valeur de CTC2 peut tre différente de (CTC1 + 1) et tre égale, par exemple, à (CTC1 + 3). Ce compteur de transactions doit tre incrémenté ou décrémenté à chaque transaction mme si l'opération conduit à ne pas changer la balance ; dans ce cas, il faut effectuer la transaction en réenregistrant la balance inchangée mais le certificat CBAL1 sera différent car le compteur de transactions aura été incrémenté. Il en sera de mme du nouveau code secret CSC2 et du certificat CA2. Les variables des fonctions F, G et Fks qui ont été retenues dans l'exemple sont la clé-mère, le numéro de série CSN et la valeur CTC du compteur de transactions. Cependant, des variables additionnelles peuvent tre utilisées telles que le code personnel PIN de l'utilisateur de la carte, ce code étant entré dans le terminal après insertion de la carte. L'invention a été décrite dans le cadre d'une authentification mutuelle carte/terminal mais elle s'applique de manière plus générale d'abord à une authentification du terminal par la carte, cette première authentification pouvant tre suivie ou non par une authentification de la carte par le terminal, l'ensemble des deux authentifications réalisant une authentification mutuelle. L'exemple décrit utilise des fonctions cryptographiques F, G et Fks utilisant des variables telles qu'une clémère Km, une clé de session Ks et une clé de transaction Kt, mais de telles clés ne sont pas nécessaires pour mettre en oeuvre l'invention. La valeur du compteur d'authentifications CE est de préférence utilisée pour le calcul du code secret CSN tandis que la valeur du compteur de transactions CT est de préférence utilisée pour le calcul du certificat d'authentification CA. REVENDICATIONS 1. Procédé d'authentification entre une carte à mémoire (CM) comportant au moins un compteur (CE, CT) et un terminal (TE), caractérisé en ce qu'il comprend les étapes suivantes consistant à : (a) Insérer la carte à mémoire (CM) dans le terminal (TE),- (b) Calculer dans le terminal un code secret CSC1 selon une fonction cryptographique F de plusieurs variables comprenant au moins un code CSN identifiant la carte à mémoire et la valeur (CTE1, CTC1) dudit compteur (CE, CT), (c) Authentifier le terminal par la carte lorsque le code secret calculé CSC1 est identique à un code CSCo enregistré dans la mémoire à la fin de la précédente authentification selon l'opération (f) ci-après, (d) exécuter la transaction prévue et modifier la valeur (CTE2, CTC2) dudit compteur (CE, CT), (e) calculer dans le terminal (TE) un nouveau code secret CSC2 selon la fonction cryptographique F du code CSN identifiant la carte à mémoire (CM) et de la nouvelle valeur (CTE2, CTC2) dudit compteur (CE, CT), (f) mettre à jour la carte à mémoire (CM) pour la prochaine transaction en enregistrant dans la mémoire (M), le nouveau code secret CSC2 calculé par l'opération (e). 2. Procédé selon la revendication 1, caractérisé : -en ce qu'il comprend les étapes supplémentaires suivantes entre les étapes (c) et (d) consistant à : (x) calculer dans le terminal (TE) un certificat d'authentification CA1 selon une fonction cryptographique G de plusieurs variables comprenant au moins le code CSN identifiant la carte à mémoire et la valeur (CTE1, CTC1) du compteur (CE, CT), (y) authentifier la carte (CM) par le terminal (TE) lorsque le certificat d'authentification calculé CA1 est identique à un certificat CAo calculé et enregistré à la fin de la précédente transaction selon les étapes (e') et (f') ci-après : -en ce que l'étape (e) est complétée par l'étape suivante consistant à : (e') calculer dans le terminal (TE) un nouveau certificat d'authentification CA2 selon la fonction cryptographique G du code CSN identifiant la carte à mémoire et de la nouvelle valeur (CTE2, CTC2) dudit compteur (CE, CT), -et en ce que l'étape (f) est complétée par l'étape suivante consistant à : (f') mettre à jour la carte à mémoire (CM) pour la prochaine transaction en enregistrant dans la mémoire (M) le nouveau certificat d'authentification CA2 calculé selon l'étape (e'). 3. Procédé selon la revendication 1, caractérisé : -en ce que l'étape (b) consiste à : -calculer d'abord dans le terminal (TE) une clé de session Kgi selon une fonction cryptographique Fks de plusieurs variables comprenant au moins une clé mère Km connue du terminal (TE), le code CSN identifiant la carte à mémoire (CM) et la valeur (CTE1, CTC1) dudit compteur (CE, CT), -calculer ensuite dans le terminal (TE) le code secret CSC1 selon la fonction cryptographique F de la clé de session Ksi, -en ce que l'étape (e) consiste à : -calculer d'abord dans le terminal (TE) une nouvelle clé de session KS2 selon la fonction cryptographique Fks avec la nouvelle valeur (CTE2, CTC2) dudit compteur (CE, CT), -calculer ensuite dans le terminal (TE) le nouveau code secret CSC2 selon la fonction cryptographique F de la nouvelle clé de session Kgo. 4. Procédé selon la revendication 2 et 3, caractérisé en ce que : -l'étape (e') consiste à calculer le nouveau certificat d'authentification CA2 selon la fonction cryptographique G de la nouvelle clé de session Ks2. 5. Procédé selon l'une quelconque des revendications précédentes 1 à 4, dans son application à une carte à mémoire (CM) comprenant deux compteurs, l'un (CE) comptant les authentifications et l'autre (CT) comptant les transactions de paiement, caractérisé en ce que les variables des fonctions cryptographiques F, G et Fks comprennent les valeurs (CTE1, CTE2, CTC1, CTC2) desdits compteurs. 6. Procédé selon l'une des revendications précédentes caractérisé en ce que les fonctions cryptographiques F, G et Fks sont des fonctions à sens unique. 7. Procédé selon la revendication 6, caractérisé en ce que les fonctions cryptographiques F, G et Fks sont des fonctions de"hachage". 8. Procédé selon l'une des revendications précédentes 3 à 7, caractérisé en ce que l'étape (b) comprend les étapes suivantes consistant à : (bl) lire le numéro de série CSN de la carte (CM), (b2) lire le contenu (CTE1 et/ou CTC1) du compteur, et (b3) calculer la clé de session selon une fonction cryptographique Fks telle : Ksi = Fks (Kmt CSN CTC1)- 9. Procédé selon l'une des revendications 1 à 8, caractérisé en ce que l'étape (c) comprend les étapes suivantes à: (cl) transmettre le code secret CSC1 à la carte CM, (c2) comparer dans la carte ce code secret CSC1 à un code secret CSCO enregistré dans la carte CM à la fin de la précédente transaction avec la carte, et (C3) autoriser la suite des opérations si la comparaison indique l'identité CSCO = CSC1 ou en la refusant dans le cas contraire. 10. Procédé selon l'une des revendications 2 à 9, caractérisé en ce que l'étape (y) comprend les étapes suivantes consistant à : (Y1) lire le contenu CAo de la zone ZCA de la mémoire de la carte CM, (y2) transmettre au terminal (TE) le contenu CAo de cette zone ZCA qui correspond à un Certificat d'Authentification CAo calculé à la fin de la précédente transaction, (y3) comparer dans le terminal TE le Certificat d'Authentification calculé CA1 au certificat CAo, et (y4) autoriser la suite des opérations si la comparaison indique l'identité CA1 = CAo. 11. Procédé selon l'une des revendications 1 à 10, caractérisé en ce que l'étape (d) comprend, dans le cas d'une modification de la balance BALo, les étapes suivantes à: (dl) lire dans une zone ZBAL de la mémoire (M) la valeur BALo de la balance résultant de la transaction précédente et le certificat correspondant CBALo, et (d2) vérifier que le certificat CBALo correspond bien au résultat de la fonction cryptographique telle que : CBALo = H (Kt, BALo, CSN, CTC1), -Kt étant une clé de transaction, (d3) incrémenter le compteur de transactions à la valeur (CTC1 + 1) = CTC2 (d4) enregistrer la nouvelle balance BAL1 dans la zone ZBAL, (d5) calculer un Certificat CBAL1 de la nouvelle balance BAL1 telle que : CBAL1 = H (Kt, BAL1, CSN, CTC2), et (d6) enregistrer CBAL1 dans la zone ZBAL. 12. Procédé selon l'une des revendications précédentes 1 à 11, caractérisé en ce que : -l'étape (a) comprend en outre une étape d'entrée du code personnel PIN de l'utilisateur. 13. Procédé selon l'une des revendications précédentes 3 à 12, caractérisé en ce que : -dans l'étape (b), l'une des variables utilisées pour le calcul de session Ksi est le code personnel PIN de l'utilisateur.