Brevet FR2856815A1 — publié le 20041231

L'invention concerne la protection de l'intégrité de données stockées dans un objet à mémoire, notamment dans une carte à puce. L'invention est plus particulièrement relative à un procédé permettant de vérifier l'authenticité des données stockées dans la mémoire d'une carte à puce. La sécurité des cartes à puces repose sur la conception matérielle des puces et surtout sur les mécanismes cryptographiques mis en oeuvre dans le système d'exploitation de la carte. Les données utilisées dans la carte par les différents algorithmes sont généralement secrètes. Ces algorithmes sont eux aussi généralement secrets. Ils peuvent être symétriques ou asymétriques, et comme les clefs et le contenu de la mémoire, ils sont d'une importance capitale. Des erreurs de logiques logicielles et/ou des malfonctions matérielles des cartes à puce peuvent être exploitées par des fraudeurs afin d'accéder au contenu d'une carte à puce et même modifier ce contenu. Or de nombreux problèmes de sécurité découlent de la modification du contenu de la mémoire des cartes à puces. En particulier, si la mémoire d'une carte à puce peut être modifiée sans que l'on s'en rende compte, la fonctionnalité, les informations stockées et, de manière générale, la sécurité de la carte à puce sont compromises. Différentes méthodes ont été proposées afin de garantir un niveau de sécurité plus ou moins élevé du contenu d'une carte à puce. On connaît en particulier le principe consistant à baser l'authentification du contenu d'une mémoire sur une information secrète mémorisée de façon inaccessible depuis l'extérieur dans la carte et dans un terminal de traitement. La carte et le terminal possèdent des moyens de calcul qui peuvent utiliser un même algorithme faisant intervenir l'information secrète précitée. Si les mises en oeuvre de cet algorithme respectivement dans la carte et dans le terminal donnent le même résultat, alors la carte est considérée comme authentique. Mais un inconvénient d'une telle approche connue réside en ce que l'information secrète doit être mémorisée dans le terminal de traitement, et il suffit donc qu'un fraudeur arrive à connaître l'information secrète commune à toutes les cartes pour pouvoir fabriquer, à partir de cartes vierges, autant de cartes qu'il le souhaite, qui apparaîtront comme authentiques. On connaît également un procédé d'authentification du contenu d'une mémoire, telle que la mémoire d'une carte à puce, dans lequel on définit dans la mémoire en question deux zones libres en lecture et protégées en écriture, ainsi qu'une troisième zone interdite en lecture et protégée en écriture. Avant délivrance de la carte, la première zone contient des premières informations, et la troisième zone contient une donnée secrète. Un premier algorithme non secret est mis en oeuvre sur les premières informations avec la donnée secrète pour élaborer une signature, qui est écrite dans la première zone de mémoire. Un deuxième algorithme, à clé publique et à clé secrète, est mis en u̇vre en utilisant la clé secrète pour coder les premières informations et la signature, et pour inscrire ces informations résultantes dans la deuxième zone. Ensuite, lorsque la carte est lue par un terminal de traitement, la clé publique est utilisée pour décoder les informations codées inscrites dans la deuxième zone et pour les comparer aux informations de départ. En cas de correspondance, la carte recalcule la signature, à l'aide de la donnée secrète, des premières informations, et l'authenticité est avérée si la signature recalculée est égale à celle mémorisée dans la première zone de mémoire Une difficulté avec les mécanismes d'authentification connus réside en ce que les premières informations sont des informations situées en des emplacements bien déterminés, toujours identiques, de la mémoire, et donc facilement localisables. Un but de l'invention est de proposer un procédé d'authentification permettant d'accroître encore plus la sécurisation du contenu d'une carte à puce, sans toutefois compliquer significativement les opérations nécessaires pour l'authentification. A cet effet, l'invention propose un procédé d'authentification de données contenues dans un objet à mémoire, notamment dans une carte à puce, caractérisé en ce qu'il comprend les étapes suivantes : (a) lors de l'utilisation de l'objet en coopération avec un terminal de traitement, transmission par ledit terminal de traitement : i. d'informations de localisation Lo, L1, ..., Ln représentatives d'au moins un emplacement en mémoire des données à authentifier, ii. d'une signature (dite signature présentée Sp) desdites données à authentifier élaborée par mise en oeuvre d'un algorithme A à clé privée Cs et clé publique Cp ;(b) calcul d'une signature (dite signature calculée Se) des données IL0, IL1, ..., ILn stockées dans le ou les emplacements de la mémoire identifiés par lesdites informations de localisation Lo, L1, ..., Ln, par mise en u̇vre dudit algorithme A faisant intervenir ladite clé publique Cp, (c) comparaison de la signature présentée Sp et de la signature calculée Sc; et (d) en cas de correspondance desdites signatures Sp et Sc, attestation de Des aspects préférés, mais non limitatifs du procédé selon l'invention sont les suivants : - en cas de non-correspondance entre la signature présentée Sp et la signature calculée Sc, le procédé selon l'invention comporte une étape (d') de rejet dudit objet à mémoire par ledit terminal de traitement ; - lors de l'étape (a) de transmission, le terminal transmet en outre à l'objet à mémoire l'algorithme A ;- l'algorithme A peut également être mémorisé dans la mémoire de l'objet, le terminal transmettant alors audit objet au cours de l'étape (a) un indicateur IA permettant d'indiquer audit objet que ledit algorithme A doit être utilisé au cours de l'étape (b) de calcul ; - lors de l'étape (a) de transmission, le terminal peut en outre transmettre à l'objet à mémoire ladite clé publique Cp ; - ladite clé publique Cp peut également être mémorisée dans la mémoire dudit objet, le terminal transmettant alors audit objet au cours de l'étape (a), un indicateur IC permettant d'indiquer audit objet que ladite clé publique Cp doit être utilisée au cours de l'étape (b) de calcul ;- le terminal de traitement peut être relié à un serveur central disposant d'une image de la mémoire dudit objet et fournissant audit terminal, lors d'une étape préliminaire, les informations de localisation Lo, L1, ..., Ln ; - au cours de ladite étape préliminaire de fourniture, le serveur peut en outre transmettre au terminal ladite signature présentée Sp desdites données à authentifier ; - de manière alternative, suite à ladite étape préliminaire et préalablement à l'étape (a) de transmission, le procédé peut comporter une étape de génération par ledit terminal de traitement de ladite signature présentée Sp ; - on fait varier les informations de localisation en mémoire des données à authentifier. D'autres aspects, buts et avantages de la présente invention apparaîtront mieux à la lecture de la description détaillée suivante d'une forme de réalisation de celle-ci, donnée à titre d'exemple non limitatif, et faite en référence à l'organigramme représenté sur la figure 1 annexée. Cet organigramme illustre les opérations réalisées dans le cadre d'un mode de réalisation de l'invention en vue de l'authentification de données contenues dans la mémoire d'une carte à puce. On va maintenant décrire le procédé selon l'invention permettant d'authentifier les données contenues dans un objet à mémoire, notamment dans une carte à puce. Ce procédé fait intervenir un algorithme, classique en soi, de codage à clé publique et à clé secrète. De manière résumée, on peut dire que le codage d'une information fait intervenir une clé secrète Cs, alors que le décodage d'une information fait intervenir une clé publique Cp. En d'autres termes, il est toujours possible de décoder une information, mais il est impossible de coder cette information, sauf à connaître la clé secrète Cs. Le procédé d'authentification selon l'invention met en jeu dans une forme de réalisation préférée au moins une carte à puce et au moins un terminal de traitement dans laquelle ladite carte à puce peut être introduite, et des moyens pour permettre l'échange d'informations entre ledit terminal et ladite carte. La carte à puce comprend une mémoire pour mémoriser des données ainsi que des circuits de traitement pour traiter les données contenues dans ladite mémoire et des informations venant dudit terminal de traitement. Lesdits moyens de traitement d'informations comportent en particulier des moyens de mise en oeuvre d'un algorithme de codage du type de celui évoqué précédemment. Ledit terminal de traitement comporte des moyens de traitement d'informations et des moyens de mémorisation d'informations. Lorsqu'au cours de l'exploitation de la carte, un usager veut, par exemple, obtenir un service ou réaliser une transaction, il introduit sa carte dans le terminal de traitement. L'accès à ce service ou la réalisation de la transaction peuvent être contrôlés en vérifiant par exemple que l'usager dispose des droits d'accès relatifs audit service ou des autorisations nécessaires pour réaliser la transaction. Afin d'éviter par exemple que des fraudeurs viennent modifier ces informations relatives aux droits d'accès (et produire ainsi des cartes permettant à des usagers d'accéder frauduleusement audit service), il est cependant nécessaire de vérifier que les informations stockées dans la mémoire de la carte sont bien valides. L'invention permet en particulier de vérifier que les données stockées dans la mémoire de la carte y sont présentent à l'emplacement attendu, et cela sans être corrompues. Bien entendu, l'invention n'est pas limitée à l'authentification de données relatives à des droits d'accès ou des autorisations de réalisation de transactions. L'invention concerne en effet l'authentification de toute donnée stockée dans la mémoire, et cela indépendamment de ce que peut représenter cette donnée. Le terminal et la carte introduite dans ledit terminal coopèrent ( dialoguent ) et lorsque ledit terminal de traitement souhaite contrôler l'authenticité d'une (ou plusieurs) donnée(s) stockée(s) à un (des) emplacement(s) prédéfini(s) dans la mémoire de la carte à puce, la procédure d'authentification suivante est mise en oeuvre. Cette procédure comporte diverses étapes dont l'enchaînement est représenté par l'organigramme de la figure 1 annexée. Le terminal de traitement transmet, au cours d'une première étape 10, au circuit de traitement de la carte, une commande comportant : au moins une information de localisation Lo, L1, ..., Ln relative à au moins un emplacement prédéfini dans la mémoire de la carte à puce dans lequel la donnée (les données) à authentifier est (sont) écrite(s) ; une information, dite signature présentée Sp, relative à la signature numérique résultant du codage, par un algorithme A de codage à clé privée et à clé publique, de (des) donnée(s) à authentifier aux localisations désignées par ladite information de localisation Lo, L1, Ln dans la mémoire de la carte. Selon un mode de réalisation préféré de l'invention, le terminal de traitement transmet également à la carte au cours de ladite étape 10 de transmission : ledit algorithme A de codage à clé privée et à clé publique; ladite clé publique Cp relative audit algorithme A. Les données à authentifier à l'aide du procédé selon l'invention, sont les données IL0, IL1, ..., ILn stockées dans la mémoire de la carte aux emplacements correspondant respectivement aux informations de localisation Lo, L1, ..., Ln Au cours d'une seconde étape 20 de calcul, la carte, suite à l'instruction transmise par le terminal de traitement pour l'authentification des données ILO, IL1, ..., ILn, calcule une signature calculée Sc à l'aide dudit algorithme A, de ladite clé publique Cp, et des informations ILO, IL1, ..., ILn présentes dans la carte aux emplacements pointés par les informations de localisation Lo, L1, ..., Ln. Ce calcul peut s'écrire selon Sc = A (Cp ; ILO, IL1, ..., ILn). La carte effectue ensuite, au cours d'une étape 30 de comparaison, une comparaison entre ladite signature calculée Sc et ladite signature présentée Sp. Si il y a correspondance entre lesdites signatures Sc et Sp, la ou les données stockées en mémoire aux emplacements pointés par les informations de localisation Lo, L1, ..., Ln sont donc authentifiées (étape 40). Le procédé selon l'invention a alors permis de prouver que lesdites données sont bien présentes et non corrompues aux emplacements prédéfinis de la mémoire de la carte dans lesquels elles doivent se trouver. En revanche, s'il n'y a pas correspondance entre lesdites signatures Sc et Sp, la ou les données stockées en mémoire aux emplacements pointés par les informations de localisation Lo, L1, ..., Ln ne correspondent pas aux données qui devraient se trouver auxdits emplacements. Ces données sont donc considérées comme des données invalides ou corrompues (étape 50). Un signal d'erreur est alors généré et l'exécution de la commande est arrêtée. Une information signalant une telle erreur peut éventuellement être affichée, à destination de l'usager, sur le terminal de traitement. Le terminal de traitement peut alors refuser l'accès au service demandé par l'usager porteur de la carte, celle-ci étant par conséquent rejetée par ledit terminal (étape 51 ). La carte à puce peut éventuellement être rendue inutilisable. Selon un mode de réalisation alternatif de l'invention, l'algorithme A n'est pas transmis à la carte au cours de l'étape 10 de transmission. Ledit algorithme A peut effectivement être mémorisé dans la mémoire de ladite carte. Le terminal de traitement transmet alors, en lieu et place de l'algorithme A, un indicateur IA, relatif audit algorithme A. Ledit indicateur IA permet d'indiquer à la carte que l'algorithme A stocké dans sa mémoire doit être utilisé au cours de l'étape suivante de calcul. De manière similaire, ladite clé publique Cp peut être mémorisée dans la mémoire de la carte. Le terminal transmet alors, au cours de ladite étape de transmission, en lieu et place de ladite clé publique Cp, un indicateur IC relatif à ladite clé publique. Ledit indicateur IC permet d'indiquer à la carte que la clé publique Cp stockée dans sa mémoire doit être utilisée au cours de l'étape suivante 20 de calcul. Selon un mode de réalisation préféré de l'invention, le terminal est relié, par l'intermédiaire d'un canal de transmission classique en soi, à un serveur central. Ledit serveur dispose d'une image de la mémoire de la carte à puce, c'est-à-dire qu'il connaît quelles sont les données stockées sur la carte et les localisations de ces données dans la mémoire de la carte. Lorsque le serveur cherche à authentifier des données présentes dans la carte à puce (par exemple des informations relatives à des droits d'accès à des services ou à la réalisation de transactions), il met en oeuvre le calcul de la signature présentée Sp par codage, à l'aide de l'algorithme A et de la clé privée Cs dudit algorithme A, desdites informations à authentifier (dont il a connaissance puisque disposant d'une image de la mémoire de la carte). Le serveur transmet ensuite au terminal, de préférence par une transmission sécurisée, la signature présentée Sp ainsi que les informations Lo, L1, ..., Ln de localisation dans la mémoire de la carte des informations à authentifier. Le serveur peut également transmettre au terminal l'algorithme A et/ou la clé publique Cp, en particulier dans le cas où ledit terminal ne dispose pas en mémoire dudit algorithme A et/ou de ladite clé publique Cp. Selon un autre mode de réalisation de l'invention, la signature présentée Sp est calculée au niveau du terminal de traitement, celui-ci disposant alors de moyens de mise en u̇vre dudit algorithme A. Les informations de localisation Lo, L1, ..., Ln sont du type de celles classiquement utilisées pour sélectionner un ou plusieurs éléments dans une mémoire (on parle alors de processus d'adressage). On mentionne qu'il est ainsi possible d'accéder, de manière non limitative, à l'aide de ces informations de localisation, aussi bien à l'ensemble d'une zone de la mémoire, qu'à un ou plusieurs blocs particuliers de données ou encore à un ou plusieurs mots particuliers, voire même à un ou plusieurs octets particuliers. De telle sorte, on comprend qu'il est possible d'attester le caractère authentique de n'importe quelle partie de la mémoire d'un objet à mémoire de type carte à puce, et cela indépendamment de la taille et de la localisation de cette partie. L'invention présente en cela une grande flexibilité, de nombreuses politiques de sécurité différentes pouvant effectivement être mises en u̇vre (en particulier en faisant varier les localisations des informations à protéger). Il est ainsi possible d'utiliser des politiques de sécurité différentes selon les cartes à puce, y compris parmi les cartes permettant d'avoir accès à un même service. De plus, la politique de sécurité appliquée à une carte particulière peut être modifiée dans le temps. Cette flexibilité permet en particulier de garantir un niveau de sécurité relativement élevé puisque la politique de sécurité mise en u̇vre est une donnée inconnue d'un éventuel fraudeur. De plus, la clé secrète Cs de l'algorithme de codage à clé secrète et à clé publique n'est pas accessible à un fraudeur puisque la clé secrète est utilisée seulement par un organisme habilité à charger des informations dans des cartes (notamment lors de leur production avant de délivrer les cartes aux usagers, ou lors d'un chargement ultérieur de données). Un tel organisme peut en particulier contrôler le serveur central dont il été fait état précédemment. En particulier, ladite clé secrète Cs n'est pas mémorisée sur les terminaux de traitement aptes à coopérer avec la carte à puce lors de son utilisation. Ne disposant pas de la clé secrète, un fraudeur ne peut donc pas venir modifier le contenu de la mémoire d'un objet à mémoire de type carte à puce sans que cette modification ne soit identifiée (lors d'une utilisation ultérieure de l'objet au cours de laquelle on utilise la clé publique de l'algorithme de codage) comme une corruption du contenu de la mémoire. En outre, les échanges d'informations entre l'objet à mémoire de type carte à puce et le terminal de traitement ne peuvent, s'ils sont interceptés, être utilisés pour corrompre le contenu de la mémoire de l'objet. Comme cela a déjà été discuté, les informations de localisation pointent effectivement vers des emplacements quelconques de la mémoire. En particulier, ces emplacements peuvent être variables (par exemple d'un type de carte à un autre ou encore, pour une même carte, transaction après transaction) afin d'éviter que les informations à protéger soient toujours situées dans des emplacements identiques de la mémoire dudit objet. REVENDICATIONS 1. Procédé d'authentification de données contenues dans un objet à mémoire, notamment dans une carte à puce, caractérisé en ce qu'il comprend les étapes suivantes : (a) lors de l'utilisation de l'objet en coopération avec un terminal de traitement, transmission par ledit terminal de traitement : iii. d'informations de localisation Lo, L1, ..., Ln représentatives d'au moins un emplacement en mémoire des données à authentifier, iv. d'une signature (dite signature présentée Sp) desdites données à authentifier élaborée par mise en oeuvre d'un algorithme A à clé privée Cs et clé publique Cp ; (b) calcul d'une signature (dite signature calculée Se) des données ILO, IL1, ..., ILn stockées dans le ou les emplacements de la mémoire identifiés par lesdites informations de localisation Lo, L1, ....Ln, par mise en oeuvre dudit algorithme A faisant intervenir ladite clé publique Cp, (c) comparaison de la signature présentée Sp et de la signature calculée Sc ; et (d) en cas de correspondance desdites signatures Sp et Sc, attestation de l'authenticité desdites données ILO, IL1, ..., ILn stockées dans la mémoire dans le ou les emplacements identifiés par lesdites informations de localisation Lo, L1, ..., Ln. 2. Procédé d'authentification selon la revendication précédente, caractérisé en ce que, en cas de non correspondance entre la signature présentée Sp et la signature calculée Sc, il comporte une étape (d') de rejet dudit objet à mémoire par ledit terminal de traitement. 3. Procédé d'authentification selon l'une des revendications précédentes, caractérisé en ce que lors de l'étape (a) de transmission, le terminal transmet en outre à l'objet à mémoire ledit algorithme A. 4. Procédé d'authentification selon l'une des revendications 1 à 2, dans lequel ledit algorithme A est mémorisé dans la mémoire dudit objet, caractérisé en ce que ledit terminal transmet audit objet, lors de l'étape (a) de transmission, un indicateur IA relatif audit algorithme A indiquant audit objet que ledit algorithme A doit être utilisé au cours de l'étape (b) de calcul. 5. Procédé d'authentification selon l'une des revendications précédentes, caractérisé en ce que lors de l'étape (a) de transmission, le terminal transmet en outre à l'objet à mémoire ladite clé publique Cp. 6. Procédé d'authentification selon l'une des revendications 1 à 4, dans lequel ladite clé publique Cp est mémorisée dans la mémoire dudit objet, caractérisé en ce que ledit terminal transmet audit objet, lors de l'étape (a) de transmission, un indicateur Ic relatif à ladite clé publique Cp indiquant audit objet que ladite clé publique Cp doit être utilisée au cours de l'étape (b) de calcul. 7. Procédé d'authentification selon l'une des revendications précédentes, dans lequel ledit terminal de traitement est relié à un serveur central disposant d'une image de la mémoire dudit objet, caractérisé en ce qu'il comporte une étape préliminaire de fourniture par ledit serveur audit terminal desdites informations de localisation Lo, L1, ..., Ln. 8. Procédé d'authentification selon la revendication précédente, caractérisé en ce que, au cours de ladite étape préliminaire de fourniture, le serveur transmet en outre au terminal ladite signature présentée Sp desdites données à authentifier. 9. Procédé d'authentification selon la revendication 7, caractérisé en ce que, suite à ladite étape préliminaire et préalablement à l'étape (a) de transmission, il comporte une étape de génération par ledit terminal de traitement de ladite signature présentée Sp. 10. Procédé d'authentification selon l'une des revendications précédentes, caractérisé en ce qu'on fait varier les informations de localisation qui sont transmises par le terminal lors de l'étape (a) de transmission.