Cryptanalyse

vendredi 1er novembre 2024, 20:08  #1
Cryptanalyse
tgb
tgb
  • 2 posts

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.