Top Ad unit 728 × 90

Qu'est-ce que l'algorithme Blowfish ?

l'algorithme Blowfish

Introduction :

La cible est codée en Microsoft Visual C++ (MSVC) et utilise la librairie MFC.
Qu'est-ce que le MFC ? C'est une librairie, qui encapsule des portions de l'API Windows dans des classes C++.
Ceci implique qu'il faille tracer à l'intérieur de mfc42.dll pour voir notamment les appels aux API "classiques".
En scannant l'exécutable à l'aide du plugin kanal de PEiD, on trouve une référence à la S-Box (S pour substitution) de Blowfish :





Qu'est-ce que l'algorithme Blowfish ?

Afin de décrire correctement l'algorithme, je vais reprendre une grande partie du texte Blowfish Study 'n Reverse d'Evilcry en le traduisant (merci à lui).
Dans une moindre mesure, j'ai repris aussi quelques phrases du texte CryptoReversing d'Evilcry.
Pourquoi réinventer la roue à chaque fois ? ;)
Blowfish est un algorithme de chiffrement symétrique (i.e. « à clef secrète ») par blocs conçu par Bruce Schneier en 1993.
  

Qu'est-ce qu'un chiffrement symétrique (à clef secrète) ?


Un chiffrement symétrique utilise la même clef à la fois pour le chiffrement et le déchiffrement :

Schema1

Le cracking / reversing de logiciels utilisant dans leur schéma d'enregistrement, des algorithmes de chiffrement symétrique, consiste donc à récupérer cette fameuse clef secrète et à savoir s'il y a chiffrement ou déchiffrement et ce qu'il a de chiffré / dé chiffré.
Par opposition, un chiffrement asymétrique (à clef publique), n'utilise pas la même clef pour le chiffrement et le déchiffrement :

Schema2

Blowfish utilise une taille de bloc de 64 bits et la clé de longueur variable peut aller de 32 à 448 bytes.
Blowfish est basé sur un réseau de Feistel, utilisant itérativement une fonction de chiffrement 16 fois.
En plus du réseau de Feistel, Blowfish base son action sur 4 S-Boxes (peuvent être considérées comme des tableaux), indépendantes des clefs.
Il y a aussi une fonction OneWay F( ), qui n'est pas réversible.
La procédure de chiffrement peut être divisée en deux étapes :

Une phase d'extension / développement (ou fonction d'initialisation, qui est la phase la plus complexe) :

Dans cette phase, la clef, longue de 448 bytes au maximum, est "transformée" en tableaux de sous-clefs pour un total de 4168 bytes.

Une phase de chiffrement :
Le processus de chiffrement se déroule en 16 tours et utilise des opérations XOR et des additions.
La taille utilisée est le DWORD. Tout ceci est placé dans des tableaux indicés.
De la clef, sont extraites deux sortes de tableaux : P-Array (p pour permutation) et S-Box (s pour substitution).
Le P-Array est composé de 18 éléments et chaque sous-clef fait 4 bytes :
P1, P2, P3.....P18
Alors que les S-Box sont 4, chacune d'entre-elles est composée de 256 sous-clefs de 32 bytes.
Maintenant, voyons en détail, la phase d'extension :

1. Le P-Array et les 4 S-Boxes sont initialisées, la chose la plus importante à dire, est que, les 4 S-Boxes commencent toutes avec des valeurs constantes.
2. Il y a un XOR entre le P-Array et la clef choisie.
3. La procédure est répétée jusqu'à ce que toutes les sous-clefs du P-Array soient "codifiées" sous la forme :
P-Array = {xL1, xR1, xL2, xR2,......, xL18, xR18}
4. Avec ce nouveau "P-Array", commence le travail de substitution de la S-Box.

Note importante : ces S-Boxes sont modifiées à chaque tour, qui se produit.
Maintenant que nous savons un peu comment Blowfish travaille durant la phase de chiffrement, nous pouvons dire que Blowfish base son travail sur des S-Boxes aléatoires.
En fait, l'algorithme construit de grosses tables de recherche avec des données pseudo-aléatoires.

Ce caractère "PSEUDOALEATOIRE" dépend fortement de la clef en elle-même.
Comme vous pouvez le voir, cette procédure est un peu complexe. Si nous essayions d'analyser les "implications", qui coexistent entre les S-Boxes obtenues et les clefs utilisées, nous verrions que ces relations sont vraiment complexes !

La conséquence directe de tout ceci, est que Blowfish semble ne pas être attaquable (excepté dans quelques cas) par cryptanalyse différentielle et linéaire. Les seuls attaques connues sur Blowfish fonctionnent essentiellement lors d'usage de clefs "faibles", dans lesquelles il y a au minimum une collision dans l'une des 4 S-Boxes.

pour savoir plus sur l'algorithme Blowfish.pdf
Qu'est-ce que l'algorithme Blowfish ? Reviewed by Badr Dev on 17:36 Rating: 5

Aucun commentaire:

All Rights Reserved by Cours Réparation : On vous Explique Comment © 2014 - 2023
Powered By Blogger, Designed by Sweetheme

Formulaire de contact

Nom

E-mail *

Message *

Fourni par Blogger.
Pour Trouvez D'autre Solution ... !!
Cliquer Sur " J'aime " ^_^