Université d Aix-Marseille Master Réseaux & Télécoms Cryptographie Semestre 2 Exercices et corrections pour le TD 5 2014 2015 Rappeler les initialisations pour ce cours : CRYPTO = "http://iml.univ-mrs.fr/~kohel/tch/crypto/" exec(open(get_remote_file(crypto + "Crypto.sage")).read()) S = AlphabeticStrings() M = S.encoding(open(get_remote_file(CRYPTO + "pt/fr.txt")).read()) 1. Comparer les fréquences des lettres pour des chiffrement à substitution en mode ECB, CBC, CFB, et OFB. Subst = SubstitutionCryptosystem(S) EK = Subst(S("ISCQUNJVPGZEORLFMDAKHTYWXB")) ECB : ct_ecb = EK(M,mode= ECB ) ct_ecb.frequency_distribution().plot() 0.15 0.1 CBC : ct_cbc = EK(M,mode="CBC",IV=S("XYZ")) ct_cbc.frequency_distribution().plot() CFB :
ct_cfb = EK(M,mode="CFB",IV=S("XYZ"),mode_block_length=1) ct_cfb.frequency_distribution().plot() OFB : ct_ofb = EK(M,mode="OFB",IV=S("XYZ"),mode_block_length=1) ct_ofb.frequency_distribution().plot() 0.07 0.06 2. Comparer les fréquences des lettres pour des chiffrement par transposition en mode ECB, CBC, CFB, et OFB. Trans = TranspositionCryptosystem(S,6) EK = Trans([3, 1, 6, 5, 2, 4]) ECB : ct_ecb = EK(M,mode="ECB") ct_ecb.frequency_distribution().plot() 0.15 0.1 CBC : ct_cbc = EK(M,mode="CBC",IV=S("ABCXYZ")) ct_cbc.frequency_distribution().plot()
CFB : ct_cfb = EK(M,mode="CFB",IV=S("ABCXYZ"),mode_block_length=1) ct_cfb.frequency_distribution().plot() OFB : ct_ofb = EK(M,mode="OFB",IV=S("ABCXYZ"),mode_block_length=1) ct_ofb.frequency_distribution().plot() 0.06 3. Est-ce qu il y a des différences évidentes entre les modes d operations avec les chiffrements par transposition par rapport aux chiffrements à substitution? 4. Qu est-ce que se change si on utilise la transposition clé K = [1,3,4,5,6,2]? Dans la suite, soit M = TWASBRILLIGANDTHESLITHYTOVESDIDGYREANDGIMBLE. Nous allons étudier les proprietés des chiffrements par flot induit par un chiffrement par bloc en mode OFB et CFB. Soit E A un chiffrement de Hill avec ( ) 2 1 A =, 1 1 Indication : Hill = HillCryptosystem(S,2) R = IntegerModRing(26) EK = Hill(Matrix(R,[[2,1],[1,1]])) 5. Créer les textes chiffrés C 1 et C 2 en mode d opération OFB et CFB, avec r = 1 et vecteur d initialisation I 0 = IA. M C 1 = IAJKAELJAVXIUQVLJVEEVALRKTCLMATWDSIJWKZDUYUJBS M C 2 = IAJFXZUJFIDBNPCJGFVXYAPWYJTGWAVDWIYFFPMTXRXGLB
6. Changer le huitiéme caractère de C 1 et C 2, et détérminer le déchiffrement de ces textes chiffrés modifiés. C1_modi = C1[:7] * S("C") * C1[8:]} C2_modi = C2[:7] * S("C") * C2[8:]} C 1 C 1 = IAJKAELCAVXIUQVLJVEEVALRKTCLMATWDSIJWKZDUYUJBS C 2 C 2 = IAJFXZUCFIDBNPCJGFVXYAPWYJTGWAVDWIYFFPMTXRXGLB C 1 M 1 = TWASBKILLIGANDTHESLITHYTOVESDIDGYREANDGIMBLE C 2 M 2 = TWASBKPZLIGANDTHESLITHYTOVESDIDGYREANDGIMBLE 7. Supprimer le huitiéme caractère de C 1 et C 2 et déterminer les propriétés des déchiffrements de ces textes chiffrés modifiés. Indication : C1_supp = C1[:7] * C1[8:]} C2_supp = C2[:7] * C2[8:]} C 1 C 1 = IAJKAELAVXIUQVLJVEEVALRKTCLMATWDSIJWKZDUYUJBS C 2 C 2 = IAJFXZUFIDBNPCJGFVXYAPWYJTGWAVDWIYFFPMTXRXGLB C 1 M 1 = TWASBIDNWUCFDBFQEJQTZAHCXWSLGPSWZESPRUKEBTC C 2 M 2 = TWASBNPLIGANDTHESLITHYTOVESDIDGYREANDGIMBLE 8. Rappeler les définitions des chiffrements à flot synchrones et autosynchronisants, et identifier les chiffrements en modes d opérations CFB et OFB (avec r = 1) avec ces chiffrements. Un chiffrement à flot opère sur un flot de texte clair M = m 1 m 2..., où m i sont des bits, caractères ou des blocs petits (comme des octets). Pour un chiffrement à flot, les caractères du flot du texte chiffré c i se produit par la combinaison de m i et le caractère k i d un flot de clés k 1 k 2.... Le flot de clés se produit en fonction de la clé secrète et l état du système S i à temps i. On distingue deux formes de chiffrement à flot : Synchrone. Le flot du texte chiffré est engendré indépendamment du texte clair. Soit donnés l état initial S 0 et le texte clair M = m 1 m 2... m N. Un chiffrement à flot synchrone est détérminé par une fonction de prochain état f K, une fonction de flot de clés g K, et une fonction de combinaison h du flot de clés : pour tout 1 i N. S i = f K (S i 1 ), k i = g K (S i ), c i = h(k i, m i ), Le mode d opèration OFB (ou CTR) transforme un chiffrement en bloc E K en chiffrement à flot synchrone avec f K = E K, g K = L r, et h un chiffrement de Vigenère.
Autosynchronisant. Un chiffrement à flot autosynchronisant est un chiffrement dans lequel le flot de clés est engendré comme fonction d un nombre fini de blocs précédents du texte chiffré. Soit donnés l état initial S 0 = (c t+1,..., c 0 ) et le texte clair M = m 1 m 2... m N. k i = g K (S i 1 ), c i = h(k i, m i ), et le noveau état est S i = (c t+1+i,..., c i ) pour tout 1 i N. Le mode d opèration CFB transforme un chiffrement en bloc E K en chiffrement à flot autosynchronisant avec g K = E K L r et h un chiffrement de Vigenère. Dans le deux cas, on peut supposer que h(k i, m i ) = k i m i, où est une fonction de combinaison additif (où exclusif pour bits ou un chiffrement de Vernam (= Vigenère) en général).