--- tags: revision, CRYPI title : Introduction à la crypto --- # Introduction ## Lexique Cryptologie : Science du secret Cryptographie : Art de rendre inintelligible un message excepté pour son destinataire Cryptosystème : système permettant la mise en oeuvre de la cryptographie Cryptanalyse : Analyse de la sécurité d'un cryptosystème # Prérequis ## Objectifs Confidentialité -> **Chiffrement** Intégrité : Aucune altération (volontaire ou non), involontaire -> codes correcteurs d'erreurs, volontaire -> **crypto HMAC (hash message authentication code)** Authentification : la personne est bien ce qu'elle prétend être -> **protocole d'authentification** Non-répudiation : l'expéditeur ne peut pas nier être à l'origine d'un message qu'il a envoyé et il peut prouver être l'émetteur du message -> **signature** ## Formalisation $\mathcal{M}$ -> espace des message en clair (Plain text) $\mathcal{C}$ -> espace des messages chiffrés $\mathcal{K}$ -> espace des clefs KeyGen ou $\mathcal{KG}$ -> algo de génération de clefs $\mathcal{E}$ -> fonction de chiffrement $\mathcal{D}$ -> fonction de déchiffrement ### Chiffrement $\mathcal{E}$ : $(\mathcal{M}, \mathcal{K}) \rightarrow \mathcal{C}$ ### Déchiffrement $\mathcal{D}$ : $(\mathcal{C}, \mathcal{K}) \rightarrow \mathcal{M}$ ## Passage des mathématiques à l'informatique Domaine mathématiques : $\mathcal{M},\mathcal{C}$ peuvent être infinis. **Preuve de sécurité** : modélisation qui permet d'évaluer la sécurité d'une brique crypto, nécessite que les ensembles soient finis Domaine informatique : $\mathcal{M},\mathcal{C}$ et $\mathcal{K}$ sont finis, les fonctions sont des algo # Histoire ## Trois périodes Âge artisanal : antiquité à 1918 Âge technique : 1919-1975 Âge paradoxal : depuis 1976 ## Âge artisanal Chiffrement de césar : décalage des lettres de l'alphabet Chiffrement de Vigenère : on enroule un ruban autour d'un baton, on écrit le texte puis on déroule le ruban Chiffrement "marathonien" : on tatoue un message sur le crane rasé d'un homme et on attend que ses cheveux repoussent ### Formalisation du chiffrement de césar $\mathcal{M} = \{0,1,...,25 \}$ $\mathcal{C} = \{0,1,...,25 \}$ $\mathcal{K} = \{0,1,...,25 \}$ $\mathcal{KG} : () \rightarrow rand(\mathcal{K})$ $\mathcal{E} : (\mathcal{M}, \mathcal{K}) \rightarrow (\mathcal{M} + \mathcal{K}) \mod{26}$ $\mathcal{D} : (\mathcal{C}, \mathcal{K}) \rightarrow (\mathcal{C} - \mathcal{K}) \mod{26}$ Cryptanalyse possible avec fréquence des lettres en fonction des langues ## Äge paradoxal 1978 : RSA -> début racines modulaires, décomposition en facteurs premiers 1978 : MacEliece -> codes correcteurs d'erreurs 1978 : Merkle-Helmann -> problème du sac à dos 1984 : ElGammal log discret Plus récemment : chiffrement homomorphique (utilisation dans le cloud) # Principes mathématiques ## Génération d'aléas Objectif : Génération de clefs secrètes, couples de clefs, génération de padding, chiffrement type One-time pad : besoin d'un échange sécurisé de l'aléa ### Générateur de pseudo-aléas Fonction déterministe : $\mathcal{g} : \{0,1\}^{n} \mapsto \{0,1\}^{nc}$ pour un réel $\mathcal{c} \gt 1$ de telle sorte que si $x \in \{0,1\}$ choisi aléatoirement alors $g(x)$ semble aléatoire. Probabilité de pouvoir prédire le bit suivant de 1/2 ### pseudo-aléa et FSU (fonction à sens unique) Un générateur de pseudo-aléas est une FSU ### Construction d'un GPA (générateur de pseudo-aléas) Méthode : * souce physique (ex : temps) * retraitement de la sortie de la source physique -> algo de chiffrement symétrique Comment tester la qualité ? Besoin de passer de nombreux tests ## FSU Principe : * facilement calculable * "difficile" à inverser (temps de calcul long) sans connaissance d'un "secret" * facile à inverser en connaissant un "secret" ### Définition On appelle une FSU : $f : \{0,1\}^* \rightarrow \{0,1\}^*$ Elle vérifie les propritétes suivantes : * $\forall x \in \{0,1\}^*, f(x)$ est calculable en un temps polynomial en $|x|$ * Il n'existe pas d'algo qui, $\forall$ $y$ donne en temps polynomial $|y|$ un antécédent $x$ tel que $f(x)=y$ * Il existe un polynôme $p$ tel que $\forall$ $y \in \{0,1\}^*$ dans l'image de $f$, $\exists$ $x \in \{0,1\}^*$ tel que * $f(x) = y$ * $|x| \leq p(|y|)$ Résultat théorique : l'existence des FSU est équivalente au problème $P \neq NP$ ### Fonctions à trappe FSU faciles à inverser avec un secret Ex : RSA ## Fonction de hachage Obtention de l'empreinte d'un message Objectif : assurer l'intégrité d'un message, éviter la modification involontaire (transmission) ou volontaire (cryptographie) Efficacité : compression et facile à calculer Sécurité : * Première pré-image (FSU) : Soit $y \in Im(\mathcal{H})$, il est diffice de trouver $x$ tel que $\mathcal{H}(x) = y$ * Seconde pré-image : Soit $x$ donné, il est difficile de trouver $x' \neq x$ tel que $\mathcal{H}(x) = \mathcal{H}(x')$. Objectif : éviter ré-utilisation du haché Dimension faible de l'espace d'arrivée par rapport à celle de l'espace de départ Exemples : MD5, SHA1, SHA2, SHA3 (nouveau paradigme par rapport à SHA1 et SHA2) # Théorie de la complexité ## Problèmes utilisés en cryptographie Test de primalité, générer des nombres premiers ### Log discret Entrées : $p$ premier, $\alpha$ primitif dans $\Bbb F_{p^*}$, $\beta \in F_{p^*}$ Question : trouver $k$ entier tel que $\alpha^k = \beta$ ## Motivations Tester les cryptosystèmes : dimensionner ces systèmes : * Durée de vie prévue du système * complexité du ou des problèmes sous-jacents * Hypothèse d'évolutions techniques * Nouvelles attaques