Fiche de stage S3023 Algorithme de calcul d’isogénies de Lercier et Sirvent Description : Introduction Calculer des isogénies entre courbes elliptiques a de nombreuses applications en cryptographie asymétrique et en théorie des nombres : compter des points à l’aide de l’algorithme SEA ou encore, construire des schémas d’échange de clés utilisant des chemins d’isogénies entre courbes ordinaires ou supersingulières. De nombreuses méthodes de calculs d’isogénies découlent d’une analyse théorique en caractéristique nulle et si elles se transposent directement au cas des corps finis quand le degré de l’isogénie est petit, quand ce dernier dépasse la caractéristique du corps fini, l’apparition de divisions par zéro les rend inapplicables. L’idée de Lercier et Sirvent pour contourner ce problème est de travailler dans un relevé de caractéristique nulle du corps fini, d’y conduire les calculs, et de ne réduire le résultat obtenu qu’au tout dernier moment. Objectifs du stage Le stage portera sur l’étude et l’implémentation de l’algorithme de calcul d’isogénies de Lercier et Sirvent. Il s’agira en particulier d’analyser la précision p-adique nécessaire pour obtenir un résultat correct dans le cadre théorique développé par X. Caruso, D. Roe et T. Vaccon en s’appuyant sur les travaux ultérieurs de T. Vaccon et P. Lairez concernant la résolution d’équations différentielles p-adiques. Une autre question intéressante est de s'assurer que les analyses de précision et de complexité s'appliquent aussi bien au cas des extensions de corps finis qu'au cas des corps finis premiers. Le stagiaire s’attachera ensuite à implémenter cet algorithme au sein d’une bibliothèque C open source, puis à en proposer des variantes et des extensions afin d’obtenir des performances optimales dans diverses situations. Le stagiaire sera amené à intéragir avec des chercheurs de l'UVSQ et du LIX. Localisation : 31, quai de Grenelle – 75015 Paris Durée : 6 à 9 mois Compétences requises : En programmation • Maîtrise des langages de programmation C et Python nécessaire. • Connaissance d’autres langages de programmation (par exemple C++) souhaitée. • Connaissance élémentaire de l’architecture des ordinateurs. • Connaissance de bibliothèques de calcul mathématique et en théorie des nombres (par exemple : GMP/MPIR, MPFR, MPC, MPFRCX, FLINT, PARI, NTL, Givaro, Sage). D’un point de vue théorique • Connaissances mathématiques en algèbre et en théorie des nombres (par exemple : corps finis, courbes elliptiques). • Connaissances en algorithmique (par exemple : grands entiers, factorisation, primalité, arithmétique des courbes elliptiques). Formation : • Bac + 5 - Ecole d'ingénieur ou formation universitaire en mathématiques ou en informatique fondamentale Qualités requises : • Ouverture d'esprit et rigueur • Autonomie • Aisance quant à la restitution écrite et orale des travaux Fiche de stage S3023 ANSSI 51, boulevard de La Tour-Maubourg 75700 Paris 07 SP