Cryptanalyse

vendredi 1er novembre 2024, 20:12  #1
Cryptanalyse - AES resuit a 4 tours
tgb
tgb
  • 2 posts

J’ai essaye de faire le test sur l’AES reduit a 4 tours mais jái du mal a trouver le bon mot de passe.
Voici la solution que jái implemente mais je nái pas obtenu de resultats probants , pouvez-vous méclairer ?
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.

samedi 9 novembre 2024, 09:53  #2
Cryptanalyse - AES resuit a 4 tours
Arthur
  • 18 posts

Je pensais t’avoir répondu mais il semblerait que ma réponse ne se soit pas envoyé...
Peux tu détailler un peu plus ton problème ?
As tu testé tes différentes fonctions de l’AES ( je pense notamment au MixColumn qui est souvent mal implémenté par ceux n’ayant aucune connaissance en algèbre) ?
Remplis-tu bien tes différents block et correctement ?
Optimise aussi ton programme pour avoir une réponse plus rapidement. Par exemple ca ne sers à rien de calculer la deuxième somme si t as première somme n’est pas nulle. Je ne sais pas si cela à une influence sur l’attaque à 4 tours mais elle en a une significative sur celle à 5.
Pour ton programme et pour savoir si tu fais les étapes de l’attaque correctement je t’invite à regarder les documentation sur interne qui décrivent bien les étapes