2010-10-26 42 views
9

Quelle est la fonction de hachage la plus appropriée pour la vérification d'intégrité de fichier (sommes de contrôle) pour détecter la corruption?Une fonction de hachage appropriée pour détecter la corruption de données/vérifier l'intégrité des données?

J'ai besoin de considérer les points suivants:

Une large gamme de taille de fichier (1 kb à 10Go +)
Lots de différents types de fichiers
Grande collection de fichiers (+/- 100 TB et croissance)

Les fichiers plus volumineux requièrent-ils des tailles de résumé plus élevées (SHA-1 vs SHA 512)?

Je vois que la famille SHA est appelée fonctions de hachage cryptographiques. Sont-ils mal adaptés à une utilisation «générale», comme la détection de la corruption de fichiers? Quelque chose comme MD5 ou Tiger sera-t-il meilleur?

Si la falsification malveillante est également un problème, votre réponse changera-t-elle avec la fonction de hachage la plus appropriée?

Les bibliothèques externes ne sont pas une option, mais seulement ce qui est disponible sur Win XP SP3 +.

La performance naturelle est également préoccupante.

(Veuillez excuser ma terminologie si elle est incorrecte, mes connaissances à ce sujet sont très limitées).

Répondre

15

Toute fonction de hachage cryptographique, même une fonction de hachage cryptographique, sera parfaite pour détecter une corruption accidentelle. Une fonction de hachage donnée peut être définie uniquement pour les entrées jusqu'à une certaine limite, mais pour toute fonction de hachage standard, cette limite est d'au moins 2 bits, c'est-à-dire d'environ 2 millions de téraoctets. C'est assez grand.

Le type de fichier n'a aucune incidence. Les fonctions de hachage fonctionnent sur des séquences de bits (ou octets) indépendamment de ce que ces bits représentent.

Il est peu probable que les performances de la fonction de hachage soient un problème. Même les fonctions de hachage "lentes" (par exemple SHA-256) fonctionneront plus rapidement sur un PC que sur le disque dur: lire le fichier sera le goulot d'étranglement, pas le hacher (un PC 2,4 GHz peut hacher des données avec SHA-512 près de 200 Mo/s, en utilisant un seul noyau). Si la performance de la fonction de hachage est un problème, alors votre processeur est très faible, ou vos disques sont SSD rapides (et si vous avez 100 To de SSD rapide alors je suis un peu jaloux). Dans ce cas, certaines fonctions de hachage sont plus rapides que d'autres, MD5 étant l'une des fonctions "rapides" (mais MD4 est plus rapide, et il est assez simple que son code puisse être inclus dans n'importe quelle application sans trop de tracas).

Si la falsification malveillante est un problème, cela devient un problème de sécurité, et c'est plus complexe. Tout d'abord, vous aimerez utiliser l'une des fonctions de hachage cryptographiquement ininterrompue, d'où SHA-256 ou SHA-512, et non MD4, MD5 ou SHA-1 (les faiblesses de MD4, MD5 et SHA-1 peuvent ne pas s'appliquer à un situation, mais c'est une question subtile et il est préférable de jouer en toute sécurité). Ensuite, le hachage peut être suffisant ou non, selon que l'attaquant a accès aux résultats du hachage. Peut-être, vous devrez peut-être utiliser un MAC, qui peut être considéré comme une sorte de hachage à clé. HMAC est un moyen standard de créer un MAC à partir d'une fonction de hachage. Il existe d'autres MAC non basées sur le hachage. De plus, un MAC utilise une clé "symétrique" secrète, ce qui n'est pas approprié si vous voulez que certaines personnes puissent vérifier l'intégrité du fichier sans pouvoir effectuer d'altérations silencieuses; Dans ce cas, vous devrez recourir à des signatures numériques. Pour être bref, dans un contexte de sécurité, vous avez besoin d'une analyse de sécurité approfondie avec un modèle d'attaque clairement défini.

+0

Excellente réponse! Merci beaucoup. – links77