Brevet FR2897963A1 — publié le 20070831

PROCÉDÉ POUR LES CONJECTURES DE QUOTIENT RAPIDE ET UNE MANIPULATION DE CONGRUENCES La présente invention concerne des procédés ou des agencements pour traiter des données numériques par des ordinateurs électriques et des systèmes de traitement numérique, et en particulier concerne des procédés de traitement et de calcul arithmétique dirigés vers des opérations de champ fini ou de congruence, comprenant des opérations de division d'entiers spécialement sur des polynômes avec des coefficients binaires. Dans les systèmes cryptographiques modernes, tels que le chiffre de bloc symétrique connu comme Rinjdael (adopté par l'Institut national des Etats-Unis des normes et de la technologie (U.S. National Institut of Standards and Technology) en tant que sa norme de chiffrement avancé ou AES (Advanced Encryption Standard)), des blocs de données (chaînes de bits) sont sujets à de nombreuses opérations de substitution et de permutation, qui, à un niveau plus profond, impliquent typiquement des décalages d'octets, des additions OU exclusif, et des opérations de congruence sur les polynômes (représentés par des chaînes de bits). Ainsi, dans l'AES, une arithmétique de champ fini sur des polynômes en GF(28) est effectuée en utilisant g(x) = x8 + x4 + x3 + x + 1 et h(x) = x8 + 1 comme modules. Des procédés pour calculer rapidement des quotients et des restes de polynômes sont souhaités pour une opération efficace de ces systèmes cryptographiques. Le brevet U.S. 6 523 053 de Lee et al. décrit un procédé et un appareil pour effectuer une division de polynômes de champ fini. Le long polynôme est divisé en segments ou groupes, et le quotient partiel et le reste sont calculés en parallèle pour chaque groupe, puis combiné. Cette technique est utilisée pour des grands polynômes (de degré élevé). Les brevets U.S. n 5 615 220 de Pharris et 5 185 711 de Hattori effectuent une division de champ fini en utilisant l'algorithme d'Euclide, qui est une technique qui implique de multiples itérations des divisions. La technique est utile pour des divisions impliquant les grands polynômes. La présente invention est un procédé qui effectue des calculs de quotients rapides sur des polynômes pour des opérations de congruence efficaces où le degré du polynôme à réduire est non supérieur au degré du module de polynôme plus la distance entre les deux degrés les plus élevés des coefficients du module moins 1. Ainsi, par exemple, lorsque le module est x8 + x4 + x3 + x + 1, avec un degré de 8 et une distance de 4 entre les coefficients des deux degrés les plus élevés, le calcul de quotient peut être rapidement calculé pour des polynômes allant jusqu'à et comprenant un degré de 11. En particulier, dans ce cas spécial, les degrés inférieurs du module deviennent non pertinents, et le quotient est simplement une division du polynôme par le terme de plus haut degré du module. Le quotient aura un degré non supérieur à la distance notée ci-dessus entre les deux plus hauts coefficients de degré du module moins 1. Pour des champs finis binaires GF(2 ), ce procédé est facilement mis en oeuvre dans un matériel de traitement en chargeant la chaîne de bits équivalente du polynôme à réduire puis en effectuant un décalage de bits vers la droite de la chaîne par un nombre de bits égal au degré du module pour obtenir le quotient. Pour les champs premiers GF(pk), p > 2, les mêmes principes basiques s'appliquent, mais des ensembles de bits seront manipulés, tels qu'en exécutant un programme de micrologiciel ou de logiciel équivalent dans un processeur de données ou un ordinateur. Du fait que la recherche du quotient est la partie la plus gourmande en termes de calcul de l'opération de réduction, le présent calcul de quotient rapide permet une réduction rapide du polynôme en son reste, de même que l'ajout du quotient (sans augmenter son degré) pour obtenir d'autres congruences du polynôme. Dans son sens le plus large, l'invention concerne un procédé d'estimation de quotient rapide mis en oeuvre dans un système de traitement numérique électronique pour effectuer des opérations de polynômes dans un champ fini GF(ak), où a est un entier, le procédé comprenant les étapes consistant à : (a) déterminer à partir d'un module de polynôme f(x) un degré Deg[f(x)] du module et une distance d entre les deux plus grands coefficients de degré du module, un degré maximal MAX_DEG = {Deg[f(x)] + d û 1} ; (b) recevoir un polynôme i(x) ; et (c) si un degré Deg[i(x)] du polynôme reçu i(x) est inférieur ou égal à Deg[f(x)], alors diviser i(x) par aDeg[f(x)1 pour obtenir un quotient de polynôme q(x) = i(x) / f(x). Selon différents modes de réalisation : - le procédé comprend en outre l'étape consistant à (d) multiplier le quotient q(x) par le module f(x) et soustraire du polynôme i(x) reçu pour obtenir une valeur de reste r(x) = i(x) û f(x) • q(x) ; - le champ fini est un champ binaire GF(2n) et la soustraction dans l'étape (d) est une opération OU exclusif de l'ordre du bit ; - un multiple aléatoire du module de polynôme est ajouté au reste après l'étape (d) ; - un polynôme aléatoire de degré inférieur à d est ajouté au quotient après l'étape (c) pour obtenir un quotient modifié q'(x), puis l'étape consistant à : (d') multiplier le quotient modifié q'(x) par le module f(x) et soustraire du polynôme reçu i(x) pour obtenir une valeur aléatoire congruente à i(x) mod f(x) ; - le champ fini est un champ premier GF(pk), avec un nombre premier p > 2, et dans lequel les coefficients des polynômes f(x), i(x) et q(x) sont les entiers de 0 à p û 1 ; - le procédé est exécuté dans un processeur cryptographique ; - le procédé est effectué comme une partie d'une exécution d'un chiffre de bloc symétrique par ledit processeur cryptographique. L'invention concerne également un support lisible par processeur stockant un programme exécutable par un système de traitement numérique électronique, le programme stocké sur ledit support amenant le système de traitement numérique électronique à effectuer des opérations de polynômes dans un champ fini GF(ak), où a est un entier, les opérations de polynômes exécutées par le système comprenant les opérations consistant à : (a) déterminer, à partir d'un module de polynôme f(x), un degré Deg[f(x)] du module et une distance d entre les deux plus grands coefficients de degré du module, un degré maximal MAX_DEG = {Deg[f(x)] + d û 1} ; (b) recevoir un polynôme i(x) ; et (c) si un degré Deg[i(x)] du polynôme reçu i(x) est inférieur ou égal à Deg[f(x)], alors diviser i(x) par aDeg[f(x) ] pour obtenir un quotient de polynôme q(x) = i(x) / f(x). Selon différents modes de réalisation : - le programme amène en outre le système de traitement à (d) multiplier le quotient q(x) par le module f(x) et soustraire du polynôme reçu i(x) pour obtenir une valeur de reste r(x) = i(x) û f(x) • q(x) ; - le champ fini est un champ binaire GF(2") et la soustraction dans l'étape (d) est une opération OU exclusif de l'ordre du bit ; - le programme amène en outre le processeur à ajouter à un multiple aléatoire du module de polynôme au reste après l'étape (d) ; - le programme amène en outre le processeur à ajouter un polynôme aléatoire de degré inférieur à d au quotient après l'étape (c) pour obtenir un quotient modifié q'(x), puis l'étape consistant à : (d') multiplier le quotient modifié q'(x) par le module f(x) et soustraire du polynôme reçu i(x) pour obtenir une valeur aléatoire congruente à i(x) mod f(x) ; - le champ fini est un champ premier GF(pk), avec un nombre premier p > 2, et dans lequel les coefficients des polynômes f(x), i(x) et q(x) sont les entiers de 0 à p û 1 ; - les opérations de polynômes sont exécutées par un processeur cryptographique lisant ledit support ; - les opérations de polynômes sont effectuées par une partie d'une exécution d'un chiffre de bloc symétrique par ledit processeur cryptographique. La figure 1 est un organigramme d'un procédé d'un calcul de quotient rapide et d'un calcul de reste rapide selon la présente invention, pour un cas donné à titre d'exemple de champs finis binaires dans GF(2"). Le procédé de calcul de quotient rapide de la présente invention tire profit des cas spéciaux d'une propriété inhérente des opérations de polynômes dans un champ fini. Si nous avons un module de polynôme qui est de la forme, disons de f(x) = x8 + x4 + x3 + x + 1 (exemple donné dans GF(28)), on peut noter que le degré f(x) est deg[f(x)] = 8 et que la distance entre les coefficients de deux degrés les plus élevés moins 1 est d = 3. À présent, soit g(x) un polynôme de degré maximal d, deg[g(x)] s d. Soit h(x) un autre polynôme qui est le produit de f(x) et g(x). À savoir, h(x) = g(x)•f(x) = g(x)•x8 + g(x)•x4 + g(x)•x3 + g(x)•x + g(x)•1. Du fait que deg[g(x)] Exemple f(x) = x8 + x4 + x3 + x + 1 i(x) = x11 + x8 + x2 + x + 1 deg[i(x)] = 11 f(x) = 00000001 00011011 15 g(x) = 00001001 00000111 q(x) = 00000000 00001001. On note que q(x) est simplement i(x) décalé vers la droite de huit bits, qui est l'équivalent de la division 20 par x8 . f(x)•q(x) = 00001000 11011000 O+ 00000001 00011011 = 00001001 11000011 25 i(x) O+ (f(x)•q(x)) = 00001001 00000111 C 00001001 11000011 = 00000000 11000100 Un multiplicateur de matériel peut manipuler la 30 multiplication de module f(x) et du quotient q(x). En référence à la figure 1, la procédure basique pour les calculs sur les polynômes dans des champs finis binaires GF(2n) est montrée sur la figure 1. Tout d'abord, 7 le module de polynôme est chargé (étape 101). Le degré est calculé conjointement avec la distance d entre les coefficients des deux degrés les plus élevés pour f(x). Ceci établit le degré maximal MAX_DEG pour les polynômes à réduire par la présente invention (étape 102). Un polynôme i(x) à réduire est chargé (étape 103) et une vérification est effectuée pour s'assurer que son degré est inférieur ou égal à MAX_DEG (étape 104). Sinon, alors le polynôme i(x) est trop grand pour cette procédure. Sinon, le coefficient est rapidement calculé (étape 105) par division par 2DEG[f00] ou les décalages à droite équivalents par un nombre de bits égal au degré du module. Ceci termine le calcul de quotient et q(x) peut être renvoyé. Normalement, toutefois, le quotient est utilisé pour une réduction de polynôme, à savoir, un calcul de reste. Le reste r(x) est calculé (étape 106) par multiplication du module et du quotient suivi par une soustraction du polynôme i(x) d'origine (équivalent à OU exclusif dans les champs binaires). Ceci achève le calcul de reste et la valeur de reste peut être renvoyée. Facultativement, un aléas peut être inséré sur le quotient (après étape 105) ou sur la valeur de reste (après l'étape 106), comme décrit ci-dessous, pour une plus grande sécurité dans le travail avec les valeurs renvoyées. En plus d'effectuer un calcul de quotient rapide et une réduction rapide, nous pouvons également calculer différentes congruences d'un polynôme donné. Avec un quotient donné q(x) de degré inférieur ou égal à d, nous pouvons ajouter une valeur de polynôme aléatoire s(x) de degré identique ou inférieur à q(x), puis recalculer i(x) Q+ (f(x)•q(x)) en utilisant le quotient modifié q'(x) = q(x) + s(x) à la place de q(x). En variante, une fois que la valeur du reste est trouvée, un multiple aléatoire du module peut être ajouté au reste. Dans de nombreux cas, le travail avec des congruences différentes améliore la sécurité contre des attaques cryptographiques de canal latéral sans affecter le résultat final. Lors du travail avec des congruences, il peut être souhaité d'éviter d'avoir à ce que des valeurs congruentes s'annulent les unes les autres lorsqu'elles sont ajoutées ensemble. Ceci peut être assuré par un calcul rapide du quotient avec le même module pour les deux valeurs de polynôme et par comparaison. Deux polynômes différents avec le même quotient ne sont pas congruents. Lors d'un travail dans un champ fini premier GF(pk), les mêmes principes basiques de calcul de quotient rapide et de calcul de reste s'appliquent, à l'exception que chaque coefficient de polynôme a une valeur de O à p û 1 et est donc représenté par des ensembles de bits au lieu de bits individuels. En outre, l'opération i(x) - p(x)•q(x) ne peut plus être remplacée par une opération OU exclusive. La différence dans chaque coefficient doit être calculée en utilisant un matériel additionneur. REVENDICATIONS 1. Procédé de traitement numérique mis en oeuvre dans un système de traitement numérique électronique pour effectuer des opérations de polynômes dans un champ fini GF(ak), où a est un entier, le procédé comprenant les étapes consistant à : (a) déterminer à partir d'un module de polynôme f(x) un degré Deg[f(x)] du module et une distance d entre les deux plus grands coefficients de degré du module, un degré maximal MAX_DEG = {Deg[f(x)] + d ù 1} ; (b) charger une chaîne de bits représentant un polynôme i(x) ; et (c) si un degré Deg[i(x)] du polynôme reçu i(x) est inférieur ou égal à MAX_DEG, alors diviser i(x) par aDeef(x) ] en effectuant un décalage de bits vers la droite de la chaîne pour obtenir un quotient de polynôme q(x) = i(x) / f(x), ledit décalage étant fonction de Deg[f(x)]. 2. Procédé selon la revendication 1, comprenant en outre 20 l'étape consistant à : (d) multiplier le quotient q(x) par le module f(x) à l'aide d'un multiplicateur matériel et soustraire du polynôme i(x) reçu pour obtenir une valeur de reste r(x) = i(x) ù f(x) • q(x). 25 3. Procédé selon la revendication 2, dans lequel le champ fini est un champ binaire GF(2n) et la soustraction dans l'étape (d) est une opération OU exclusif de l'ordre du bit. 30 4. Procédé selon la revendication 2, dans lequel un multiple aléatoire du module de polynôme est ajouté au reste après l'étape (d). 5. Procédé selon la revendication 1, dans lequel un polynôme aléatoire de degré inférieur à d est ajouté au quotient après l'étape (c) pour obtenir un quotient modifié q'(x), puis l'étape consistant à : (d') multiplier le quotient modifié q'(x) par le module f(x) l'aide d'un multiplicateur matériel et soustraire du polynôme reçu i(x) pour obtenir une valeur aléatoire congruente à i(x) mod f(x). 6. Procédé selon la revendication 1, dans lequel le champ fini est un champ premier GF(pk), avec un nombre premier p > 2, et dans lequel les coefficients des polynômes f(x), i(x) et q(x) sont les entiers de 0 à p ù 1. 7. Procédé selon la revendication 1, dans lequel le 20 procédé est exécuté dans un processeur cryptographique. 8. Procédé selon la revendication 7, dans lequel le procédé est effectué comme une partie d'une exécution d'un chiffre de bloc symétrique par ledit processeur 25 cryptographique. 9. Support lisible par processeur stockant un programme exécutable par un système de traitement numérique électronique, le programme stocké sur ledit support 30 amenant le système de traitement numérique électronique à effectuer des opérations de polynômes dans un champ fini GF(ak), où a est un entier, les opérations de polynômesexécutées par le système comprenant les opérations consistant à : (a) déterminer, à partir d'un module de polynôme f(x), un degré Deg[f(x)] du module et une distance d entre les deux plus grands coefficients de degré du module, un degré maximal MAX_DEG = {Deg[f(x)] + d ù 1} ; (b) charger une polynôme i(x) ; et (c) si un degré inférieur ou égal à chaîne de bits représentant un Deg[i(x)] du polynôme i(x) est MAX_DEG, alors diviser i(x) par aDeg[f(x)) en effectuant un décalage de bits vers la droite de la chaîne pour obtenir un quotient de polynôme q(x) = i(x) / f(x), ledit décalage étant fonction de Deg[f(x)]. 10. Support lisible par processeur selon la revendication 9, dans lequel le programme amène en outre le système de traitement à : (d) multiplier le quotient q(x) par le module f(x) l'aide d'un multiplicateur matériel et soustraire du polynôme i(x) reçu pour obtenir une valeur de reste r(x) = i(x) ù f(x) • q(x). 11. Support selon la revendication 10, dans lequel le champ fini est un champ binaire GF(2n) et la soustraction dans l'étape (d) est une opération OU exclusif de l'ordre du bit. 12. Support selon la revendication 10, dans lequel le 30 programme amène en outre le processeur à ajouter un multiple aléatoire du module de polynôme au reste après l'étape (d). 13. Support selon la revendication 9, dans lequel le programme amène en outre le processeur à ajouter un polynôme aléatoire de degré inférieur à d au quotient après l'étape (c) pour obtenir un quotient modifié q'(x), puis l'étape consistant à : (d') multiplier le quotient modifié q'(x) par le module f(x) l'aide d'un multiplicateur matériel et soustraire du polynôme reçu i(x) pour obtenir une valeur aléatoire congruente à i(x) mod f(x). 14. Support selon la revendication 9, dans lequel le champ fini est un champ premier GF(pk), avec un nombre premier p > 2, et dans lequel les coefficients des polynômes f(x), i(x) et q(x) sont les entiers de 0 à p -1. 15. Support selon la revendication 9, dans lequel les opérations de polynômes sont exécutées par un processeur cryptographique lisant ledit support. 16. Support selon la revendication 15, dans lequel les opérations de polynômes sont effectuées par une partie d'une exécution d'un chiffre de bloc symétrique par ledit processeur cryptographique.20