Intégrité · faire confiance aux données, pas aux sources

Comment eMule sait-il que les données sont bonnes ?

Recevoir des octets n'est pas suffisant. eMule vérifie que les parts obtenues correspondent bien au fichier attendu, même lorsqu'elles viennent de nombreuses machines différentes.

Contrôle de chaque part

Le hash attendu devient le juge.

Quand une part est complète, eMule calcule son empreinte MD4 et la compare à celle annoncée dans le hashset du fichier.

PART 17
MD4 calculé37AF…MD4 attendu37AF…
✓ PART VALIDE
PART 18
MD4 calculéA19C…MD4 attenduF204…
✕ CORRUPTION DÉTECTÉE
La source n'a pas besoin d'être « de confiance ».

Ce sont les données qui sont contrôlées. Une mauvaise part ne devient pas correcte simplement parce qu'elle provient d'un client connu.

Pourquoi un hashset ?

Vérifier le fichier par morceaux.

Le hash eD2K ne sert pas uniquement à nommer le fichier. Le jeu de hashes de parts permet également de savoir quelle grande zone est correcte ou incorrecte sans attendre la fin complète du téléchargement.

Fichier
→
P1 · ✓P2 · ✓P3 · ✕P4 · ✓
→
Hash eD2K
Réparer plus finement

AICH : descendre dans l'arbre.

Le contrôle MD4 historique travaille à l'échelle de grosses parts. AICH ajoute une structure de hashes plus fine pour localiser plus précisément la zone corrompue.

HASH RACINE
┌────────────┴────────────┐
HASH AHASH B
┌─────┴─────┐     ┌─────┴─────┐
blocbloc ✕blocbloc
AICH ne remplace pas simplement MD4.

Il vient renforcer le mécanisme historique et permet une récupération plus ciblée lorsque des données sont endommagées.

La boucle de réparation

Détecter, jeter, redemander.

Une corruption n'oblige pas nécessairement à recommencer le fichier. eMule identifie la zone invalide puis récupère à nouveau ce qui manque auprès des sources disponibles.

Recevoir
→
Vérifier
→
Corruption
→
Redemander
↺
Sous le capot : MD4 est ancien, pourquoi est-il toujours là ?
Parce que le hash eD2K fait partie de l'identité historique des fichiers et de l'interopérabilité du réseau. Les mécanismes modernes ont donc été ajoutés autour de lui plutôt que de casser l'identité existante.
La part est valide

Le fichier finit par être complet.
Et maintenant vous devenez source.

La prochaine étape sera la publication : comment le fichier terminé est annoncé au serveur et à Kad.