- Présentation du projet
- Objectifs
- Installation et Utilisation
- Fonctionnalités
- Travaux Demandés
- Références
Ce projet consiste en l'implémentation de l'algorithme RSA (Rivest-Shamir-Adleman) et de ses variantes. L'objectif est d'explorer les concepts fondamentaux du chiffrement RSA, y compris RSA-CRT, RSA avec padding, et les notions de malleability et indistinguishability.
Veuillez consulter le document officiel pour une explication détaillée du projet :
-
PDF : rsa.pdf
-
Images :
Avant de commencer, assurez-vous d'avoir installé les éléments suivants :
- Java JDK 11+
- Eclipse IDE (ou tout autre IDE compatible Java)
- Git installé sur votre machine
- Clonez ce dépôt Git :
git clone https://github.com/callbak/RSA.git cd RSA
- Ouvrez Eclipse.
- Allez dans File > Import > Existing Projects into Workspace.
- Sélectionnez le dossier du projet RSA.
- Cliquez sur Finish.
- Ouvrez le fichier principal :
src/rsa/Rsa.java
. - Exécutez-le en cliquant sur Run (ou en utilisant le raccourci
Ctrl + F11
).
- Générer la clé publique
(e, N)
et la clé privée(d, N)
, en choisissante
tel queGCD(e, φ(N)) = 1
.
- Implémenter l'algorithme Square-and-Multiply pour le calcul rapide de
a^b mod n
.
- Implémenter les fonctions de chiffrement et de déchiffrement en utilisant l'exponentiation modulaire.
- Déchiffrement optimisé en résolvant : M ≡ C^d mod p M ≡ C^d mod q
- Montrer comment un attaquant peut modifier un message chiffré sans connaître la clé privée.
- Implémenter un algorithme permettant de retrouver
p
etq
siφ(N)
est connu.
[!Jusqu'à maintenant, j'ai arrêté mon implémentation à la 6ème question]
- Montrer comment un attaquant peut retrouver
M
si le même message est envoyé à Alice et Bob.
- Utiliser les classes
KeyPair
,KeyPairGenerator
,PublicKey
, etPrivateKey
pour générer une paire de clés de 1024 bits.
- Implémenter le chiffrement et le déchiffrement avec le schéma de padding PKCS#1.
- Générer et vérifier une signature numérique en utilisant deux méthodes :
- Avec
MessageDigest
etCipher
. - Avec la classe
Signature
.