--- tags: TCOM, Marcello title: Principes mathématiques pour la Cryptologie --- # Principes mathématiques pour la Cryptologie ## Historique - Chiffrement de César: rotn - Chiffrement de Vigenère: ruban sur baton - Chiffrement "marathonien": tatouage sur le crane d'un esclave + attente de repousse de cheveux + envoie de l'esclave + coupage de cheveux ## Formalisation - $M$ Espace des messages, parfois noté $P$ - $C$ Espace des messages chiffré - $K$ Espace des clefs, $k$ clef - $KeyGen$ ou $KG$: algorithme de génération de clefs - $Enc$ ou $\varepsilon$: fonction de chiffrement - $Dec$ ou $D$: fonction de déchiffrement Opération de chiffrement: $$\varepsilon : (M, K) \rightarrow C$$ Opération de déchiffrement: $$D : (C, K) \rightarrow M$$ ### Formalisation du chiffrement de César $$M = \{0, 1, ..., 25\}$$ $$C = \{0, 1, ..., 25\}$$ $$K = \{0, 1, ..., 25\}$$ Supposont $K = 9$ $$Enc(19, 9) = 19 + 9 = 28 = 3$$ $$Dec(3, 9) = 3 - 9 = - 6 = - 6 + 2 5 = 19$$ $$\varepsilon:(M,k\in[0,26[)\rightarrow C$$ $$\varepsilon:(M,k)\rightarrow m+k$$ $$D:(C,k\in[0,26[)\rightarrow M$$ $$D(c,k)\rightarrow c-k$$ Proprietes de crypto: - Confidentialite - Integrite - Authenticite - Non-repudiation # Bézout ```py def bezout(a, b): if b == 0: return (1, 0) else: (u, v) = bezout(b, a % b) return (v, u - (a // b)*v) ``` $$Z/5Z +$$ |+ |0 |1 |2 |3 |4 | |---|---|---|---|---|---| |0 |0 |1 |2 |3 |4 | |1 |1 |2 |3 |4 |0 | |2 |2 |3 |4 |0 |1 | |3 |3 |4 |0 |1 |2 | |4 |4 |0 |1 |2 |3 | $$Z/5Z *$$ |* |0 |1 |2 |3 |4 | |---|---|---|---|---|---| |0 |0 |0 |0 |0 |0 | |1 |0 |1 |2 |3 |4 | |2 |0 |2 |4 |1 |3 | |3 |0 |3 |1 |1 |2 | |4 |0 |4 |3 |2 |1 | ERREUR pour $3*3:1 \rightarrow3*3:4$ $$Z/6Z *$$ |* |0 |1 |2 |3 |4 |5 | |---|---|---|---|---|---|---| |0 |0 |0 |0 |0 |0 |0 | |1 |0 |1 |2 |3 |4 |5 | |2 |0 |2 |4 |0 |0 |4 | |3 |0 |3 |0 |3 |0 |3 | |4 |0 |4 |0 |0 |4 |2 | |5 |0 |5 |4 |3 |2 |1 | ERREUR pour $2*4:0 \rightarrow2*4:2$ ERREUR pour $4*2:1 \rightarrow4*2:2$