Cryptanalyse
Cryptanalyse
Bonjour a tous,
jái essaye le challenge avec l’AES reduit a 4 tours, jái un code que jái essaye mais j’arrive toujours pas a trouver le bon mote de passe , je crois que mon approche est la bonne Svp quelqu’un pour m’ aider a le faire ? def square_attack_aes_4_rounds(ciphertext_set1, ciphertext_set2, G_inverse) :
"""
Attaque Square sur AES 4 tours.
Args :
ciphertext_set1 : Premier Λ-set de textes chiffrés.
ciphertext_set2 : Second Λ-set de textes chiffrés.
G_inverse : Fonction inverse de génération de clés.
Returns :
La clé secrète.
"""
# 1. Appliquer IShiftRows aux textes chiffrés
for ciphertext in ciphertext_set1 :
ciphertext = IShiftRows(ciphertext)
for ciphertext in ciphertext_set2 :
ciphertext = IShiftRows(ciphertext)
last_subkey = [0] * 16 # Initialisation de la dernière sous-clé
# 2. Recherche exhaustive pour chaque octet de la sous-clé
for byte_index in range(16) :
for key_byte_candidate in range(256) :
last_subkey[byte_index] = key_byte_candidate
# (b) Calcul de la somme XOR pour le Λ-set 1
sum1 = 0
for ciphertext in ciphertext_set1 :
byte_j = ciphertext[byte_index]
sum1 ^= ISbox(byte_j ^ key_byte_candidate)
# (c) Calcul de la somme XOR pour le Λ-set 2
sum2 = 0
for ciphertext in ciphertext_set2 :
byte_j = ciphertext[byte_index]
sum2 ^= ISbox(byte_j ^ key_byte_candidate)
# (d) Vérification des sommes
if sum1 == 0 and sum2 == 0 :
break # Octet de clé trouvé
# 3. Reconstruction de la clé initiale
key = G_inverse(last_subkey)
# 4. Retourner la clé
return key
# Fonctions IShiftRows, ISbox et G_inverse à implémenter
# en fonction de votre environnement et des spécificités de l’AES.