PGCD & Bézout
Algorithme d'Euclide étendu, utilisé pour calculer l'inverse modulaire (clé privée).
Implémentation des cryptosystèmes RSA et ElGamal en OCaml, dans le cadre du projet officiel « Arithmetic For IT » du module Maths de l'EPITA. Une plongée dans l'arithmétique modulaire et la sécurité informatique.
Le sujet officiel progresse en trois niveaux : d'abord avec le type entier natif d'OCaml, puis avec des entiers de taille arbitraire représentés par des listes de bits, puis avec le module Zarith pour l'optimisation. Ce rendu correspond au premier niveau, réalisé avec les entiers natifs OCaml.
Le premier niveau du sujet réutilise la même base arithmétique pour construire les deux cryptosystèmes visés.
Algorithme d'Euclide étendu, utilisé pour calculer l'inverse modulaire (clé privée).
Génération des nombres premiers utilisés par RSA et ElGamal.
Cœur des opérations de chiffrement et de déchiffrement des deux cryptosystèmes.
Génération de clés, chiffrement et déchiffrement de messages sur des entiers natifs.
Les deux cryptosystèmes visés par le sujet officiel ont été implémentés, réutilisant la même base arithmétique (PGCD, Bézout, exponentiation modulaire, primalité) tout en respectant les spécificités de chacun.
Le type int natif d'OCaml est borné (63 bits) : les clés
restent donc de taille modeste, bien loin des tailles utilisées en
production. Gérer cette limite a été une contrainte constante de ce
premier niveau.
Programme OCaml capable de chiffrer et déchiffrer des messages avec RSA et ElGamal, sur des entiers natifs, en traduisant en code les notions d'arithmétique modulaire, de PGCD et de primalité vues en cours.
Une compréhension concrète du fonctionnement de RSA, d'ElGamal et de la cryptographie asymétrique, ainsi qu'une première prise en main du langage OCaml à travers un sujet mathématique exigeant.