Introduction L’attaque Franklin-Reiter sur le chiffrement RSA requiert d’avoir deux messages chiffrés avec une relation linéaire connu entre les deux messages.
Contextualisation Exemple :
$m_1 = 100000000000$ $m_2 = 100000000999$ Ici , si la relation entre les deux messages est linéaire puisque $m_1 + 999 == m_2$. Il est alors possible de retrouver le message à partir de :
$c_1 = m_1^e \pmod n$ $c_2 = m_2^e \pmod n$ A l’origine, cet attaque était faisable pour $e=3$ puis elle a était généralisé pour n’importe quel $e$ .
Introduction Il est courant d’envoyer le même message à plusieurs personnes et cela pose un gros problème de sécurité pour l’intégrité du message si une personne arrive à intercepter plusieurs communications.
Nous allons ici parler de l’attaque Hastads-Broadcast.
Contextualisation On sait qu’un message chiffré par RSA est de la forme :
$c = m^e \pmod n$ Nous avions vu ici que si $m$ était petit, on pouvait déchiffrer le message en appliquant une racine $3^{ième}$ au texte chiffré.
Introduction Nous allons ici voir 3 vulnérabilités sur RSA liés à un mauvais choix de l’exposant $e$.
Contextualisation On sait que $d$ , clé privée du chiffrement RSA est généré de la sorte:
$d = e^{-1} \pmod \Phi(n)$ Par convention, on utilise souvent $e=3$ ou $e=65537$ .
Mais pourquoi ? Ces nombres présentes plusieurs propriétés intéressante, d’abord :
ils sont premiers ils sont petits C’est $2$ premières propriétés sont majeures , elles permettent un temps de calcul raisonnable pour le chiffrement/déchiffrement des messages .
Introduction Nous allons ici voir 3 vulnérabilités sur RSA liés à un mauvais choix de l’exposant $e$.
Contextualisation On sait que $d$ , clé privée du chiffrement RSA est généré de la sorte:
$d = e^{-1} \pmod \Phi(n)$ Par convention, on utilise souvent $e=3$ ou $e=65537$ .
Mais pourquoi ? Ces nombres présentes plusieurs propriétés intéressante, d’abord :
ils sont premiers ils sont petits C’est $2$ premières propriétés sont majeures , elles permettent un temps de calcul raisonnable pour le chiffrement/déchiffrement des messages .
Introduction Nous allons ici voir 2 vulnérabilités sur RSA liés à une mauvaise génération de clé publique.
Vulnérabilité : On rappelle que $n$ et généré avec $p$ et $q$ très grand :
$n = p*q$ . On se place dans un cas idéal ou $p$ et $q$ sont cryptographiques et que donc $n$ n’est pas cassable par force brute .
La vulnérabilités réside dans le fait que $p$ et $q$ sont très proche.
Introduction Nous allons ici voir 2 vulnérabilités sur RSA liés à une mauvaise gestion des clés publiques .
Common Modulus . On suppose le schéma suivant :
On dispose de 2 chiffrés différent à partir d’un même message et d’une clé commune (n):
$c_1 = e_1^{-1} \pmod {\Phi(n)}$ $c_2 = e_2^{-1} \pmod {\Phi(n)}$ Alors si on a les égalité suivantes, alors on peut décoder le message $c_1$ ( = $c_2$):
Introduction Nous avons vu précédemment (ici) que le chiffrement RSA reposé sur 2 nombres premiers , notés $p$ et $q$. Grâce à ces deux nombres cryptographiquement grands, il était ainsi possible de générer une paires de clé $(publique/privée)$ et chiffré des messages grâce à celle-ci.
Nous allons voir ici quelques premières vulnérabilités sur le chiffrement RSA.
1) $P$ et $Q$ trop petit. On rappèle que la clé privée est :
Introduction Le chiffrement RSA est utilisé pour chiffrer des communications, il est aujourd’hui souvent utilisé pour les certificats SSL sur internet ou encore les clés de connections via le protocole ssh. Il est dit asymétrique car il fonctionne par paires de clés. Toute la sécurité de ce chiffrement repose sur le fait qu’il est aujourd’hui infiniment long de factoriser un nombre cryptographique rapidement .
Ronald Rivest, Adi Shamir et Leonard Adleman ont ainsi crée un chiffrement basé sur l’arithmétique modulaire, encore d’actualité aujourd’hui.
Introduction Voici les différents théorèmes et application pour comprendre le chiffrement RSA
Opération Modulaires L’opérateur modulo et une opération qui retourne le reste de la division euclidienne d’un nombre A par B:
$a \equiv r \pmod b$
$\Rightarrow~\exists~k \in N~|~a = b*k + r$
Si r = 0 , on dit que n divise a
Pgcd Le PGCD (ou gcd) de 2 nombres est le plus grand diviseur commun de ces deux nombres :
Oracle Tranquille 1&2 | Hackademint 2022 Nécessaires Python3 + Pwntools Descriptions : Challenge 1 : Nous avons trouvé un étrange service ouvert sur un de nos services hier. Complot des Illuminati? Prise de pouvoir des machines ? Opération marketing pour la sortie du prochain album de Justin Bieber ? Simple Oracle de déchiffrement RSA? Difficile de trancher. Pourriez-vous y jeter un coup d'œil? Challenge 2 : Le serveur semble avoir évolué depuis votre dernière enquête !