Brevet FR2877453A1 — publié le 20060505

La présente invention concerne un procédé de délégation sécurisée de calcul d'une valeur f(X,Y) d'une application bilinéaire auprès d'un serveur de calcul. Elle concerne également un procédé de vérification sécurisée d'une égalité d'une valeur f(X,Y) d'une application bilinéaire à une valeur donnée et un procédé de vérification sécurisée d'une égalité entre deux valeurs f(X, Y) et f(Z,T) d'une application bilinéaire. D'une manière très générale, l'invention se rapporte au domaine de la cryptographie et, plus précisément, aux procédés cryptographiques de protection contre la fraude d'un support tel qu'une puce électronique dans des io transactions entre une puce et une application bancaire, ou d'une puce électronique d'une carte SIM d'un téléphone portable. L'invention trouve une application particulièrement avantageuse dans l'utilisation de nouveaux procédés cryptographiques jugés à l'heure actuelle trop coûteux en temps de calcul, tels que les procédés impliquant des fonctions bilinéaires. Actuellement, les cartes à puce sont susceptibles de subir différents types de fraude. Un premier type de fraude consiste à dupliquer la carte sans autorisation, le terme de clonage étant souvent utilisé pour caractériser cette opération. Un deuxième type de fraude consiste à modifier les données attachées à une carte, en particulier le montant du crédit inscrit dans la mémoire de la carte. Pour lutter contre ces fraudes, il est fait appel à la cryptographie, d'une part, pour assurer l'authentification de la carte au moyen d'un algorithme d'authentification et/ou l'authentification des données au moyen d'une signature numérique, et, d'autre part, pour assurer le cas échéant la confidentialité des données au moyen d'un chiffrement. La cryptographie met en jeu deux entités qui sont, dans le cas de l'authentification, une entité vérificatrice et un objet à authentifier. Elle peut être soit symétrique, soit asymétrique. Dans le cas de la cryptographie symétrique, appelée aussi à clé secrète, les deux entités partagent exactement la même information, en particulier ladite clé secrète. Lorsqu'il s'agit d'une cryptographie asymétrique, ou à clé publique, une des entités, l'entité à authentifier, possède une paire de clés dont l'une est privée et l'autre est publique; il n'y a donc pas de clé secrète partagée. Io Les premiers mécanismes d'authentification développés en cryptographie symétrique consistent à calculer une fois pour toutes une valeur d'authentification, différente pour chaque carte, à la stocker dans la mémoire de la carte, à la lire à chaque transaction et à la vérifier en interrogeant une application du réseau supportant la transaction où les valeurs d'authentification déjà attribuées sont soit stockées, soit recalculées. Cependant, ces mécanismes assurent une protection insuffisante parce que la valeur d'authentification peut être espionnée, reproduite et rejouée frauduleusement dans la mesure où elle est toujours la même pour une carte donnée, permettant ainsi de réaliser un clone de la carte. Pour lutter contre les clones, les mécanismes d'authentification passifs de cartes sont remplacés par des mécanismes d'authentification actifs qui peuvent en outre assurer l'intégrité des données. Le principe général des mécanismes d'authentification actifs symétriques est le suivant: lors d'une authentification, la puce électronique et l'application calculent une valeur d'authentification qui est le résultat d'une fonction appliquée à une liste d'arguments déterminée à chaque authentification. Cette liste d'arguments peut comprendre un aléa défini par l'application à chaque authentification, une donnée contenue dans la puce électronique, et une clé secrète connue de la puce électronique et de l'application. Lorsque la valeur d'authentification calculée par la puce électronique est identique à la valeur d'authentification calculée par l'application, la puce électronique est jugée authentique et la transaction entre la puce et l'application est autorisée. Cependant, les mécanismes à clé secrète imposent que les dispositifs de vérification en charge de l'authentification de la puce, tels que ceux présents dans un réseau de téléphonie publique, un terminal de paiement électronique ou encore un portillon de transport en commun, connaissent la clé secrète détenue par ladite puce. Il en découle un inconvénient majeur, à savoir que, si l'on souhaite que ledit dispositif puisse authentifier n'importe quelle puce émise en relation avec l'application, il doit, soit stocker les clés secrètes de toutes les puces, soit stocker une clé de base, appelée aussi clé-mère ou clé-maître, permettant de retrouver la clé secrète de n'importe quelle io puce. Dans les deux cas, chacun de ces dispositifs stocke suffisamment d'informations pour pouvoir retrouver les clés secrètes de toutes les puces émises, et stocke donc suffisamment d'informations pour pouvoir fabriquer des clones d'une quelconque d'entre elles. II s'ensuit qu'une intrusion réussie contre n'importe lequel des dispositifs de vérification anéantirait la sécurité de is l'application dans son ensemble. Ainsi, des solutions à base de cryptographie à clé publique peuvent être préférées aux mécanismes à clé secrète. Le principe de fonctionnement des mécanismes d'authentification à clés publiques est alors le suivant: la puce cherchant à s'authentifier calcule des valeurs dépendant de sa clé privée, associée à sa clé publique, et d'éventuels paramètres aléatoires. L'application vérifie ensuite la cohérence des valeurs calculées par la puce sans nécessiter la connaissance de la clé privée de la puce. Seule l'utilisation de la clé publique de la puce est nécessaire, ainsi que d'autres paramètres non secrets. Les solutions les plus connues permettant de réaliser de tels mécanismes sont généralement basées sur des problèmes mathématiques difficiles à résoudre, tels que la factorisation ou le logarithme discret. Par ailleurs, ces problèmes engendrent dans leur réalisation des calculs d'exponentiations modulaires, c'est à dire des calculs du type xe mod n où mod correspond à la fonction mathématique de réduction modulaire. Ce type de calculs est a priori l'opération la plus complexe pouvant être réalisée en un temps raisonnable, sans hypothèse de puissance de calcul. Depuis quelques années, les applications bilinéaires, bien connues des mathématiciens, ont fait leur apparition dans le domaine de la cryptographie. Considérons par exemple une application f définie sur l'ensemble G1XG2 dans G, où G1, G2 et G sont des groupes cycliques. g1 et g2 étant des générateurs respectivement de G1 et G2, l'application f est dite bilinéaire de G1XG2 dans G si: f(g1a,g2b) = [f(g1,g2)]ab io Toutefois, le problème actuel lié aux applications bilinéaires réside dans le fait que leur évaluation engendre des calculs très importants en volume et bien plus complexes que ceux intervenant dans le calcul d'une exponentiation modulaire par exemple. D'où l'impossibilité de réaliser aujourd'hui de tels calculs dans le cadre des applications envisagées. Aussi, le problème technique à résoudre par l'objet de la présente invention est de proposer des moyens qui permettraient une intégration efficace de procédés cryptographiques basés sur l'utilisation de fonctions bilinéaires, malgré la difficulté liée à leur complexité de calcul et tout en assurant un degré de sécurité maximum compatible avec les utilisations qui en sont faites. La solution au problème technique posé consiste, selon la présente invention, en un procédé de délégation sécurisée de calcul d'une valeur f(X,Y) d'une application bilinéaire auprès d'un serveur de calcul, remarquable en ce que ledit procédé comprend les étapes consistant à : choisir deux paramètres secrets a et b, - calculer les nombres Xa et Yb, fournir au serveur de calcul les deux nombres Xa et Yb, - effectuer par ledit serveur le calcul de f(Xa,Yb), - recevoir du serveur de calcul la valeur de f(Xa,Yb), - extraire la racine abième de f(Xa,Yb). Ainsi, l'invention prévoit qu'une entité participant à un procédé cryptographique d'authentification par exemple, impliquant le calcul d'une fonction bilinéaire f(X,Y), communique avec un serveur de calcul possédant l'unique propriété d'être doté d'une forte puissance de calcul, sans qu'il soit nécessaire de supposer aucune autre propriété concernant ce serveur, notamment son niveau de sécurisation. En effet, au-delà de l'avantage de permettre l'utilisation des fonctions bilinéaires en cryptographie, le procédé conforme à l'invention permet également de sécuriser les données échangées et de renforcer la confiance dans les résultats obtenus, ceci par la mise en oeuvre de paramètres secrets connus de la seule entité cliente du serveur de calcul. Il est important de signaler que, d'une manière générale, ladite entité io ayant recours au serveur de calcul peut être indifféremment l'entité à authentifier ou l'entité vérificatrice. L'invention a donc pour effet de déléguer au serveur la majorité des calculs impliquant des fonctions bilinéaires, et d'assurer la sécurité des résultats retournés par ledit serveur dans le sens où si un individu malveillant is cherche à usurper l'identité d'une personne en utilisant sa clé publique sans connaissance de la clé privée associée, et en ayant un contrôle total sur le serveur de calcul, les chances de succès d'un tel individu resteraient très faibles. Le procédé de délégation selon l'invention s'applique avantageusement 20 à deux situations particulières. Une première situation concerne un procédé de vérification d'une égalité d'une valeur f(X,Y) d'une application bilinéaire à une valeur donnée u par délégation sécurisée auprès d'un serveur de calcul, remarquable, selon l'invention, en ce que ledit procédé comprend les étapes consistant à : choisir deux paramètres secrets a et b, - calculer les nombres Xa et Yb, fournir au serveur de calcul les deux nombres Xa et Yb, - effectuer par ledit serveur le calcul de f(Xa,Yb), - recevoir du serveur de calcul la valeur de f(Xa,Yb), - comparer la valeur de f(Xa,Yb)b au nombre up, les nombres p et q vérifiant l'égalité abp=q. On peut illustrer ce procédé de vérification d'une égalité d'une valeur d'une application bilinéaire à une valeur donnée par le mécanisme de signature suivant. Le signataire d'un message m dispose d'une clé publique définie par exemple par trois nombres: gi C Gl, g2 C G2 et v=g2x, x étant la clé privée du signataire. L'entité vérificatrice destinataire du message connaît les trois nombres composant la clé publique et ignore la clé privée. Le signataire du message tire au hasard un nombre r et calcule le nombre Q donné par: io Q = g1exp(m+rx)-' Le signataire envoie alors au destinataire du message le couple de nombres {Q,r}. Afin de s'assurer de l'authenticité du message, à savoir l'intégrité de is son contenu et l'identité de son expéditeur, le destinataire vérifie l'égalité suivante: f(Q,g2mvr) = f(g,.g2) f étant une fonction bilinéaire. Cette égalité résulte en effet de l'utilisation de la définition des arguments du membre de gauche et de la propriété des fonctions bilinéaires rappelée plus haut. Les arguments du membre de droite étant connus à l'avance du destinataire, celui-ci peut faire effectuer le calcul correspondant de la fonction bilinéaire une fois pour toutes par le serveur de calcul. f(g1,g2) est donc égal à un nombre donné connu u. Le mécanisme de vérification implique donc le calcul par le serveur de la quantité f(u,g2mvr). Pour cela, l'entité vérificatrice, ici, le destinataire du message, choisit deux nombres a et b, calcule Qa et g2bmvbr et les transmet au serveur qui retourne la valeur f(Qa,g2bmvbr) qui par définition vaut f(U,g;,mvr)ab L'entité vérificatrice n'a donc plus qu'à vérifier que le nombre qui lui est retourné par le serveur de calcul est bien égal à uab, ou toute autre forme équivalente consistant à comparer [f(Qa,g2bmvbr)]b à up avec abp=q. On constate que dans ce cas trois valeurs doivent être calculées par l'entité vérificatrice, telles que: Qa g2bmvbr et uab Selon l'équation de vérification considérée, l'un des paramètres a ou b pourra être choisi égal à 1, de sorte à réduire le nombre de calculs à effectuer. Une deuxième situation d'application du procédé de délégation de calcul conforme à l'invention concerne un procédé de vérification d'une égalité entre deux valeurs f(X,Y) et f(Z,T) d'une application bilinéaire par délégation sécurisée auprès d'un serveur de calcul, remarquable, selon l'invention, en ce que ledit procédé comprend les étapes consistant à : io - choisir quatre paramètres secrets a, b, c et d, - calculer les nombres Xa, Yb, Zc et Td, - fournir au serveur de calcul les quatre nombres Xa, Yb, Zc et Td, - effectuer par ledit serveur le calcul de f(Xa,Yb) et de f(Zc,Td), - recevoir du serveur de calcul les valeurs de f(Xa,Yb) et f(Zc,Td), - comparer les valeurs de [f(Xa,Yb)]P et [f(Zc,Td)]Q, les nombres p et q vérifiant l'égalité abp=cdq. Le mécanisme de signature suivant donne un exemple d'illustration de ce procédé de vérification sécurisée d'une égalité entre deux valeurs d'une application bilinéaire. Dans cet exemple, on supposera pour simplifier l'écriture que tous les arguments des fonctions bilinéaires considérés appartiennent au même groupe cyclique G. La clé publique du signataire du message m comprend un nombre g C G et un nombre v=gx qui appartient également au groupe G, x étant la clé privée du signataire. Le signataire dispose d'une fonction de hachage h qui, au mesF.age m associe un élément du groupe G, noté h(m), cette fonction de hachage étant partagée avec le destinataire chargé d'effectuer l'authentification du message m. Le signataire envoie alors au destinataire le message m ainsi que la signature Q=h(m)x. Le destinataire pour authentifier le message vérifie l'égalité : f(Q,g) = f(h(m),v) Comme précédemment, cette égalité résulte de la définition des arguments et de la propriété des fonctions bilinéaires. Le calcul de chaque membre de l'égalité précédente est délégué par l'entité vérificatrice auprès du serveur de calcul de la façon suivante. S'agissant du membre de gauche, l'entité vérificatrice choisit deux paramètres secrets a et b, calcule Qa et gb et les envoie au serveur qui retourne f(Ua,gb)=[f(a,g)]ab De même, pour le membre de droite, l'entité vérificatrice choisit deux lo autres paramètres c et d, calcule h(m)c et vd et envoie ces valeurs au serveur qui retourne f(h(m)c,vd)=[f(h(m),v)] cd L'entité vérificatrice doit alors vérifier que: [f(ua,gb)]cd = [f( h(m)c,vd)]ab ou, plus généralement, la relation [f(Qa,gb)]p = [f(h(m)c,vd)]Q avec abp=cdq Dans ce cas, l'entité vérificatrice doit calculer six valeurs, à savoir Qa gb, h(m)c et vd, ainsi que [f(Qa gb)]cd et [f(h(m) vd)]ab Là aussi, certains paramètres secrets parmi a, b, c et d pourront être choisis égaux à 1. L'invention concerne également un support mémorisant un programme 25 d'ordinateur pour la mise en oeuvre du procédé selon l'invention. De même, l'invention s'applique avantageusement à la protection contre la fraude dudit support, et plus spécialement à la sécurisation des transactions entre une puce électronique et une application bancaire, ainsi qu'à la sécurisation de la puce électronique d'une carte SIM d'un téléphone portable. Dans ce dernier cas, on peut prévoir que ledit support est intégré au téléphone portable. REVENDICATIONS 1. Procédé de délégation de calcul sécurisée par une entité participant à un mécanisme impliquant le calcul par ladite entité d'une valeur f(X,Y) d'une application bilinéaire, caractérisé en ce que ledit procédé comprend les étapes consistant à : pour ladite entité, - choisir deux paramètres secrets a et b, - calculer les nombres Xa et Yb, - fournir à un serveur de calcul les deux nombres Xa et Yb, pour ledit serveur de calcul, effectuer le calcul de f(Xa,Yb), - fournir à ladite entité la valeur de f(Xa,Yb), et, pour ladite entité, - extraire la racine ab'ème de f(Xa,Yb). 2. Procédé de vérification par une entité participant à un mécanisme impliquant la vérification par ladite entité de l'égalité d'une valeur f(X,Y) d'une application bilinéaire à une valeur donnée u, caractérisé en ce que ledit procédé comprend les étapes consistant à : pour ladite entité, - choisir deux paramètres secrets a et b, - calculer les nombres Xa et Yb, - fournir à un serveur de calcul les deux nombres Xa et Yb, pour ledit serveur de calcul, - effectuer le calcul de f(Xa,Yb), - fournir à ladite entité la valeur de f(Xa,Yb), et, pour ladite entité, - comparer la valeur de f(Xa,Yb)b au nombre uq, les nombres p et q vérifiant l'égalité abp=q. 3. Procédé de vérification par une entité participant à un mécanisme impliquant la vérification par ladite entité de l'égalité entre deux valeurs f(X,Y) et f(Z,T) d'une application bilinéaire, caractérisé en ce que ledit procédé comprend les étapes consistant à : pour ladite entité, 2877453 io - choisir quatre paramètres secrets a, b, c et d, - calculer les nombres Xa, Yb, Zc et Td, - fournir à un serveur de calcul les quatre nombres Xa, Yb, Zc et Td, pour ledit serveur de calcul, - effectuer le calcul de f(Xa,Yb) et de f(Z ,Td), - fournir à ladite entité les valeurs de f(Xa,Yb) et f(Z ,Td), et, pour ladite entité, - comparer les valeurs de [f(Xa,Yb)]P et [f(Zc,Td)]p, les nombres p et q vérifiant l'égalité abp=cdq. 4. Procédé selon l'une quelconque des revendications 1 à 3, caractérisé en ce qu'au moins un des paramètres secrets est égal à 1. 5. Support mémorisant un programme d'ordinateur pour la mise en oeuvre du procédé selon l'une quelconque des revendications 1 à 4. 6. Application du procédé selon l'une quelconque des revendications 1 à 4 à la protection contre la fraude d'un support selon la revendication 5. 7. Application selon la revendication 6 à la sécurisation des transactions entre une puce électronique et une application bancaire. 8. Application selon la revendication 6 à la sécurisation de la puce électronique d'une carte SIM d'un téléphone portable. 9. Application selon la revendication 8 dans laquelle ledit support est intégré au téléphone portable.