FR 3000334 A1 20140627 FR 1203596 A 20121226 PROCEDE DE GENERATION D'UNE CLE DE SESSION A PARTIR D'UNE CLE SECRETE La présente invention concerne un procédé de génération d'une clé de session à partir d'une clé secrète. L'invention concerne également un système cryptographique adapté pour la mise en oeuvre du procédé. La présente invention s'inscrit dans le domaine de la cryptographie. La cryptographie permet de générer une clé de session à partir d'une clé secrète et d'information publique. La génération de la clé de session implique des calculs dont l'observation permet de déduire la clé secrète et des calculs ne le permettant pas. Les calculs permettant de déduire la clé secrète sont des calculs critiques en terme de sécurité tandis que les autres calculs sont susceptibles d'être délégués à une unité non sécurisée. Ainsi, pour un équipement de cryptographie comprenant une unité sécurisée et une unité non sécurisée, il est souhaitable de réduire au maximum les calculs de l'unité sécurisée tout en garantissant que l'interception des communications entre l'unité sécurisée et l'unité non sécurisée ne permette pas de déduire la clé secrète. Il est connu du document FR-A-2 877 453 un procédé de délégation sécurisée du calcul d'une application bilinéaire à un serveur de calcul. Mais, le procédé décrit dans ce document implique que l'unité sécurisée effectue des opérations d'inversion et d'exponentiation modulaire. Ces opérations sont coûteuses en temps de calcul. Le procédé est inefficace dans le cas où les capacités de calcul de l'unité sécurisée et de l'unité non-sécurisée sont équivalentes. Il existe donc un besoin pour un procédé de génération d'une clé de session à partir d'une clé secrète qui soit applicable même pour des unités sécurisées ayant une capacité de calcul équivalente à l'unité non-sécurisée. A cet effet, il est proposé un procédé de génération d'une clé de session à partir d'une clé secrète et d'un premier paramètre public par un système cryptographique, le système cryptographique comportant une unité de calcul, et une unité de cryptographie propre à déléguer des calculs à l'unité de calcul. Le procédé comporte les étapes de transmission de jetons obtenus à partir du premier paramètre public depuis l'unité de calcul vers l'unité de cryptographie et de calcul de la valeur de la fonction de Miller appliquée à la clé secrète à partir des jetons transmis par l'unité de cryptographie. Le procédé comprend aussi une étape de génération de la clé de session à partir de la valeur de la fonction de Miller calculée. Suivant des modes de réalisation particuliers, le procédé comprend une ou plusieurs des caractéristiques suivantes, prise(s) isolément ou suivant toutes les combinaisons techniquement possibles : - l'étape de génération de la clé de session comprend le calcul d'une exponentiation de la valeur de la fonction de Miller calculée. - le procédé comporte, en outre, une étape de choix d'une courbe elliptique sur un corps, de choix d'un deuxième paramètre public, de calcul de coefficients dépendant de la courbe elliptique et de la décomposition en base 2 du deuxième paramètre public, et de calcul d'un coefficient d'une droite verticale passant par un point dont la valeur est déduite du premier paramètre public. - lorsque le coefficient de la décomposition en base 2 du deuxième paramètre public, correspondant à la puissance 2' avec i entier, est nul, l'étape de calcul de coefficients dépendants de la courbe elliptique est une étape de calcul de coefficients représentatifs de la tangente à la courbe elliptique choisie passant par un premier point dont la valeur est déduite du premier paramètre public et l'étape de calcul du coefficient d'une droite verticale est une étape de calcul du coefficient de la droite verticale passant par un deuxième point dont la valeur est double de celle du premier point. - lorsque le coefficient de la décomposition en base 2 du deuxième paramètre public, correspondant à la puissance 2' avec i entier, est égal à 1, dans lequel le procédé comprend, en outre, les étapes de mise à jour d'un paramètre courant à la somme de la valeur du deuxième point avec la valeur du premier paramètre public, de calcul de coefficients de la droite passant par les points correspondants au premier paramètre public et au paramètre courant mis à jour, et de calcul du coefficient de la droite verticale passant par le point correspondant au paramètre courant mis à jour. - le procédé comporte une étape de détermination de la capacité de calcul disponible sur l'unité de cryptographie et l'unité de calcul, et de comparaison de la capacité de calcul disponible sur l'unité de cryptographie avec la capacité de calcul disponible de l'unité de calcul. - l'étape de génération de la clé de session à partir de la valeur de la fonction de Miller calculée est mise en oeuvre par une des deux unités selon le résultat de la comparaison. - l'étape de génération de la clé de session à partir de la valeur de la fonction de Miller calculée est mise en oeuvre par l'unité dont la capacité de calcul disponible est la plus grande.35 A cet effet, il est proposé un système cryptographique comportant une unité de calcul, et une unité de cryptographie propre à déléguer des calculs à l'unité de calcul. Le système cryptographique est adapté à mettre en oeuvre le procédé tel que décrit précédemment. D'autres caractéristiques et avantages de l'invention apparaîtront à la lecture de la description détaillée qui suit de modes de réalisation de l'invention, donnés à titre d'exemple uniquement et en référence aux dessins qui sont : - figure 1, un schéma de l'architecture d'un système cryptographique, - figure 2, un ordinogramme d'un exemple de mise en oeuvre d'un procédé selon l'invention. Le système cryptographique 10 représenté à la figure 1 comprend une unité de cryptographie 12, une unité de calcul 14, un bus 16 de communication et une unité externe 20 de mémorisation. L'unité de cryptographie 12 comporte une unité interne 22 de mémorisation et une unité de traitement 24. L'unité de traitement 24 est propre à effectuer des opérations sur une clé secrète. La clé secrète est notée Sk dans toute la suite de la description. L'unité de traitement 24 est donc propre à effectuer des opérations sur des données critiques en terme de sécurité. L'unité de traitement 24 présente une bonne capacité de résistance à la rétroingéniérie. La rétroingéniérie (traduction littérale de l'anglais « reverse engineering ») est également appelée ingénierie inversée ou ingénierie inverse. La rétroingéniérie est une activité permettant d'étudier un objet pour en déterminer le fonctionnement et les données internes. L'unité de traitement 24 est propre à mémoriser des données sur l'unité interne 22 de mémorisation et l'unité externe 20 de mémorisation. L'unité interne 22 de mémorisation est protégée des attaques extérieures. De préférence, l'unité interne 22 de mémorisation est seulement utilisée pour mémoriser des données sensibles. L'unité externe 20 de mémorisation n'est pas protégée des attaques extérieures. L'unité externe 20 de mémorisation est propre à mémoriser uniquement des données non sensibles. Selon l'exemple de la figure 1, l'unité de cryptographie 12 est une carte à puce. En variante, l'unité de cryptographie 12 est une carte SD, un mobile ou un processeur de sécurité. L'unité de calcul 14 est propre à effectuer des opérations sur des éléments non sensibles. L'unité de calcul 14 a une capacité de calcul disponible équivalente à la capacité de calcul de l'unité de cryptographie 12. L'unité de calcul 14 présente un niveau de sécurité inférieure à l'unité de cryptographie 12. Notamment, l'unité de calcul 14 présente une faible capacité de résistance à la rétroingéniérie. L'unité de calcul 14 est un processeur de smartphone. En variante, l'unité de calcul 14 est un serveur ou un processeur générique. Le bus de communication 16 est propre à permettre des échanges de données entre l'unité de calcul 14 et l'unité de cryptographie 12. Le bus de communication 16 n'est pas sécurisé. Selon une variante, les échanges de données entre l'unité de calcul 14 et l'unité de cryptographie 12 sont chiffrés, ce qui impose leur déchiffrement pour le cas où une personne intercepte les données échangées. Le fonctionnement du système cryptographique 10 est maintenant décrit en référence à un procédé de génération d'une clé de session à partir de la clé secrète Sk et d'un premier paramètre public X, ainsi que d'un deuxième paramètre public R, le procédé de génération étant illustré par l'ordinogramme de la figure 2. Il est supposé qu'une courbe elliptique CE a été préalablement choisie pour effectuer les calculs qui suivent. Notamment, la courbe elliptique choisie est appropriée au calcul d'application bilinéaire (ou couplage) noté E dans ce qui suit. Une courbe elliptique CE est définie sur un corps K et est une courbe algébrique non singulière de degré 3 comprenant le point à l'infini et l'ensemble des couples (X,Y) appartenant à K2 qui satisfont l'équation de Weierstrass : Y2 + aiXY + a3Y = X3+ a2X2 a4X a6 Où al, a6 appartiennent à K. Pour la suite, il est supposé que la clé secrète Sk et le premier paramètre public X sont deux points de la courbe elliptique CE. Le deuxième paramètre public R est un entier naturel strictement positif propre à la courbe elliptique CE. Par exemple, un choix simple est de prendre le deuxième paramètre public R égal au nombre de points de la courbe elliptique CE. Le nombre de points de la courbe elliptique CE correspond à l'ordre de la courbe. Le procédé de génération comporte une étape 100 de génération de jetons. L'étape 100 de génération de jetons est mise en oeuvre par l'unité de calcul 14. Le but de l'étape 100 de génération est de calculer le produit R*X en tant que X+X+...+X (R fois). Pour calculer ce produit R*X, il est utilisé une décomposition binaire (en base 2) du deuxième paramètre R telle que : R = Ro + R1,2 + R2,22 +...+ Re2b Où Ro, R1, R2, ..., Rb-1 et Rb sont les bits du deuxième paramètre R. De ce fait, il est possible d'écrire R sous la forme du vecteur (Rb, Rb_i, ...,R0). L'étape 100 de génération de jetons comprend une étape 102 de fixation de la valeur d'un premier paramètre courant R, en fonction de la valeur courante d'une variable i et de la valeur du ième bit du deuxième paramètre public R. Initialement, la variable est fixée à b. Ceci revient à écrire qu'initialement, le premier paramètre courant R, est fixé au bit de poids fort, ce qui s'écrit : R, = Rb. L'étape 100 de génération de jetons comprend, en outre, l'accumulation des calculs intermédiaires dans un deuxième paramètre courant X,. Le deuxième paramètre courant Xi sert à accumuler les valeurs intermédiaires nécessaires au calcul de R*X. Initialement, le deuxième paramètre courant X, est fixé comme étant égal au premier paramètre public X. L'étape 100 de génération de jetons comprend une étape 104 de calcul de coefficients. L'étape 104 de calcul de coefficients dépend de la valeur du premier paramètre courant R. Lorsque le premier paramètre courant R, vaut 0, l'étape 104 de calcul de coefficients comprend le calcul de coefficients a,, bi et c, représentatifs de la tangente à la courbe elliptique CE passant par le point dont la valeur est égale au deuxième paramètre courant X. Les trois coefficients a' bi et c, définissent une droite de la façon suivante : a,*x + b,*y + c, = 0, x et y étant les coordonnées d'un point de la courbe. La valeur du deuxième paramètre courant X, est ensuite mise à jour en la rendant égale à la valeur obtenue en calculant (X,+X,). L'étape 104 de calcul de coefficients comporte, aussi, le calcul d'une droite verticale v, passant par le point dont la valeur est égale au deuxième paramètre courant X, (mis à jour). Lorsque le premier paramètre courant Ri vaut 1, l'étape 104 de calcul de coefficients comprend dans un premier temps le calcul des coefficients a' b' c, et v, décrit au paragraphe précédent pour le cas où le premier paramètre courant R, vaut 0. L'étape 104 de calcul de coefficients comporte alors dans un deuxième temps une nouvelle mise à jour du du paramètre courant X,. Le paramètre courant X, est mis à jour en le rendant égal à la valeur obtenue pour (X+X,). L'étape 104 de calcul de coefficients comprend alors le calcul de coefficients a'1, b', et c', représentatifs de la droite passant par les deux points dont les valeurs sont celle du premier paramètre public X et celle du deuxième paramètre courant X, mis à jour. Les trois coefficients a'' b', et c', définissent une droite de la façon suivante : a',*x + b',*y + c', = 0, x et y étant les coordonnées d'un point de la courbe. L'étape 104 de calcul de coefficients comporte aussi le calcul d'une droite verticale y', passant par le point dont la valeur est le deuxième paramètre courant X, (mis à jour). A l'étape 106, la variable i est décrémentée de 1. Tant que la variable i est différente de 0, les étapes 102 de fixation de la valeur du premier paramètre courant R, et 104 de calcul de coefficients sont répétés. Cela est montré sur la figure 2 par la flèche 107. Les jetons sont les ensembles des coefficients a' b1 et o ainsi que v, et éventuellement, a'' b', et c', ainsi que v', calculés aux différentes itérations de l'étape 104. Le procédé de génération comporte également une étape 108 de calcul de la clé de session. L'étape 108 de calcul de la clé de session comprend une étape 110 d'envoi à l'unité de cryptographie 12 des coefficients a,, b, et c, ainsi que v, et éventuellement, a'' b', et c', ainsi que y', calculés. L'étape 110 d'envoi des coefficients a,, b, et c, ainsi que y, et éventuellement, a'' b', et c', ainsi que v', calculés est mise en oeuvre par l'unité de calcul 14 via le bus 16. L'étape 108 de calcul de la clé de session comprend une étape 112 de réception par l'unité de cryptographie 12 des coefficients a,, ID, et c, ainsi que y, et éventuellement, a',, b', et c', ainsi que y', calculés. L'étape 108 de calcul de la clé de session comprend aussi une étape 114 de calcul de la valeur f(Sk) de la fonction de Miller f appliquée à la clé secrète Sk à partir des coefficients a' b, et c, ainsi que y, et éventuellement, a'' b', et c', ainsi que y', calculés. Une façon classique de calculer cette fonction de Miller f est la suivante. On commence en initialisant f à 1, l'élément neutre de K. Les trois coefficients a' b, et c, définissant une droite de la façon suivante : a,*x + b,*y + c = 0, les indéterminés x et y sont remplacés par respectivement l'abscisse notée xSk du point correspondant à la clé secrète Sk et l'ordonnée ySk du point correspondant à la clé secrète Sk. Les calculs sont effectués dans le corps K. Une première valeur est alors obtenue, cette première valeur étant égale à a,*xSk + b,*ySk + c,. De même, le coefficient v, définit une droite verticale x - vi = 0 dans laquelle l'indéterminée x est remplacée par la valeur de l'abscisse de Sk. Une deuxième valeur est alors obtenue, cette deuxième valeur étant égale à xSk - v,. En divisant la première valeur (a,*xSk + b,*ySk + ci) par la deuxième valeur (xSk - v,) une valeur courante f, est obtenue. Si le premier paramètre courant R, vaut 0, le calcul effectué s'écrit ainsi mathématiquement comme : fi = f2 * (exSk + b,*ySk + c,) / (xSk - v,) et ce sera la nouvelle valeur courante de f. Si le premier paramètre courant R, vaut 1, le calcul effectué s'écrit ainsi mathématiquement comme : fi = f2* (a,*xSk + b,*ySk + c,) / (xSk - v,)* (a',*xSk + b*ySk + c',) / (xSk - v',) et ce sera la nouvelle valeur courante de f. Il est très souvent possible de bien choisir la courbe elliptique CE de sorte que les calculs de verticales (faisant intervenir v,) soient inutiles. La valeur de la fonction de Miller appliquée à la clé secrète Sk s'obtient à l'aide de multiplications des coefficients a' b, et c, calculés. L'étape 108 de calcul de la clé de session comprend également une étape 116 d'envoi vers l'unité de calcul 14 de la valeur f(Sk) de la fonction de Miller f appliquée à la clé secrète Sk. L'étape 116 d'envoi de la valeur f(Sk) de la fonction de Miller f appliquée à la clé secrète Sk est mise en oeuvre par l'unité de cryptographie 12 via le bus 16. L'étape 108 de calcul de la clé de session comprend également une étape 118 de réception de la valeur f(Sk) de la fonction de Miller f appliquée à la clé secrète Sk. L'étape 108 de calcul de la clé de session comprend également une étape 120 de calcul de l'exponentiation à partir de la valeur f(Sk) de la fonction de Miller f appliquée à la clé secrète Sk. La valeur de l'exponentiation notée E correspond à la clé de session. Le procédé de génération proposé permet un meilleur équilibre de la répartition des calculs entre l'unité de cryptographie 12 et l'unité de calcul 14. Pour des capacités de calcul de l'unité de cryptographie 12 et de l'unité de calcul 14 équivalentes, le temps de calcul est divisé par deux environ. Dans le procédé proposé, l'unité de cryptographie 12 n'a pas à effectuer de calculs sur la courbe elliptique CE. Le procédé de génération permet de réduire la complexité des calculs à effectuer par l'unité de cryptographie 12. La mise en oeuvre du procédé de génération est plus rapide que dans l'état de la technique puisque les calculs effectués par l'unité de cryptographie 12 sont plus simples. En variante, l'unité de cryptographie 12 effectue le calcul de l'exponentiation de l'étape 120 de calcul et non l'unité de calcul 14. Selon une variante plus élaborée, il est déterminé la charge de calcul de l'unité de cryptographie 12 et de l'unité de calcul 14 au moment d'effectuer le calcul de l'exponentiation de l'étape 120 de calcul. L'unité 12, 14 qui effectue le calcul est celle qui a la capacité de calcul disponible la plus importante. Dans cette variante, la charge de calcul des unités de cryptographie 12 et de calcul 14 est prise en compte, ce qui permet d'obtenir une mise en oeuvre plus rapide du procédé. Selon encore une autre variante, le premier paramètre public X n'est pas prédictible. Dans ce cas, l'étape 100 de génération et l'étape 108 de calcul de la clé de session sont fusionnées. Le premier paramètre public X est un paramètre public déterminé par le type de protocole utilisé. Le premier paramètre public X peut être une valeur ayant une durée de vie assez longue, c'est-à-dire qu'elle sera réutilisée plusieurs fois. Dans ce cas, les valeurs a' b,, c, et v, qui en dépendent uniquement peuvent être stockés en mémoire (non sécurisée) la première fois et simplement lus depuis la mémoire les fois suivantes. Le premier paramètre public X peut dans un autre contexte être une valeur à usage unique et connue au dernier moment, dans ce cas les coefficients a' b' c, ainsi que y, et a'' b',, c', ainsi que v', sont calculés « à la volée ». Enfin, selon une variante, au lieu d'utiliser uniquement une décomposition en puissance de 2 pour effectuer l'intégralité des calculs de l'étape 104 de calcul de coefficients, une autre décomposition est utilisable pour le calcul de la droite verticale pourvu que la décomposition en puissance de 2 soit utilisée pour le calcul des coefficients a' b,, c, ainsi que a',, b'i, REVENDICATIONS1.- Procédé de génération d'une clé de session à partir d'une clé secrète (Sk) et d'un premier paramètre public (X) par un système cryptographique (10), le système cryptographique (10) comportant : - une unité de calcul (14), et - une unité de cryptographie (12) propre à déléguer des calculs à l'unité de calcul (14), le procédé étant caractérisé en ce que le procédé comporte les étapes de : transmission de jetons (a' b, c1, y a'1, b'' c'1, v'1) obtenus à partir du premier paramètre public (X) depuis l'unité de calcul (14) vers l'unité de cryptographie (12), calcul de la valeur de la fonction de Miller (f) appliquée à la clé secrète (Sk) à partir des jetons (a,, b' c' y a'1, b'' c'' \Pi) transmis par l'unité de cryptographie (12), génération de la clé de session à partir de la valeur de la fonction de Miller calculée. 2.- Procédé selon la revendication 1, dans lequel l'étape de génération de la clé de session comprend le calcul d'une exponentiation de la valeur de la fonction de Miller calculée. 3.- Procédé selon la revendication 1 ou 2, dans lequel le procédé comporte, en outre, une étape de : - choix d'une courbe elliptique (CE) sur un corps (K), - choix d'un deuxième paramètre public (R), - calcul de coefficients (ah b' C ah bi, ci) dépendants de la courbe elliptique (CE) et de la décomposition en base 2 du deuxième paramètre public (R), et - calcul d'un coefficient (v1) d'une droite verticale passant par un point dont la valeur est déduite du premier paramètre public (X). 4.- Procédé selon la revendication 3, dans lequel, lorsque le coefficient de la décomposition en base 2 du deuxième paramètre public (R), correspondant à la puissance 2' avec i entier, est nul, l'étape de calcul de coefficients dépendants de la courbe elliptique est une étape de calcul de coefficients (ai, bi, ci) représentatifs de la tangente à la courbe elliptique (CE) choisie passant par un premier point dont la valeur est déduite du premier paramètre public (X) et l'étape de calcul du coefficient (vi) d'une droite verticale est une étape de calcul du coefficient (vi) de la droite verticale passant par un deuxième point dont la valeur est double de celle du premier point. 5.- Procédé selon le revendication 4, dans lequel, lorsque le coefficient de la décomposition en base 2 du deuxième paramètre public (R), correspondant à la puissance 2' avec i entier, est égal à 1, dans lequel le procédé comprend, en outre, les étapes de : - mise à jour d'un paramètre courant à la somme de la valeur du deuxième point avec la valeur du premier paramètre public (X), - calcul de coefficients (a',, b'1, c',) de la droite passant par les points correspondants au premier paramètre public (X) et au paramètre courant mis à jour, et - calcul du coefficient (vi) de la droite verticale passant par le point correspondant au paramètre courant mis à jour. 6.- Procédé selon l'une quelconque des revendications 1 à 5, dans lequel le procédé comporte une étape de : - détermination de la capacité de calcul disponible sur l'unité de cryptographie (12) et l'unité de calcul (14), - comparaison de la capacité de calcul disponible sur l'unité de cryptographie (12) avec la capacité de calcul disponible de l'unité de calcul (14), l'étape de génération de la clé de session à partir de la valeur de la fonction de Miller calculée étant mise en oeuvre par une des deux unités (12, 14) selon le résultat de la comparaison. 7.- Procédé selon la revendication 6, dans lequel l'étape de génération de la clé de session à partir de la valeur de la fonction de Miller calculée est mise en oeuvre par l'unité dont la capacité de calcul disponible est la plus grande. 8.- Système cryptographique (10) comportant : - une unité de calcul (14), et - une unité de cryptographie (12) propre à déléguer des calculs à l'unité de calcul (14), le système cryptographique (10) étant adapté à mettre en oeuvre le procédé selon l'une quelconque des revendications 1 à 7.30