2010-12-09 4 views
1

Je suis en train de concevoir une application de serveur de fichiers où je veux vérifier si un fichier mis en cache sur un ordinateur client est la dernière version conservée sur le serveur. Je n'ai pas assez confiance à l'attribut 'changed date' dans le système de fichiers, donc je veux comparer les octets réels dans le fichier.Quelle est la probabilité de collision de hachage si la longueur du fichier est la même?

Je pense que le moyen le plus rapide de le faire (car l'envoi de tous les octets sur le Web prend du temps), est d'envoyer la longueur du fichier et les octets de hachage au serveur. Ensuite, le serveur vérifie d'abord la longueur du fichier, et s'il correspond, il calcule un hachage pour le fichier situé sur le serveur, puis vérifie s'il est identique à celui que le client a calculé.

Quelqu'un peut-il me dire quelle est la probabilité que les collisions de hachage sont lorsque la taille du fichier est la même? (J'utilise actuellement MD5 pour sa vitesse). Puis-je supposer que la taille du fichier est la même et que le hachage est le même que le contenu est le même?

Merci!

Répondre

1

Les collisions aléatoires dans MD5 sont si improbables que c'est presque sûr d'ignorer la possibilité.

Toutefois, il a été démontré que MD5 est faible sur le plan cryptographique, de sorte qu'un adversaire malveillant pourrait délibérément créer des fichiers en conflit. Un exemple célèbre est:

Le 30 Décembre 2008, un groupe de chercheurs a annoncé lors du 25e Congrès Chaos Communication comment ils avaient utilisé des collisions MD5 pour créer un certificat d'autorité de certification intermédiaire qui semble être légitime quand elle est cochée par son MD5 hacher.

Source

+0

Merci! L'aspect malveillant du problème n'est pas une préoccupation :) Connaissez-vous un ordre de grandeur pour la collision? Comme un à quoi? –

+0

@Jakob: Pour que deux fichiers spécifiques entrent en collision, la probabilité est d'environ 1 sur 340282366920938463463374607431768211456. La probabilité d'une collision dans un ensemble de fichiers est plus importante (mais toujours extrêmement, incroyablement, incroyable, étonnamment improbable). –

+0

Je suis assez content quand les chances sont si basses! Encore une fois, merci! –

0

Je pense que ce stackoverflow question est semblable à la vôtre et offre un aperçu utile. Ils concluent que la vérification de la date du fichier ressemble à des bretelles pour une ceinture.

+0

Merci! Je pensais que j'avais cherché l'ensemble du site pour cela ... Un peu embarrassant –

+0

Mais s'il est essentiel que votre pantalon reste debout, il n'y a aucun mal à mettre à la fois les bretelles et la ceinture. L'un ou l'autre pourrait avoir un défaut caché dans sa conception ou sa mise en œuvre qui le fait échouer dans des conditions inattendues. Mieux vaut utiliser une variété de méthodes que de porter 2 ceintures. – endolith

Questions connexes