Je souhaite crypter un fichier binaire. Mon objectif est d'empêcher quiconque de lire le fichier sans le mot de passe.
Quelle est la meilleure solution, AES ou Blowfish avec la même longueur de clé? On peut supposer que l'attaquant dispose de grandes ressources (logiciels, connaissances, argent) pour cracker le fichier.
security
encryption
aes
blowfish
mimrock
la source
la source
Réponses:
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 nommée Rijndael, qui est devenue AES.
Point intéressant: à un moment donné du concours, tous les participants ont été invités à donner leur avis sur le classement des chiffrements. Il n'est probablement pas surprenant que chaque équipe ait choisi sa propre entrée comme la meilleure - mais toutes les autres équipes ont choisi Rijndael comme deuxième meilleur.
Cela dit, il existe des 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 des touches) en faisant de la configuration initiale des clés une opération assez lente. Pour un utilisateur normal, cela n'a que peu de conséquences (c'est toujours moins d'une milliseconde) mais si vous essayez des millions de clés par seconde pour le casser, la différence est assez substantielle.
En fin de compte, je ne vois cependant pas cela comme un avantage majeur. Je recommande généralement AES. Mes prochains choix seraient probablement Serpent, MARS et Twofish dans cet ordre. Blowfish viendrait quelque part après ceux-ci (bien qu'il y en ait quelques autres que je recommanderais probablement avant Blowfish).
la source
Blowfish
est le plus rapideIl n'est pas souvent reconnu que la taille de bloc d'un chiffrement par 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 chiffrements par blocs de la même époque, comme 3DES et IDEA) ont une taille de bloc de 64 bits, ce qui est considéré comme insuffisant pour les fichiers de grande taille qui sont courants de nos jours (plus le fichier est volumineux et plus la taille du bloc est petite. , plus la probabilité d'un bloc répété dans le texte chiffré est élevée - et ces blocs répétés sont extrêmement utiles en cryptanalyse).
AES, en revanche, a une taille de bloc de 128 bits. Cette seule considération justifie l'utilisation d'AES au lieu de Blowfish.
la source
En ce qui concerne les algorithmes eux-mêmes, j'irais avec AES, pour la simple raison qu'il a été accepté par le NIST et qu'il sera évalué par les pairs et crypté pendant des années. Cependant, je suggérerais que dans les applications pratiques, à moins que vous ne stockiez un fichier que le gouvernement souhaite garder secret (auquel cas la NSA vous fournirait probablement un meilleur algorithme que AES et Blowfish), l'utilisation de l'un de ces algorithmes a gagné ça ne fait pas trop de différence. Toute la sécurité doit être dans la clé, et ces deux algorithmes résistent aux attaques par force brute. Blowfish ne s'est montré faible que sur les implémentations qui n'utilisent pas les 16 tours complets. Et bien que AES soit plus récent, cela devrait vous inciter davantage à vous pencher vers BlowFish (si vous ne teniez compte que de l'âge). Pense-y de cette façon,
Voici ce que je vous poserais ... au lieu de regarder ces deux algorithmes et d'essayer de choisir entre l'algorithme, pourquoi ne pas regarder votre schéma de génération de clé. Un attaquant potentiel qui souhaite déchiffrer votre fichier ne restera pas assis là et proposera un ensemble théorique de clés pouvant être utilisées, puis effectuera une attaque par force brute qui peut prendre des mois. Au lieu de cela, il va exploiter autre chose, comme attaquer le matériel de votre serveur, effectuer une ingénierie inverse de votre assemblage pour voir la clé, essayer de trouver un fichier de configuration contenant la clé, ou peut-être faire chanter votre ami pour qu'il copie un fichier depuis votre ordinateur. . Ce seront là où vous serez le plus vulnérable, pas l'algorithme.
la source
AES.
(Je suppose aussi que vous voulez dire deux poissons pas le poisson-globe beaucoup plus vieux et plus faible)
Les deux (AES et twofish) sont de bons algorithmes. Cependant, même s'ils étaient égaux ou deux poissons étaient légèrement en avance sur le plan technique, je choisirais TOUJOURS AES.
Pourquoi? Publicité. AES est LA norme pour le cryptage gouvernemental et donc des millions d'autres entités l'utilisent également. Un cryptanalyste talentueux obtient simplement plus "pour son argent" en trouvant une faille dans AES que pour les deux poissons beaucoup moins connus et utilisés.
L'obscurité n'offre aucune protection en matière de cryptage. Plus de corps regardent, étudient, sondent, attaquent un algorithme, c'est toujours mieux. Vous voulez l'algorithme le plus "vérifié" possible et pour l'instant c'est AES. Si un algorithme n'est pas soumis à un examen approfondi et continu, vous devez accorder une confiance moindre à sa force. Bien sûr, deux poissons n'ont pas été compromis. Est-ce à cause de la force du chiffrement ou simplement parce que trop peu de gens ont examiné de près ..... ENCORE
la source
Le choix de l'algorithme n'a probablement pas beaucoup d'importance. J'utiliserais AES car il a été mieux étudié. Ce qui est beaucoup plus important, c'est de choisir le bon mode de fonctionnement et la fonction de dérivation de clé .
Vous voudrez peut-être jeter un œil à la spécification du format TrueCrypt pour vous inspirer si vous voulez 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, d'autres modes n'en ont pas. Et vous pouvez également ajouter une sorte de vérification d'intégrité (ou un code d'authentification de message).
la source
Je sais que cette réponse viole les termes de votre question, mais je pense que la bonne réponse à 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 de la plupart des algorithmes bien considérés (cryptographiquement et chronologiquement) sont submergées par quelques bits supplémentaires d'une clé.
la source
Les deux algorithmes (AES et twofish) sont considérés comme très sûrs. Cela a été largement couvert dans d'autres réponses.
Cependant, comme AES est très 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 qu'il ne soit pas beaucoup plus rapide que deux fois avant l'accélération matérielle, AES est maintenant beaucoup plus rapide grâce aux instructions CPU dédiées.
la source