• Aucun résultat trouvé

4.3 Implantation FPGA

4.3.2 Résultats d’implantation

1000 2000 3000 4000 5000 6000 192 384 512 log P nombre de slices MM SBMM 0 20 40 60 80 100 120 192 384 512 log P

nombre de blocs DSP et BRAM BRAM(MM)

DSP(MM) DSP(SBMM) BRAM(SBMM)

Figure 4.3 – Comparaison en surface des implantations FPGA de MM et SBMM, en nombre de slices et en nombre de blocs dédiés (DSP et BRAM).

Les résultats obtenus pour les deux algorithmes sont présentés dans la table 4.4 et sont illustrés par la figure 4.3 pour les résultats de surface et la figure 4.4 pour le temps d’exécution. Les tailles de corps implantées sont 192 et 384 bits, qui sont des tailles de corps standardisées par le NIST [91], et 512 bits. Le standard du NIST propose l’utilisa- tion de courbes définies sur 521 bits car P = 2521− 1 est premier, et permet d’avoir une

0 100 200 300 400 500 600 192 384 512 log P

temps d’une multiplication [ns] MM

SBMM

Figure 4.4 – Comparaison du temps d’exécution des implantations FPGA de MM et SBMM.

multiplication modulaire très efficace, en représentation binaire classique. Dans notre cas, nous avons pris un premier de 512 bits car il est facile d’en trouver tels que P = M2

a − 2.

Les mots sont de taille 16 bits pour le corps de 192 bits et 32 bits pour les autres pour l’algorithme SBMM, alors que l’on a w = 17 et w = 33 bits pour l’algorithme MM de l’état de l’art. Cela est dû au fait que dans notre implantation, les bits supplémentaires nécessaires sont fournis par le petit Rower supplémentaire.

Les résultats présentés à la table 4.4 ont été obtenus sur FPGA Virtex 5, XC5VLX50T pour 192 bits et XC5VLX220 pour 384 et 512 bits. Grâce à notre algorithme, avec l’ar- chitecture proposée, nous obtenons une implantation bien plus compacte, pour un faible surcoût en temps. Comme illustré dans la figure 4.3, pour 192, 384 et 512 bits nous obte- nons respectivement une réduction du nombre de slices de 27 %, 32 % et 45 %. De plus, le nombre de blocs DSP est respectivement réduit de 43 %, 50 % et 50 % et nous avons divisé par 2 le nombre de BRAM pour les 3 corps. En contrepartie, nous obtenons un surcoût en temps d’exécution de 8 %, 10 % et 7 % respectivement pour les corps de 192, 384 et 512 bits, illustré dans la figure 4.4. Comme pour nos propositions des chapitres 2 et 3, nos gains sont plus importants lorsque n devient grand, c’est à dire lorsque nous travaillons sur des hauts niveaux de sécurité. Nous rappelons enfin que l’implantation de notre nouvel algorithme n’a pas encore été optimisée, faute de temps.

4.4 Conclusion

Dans ce chapitre nous avons présenté des travaux introduisant un nouvel algorithme de multiplication modulaire RNS, appelé SBMM, utilisable pour la cryptographie sur courbes elliptiques. Grâce à des P bien choisis et à des décompositions semblables à celles présen- tées dans le chapitre 3 sur le SPRR, nous avons divisé par 2 le nombre de multiplications modulaires élémentaires et par 4 le nombre de pré-calculs par rapport à l’algorithme de l’état de l’art. Des premiers résultats d’implantation sur FPGA, partiels, permettent de calculer une multiplication modulaire RNS avec une surface jusqu’à 2 fois plus petite, pour un surcoût en temps d’exécution de seulement 10 % (au plus) pour nos implantations.

Ces travaux étant en cours, des implantations plus poussées seront réalisées, avec no- tamment l’implantation d’un doublement et d’une addition de points utilisant notre algo- rithme, associée à une fonction de compression pour pouvoir enchaîner les multiplications SBMM. Une implantation orientée vitesse sera aussi réalisée, qui devrait être bien plus rapide que les implantations de l’état de l’art, pour un faible surcoût en surface.

Enfin, ces travaux devront être valorisés via une implantation complète d’une multi- plication scalaire, combinés avec les travaux sur l’inversion modulaire présentés dans le chapitre 2.

Tests de divisibilité multiples

Dans cette section, issue de notre publication [18], nous présentons un opérateur arith- métique matériel dédié aux tests de divisibilité par plusieurs petites constantes sur des grands entiers (comme des scalaires ECC). Ces grands entiers, de plusieurs centaines de bits, sont représentés en multi-précision. La méthode proposée permet de n’effectuer qu’un très faible nombre de calculs pour chaque mot de la représentation multi-précision. Par exemple, elle permet de tester la divisibilité par (2a, 3, 5, 7, 9), où 1 ≤ a ≤ 12, beaucoup plus efficacement qu’en testant la divisibilité par chacune des petites constantes séparé- ment. La méthode proposée a été implantée et validée sur circuit FPGA. Ce chapitre ne traite pas spécifiquement du RNS, mais de calculs simultanés sur des petits moduli, ou bien de recodage à bases multiples de clés pendant la multiplication scalaire [25], ce qui est complémentaire au reste des travaux de la thèse. Enfin, ce chapitre n’utilise pas les notations utilisées pour le RNS, de nouvelles notations seront définies spécifiquement.

5.1 Introduction

Dans certaines applications particulières, il est nécessaire de pouvoir tester rapidement si un entier est divisible par des constantes comme 2, 3, 5 ou d’autres petits premiers et des petites puissances de ces nombres comme 32. Ceci se fait assez facilement, en logiciel et en matériel, pour une seule constante et sur un nombre à tester de taille modérée (de la taille d’un mot machine en logiciel ou de quelques dizaines de bits en circuit). Mais lors- qu’il s’agit d’effectuer ces tests sur de grands entiers de plusieurs centaines de bits ou plus (p. ex. pour des tailles de nombres utilisés en cryptographie asymétrique) et pour plusieurs constantes à la fois, ceci nécessite des calculs élémentaires bien plus nombreux et ainsi des opérateurs coûteux à implanter en matériel. Ceci limite considérablement l’application de méthodes utilisant des tests de divisibilité de grands entiers en matériel.

Par exemple, en cryptographie sur courbes elliptiques, une façon d’accélérer la multi- plication scalaire est de faire appel à des algorithmes de recodage en bases multiples. Ces recodages permettent de réduire significativement le nombre total d’opérations à effectuer sur les points de la courbe elliptique considérée. En base double (2, 3), on représente un nombre par une somme de termes de la forme ±2e13e2, voir [40] par exemple. Pour des bases multiples comme (2, 3, 5, 7), la représentation se fait via la somme de termes de la forme ±2e13e25e37e4, voir [73] par exemple. Notre équipe travaille sur de tels recodages qui nécessitent des tests de divisibilité efficaces par les différents éléments des bases multiples (et si possible des petites puissances de ces premiers).

Dans ce chapitre, nous présentons une méthode permettant d’effectuer simultanément, rapidement, et sur des petits circuits, les tests de divisibilité par plusieurs petites constantes comme (2a, 3, 5, 7, 9), avec a petit, sur de très grands entiers de plusieurs centaines de bits et représentés en multi-précision (c.-à-d. sous forme de vecteurs de mots de taille modérée). La méthode proposée repose sur l’adaptation d’une très ancienne méthode décrite par Blaise Pascal [93, 103]. Nous l’avons adaptée au cas de la divisibilité par plusieurs constantes et en matériel.

La section 5.2 présente les notations utilisées dans ce chapitre et quelques hypothèses qui seront utiles pour les implantations matérielles. L’état de l’art du domaine est présenté en section 5.3. La section 5.4 présente la version simple en base 2, directement issue de la méthode de Pascal, de l’opérateur de divisibilité et son implantation FPGA. La section 5.5 présente notre amélioration de la méthode en utilisant une base intermédiaire plus grande de type 2v. Nous donnons aussi les résultats d’implantation FPGA pour cette amélioration. La section 5.6 décrit brièvement des comparaisons avec d’autres travaux proches. Enfin, la section 5.7 présente la conclusion et quelques perspectives.