Application de Messagerie Sécurisée :
RSA, AES-GCM
ENSPY
December 11, 2025
(ENSPY) Application de Messagerie Sécurisée: RSA et AES-GCM
December 11, 2025 1/1
Sommaire
(ENSPY) Application de Messagerie Sécurisée: RSA et AES-GCM
December 11, 2025 2/1
Introduction
Contexte et Objectifs
Contexte : Communications numériques sensibles (messagerie
instantanée)
Problème : Confidentialité, intégrité, authentification
Solution : Approche hybride RSA-AES
Algorithmes principaux :
RSA (chiffrement asymétrique, échange de clés)
AES-256 (chiffrement symétrique)
GCM (mode authentifié)
(ENSPY) Application de Messagerie Sécurisée: RSA et AES-GCM
December 11, 2025 3/1
RSA : Fondements Mathématiques
Arithmétique modulaire :
a ≡ b (mod n) ⇐⇒ n | (a − b)
Nombres premiers : Entier p ≥ 2 divisible uniquement par 1 et p
PGCD : gcd(a, b) = plus grand diviseur commun
Algorithme d’Euclide étendu : Pour a, b entiers, trouve u, v tels
que :
au + bv = gcd(a, b)
(ENSPY) Application de Messagerie Sécurisée: RSA et AES-GCM
December 11, 2025 4/1
Théorèmes Clés pour RSA
Théorème d’Euler : Si gcd(a, n) = 1, alors
aφ(n) ≡ 1 (mod n)
Indicatrice d’Euler : φ(n) = nombre d’entiers < n premiers avec n
Si p premier : φ(p) = p − 1
Si n = pq avec p, q premiers : φ(n) = (p − 1)(q − 1)
Petit théorème de Fermat : Si p premier et p ∤ a, alors
ap−1 ≡ 1 (mod p)
(ENSPY) Application de Messagerie Sécurisée: RSA et AES-GCM
December 11, 2025 5/1
Génération des Clés RSA - Détails
1 Choisir deux grands nombres premiers p et q
Typiquement 1024 bits chacun (pour RSA-2048)
Tests de primalité : Miller-Rabin, AKS
2 Calculer n = p × q
n : module RSA (2048 bits)
Public : connu de tous
3 Calculer φ(n) = (p − 1)(q − 1)
Secret : connaissance de φ(n) équivalente à connaissance de p et q
4 Choisir e tel que 1 < e < φ(n) et gcd(e, φ(n)) = 1
e = 65537 (nombre de Fermat F4 = 216 + 1)
Petit e pour efficacité
5 Calculer d = e −1 mod φ(n)
Utilise l’algorithme d’Euclide étendu
d : exposant de déchiffrement (clé privée)
(ENSPY) Application de Messagerie Sécurisée: RSA et AES-GCM
December 11, 2025 6/1
Chiffrement et Déchiffrement RSA
Clé publique : (n, e)
Clé privée : (n, d) ou (p, q, d)
Chiffrement : Pour message M < n
C = Me mod n
Déchiffrement :
M = Cd mod n
Preuve de correction :
C d ≡ (M e )d ≡ M ed (mod n)
≡ M 1+kφ(n) (mod n) (car ed ≡ 1 mod φ(n))
≡ M · (M φ(n) )k ≡ M · 1k ≡ M (mod n)
par le théorème d’Euler si gcd(M, n) = 1
(ENSPY) Application de Messagerie Sécurisée: RSA et AES-GCM
December 11, 2025 7/1
Exemple RSA Complet
Exemple avec petits nombres
Choisir p = 61, q = 53 (premiers)
n = 61 × 53 = 3233
φ(n) = (61 − 1)(53 − 1) = 60 × 52 = 3120
Choisir e = 17 (premier avec 3120)
Calculer d = 17−1 mod 3120
Algorithme d’Euclide étendu :
3120 = 183 × 17 + 9
17 = 1 × 9 + 8
9=1×8+1
En remontant : 1 = 2 × 3120 − 367 × 17
Donc d = −367 mod 3120 = 2753
Message M = 65
Chiffrement : C = 6517 mod 3233 = 2790
Déchiffrement
(ENSPY) : 27902753 mod 3233
Application = 65 Sécurisée:
de Messagerie RSA et AES-GCM
December 11, 2025 8/1
Sécurité RSA
Problème sous-jacent : Factorisation d’entiers
Résoudre n = p × q pour retrouver p et q
Taille des clés :
RSA-1024 : factorisé (déconseillé)
RSA-2048 : 112 bits de sécurité, valide jusqu’en 2030
RSA-3072 : 128 bits, recommandé pour long terme
RSA-4096 : 192 bits, pour sécurité maximale
Attaques connues :
Factorisation (GNFS)
Attaques temporelles/canaux auxiliaires
Attaques par padding incorrect
Contre-mesures : OAEP padding, implémentation constant-time
(ENSPY) Application de Messagerie Sécurisée: RSA et AES-GCM
December 11, 2025 9/1
AES : Vue d’Ensemble
Standard : FIPS PUB 197 (2001)
Type : Chiffrement par blocs symétrique
Bloc : 128 bits (16 octets)
Clés : 128, 192, ou 256 bits
Tours : 10 (AES-128), 12 (AES-192), 14 (AES-256)
Architecture : Substitution-Permutation Network (SPN)
Version Taille clé Nombre de tours
AES-128 128 bits 10
AES-192 192 bits 12
AES-256 256 bits 14
(ENSPY) Application de Messagerie Sécurisée: RSA et AES-GCM
December 11, 2025 10 / 1
État AES
Données organisées en matrice 4 × 4 d’octets
s0,0 s0,1 s0,2 s0,3
s1,0 s1,1 s1,2 s1,3
État =
s2,0 s2,1 s2,2 s2,3
s3,0 s3,1 s3,2 s3,3
Chaque si,j est un octet (8 bits)
Lecture/écriture par colonnes
(ENSPY) Application de Messagerie Sécurisée: RSA et AES-GCM
December 11, 2025 11 / 1
Transformations AES
SubBytes : Transformation non-linéaire
Chaque octet remplacé selon S-Box
S-Box = inversion dans GF (28 ) + transformation affine
ShiftRows : Décalage circulaire
0 1 2 3 0 1 2 3
0 1 2 3 1 2 3 0
0 1 2 3 → 2
3 0 1
0 1 2 3 3 0 1 2
MixColumns : Transformation linéaire
Multiplication matricielle dans GF (28 )
AddRoundKey : XOR avec sous-clé
(ENSPY) Application de Messagerie Sécurisée: RSA et AES-GCM
December 11, 2025 12 / 1
Schéma AES Complet
Texte clair
AddRoundKey Sous-clé 0
SubBytes
ShiftRows
MixColumns
AddRoundKey Sous-clé 1
..
.
SubBytes
ShiftRows
AddRoundKey Sous-clé N
(ENSPY) Application de Messagerie Sécurisée: RSA et AES-GCM
December 11, 2025 13 / 1
Key Expansion AES
Objectif : Générer Nr + 1 sous-clés à partir de la clé maître
Processus :
1 Clé initiale → premières Nk colonnes (Nk = 4, 6, 8)
2 Pour colonne
( i > Nk : Ci = Di ⊕ Ci−Nk
Ci−1 si Nk ∤ (i − 1)
3 Di =
SubWord(RotWord(Ci−1 )) ⊕ Rcon(i−1)/Nk si Nk | (i − 1)
Rcon (Round Constants) : Rconi = (X i−1 , 0, 0, 0)
Tour Rcon (hex)
1 01 00 00 00
2 02 00 00 00
3 04 00 00 00
.. ..
. .
10 36 00 00 00
(ENSPY) Application de Messagerie Sécurisée: RSA et AES-GCM
December 11, 2025 14 / 1
Corps Finis GF (28 ) - Définition
Corps fini : Ensemble fini avec opérations +, × satisfaisant propriétés
algébriques
GF (28 ) = corps à 28 = 256 éléments
Éléments = polynômes de degré < 8 à coefficients dans
GF (2) = {0, 1}
Exemple : x 7 + x 5 + x 3 + 1 représente 101010012 = A916
Polynôme irréductible d’AES :
m(x) = x 8 + x 4 + x 3 + x + 1
En hexadécimal : 11B16
En binaire : 1000110112
(ENSPY) Application de Messagerie Sécurisée: RSA et AES-GCM
December 11, 2025 15 / 1
Opérations dans GF (28 )
Addition : XOR bit-à-bit
(x 7 + x 3 + x + 1) + (x 5 + x 3 + x) = x 7 + x 5 + 1
Example
2A16 + 3716 = 1D16
001010102 ⊕ 001101112 = 000111012
Multiplication : Multiplication polynomiale modulo m(x)
Degré du produit < 16
Réduction modulo m(x) par division polynomiale
(ENSPY) Application de Messagerie Sécurisée: RSA et AES-GCM
December 11, 2025 16 / 1
Exemple Détaillé de Multiplication
Multiplication 2A16 × 3716 dans GF (28 )
1 Représentation polynomiale :
2A16 = 001010102 = x 5 + x 3 + x
3716 = 001101112 = x 5 + x 4 + x 2 + x + 1
2 Multiplication :
(x 5 + x 3 + x)(x 5 + x 4 + x 2 + x + 1)
= x 10 + x 9 + x 7 + x 6 + x 5 + x 8 + x 7 + x 5 + x 4 + x 3 + x 6 + x 5 + x 3 + x 2 + x
= x 10 + x 9 + x 8 + x 7 + x 6 + x 5 + x 4 + x 3 + x 2 + x
3 Réduction modulo m(x) = x 8 + x 4 + x 3 + x + 1 :
Diviser polynôme de degré 10 par polynôme de degré 8
x 10 ≡ x 6 + x 5 + x 4 + x 3 + x 2 mod m(x)
..
. (calculs similaires pour autres termes)
Résultat final : x 6 + x 5 + x 4 + x 2 + x + 1 = 011101112 = 7716
Donc 2A16 × 3716 = 7716 dans GF (28 ) avec m(x) d’AES.
(ENSPY) Application de Messagerie Sécurisée: RSA et AES-GCM
December 11, 2025 17 / 1
GCM : Vue d’Ensemble
Mode authentifié : Chiffrement + authentification en une passe
Standard : NIST SP 800-38D
Composants :
CTR : chiffrement
GHASH : authentification (dans GF (2128 ))
Entrées :
Clé AES (128, 192, ou 256 bits)
Nonce (IV) : 12 octets recommandé
Données authentifiées additionnelles (AAD) optionnelles
Texte clair
Sorties :
Texte chiffré
Tag d’authentification (16 octets typiquement)
(ENSPY) Application de Messagerie Sécurisée: RSA et AES-GCM
December 11, 2025 18 / 1
Mode CTR (Counter)
Idée : Chiffrer compteur, XOR avec texte clair
Ci = Pi ⊕ AESK (Counteri )
Construction du compteur :
Nonce (12 octets) + compteur (4 octets)
Counter0 = IV ∥0x00000001
Counteri = Counter0 + i
Avantages :
Parallélisable
Pas besoin de padding
Chiffrement/déchiffrement identiques
(ENSPY) Application de Messagerie Sécurisée: RSA et AES-GCM
December 11, 2025 19 / 1
GHASH - Authentification dans GF (2128 )
Corps : GF (2128 ) avec polynôme irréductible
g (x) = x 128 + x 7 + x 2 + x + 1
Clé de hachage : H = AESK (0128 )
Constante dérivée de la clé AES
Calcul GHASH : Pour blocs X1 , X2 , . . . , Xm
Y0 = 0
Yi = (Yi−1 ⊕ Xi ) · H dans GF (2128 )
Ym = GHASH(X1 , . . . , Xm )
Multiplication Galois = multiplication polynomiale mod g (x)
(ENSPY) Application de Messagerie Sécurisée: RSA et AES-GCM
December 11, 2025 20 / 1
Exemple GCM
Chiffrement d’un message avec AES-256-GCM
1 Entrées :
Clé : 32 octets aléatoires
Nonce : 12 octets aléatoires
Message : "Bonjour Bob!" (12 octets UTF-8)
AAD : vide
2 Processus :
Générer Counter0 = Nonce∥0x00000001
Chiffrement CTR : Ci = Pi ⊕ AESK (Counteri )
Calculer H = AESK (0128 )
Construire données GHASH : longueurs + texte chiffré
Calculer tag : T = GHASH(·) ⊕ AESK (Counter0 )
3 Sortie :
Nonce (12 octets)
Tag (16 octets)
Texte chiffré (12 octets)
Taille totale : 40 octets
(ENSPY) Application de Messagerie Sécurisée: RSA et AES-GCM
December 11, 2025 21 / 1
Approche Hybride : Principe
Combinaison optimale :
RSA : échange sécurisé des clés (asymétrique)
AES-GCM : chiffrement rapide des messages (symétrique authentifié)
Analogies :
RSA = enveloppe scellée contenant la clé
AES-GCM = contenu protégé par la clé
Avantages :
Confidentialité forward : nouvelle clé AES par session
Performance : RSA uniquement pour petites données (clés)
Authentification intégrée via GCM
(ENSPY) Application de Messagerie Sécurisée: RSA et AES-GCM
December 11, 2025 22 / 1
Protocole Hybride Détaillé
1 Initialisation :
Chaque utilisateur génère paire RSA (2048 bits)
Stocke clé publique sur serveur
2 Établissement session :
1 Alice récupère clé publique de Bob
2 Génère clé AES-256 aléatoire (KAES )
3 Chiffre KAES avec RSA (clé publique de Bob) → CK
3 Communication :
1 Chiffrement message avec AES-GCM(KAES )
2 Envoi : (Message chiffré, CK , Nonce, Tag)
3 Bob déchiffre CK avec sa clé privée RSA
4 Bob déchiffre message avec KAES
(ENSPY) Application de Messagerie Sécurisée: RSA et AES-GCM
December 11, 2025 23 / 1
Diagramme de Flux du Protocole Hybride
Alice Bob
−1
Générer KAES M = AESGCM (K
C = AESGCM (KAES , M) KAES = RSA(Pri
CK = RSA(PubB , KAES ) Recevoir (C ,
Via Serveur
Envoyer (C , CK )
(ENSPY) Application de Messagerie Sécurisée: RSA et AES-GCM
December 11, 2025 24 / 1
Avantages de l’Approche Hybride
Flexibilité :
Sécurité renforcée :
Clés RSA longues durées
Forward Secrecy
Clés AES par session
Authentification intégrée
Support multi-plateforme
Confidentialité bout-à-bout
Extensible (signatures, 2FA)
Serveur Zero-Knowledge
Robustesse :
Performance :
Résistant aux attaques
RSA uniquement pour clés
quantiques (AES-256)
AES-GCM rapide pour messages
Authentification GCM robuste
Overhead minimal (28 octets)
Protection contre replay attacks
(ENSPY) Application de Messagerie Sécurisée: RSA et AES-GCM
December 11, 2025 25 / 1
Architecture Logicielle
rsa_manager.py GUI (PyQt5)
aes_manager.py [Link]
key_exchange.py Réseau/Socket
Architecture modulaire - Séparation des préoccupations
Figure: Architecture modulaire de l’application
(ENSPY) Application de Messagerie Sécurisée: RSA et AES-GCM
December 11, 2025 26 / 1
Code : Gestionnaire RSA
(ENSPY) Application de Messagerie Sécurisée: RSA et AES-GCM
December 11, 2025 27 / 1
Code : Gestionnaire AES-GCM
(ENSPY) Application de Messagerie Sécurisée: RSA et AES-GCM
December 11, 2025 28 / 1
Code : Orchestrateur Hybride
(ENSPY) Application de Messagerie Sécurisée: RSA et AES-GCM
December 11, 2025 29 / 1
Base de Données et Persistance
SQLite : Base de données légère embarquée
Tables principales :
users : informations utilisateurs
public_keys : clés publiques RSA
sessions : sessions actives
messages : messages chiffrés (optionnel)
Schéma simplifié :
(ENSPY) Application de Messagerie Sécurisée: RSA et AES-GCM
December 11, 2025 30 / 1
Format des Messages Réseau
Format binaire compact :
Nonce (12 octets) ∥ Tag (16 octets) ∥ Chiffré (variable)
| {z } | {z } | {z }
Aléatoire Authentification Message
Structure JSON pour échange de clés :
Performance :
Overhead fixe : 28 octets
Compression optionnelle
Pas de padding nécessaire (CTR mode)
(ENSPY) Application de Messagerie Sécurisée: RSA et AES-GCM
December 11, 2025 31 / 1
Sécurité de l’Implémentation
Meilleures pratiques :
Génération aléatoire Tests de sécurité :
cryptographique Tests unitaires cryptographiques
Gestion sécurisée des clés Analyse statique de code
Padding OAEP pour RSA Tests de pénétration
Nonce unique par message Validation des formats
Validation stricte des entrées Audit :
Protections : Revue de code
Contre timing attacks Tests de conformité
Contre replay attacks Benchmarks de performance
Contre padding oracle Analyse de vulnérabilités
Validation tags GCM
(ENSPY) Application de Messagerie Sécurisée: RSA et AES-GCM
December 11, 2025 32 / 1
Résumé et Contributions
Système complet : Messagerie sécurisée de bout en bout
Approche hybride : RSA (2048 bits) + AES-256-GCM
Mathématiques rigoureuses : Théorie solide derrière
l’implémentation
Implémentation robuste : Architecture modulaire en Python
Sécurité prouvée : Basée sur standards cryptographiques
Innovations principales
Intégration transparente RSA/AES-GCM
Serveur Zero-Knowledge
Format de message optimisé
Gestion sécurisée des sessions
(ENSPY) Application de Messagerie Sécurisée: RSA et AES-GCM
December 11, 2025 33 / 1
Perspectives et Améliorations
Évolutions cryptographiques : Optimisations techniques :
RSA-3072/4096 bits Performances réseau
Cryptographie post-quantique Compression intelligente
Signatures numériques Cache des clés
Authentification multifacteur Support mobile natif
Améliorations fonctionnelles : Extensions :
Chiffrement de fichiers API REST sécurisée
Messages éphémères Plugins tiers
Groupes sécurisés Audit trail
Synchronisation multi-appareils Conformité RGPD
(ENSPY) Application de Messagerie Sécurisée: RSA et AES-GCM
December 11, 2025 34 / 1