--- tags: revision, CRYPI title: Cours 2 --- # Formalisation de schémas asymétrique ## Schémas de signature ### Génération des paramètres du système : entrée $l$ -> paramètres de sécurité sortie -> paramètres du système(**SysParam**) ### Key Gen : Entrée -> $l$, SysParam Sortie -> ($\mathcal{KPriv}$, $\mathcal{KPub}$) ### Génération de la signature $(\mathcal{KPriv}$ $\times$ $\mathcal{M}) \rightarrow \mathcal{C}$ $(\mathcal{KPriv},\mathcal{m}) \mapsto \sigma$ ### Vérification de la signature $(\mathcal{KPub}$ $\times$ $\mathcal{M}$ $\times$ $\mathcal{C}) \rightarrow \{0,1\}$ $(\mathcal{KPub},\mathcal{m}, \sigma) \mapsto$ **OK/KO** ## Schéma de chiffrement RSA ### Génération des paramètres du système entrée $l$ -> paramètres de sécurité Génération de deux nombre premiers $p$ et $q$, détermination du produit $n = pq$, détermination de $\Bbb Z/n\Bbb Z$ (multiplication possible) Sortie -> paramètres du système (**SysParam**) La génération des nombres premier n'a lieu qu'à la première étape ### KeyGen : Entrée -> $l,p,q,\phi (n)$ :::info $\phi (n)$ -> indicatrice d'Euler ::: Génération de $e$ tel que $e \wedge \phi (n) = 1$ Détermination de $d$ tel que $d \times e = 1[\phi (n)]$ Sortie -> $\mathcal{KPriv} = (p,q,d)$, $\mathcal{KPub}=(n,e)$ ### Génération du message chiffré $(\mathcal{KPub} \times \mathcal{M}) \rightarrow \mathcal{C}$ $((n,e),m) \mapsto m^e[n] = c$ ### Déchiffrement du message $(\mathcal{KPriv} \times \mathcal{C}) \rightarrow \mathcal{M}$ $((p,q,d),c) \mapsto c^d = m$ ## Schéma de signature RSA ### Génération de la signature $(\mathcal{KPriv}$ $\times$ $\mathcal{M}) \rightarrow \mathcal{C}$ $((p,q,d),\mathcal{m}) \mapsto m^d[n] = \sigma$ ### Vérification de la signature $(\mathcal{KPub}$ $\times$ $\mathcal{M}$ $\times$ $\mathcal{C}) \rightarrow \{0,1\}$ $((n,e),\mathcal{m}, \sigma) \mapsto \{0$ si $m\neq \sigma^e[n],1$ si $m = \sigma^e[n]\}$ ### Problèmes Signature déterministe Détermination possible de couples (messages, signature) Signature malléable ## Schéma signature El Gammal 1985 ### Génération des paramètres du système entrée $l$ -> paramètres de sécurité Génération d'un nombre premier $p$ Sortie -> $p$ ### KeyGen : Entrée -> $l,p$ Choisir aléatoirement un élément primitif de $(\Bbb Z/p\Bbb Z)^*$ Choisir aléatoirement un entier naturel $x$ avec $1 \leq x \leq p-1$ Sortie -> $\mathcal{KPriv} = (g,x)$, $\mathcal{KPub}=(g, g^x)$ ### Génération de la signature Génération aléatoire d'un élément $r$ de $(\Bbb Z/p\Bbb Z)^*$ $(\mathcal{KPriv} \times \mathcal{M}) \rightarrow \mathcal{C}$ $((g,x),m) \mapsto (g^r, \frac{(m-xg^r)}{r}) = (A,B)$ ### Vérification de la signature $(\mathcal{KPub} \times \mathcal{C}, \mathcal{M}) \rightarrow \{0,1\}$ $(\mathcal{Kpub} = g^x,(A,B),m) \mapsto C^B((g^x)^A)$ Si $C^B((g^x)^A)[p] = g^m$ alors OK ### Avantages Sécurité repose sur les logs discrets Efficacité de la signature Signature randomisée ### Inconvénients Signature longue Signature couteuse Signature malléable ## Eviter la malléabilité des signatures Pour éviter malléabilité -> fonctions de hachages Principe : 1) Application d'une fonction de hachage 2) Application d'un algo de signature