Introduction L’échange de clé de Diffie-Hellman est une méthode pour partager un secret entre 2 individus de manière sécurisé, même si leurs transmissions sont sur écoute.
Présentation des courbes elliptiques : Avant de s’attaquer à la partie cryptographique, il est nécessaire de comprendre le fonctionnement global des courbes elliptiques.
Une courbe elliptique est un ensemble de points $(x,y)$ vérifiant une équation du type: $y^2=x^3+ax+b$, autrement dit , on définit une courbe elliptique comme :
Introduction AES est un chiffrement par bloc basé sur des opérations matricielles élémentaires. Avant de s’attaquer à tout ce système, il est important de les avoirs en tête. Voici donc une explication rapide sur le mode de fonctionnement d’AES.
Présentation rapide d’AES On souhaite chiffrer un bloc se 16 bytes, la première étape est de l’exprimer sous la forme de matrice 4*4:
$$ \begin{pmatrix} 1 & 2 & 3 & 4 \newline 5 & 6 & 7 & 8 \newline 9 & 10 & 11 & 12 \newline 13 & 14 & 15 & 16 \newline \end{pmatrix} $$ Cette matrice va subir plusieurs modifications.
Introduction Feal est un algorithme de chiffrement présenté dans la fin des année 80 par Akihiro Shimizu et Shoji Miyaguchi. C’est un chiffrement par bloc qui à concurrencé le DES et qui est aujourd’hui obsolète.
Feal (Fast Data Encipherment Algorithm) est un chiffrement de type réseau de Feistel. Il a connu plusieurs variations que nous allons voir ici.
Par la suite , des illustrations seront issue du blog de Jon King
Introduction Adi Shamir , né le 6 juillet 1952 à Tel Aviv, est un mathématicien et un cryptologue israélien reconnu comme l’un des experts les plus éminents en cryptanalyse. Il a créé un algorithme de cryptographie utilisant le concept de partage de clé secrète.
L’idée principal de son chiffrement est de partagé la clé de déchiffrement d’un algorithme quelconque en plusieurs parties. Seul la réunion de celles-ci conduiront au texte déchiffré.
Introduction : Généralement, dans un contexte de CTF , il est possible de tomber sur un oracle de déchiffrement RSA , on nous donne accès :
à un oracle permettant de déchiffrer des messages sauf le flag chiffré le flag chiffré Voici donc plusieurs méthodes pour trouver le flag en clair :
Méthode 1: La première méthode est de Factoriser le message $c$ . On peut ainsi demander de déchiffrer les facteurs du flag puis remultiplier les clairs entre eux pour récupérer le message original:
Introduction : Le chiffrement RSA permet l’utilisation d’un système de signature des messages lors de la transmission de ceux-ci.
Ainsi, un message chiffré peut être accompagné de sa signature qui atteste de son intégrité au prêt du serveur.
Voici un message chiffré & signé :
$<s,c>$ Fonctionnement global. Le chiffrement RSA se compose :
un exposant de chiffrement une clé publique une clé privée On va réutiliser les propriétés arithmétiques du chiffrement pour inventer la signature noté $s$ .
Introduction : Don Coppersmith est un mathématicien et cryptologue américain né en 1950. Il a contribué dans de nombreux domaines de la Cryptographie et en particulier le chiffrement RSA.
Il s’intéresse particulièrement aux liens possibles entre des notions d’algèbres et les mathématiques arithmétiques du chiffrement RSA
Papier de recherche: CopperSmith présente un papier de recherche mathématique nommé : Finding Small Solutions to Small Degree Polynomials
Il y explique comment trouver les racines de polynômes à 1 et 2 variables , modulo un entier n grâce à la réduction de base via des matrices et l’algorithme Lenstra–Lenstra–Lovász (LLL).
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 .