• Aucun résultat trouvé

Validation d’un crypto-processeur par simulation

nume rique

Tous les circuits présentés dans cette thèse ont subi une vérification poussée.

L’automatisation des tests est essentiels lorsque qu’il y a de nombreux circuits et pour

permettre au concepteur d’effectuer des tests de non-régressions. Pour les travaux présentés

dans cette thèse, j’ai automatisé le test fonctionnel de chaque élément du crypto-processeurs.

Ces tests sont réalisés par le simulateur évènementiel Modelsim de Mentor Graphics qui

simule l’élément sous test à partir de sa description. Il simule aussi le testeur qui fournit les

vecteurs d’entrées au circuit sous test. C’est aussi son rôle de vérifier à l’aide d’assertions la

validité des vecteurs de sorties.

Le jeu de fonctions à la disposition d’un testeur décrit en « vhdl »est limité et ne permet

pas d’effectuer une multiplication sur 𝐺𝐹(2

𝑑

) ou manipuler des points sur une courbe

elliptique. Le test de nombreux éléments d’un crypto-processeur doit donc être écrit d’une

manière statique. Il en résulte des tests peu flexibles et un nombre restreint de vecteurs. Pour

remédier à ce problème j’ai développé un jeu de fonctions « vhdl » permettant au testeur

d’effectuer des opérations cryptographiques classiques pour générer des vecteurs d’entrées

aléatoires et vérifier les vecteurs de sorties associés. Ceci a été réalisé sous la forme d’une

bibliothèque dynamique (libeccvhd.so) a l’intermédiaire entre Modelsim et des

bibliothèques cryptographiques. Je peux ainsi comparer les sorties de mes circuits avec ceux

d’une implémentation de référence, dans mon cas une bibliothèque logicielle cryptographique

largement auditée et validée : openssl.

Fifure 1 Bibliothèques cryptographiques et simulation de circuits numériques

Les capacités offertes au testeur couvre l’arithmétique sur 𝐺𝐹(𝑝) et 𝐺𝐹(2

𝑑

) et la

manipulation de points sur une courbe elliptique. La vérification fonctionnelle devient dès lors

plus robuste : par exemple, il est possible de vérifier l’implémentation de l’arithmétique sur

𝐺𝐹(𝑝) ou 𝐺𝐹(2

𝑑

) pour de nombreux nombres premiers ou polynômes irréductibles choisis au

hasard. L’implémentation logicielle de référence utilisée pour l’arithmétique sur ces deux

corps est celle d’openssl.

Ma bibliothèque offre aussi la possibilité de décrire des tests faisant appel à des fonctions

tels que : générer un point aléatoire sur une courbe donnée (en coordonnées affines, ou avec

une représentation projective aléatoire), vérifier que deux points sont équivalents même s’ils

ont des représentations différentes et bien sûr, effectuer les opérations sur les points (addition,

doublage, multiplication scalaire). La référence des opérations sur les courbes de Weierstrass

sur 𝐺𝐹(𝑝) ou 𝐺𝐹(2

𝑑

) est fournie par openssl avec la possibilité d’utiliser une courbe déjà

intégrée dans cette bibliothèque ou une courbe arbitraire. La référence des opérations sur les

courbes quartiques est fournie par la bibliothèque logicielle mphell développée à l’institut

Fourier (Grenoble).

Cette bibliothèque est réutilisée pour les tests et les attaques sur carte. Elle permet de

générer les points choisis au hasard sur une courbe qui sont ensuite envoyés au circuit à

travers une interface UART. Que ce soit pour le test sur carte ou les attaques, le point résultat

est toujours reçu et vérifié via une bibliothèque cryptographique de référence.

Annexe 3 Synthe se de haut niveau

applique e a la cryptographie sur les

courbes elliptiques

Suite à mes travaux présentés dans le Chapitre II basés sur une méthode classique de

conception (de bas en haut), j’ai exploré les possibilités que peut offrir la conception de haut

niveau (HLS) appliqué à la cryptographie basée sur les courbes elliptiques. Ce travail a été

mené en collaboration avec l’équipe SLS du laboratoire TIMA, plus particulièrement avec

Alban Bourge pour la partie applicative, flot de conception et Adrien Prost-Boucle pour le

support sur l’outil de synthèse de haut niveau AUGH [PrMu14] dont il est le développeur

principal. Je me contente, ici, de fournir un aperçu de ce travail et de ces conclusions. Pour

plus de détails, je renvois le lecteur vers l’article [PoBo16].

La méthode de conception est constituée de plusieurs boucles décrites par la Figure 1.

Durant la première phase de développement, de premières itérations sur la description haut

niveau permettent d’arriver à une description fonctionnelle. S’en suit alors des itérations pour

optimiser les performances estimées par l’outil de HLS. Le développement se termine par une

optimisation des performances en sortie du flot complet.

Figure 1 Flot et méthode de conception

La première ligne de la Figure 2 décrit les outils que nous avons utilisés pour la première

boucle. Le langage de haut niveau que nous utilisons est le langage C et la vérification

fonctionnelle est faite par comparaison avec openssl. Le logiciel AUGH [PrMu14] effectue

une synthèse de haut niveau pour générer des estimateurs et une description matérielle (en

langage vhdl) à partir de la description haut niveau. C’est un logiciel libre supportant un

grand nombre de FPGAs (Xilinx, Altera, Lattice). Dans nos expérimentations, nous avons

optimisé la description de haut niveau pour des FPGA Xilinx.

Figure 2 Outils sélectionnés pour en mettre en œuvre le flot de conception

Cette méthode de conception est rapide car les itérations en vue d’obtenir une description

fonctionnelle sont purement logicielles et l’on dispose en quelques secondes d’estimateur sur

le circuit matérielle en amont des outils du vendeur de FPGA. Par exemple, un multiplieur de

Montgomery par digit a été développé en 14 jours d’optimisations après de nombreuses

modifications architecturales et algorithmiques (voir Figure 3).

Figure 3 Développement d'un Multiplieur de Montgomery en quelques jours

Nous avons montré que la synthèse de haut niveau appliqué à la cryptographie basée sur

les courbes elliptiques permet d’obtenir rapidement des circuits compétitifs (voir Figure II-8,

page 67). Elle peut s’adapter à des contraintes spécifiques tels que la manipulation de grand

entiers et le calcul en temps constant. Par contre certaines étapes de la méthode proposée

nécessitent une intervention humaine. Le degré de parallélisme atteignable a quelques limites

avec l’outil de HLS, mais des développements en ce sens sont en cours.

Annexe 4 Courbes quartiques de