Question

Je me demande à quel point la somme de contrôle Adler32 est fiable par rapport à la somme de contrôle MD5? Il a été raconté sur Wikipedia qu'Adler32 est "beaucoup moins fiable" que MD5, donc je me demande combien, et de quelle manière?

Plus précisément, je me demande s'il est suffisamment fiable comme vérification de cohérence pour l'archivage de longue date de fichiers (TAR) de taille 20 Go +?

Était-ce utile?

La solution

Pour plus de détails sur les capacités de vérification des erreurs de la somme de contrôle Adler-32, voir par exemple Revisiter les sommes de contrôle de Fletcher et Adler. Maxino, 2006.

Cet article contient une analyse sur la distance de Hamming fournie par ces deux sommes de contrôle et fournit une indication du taux d'erreur résiduel pour les mots de données jusqu'à environ 2 ^ 11 bits. Ce qui, évidemment, est bien inférieur à votre exigence de 2 ^ 38 bits ...

Autres conseils

Adler32 a un objectif entièrement différent de MD5. Adler32 est une somme de contrôle. MD5 est un digest de message sécurisé. Adler32 est destiné aux hachages rapides, a un petit espace et un algorithme simple. Son taux de collision est faible, mais pas assez bas pour être sécurisé. MD5, SHA et d'autres hachages cryptographiques / sécurisés (ou digestion de message) ont des espaces bits beaucoup plus importants et des algorithmes plus complexes, ont donc beaucoup moins de collisions. Comparez SHA2-256, par exemple; 256 bits par rapport aux 32 bits d'Adler32.

Adler Est-ce que avoir son objectif, dans des tables de hachage par exemple, ou des vérifications rapides d'intégrité des données. Pourtant, il n'est pas conçu dans le même but que MD5 ou d'autres digestions sécurisés.

BTW, si une somme de contrôle simple mais quelque peu fiable est ce dont vous avez besoin, alors il semble que Fletcher ait des performances Adler. Je spéculerais qu'ils dépassent tous les deux CRC, mais peut-être pas une somme de contrôle basée sur l'ajout (bien qu'elle soit très sujette aux collisions). Si vous voulez à la fois les performances et la sécurité, utilisez les deux algorithmes. Ayez l'algorithme de somme de contrôle utilisé comme calcul et recherche rapides, puis utilisez le plus grand digestion pour une confirmation plus approfondie si elle est trouvée.

Pour répondre à votre question sur l'assurance de la validité des archives, je dirais que cela suffirait probablement très bien. Meilleur choix? Discutable. Possibilité d'erreur? Très lent.

C'est un ancien algorithme; celui qui, comme le dit la page Wikipedia, "échange la précision pour la vitesse". Bref, non, vous ne devriez pas compter sur cela.

Le fait est qu'avec plusieurs corruptions, cette somme de contrôle force Passez toujours comme "OK". En raison de l'effet d'avalanche, cela est nettement moins susceptible de se produire dans les algorithmes modernes (même l'ancien MD5).

Pour les machines d'aujourd'hui, la vitesse n'est pas tant une préoccupation, donc je suggérerais d'utiliser un algorithme moderne (selon le courant des deux), même pour les fichiers dans la plage de tuberculose. Les économies de temps insignifiantes que vous obtiendriez avec un ancien système de somme de contrôle ne sont pas suffisants pour équilibrer le risque significativement accru de corruption de données non détectée - et honnêtement, 20 Go de fichiers ne sont pas ce Beaucoup de données de nos jours que vous auriez besoin d'utiliser des algorithmes faibles (et j'opposent brisé).

Il est moins fiable que disent MD5 ou CRC (à peu près comme le CRC en fait). L'avantage est la vitesse, l'inconvénient est plus affiché pour les données courtes (quelques centaines d'octets) - le sens est que la distribution des valeurs de hachage ne couvre pas très bien la sortie de 32 bits disponible. Pour les gros fichiers, c'est un bon choix.

Adler-32 et MD5 ne sont pas comparables de cette manière. MD5 est en fait destiné à être un somme de contrôle cryptographique Lorsque vous voulez vous assurer qu'un fichier n'a pas été falsifié par un adversaire, tandis qu'Adler-32 (et aussi CRC, qui est comparable à Adler-32) est destiné à s'assurer qu'un fichier n'a pas été falsifié par accident (somme de contrôle d'intégrité.)

MD5 est en fait considéré comme cassé à ses fins cryptographiques, et n'est utile que maintenant comme vérification d'intégrité lorsque vous voulez plus de bits pour certitude. La seule façon dont Adler-32 peut être "moins fiable" est qu'elle permet de modifier potentiellement plus de bits tout en conservant la même sortie, ce qui signifie qu'il y a plus de place pour les collisions.

Ce lien Donne une bonne discussion sur la façon dont l'utilisation d'Adler-32 peut fournir des avantages de performance pour certains types de code qui doivent utiliser des sommes cryptographiques pour plus de certitude. À savoir, vous pouvez utiliser la somme de contrôle plus petite et bon marché pour voir si faire le MD5 / Sha / Whirlpool plus cher vaut la peine d'être considéré en cas de fichiers modifiés.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top