6
votes

CRC32 + Taille VS MD5 / SHA1

Nous avons un stockage de fichiers et le stockage identifie de manière unique un fichier sur la base de la taille ajoutée à la CRC32.

Je voulais savoir si cette somme de contrôle (CRC32 + taille) serait suffisamment bonne pour identifier des fichiers ou devons-nous envisager une autre technique de hachage comme MD5 / SHA1?


0 commentaires

4 Réponses :


3
votes

CRC est la plupart d'une méthode de détection d'erreur qu'une fonction de hachage grave. Il aide à identifier les fichiers de corruption plutôt que de les identifier de manière unique. Votre choix devrait donc être entre MD5 et SHA1.

Si vous n'avez pas de fortes actes de sécurité, vous pouvez choisir MD5 qui devrait être plus rapide. (N'oubliez pas que le MD5 est vulnérable aux attaques de collision). Si vous avez besoin de plus de sécurité, vous utilisez mieux SHA1 ou même SHA2.


2 commentaires

MD5 a été prouvé déformé pendant une demi-décennie. Ne l'utilisez pas ou à tout le moins le combiner avec une autre méthode.


@Status_access_denied: +1 Vous avez raison. Je n'utiliserais jamais MD5 pour rien. Quoi qu'il en soit, je pense que l'intention de @ Rajiv n'était pas liée à la sécurité. Donc, pour un stockage local, même MD5 pourrait suffire



1
votes

Comme d'autres l'ont dit, CRC ne garantit pas l'absence de collisions. Cependant, votre problème est résolu simplement en donnant aux fichiers incrémentant des nombres 64 bits. Ceci est garanti de ne jamais entrer en collision (sauf si vous voulez garder le gazillion de fichiers dans un répertoire qui n'est pas une bonne idée de toute façon).


0 commentaires

3
votes

CRC-32 n'est pas assez bon; Il est trivial de construire des collisions, c'est-à-dire deux fichiers (de la même longueur si vous le souhaitez ainsi) qui ont le même CRC-32. Même en l'absence d'un attaquant malveillant, les collisions se produiront au hasard une fois que vous avez environ 65 000 fichiers distincts avec la même longueur.

Une fonction de hachage est conçue pour éviter les collisions. Avec MD5 ou SHA-1, vous ne recevrez pas de collisions aléatoires. Si votre configuration est liée à la sécurité (c'est-à-dire une personne, quelque part, qui peut essayer activement de créer des collisions), vous avez besoin d'une fonction Secure hachage. MD5 n'est plus sécurisé (la création de collisions avec MD5 est facile) et SHA-1 est quelque peu faible à cet égard (aucune collision réelle n'a été calculée, mais une méthode de création d'une est connue et, bien que coûteuse, elle est beaucoup moins chère que ce que il devrait être). La recommandation habituelle est d'utiliser SHA-256 ou SHA-512 (SHA-256 suffit à la sécurité; SHA-512 peut être un TAD plus rapidement sur de gros systèmes de 64 bits, mais la bande passante de lecture sera plus limitée que la vitesse de hachage) .

Remarque: Lorsque vous utilisez une fonction de hachage cryptographique, il n'est pas nécessaire de stocker et de comparer les longueurs de fichier; Le hash suffit à désambigu des fichiers.

Dans une configuration non sécurisée (c.-à-d. Vous ne craignez que des collisions aléatoires), alors MD4 peut être utilisé. Il est soigneusement "cassé" comme une fonction de hachage cryptographique, mais c'est toujours une très bonne somme de contrôle, et c'est vraiment rapide (sur certaines plates-formes basées au bras, il est encore plus rapide que CRC-32, pour une bien meilleure résistance au hasard collisions). Fondamentalement, vous ne devez pas utiliser MD5: si vous avez des problèmes de sécurité, MD5 ne doit pas être utilisé (il est cassé; utiliser SHA-256); Et si vous faites pas avez des problèmes de sécurité, alors MD4 est plus rapide que MD5.


0 commentaires