Retour au blog
cryptographie16 min de lecture7 juin 2026

Cryptographie asymétrique : RSA, ECC et le chiffrement moderne

Comment fonctionne RSA, pourquoi ECC est plus efficace, comment Diffie-Hellman permet un échange de clé sécurisé sur un canal non chiffré — et ce que le quantique va changer.

La cryptographie asymétrique est l'une des inventions les plus importantes du XXe siècle. Avant 1976, partager un secret sur un canal non sécurisé semblait mathématiquement impossible. Diffie, Hellman, Rivest, Shamir et Adleman ont changé cela pour toujours. Ce guide explique comment fonctionnent RSA et ECC en profondeur — et pourquoi l'ère quantique va tout changer.

Le problème fondamental de la distribution des clés

Avant 1976, tout chiffrement nécessitait que les deux parties partagent préalablement un secret — la clé. Pour communiquer secrètement avec 1000 personnes différentes, il fallait 1000 clés secrètes distinctes, transmises en sécurité. Pour une banque avec des millions de clients, c'était un problème pratiquement insoluble.

Whitfield Diffie et Martin Hellman ont résolu ce problème avec une idée élégante : une fonction mathématique à sens unique avec trappe. Facile à calculer dans un sens, pratiquement impossible à inverser sans la clé secrète.

L'échange Diffie-Hellman — Le miracle mathématique

L'échange Diffie-Hellman permet à deux parties de dériver un secret commun sur un canal public, sans jamais le transmettre. Le raisonnement utilise les propriétés de l'exponentiation modulaire.

python
# Simulation simplifiée de Diffie-Hellman
# (Valeurs réelles utilisent des nombres de 2048+ bits)

# Paramètres publics (connus de tous)
p = 23  # Nombre premier
g = 5   # Générateur

# Alice choisit un secret privé a
a = 6
A = (g ** a) % p  # Alice publie A = g^a mod p = 8

# Bob choisit un secret privé b
b = 15
B = (g ** b) % p  # Bob publie B = g^b mod p = 19

# Alice calcule le secret commun
secret_alice = (B ** a) % p  # = 19^6 mod 23 = 2

# Bob calcule le secret commun
secret_bob = (A ** b) % p    # = 8^15 mod 23 = 2

# Les deux obtiennent 2 — sans jamais le transmettre !
assert secret_alice == secret_bob  # True
print(f"Secret commun : {secret_alice}")

# Un attaquant qui observe A=8, B=19, p=23, g=5
# Doit résoudre le problème du logarithme discret : trouver a tel que 5^a mod 23 = 8
# Avec des nombres de 2048 bits, c'est computationnellement infaisable

La sécurité de Diffie-Hellman repose sur la difficulté du problème du logarithme discret : connaissant g, p et g^a mod p, trouver a est exponentiellement difficile pour de grands nombres premiers. En pratique, p doit être d'au moins 2048 bits (préférez 3072+).

RSA — Rivest, Shamir, Adleman (1977)

RSA est basé sur la difficulté de factoriser le produit de deux grands nombres premiers. Il est facile de multiplier deux nombres premiers p et q pour obtenir n = p×q. Mais connaissant uniquement n, retrouver p et q est extrêmement difficile pour de grands nombres.

python
# Génération d'une paire de clés RSA (simplifié pédagogique)
# En production : utiliser des bibliothèques comme cryptography ou OpenSSL

# 1. Choisir deux nombres premiers (en pratique : 2048+ bits)
p, q = 61, 53

# 2. Calculer n = p * q (le modulo public)
n = p * q  # = 3233

# 3. Calculer φ(n) = (p-1)(q-1)
phi = (p - 1) * (q - 1)  # = 3120

# 4. Choisir e premier avec φ(n) (exposant public)
e = 17  # Souvent 65537 (0x10001) en pratique

# 5. Calculer d = e^-1 mod φ(n) (clé privée, via algorithme d'Euclide étendu)
d = pow(e, -1, phi)  # = 2753

# Clé publique : (n=3233, e=17)
# Clé privée : (n=3233, d=2753)

# Chiffrement : c = m^e mod n
message = 65
chiffre = pow(message, e, n)  # = 2790

# Déchiffrement : m = c^d mod n
dechiffre = pow(chiffre, d, n)  # = 65
assert dechiffre == message

RSA en pratique avec OpenSSL

bash
# Générer une paire de clés RSA 4096 bits
openssl genrsa -out cle_privee.pem 4096
openssl rsa -in cle_privee.pem -pubout -out cle_publique.pem

# Chiffrer un fichier avec la clé publique
openssl rsautl -encrypt -inkey cle_publique.pem -pubin -in secret.txt -out secret.enc

# Déchiffrer avec la clé privée
openssl rsautl -decrypt -inkey cle_privee.pem -in secret.enc -out secret_dechiffre.txt

# Signer un fichier (hash SHA-256 signé avec clé privée)
openssl dgst -sha256 -sign cle_privee.pem -out signature.bin document.pdf

# Vérifier la signature
openssl dgst -sha256 -verify cle_publique.pem -signature signature.bin document.pdf

ECC — Elliptic Curve Cryptography

La cryptographie sur courbes elliptiques offre le même niveau de sécurité que RSA avec des clés beaucoup plus courtes. Une clé ECC de 256 bits est aussi sûre qu'une clé RSA de 3072 bits. La raison : les courbes elliptiques posent le problème du logarithme discret elliptique (ECDLP), encore plus difficile à résoudre.

  • Courbe P-256 (NIST) : sécurité équivalente à RSA-3072, clé de 32 octets
  • Curve25519 / Ed25519 : conçue par Daniel Bernstein, résistante aux attaques par canal auxiliaire, utilisée dans Signal, WireGuard, SSH moderne
  • secp256k1 : utilisée par Bitcoin pour les signatures de transactions
  • Avantages ECC : clés plus courtes, calculs plus rapides, moins de mémoire — idéal pour les appareils IoT
bash
# Générer une clé Ed25519 (recommandée pour SSH)
ssh-keygen -t ed25519 -C "azuka@xytherion"

# Générer une clé ECDSA P-256
openssl ecparam -name prime256v1 -genkey -noout -out ec_privee.pem
openssl ec -in ec_privee.pem -pubout -out ec_publique.pem

# Signer avec Ed25519
openssl genpkey -algorithm Ed25519 -out ed25519_privee.pem
openssl dgst -sha256 -sign ed25519_privee.pem document.txt > signature.bin

PKI — Infrastructure à clé publique

La PKI (Public Key Infrastructure) résout le problème de la confiance : comment savoir que la clé publique appartient vraiment à la personne que vous croyez ? Les autorités de certification (CA) signent des certificats qui attestent qu'une clé publique appartient à une identité vérifiée.

  1. 1Une CA racine (Root CA) est pré-installée dans votre OS/navigateur et est implicitement de confiance
  2. 2Des CA intermédiaires sont signées par la CA racine
  3. 3Un certificat final (leaf) est signé par une CA intermédiaire pour un domaine précis
  4. 4La chaîne de confiance permet à votre navigateur de valider un certificat sans connaître la CA directement
  5. 5Let's Encrypt a rendu les certificats TLS gratuits et automatisables — révolution en 2014

GPG — Chiffrement de bout en bout pour tous

GnuPG (GPG) est l'implémentation open-source du standard OpenPGP. Il permet à chacun de chiffrer des emails, fichiers et communications avec sa propre paire de clés — sans dépendre d'une CA centralisée (modèle Web of Trust).

bash
# Générer une paire de clés GPG
gpg --full-generate-key  # Choisir Ed25519 + Curve25519

# Exporter sa clé publique (à partager)
gpg --armor --export mon@email.com > ma_cle_publique.asc

# Importer la clé publique de quelqu'un
gpg --import sa_cle_publique.asc

# Chiffrer un fichier pour quelqu'un
gpg --encrypt --recipient destinataire@email.com fichier.txt
# → Produit fichier.txt.gpg

# Déchiffrer
gpg --decrypt fichier.txt.gpg > fichier_dechiffre.txt

# Signer un fichier
gpg --sign --armor document.txt

# Vérifier une signature
gpg --verify document.txt.asc

La cryptographie quantique et l'avenir

L'algorithme de Shor, exécuté sur un ordinateur quantique à grande échelle, casse RSA et ECC en temps polynomial. Ce n'est pas encore une menace immédiate (les ordinateurs quantiques actuels n'ont pas assez de qubits stables), mais la menace "Harvest Now, Decrypt Later" est réelle : des acteurs collectent aujourd'hui des communications chiffrées pour les déchiffrer dans 10-15 ans.

  • CRYSTALS-Kyber (ML-KEM) : nouveau standard NIST pour le chiffrement post-quantique
  • CRYSTALS-Dilithium (ML-DSA) : nouveau standard NIST pour les signatures post-quantiques
  • SPHINCS+ (SLH-DSA) : signatures basées sur les fonctions de hachage — résistantes même si lattices sont cassées
  • TLS 1.3 + Kyber : déjà déployé par Google Chrome (X25519Kyber768) et Cloudflare
  • Migration : les organisations sensibles (gouvernement, défense, santé) doivent planifier la migration post-quantique maintenant

Pour chiffrer vos emails dès maintenant, installez GPG avec l'extension Enigmail (Thunderbird) ou GPG Suite (macOS). Pour le chat, Signal utilise le protocole Signal (Double Ratchet + X3DH) qui offre la confidentialité persistante avancée (forward secrecy) — si une clé est compromise, les messages passés restent protégés.

Sources & références

  1. 1
    Diffie, Hellman — New Directions in Cryptography (1976)

    Le papier fondateur de la cryptographie à clé publique — lecture historique

  2. 2
  3. 3
    NIST FIPS 186-5 — Digital Signature Standard (DSA/ECDSA/EdDSA)

    Standard NIST pour les algorithmes de signature numérique

  4. 4
    NIST — Post-Quantum Cryptography Standards (2024)

    ML-KEM (Kyber), ML-DSA (Dilithium), SLH-DSA (SPHINCS+) — les nouveaux standards post-quantiques

  5. 5
    Bernstein, Lange — Introduction à la cryptographie sur courbes elliptiques

    Référence mathématique sur les formules d'addition pour courbes elliptiques

#rsa#ecc#cryptographie#diffie-hellman#post-quantique#tls

Testez vos configurations

Xytherion Tools propose des outils gratuits pour vérifier vos DNS, auditer votre SSL, tester SPF/DKIM/DMARC et bien plus — directement depuis votre navigateur.

Cryptographie asymétrique : RSA, ECC et le chiffrement moderne — Xytherion Tools