Provable Security of Cryptographic Primitives: from Algorithms to Assembly
Résumé
Cryptographic primitives are the fundamental building blocks of computer security.
In this Habilitation to Direct Research (HDR), I present the theoretical and
practical foundations required to establish the security of these primitives.
In the first part, I focused on developing theoretical methods
to prove their security at the algorithmic level. This work led
to the development of the probabilistic Relational Hoare Logic (pRHL)
and the creation of the proof assistant EasyCrypt.
In the second part, my work shifted to studying the implementation
of cryptographic primitives. This stage introduces new challenges,
particularly because the need for highly efficient implementations
often drives developers to write code in assembly language;
a language ill-suited for formal verification of implementation correctness.
To address this issue, we have introduced Jasmin, a language specifically designed
for writing low-level, highly optimized code. Jasmin provides a high level
of abstraction, simplifying formal verification of implementations and
enabling the development of static analysis tools. Moreover, to ensure
guarantees at the assembly level, the Jasmin compiler has been formally
verified using the Coq proof assistant (project Rocq).
Finally, in the last part of my work, I tackled the challenge of making
implementations resistant to various side-channel attacks, such as
cache-based attacks, speculative execution attacks (e.g., Spectre),
and power analysis attacks (Differential Power Analysis).
These contributions adopt both theoretical and practical perspectives,
systematically providing tools to facilitate their implementation.
Les primitives cryptographiques constituent les briques fondamentales
de la sécurité informatique. Dans cette Habilitation à Diriger des Recherches,
je propose des fondements théoriques et pratiques visant à établir la sécurité
de ces primitives.
Dans un premier temps, je me suis concentré sur le développement de méthodes
théoriques permettant de démontrer leur sécurité au niveau algorithmique.
Cela a conduit à l'élaboration de la logique de Hoare relationnelle
probabiliste (pRHL) et à la conception de l'assistant de preuve EasyCrypt.
Dans un second temps, mon travail s'est orienté vers l'étude des
implémentations des primitives cryptographiques. Cette étape soulève
de nouveaux défis, notamment en raison de la nécessité d'avoir des
implémentations très efficaces. Cela incite souvent les développeurs
à écrire du code en assembleur, un langage peu adapté à la vérification
formelle de la correction des implémentations. Pour répondre à ce problème,
nous avons introduit Jasmin, un langage dédié à l'écriture de code bas niveau
hautement optimisé. Jasmin offre un haut niveau d'abstraction, ce qui
simplifie la vérification formelle des implémentations et facilite
le développement d'analyses statiques. De plus, afin de garantir la
sécurité au niveau assembleur, le compilateur Jasmin a été formellement
vérifié dans l'assistant de preuve Coq (projet Rocq).
Enfin, dans la dernière partie de mes travaux, je me suis intéressé
à la résistance des implémentations face à diverses attaques par
canaux cachés, telles que les attaques par cache, les attaques
basées sur l'exécution spéculative (comme Spectre), et les attaques
par analyse de puissance (Differential Power Analysis).
Ces travaux adoptent une approche à la fois théorique et pratique,
en fournissant systématiquement des outils concrets permettant leur
mise en œuvre.
Origine | Fichiers produits par l'(les) auteur(s) |
---|