Skip to content

callbak/RSA

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

RSA - Implémentation et Étude

Table des Matières

  1. Présentation du projet
  2. Objectifs
  3. Installation et Utilisation
  4. Fonctionnalités
  5. Travaux Demandés
  6. Références

Présentation du projet

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.


Document Officiel

Veuillez consulter le document officiel pour une explication détaillée du projet :


Installation et Utilisation

Prérequis

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

Installation

  1. Clonez ce dépôt Git :
    git clone https://github.com/callbak/RSA.git  
    cd RSA
    

Importer le projet dans Eclipse :

  1. Ouvrez Eclipse.
  2. Allez dans File > Import > Existing Projects into Workspace.
  3. Sélectionnez le dossier du projet RSA.
  4. Cliquez sur Finish.

Compilation et exécution :

  1. Ouvrez le fichier principal : src/rsa/Rsa.java.
  2. Exécutez-le en cliquant sur Run (ou en utilisant le raccourci Ctrl + F11).

Travaux Demandés

1. Génération des Clés RSA

  • Générer la clé publique (e, N) et la clé privée (d, N), en choisissant e tel que GCD(e, φ(N)) = 1.

2. Exponentiation Modulaire

  • Implémenter l'algorithme Square-and-Multiply pour le calcul rapide de a^b mod n.

3. Chiffrement et Déchiffrement

  • Implémenter les fonctions de chiffrement et de déchiffrement en utilisant l'exponentiation modulaire.

4. Déchiffrement avec le Théorème des Restes Chinois (CRT)

  • Déchiffrement optimisé en résolvant : M ≡ C^d mod p M ≡ C^d mod q

5. Étude de la Malléabilité

  • Montrer comment un attaquant peut modifier un message chiffré sans connaître la clé privée.

6. Récupération des Facteurs Premiers

  • Implémenter un algorithme permettant de retrouver p et q si φ(N) est connu.

[!Jusqu'à maintenant, j'ai arrêté mon implémentation à la 6ème question]

7. Attaque sur un Message Chiffré avec Clés Différentes

  • Montrer comment un attaquant peut retrouver M si le même message est envoyé à Alice et Bob.

8. Génération Sécurisée de Clés

  • Utiliser les classes KeyPair, KeyPairGenerator, PublicKey, et PrivateKey pour générer une paire de clés de 1024 bits.

9. RSA avec Padding

  • Implémenter le chiffrement et le déchiffrement avec le schéma de padding PKCS#1.

10. Signature Numérique

  • Générer et vérifier une signature numérique en utilisant deux méthodes :
  • Avec MessageDigest et Cipher.
  • Avec la classe Signature.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages