web-dev-qa-db-fra.com

AES vs Blowfish pour le cryptage de fichiers

Je veux chiffrer un fichier binaire. Mon but est d'empêcher quiconque de lire le fichier sans mot de passe.

Quelle est la meilleure solution, AES ou Blowfish avec la même longueur de clé? Nous pouvons supposer que l'attaquant dispose d'excellentes ressources (logiciels, connaissances, argent) pour réparer le fichier.

106
mimrock

Probablement AES. Blowfish était le prédécesseur direct de Twofish. Twofish était l'entrée de Bruce Schneier dans la compétition qui a produit AES. Il a été jugé inférieur à une entrée appelée Rijndael, qui est devenue ce qui est devenu AES.

Fait intéressant, à un moment donné du concours, il a été demandé à tous les participants de donner leur avis sur le classement des chiffreurs. Il n’est sans doute pas surprenant que chaque équipe ait choisi son meilleur candidat, mais toutes les autres équipes ont choisi Rijndael comme deuxième meilleur choix.

Cela dit, il existe certaines différences fondamentales dans les objectifs de base de Blowfish par rapport à AES qui peuvent (sans doute) favoriser Blowfish en termes de sécurité absolue. En particulier, Blowfish tente de rendre difficile une attaque par force brute (épuisement de la clé) en rendant la configuration de la clé initiale assez lente. Pour un utilisateur normal, cela importe peu (c'est toujours moins d'une milliseconde), mais si vous essayez de casser des millions de clés par seconde, la différence est assez substantielle.

Au final, je ne vois toutefois pas cela comme un avantage majeur. Je recommanderais généralement AES. Mes prochains choix seraient probablement Serpent, MARS et Twofish dans cet ordre. Blowfish viendrait quelque part après (bien qu’il y en ait quelques autres que je recommanderais probablement avant Blowfish).

187
Jerry Coffin

Il est peu courant de constater que la taille de bloc d'un chiffrement de bloc est également une considération de sécurité importante (bien que loin d'être aussi importante que la taille de la clé).

Blowfish (et la plupart des autres chiffreurs de blocs de la même époque, tels que 3DES et IDEA) a une taille de bloc de 64 bits, ce qui est considéré comme insuffisant pour les fichiers de grande taille qui sont courants aujourd'hui (plus le fichier est gros et plus petit. , plus la probabilité d’un bloc répété dans le texte chiffré est élevée - et de tels blocs répétés sont extrêmement utiles en analyse cryptographique).

AES, par contre, a une taille de bloc de 128 bits. Cette considération à elle seule est la justification d'utiliser AES au lieu de Blowfish.

23
caf

En ce qui concerne les algorithmes eux-mêmes, je choisirais AES, pour la simple raison qu’il a été accepté par le NIST et qu’il sera examiné par des pairs et analysé de manière cryptée pendant des années. Cependant, je suggérerais que dans les applications pratiques, à moins que vous stockiez un fichier que le gouvernement souhaite garder secret (dans ce cas, le NSA vous fournirait probablement un meilleur algorithme que AES et Blowfish), l’utilisation de l’un ou l’autre de ces algorithmes ne fera pas une grande différence. Toute la sécurité doit être dans la clé, et ces deux algorithmes sont résistants aux attaques par force brute. Blowfish n’a démontré sa faiblesse que dans les implémentations N'utilisez pas les 16 tours complets et, même si AES est plus récent, vous devriez vous pencher davantage vers BlowFish (si vous teniez compte uniquement de l'âge). Pensez-y de cette façon, BlowFish existe depuis les années 90 et personne (à notre connaissance) ne l'a encore brisé ...

Voici ce que je vous demanderais ... au lieu de regarder ces deux algorithmes et d'essayer de choisir entre les algorithmes, pourquoi ne regardez-vous pas votre schéma de génération de clé. Un attaquant potentiel qui souhaite déchiffrer votre fichier ne va pas rester là et proposer un jeu théorique de clés pouvant être utilisé pour ensuite lancer une attaque en force brute pouvant prendre des mois. Au lieu de cela, il va exploiter quelque chose d'autre, comme attaquer votre matériel de serveur, reconvertir votre assemblage pour voir la clé, essayer de trouver un fichier de configuration contenant la clé ou peut-être faire chanter votre ami pour copier un fichier à partir de votre ordinateur. . Ceux qui vont être là où vous êtes le plus vulnérable, pas l'algorithme.

16
nerdybeardo

AES.

(Je suppose aussi que vous voulez dire deux fois, pas le blowfish beaucoup plus vieux et plus faible)

Les deux (AES & twofish) sont de bons algorithmes. Cependant, même s'ils étaient égaux ou que deux coups étaient légèrement en avance sur le mérite technique, je choisirais TOUJOURS AES.

Pourquoi? Publicité. AES est LA norme en matière de cryptage gouvernemental et, par conséquent, des millions d'autres entités l'utilisent également. Un cryptanalyste talentueux a tout simplement plus de chances de trouver une faille dans AES qu’il en a pour les moins connus et les moins chers.

Obscurity n'offre aucune protection en cryptage. Plus de corps qui cherchent, étudient, sondent, attaquent un algorithme sont toujours meilleurs. Vous voulez l’algorithme le plus "approuvé" possible et c’est actuellement AES. Si un algorithme n'est pas soumis à un examen minutieux et continu, vous devriez placer une confiance moindre en sa force. Bien sûr, deux poissons n'ont pas été compromis. Est-ce à cause de la force du chiffre ou simplement parce que pas assez de gens ont jeté un œil attentif ..... POUR LE MOMENT

8
Gerald Davis

Le choix de l'algorithme importe probablement peu. J'utiliserais AES car il a été mieux étudié. Le plus important est de choisir le bon mode de fonctionnement et fonction de dérivation de clé .

Vous voudrez peut-être jeter un coup d'œil à la spécification de format TrueCrypt pour vous inspirer si vous souhaitez un accès aléatoire rapide. Si vous n'avez pas besoin d'un accès aléatoire, XTS n'est pas le mode optimal, car il présente des faiblesses, contrairement aux autres modes. Et vous voudrez peut-être également ajouter une sorte de contrôle d'intégrité (ou un code d'authentification de message).

5
CodesInChaos

Les deux algorithmes (AES et twofish) sont considérés comme très sécurisés. Cela a été largement couvert dans d'autres réponses.

Cependant, depuis que AES est largement utilisé maintenant en 2016, il a été spécifiquement accéléré par le matériel sur plusieurs plates-formes telles que ARM et x86. Bien que sa vitesse ne soit pas significativement supérieure à deux avant l'accélération matérielle, AES est maintenant beaucoup plus rapidement grâce aux instructions de la CPU dédiée.

3
galinette

Je sais que cette réponse viole les termes de votre question, mais je pense que la réponse correcte à votre intention est simplement la suivante: utilisez l’algorithme qui vous permet la longueur de clé la plus longue, puis assurez-vous de choisir une très bonne clé. Des différences mineures dans les performances des algorithmes les mieux notés (cryptographiquement et chronologiquement) sont submergées par quelques bits supplémentaires d'une clé.

3
Mike Jones