For the complete documentation index, see llms.txt. This page is also available as Markdown.

👹‍🔬Crypto - Common Modulus Attack

1. ÉnoncĂ©

Deux agents d'Orion, sous couverture, communiquent via des canaux RSA distincts. Nous avons intercepté leurs messages chiffrés (msg1.enc, msg2.enc) ainsi que leurs clés publiques respectives (agent1_pub.pem, agent2_pub.pem). Déchiffrez le message d'origine pour intercepter leur échange.

Format du flag : HTS{...}

Fichiers fournis

Fichier
Taille
Description

agent1_pub.pem

451 octets

Clé publique RSA de l'agent 1

agent2_pub.pem

451 octets

Clé publique RSA de l'agent 2

msg1.enc

256 octets

Message chiffré avec la clé de l'agent 1

msg2.enc

256 octets

Message chiffré avec la clé de l'agent 2

451B
Ouvrir
451B
Ouvrir
256B
Ouvrir
256B
Ouvrir

2. Analyse des clés publiques

La premiÚre étape consiste à inspecter les deux clés publiques :

Résultat :

ParamĂštre
agent1_pub.pem
agent2_pub.pem

Taille

2048 bits

2048 bits

Modulus n

0xac84e669be0a...f2f3d7

identique

Exposant e

65537 (0x10001)

65539 (0x10003)

Observation

Les deux agents partagent exactement le mĂȘme modulus n (2048 bits), mais utilisent des exposants publics diffĂ©rents :

  • e₁ = 65537 (exposant RSA standard)

  • e₂ = 65539 (exposant RSA non standard)

Cette configuration est la condition exacte d'une attaque Common Modulus.


3. La vulnérabilité : Common Modulus Attack

Principe

L'attaque Common Modulus exploite le scĂ©nario oĂč le mĂȘme message m est chiffrĂ© deux fois avec le mĂȘme modulus n mais deux exposants diffĂ©rents e₁ et e₂ :

Condition nécessaire

L'attaque fonctionne si et seulement si :

Vérifions :

Démonstration mathématique

Par le thĂ©orĂšme de BĂ©zout, puisque gcd(e₁, e₂) = 1, il existe des entiers a et b tels que :

En appliquant l'algorithme d'Euclide Ă©tendu sur e₁=65537 et e₂=65539 :

En remontant :

Donc : a = 32769 et b = −32768

Récupération du message

On calcule :

Avec c₂^(−1) = inverse modulaire de c₂ mod n.

Cela fonctionne car :


4. Exploitation

Script Python

Exécution et résultat


5. Conclusion

La Common Modulus Attack illustre une rĂšgle fondamentale en cryptographie RSA :

Ne jamais utiliser le mĂȘme modulus n pour deux paires de clĂ©s distinctes.

MĂȘme si les exposants e₁ et e₂ sont diffĂ©rents, partager n permet Ă  un attaquant de retrouver le message original sans jamais connaĂźtre les clĂ©s privĂ©es, Ă  condition que gcd(e₁, e₂) = 1. Cette attaque ne nĂ©cessite que les deux chiffrĂ©s et les deux clĂ©s publiques.

Mis Ă  jour