Última Versión: Stable: 0.50a | Beta: 0.50b
 Deutsch English Français Hebrew Chinese Traditional Spanish Italian Polish Lithuanian Estonian Danish Swedish Dutch (Netherlands) Portuguese (Brazil) Czech Portuguese - Portuga Russian Catalan Turkish Finnish Romanian Greek Serbian Chinese Simplified 




Get eMule at SourceForge.net. Fast, secure and Free Open Source software downloads


Cuddle eMule
Gestión de la corrupción HelpNAV

El eMule emplea diversos medios para asegurarse que los ficheros se comparten en la red y se descargan sin errores. Si sucediese un error, denominado corrupción, eMule posee funciones avanzadas para corregir esa corrupción descargando de nuevo una cantidad mínima de datos.

Hash de ficheros e ICH - Gestión Inteligente de la Corrupción

Hash de ficheros, Hash de partes y Conjunto de Hashes
Para cada fichero que se comparte en la red se crea una identificación única empleando el algoritmo matemático de encriptación MD4. Este valor se llama Hash de Fichero y se encuentra en todos los enlaces eD2k normales, ej.

ed2k://|file|name|12043984|6744FC42EDA527B27F0B2F2538728B3E|/

donde 6744FC42EDA527B27F0B2F2538728B3E es el hash de fichero que hace que sea identificado de forma única en toda la red.
Este Hash de Fichero se calcula dividiendo todo el fichero en partes de 9.28 MB. Para cada una de estas partes se calcula un Hash de Parte empleando el mismo algoritmo MD4. Estos Hash de Partes, llamados Conjunto de Hashes, se emplean para calcular el Hash de Fichero final. Por ejemplo, un fichero de 600 MB se dividiría en 65 partes, cada una con su propio Hash de Parte, que se usan entonces para crear dicho Hash de Fichero.
Para asegurarse que eMule siempre recibe el Conjunto de Hashes correcto se puede crear un enlace especial que lo contenga, ej..

ed2k://|file|nombre|12043984|6744FC42EDA527B27F0B2F2538728B3E|p=264
E6F6B587985D87EB0157A2A7BAF40:17B9A4D1DCE0E4C2B672DF257145E98A|/

donde el valor de p= indica el Hashset. Cada Hash de Parte se separa por un ":". Este fichero tiene un tamaño de 12043984 Bytes (=11.49 MB) lo que significa que tiene una parte de 9.28 completa, y otra con el resto hasta los 11.49 MB lo que supone dos Hash de Partes.

ICH (Intelligent Corruption Handling) Gestión Inteligente de la Corrupción
Cada vez que eMule finaliza una de esas partes comprueba si los datos que se han descargado coinciden con el Hash de Parte para esa parte finalizada. Si es así, esta parte se ofrece a otros clientes para ayudar en su distribución.
Si no coincide, ha habido un problema de corrupción y toda la parte necesita ser descargada de nuevo. Para evitar descargar los 9.28 MB, la ICH descarga 180KB del comienzo de la parte y comprueba toda la parte de nuevo para ver si el Hash de Parte ahora es correcto. Si no es así, los siguientes 180 KB se descargan, se comprueban de nuevo etc. hasta que el Hash de Parte es finalmente correcto. En el mejor de los casos eMule solamente tiene que descargar 180 KB si la corrupción se encuentra justo al comienzo de la parte. En el peor de los casos toda la parte ha de ser descargado de nuevo si la corrupción se encuentra en la zona final de la misma. De media la ICH permite evitar descargar de nuevo el 50% de los datos cuando hay corrupciones.

AICH - (Advanced Intelligent Corruption Handling) Sistema Avanzado de Gestión Inteligente de la Corrupción
El sistema ICH normal es bastante efectivo, aunque tiene sus limitaciones ya que sólo se puede comprobar el bloque de 9.28 MB, no partes más pequeñas. Si más de una posición está corrupta o si algún cliente dañino envía datos corruptos continuamente o incluso falsifica todo un Hash de Parte, la ICH deja de ser efectivo.
Aquí es donde el AICH ayudará a obtener una integridad de los datos completa con un gasto mínimo de redescarga o de sobrecarga creando hashes mucho más pequeños.

Hash Raíz, Hashes de Bloques y Conjunto de Hashes AICH



Esta vez nuestro punto de partida son las partes de 9.28 MB en un fichero. Cada parte se divide en bloques de 180 KB, obteniendo 53 bloques en cada parte y para cada bloque se calcula un valor de hash empleando el algoritmo de hash SHA1. Estos valores se llaman Hash de Bloque y forman el nivel inferior en el Conjunto de Hashes AICH.

La imagen superior muestra cómo todo un árbol de hash se construye en base a los bloques de un fichero con 4 partes completas. Cada parte contiene 53 bloques por lo que obtenemos 212 Hashes de Bloque que constituyen un árbol de hash de 7 niveles hasta obtener el Hash Raíz. El árbol completo se llama Conjunto de Hashes AICH.
Los puntos verdes y amarillos muestran las dependencias matemáticas de los Hashes de Bloque más pequeños hacia el Hash Raíz. Esto significa que si tenemos un Hash Raíz de confianza el árbol entero puede verificarse con él.
eMule puede crear enlaces que contengan el Hash Raíz, ej.

ed2k://|file|nombre|12043984|6744FC42EDA527B27F0B2F2538728B3E|h=A2
NWOTYURUU3P3GCUB6KCNW3FTYYELQB|/

donde h= es el Hash Raíz. Este valor debería incluirse en los lanzamientos ya que mejora de forma significativa la resistencia a la corrupción del fichero al proporcionar un Hash Raíz de confianza. Lee Confiar en el Hash Raíz.

Reparando una corrupción
Cuando eMule detecta una corrupción en una parte solicita un Paquete de Recuperación de un cliente al azar que posea un Conjunto de Hashes AICH completo. Este Paquete de Recuperación contiene los 53 Hashes de Bloque de la parte corrupta y unos Hashes de Verificación del resto del árbol de hashes. La imagen superior muestra el Paquete de Recuperación para un fichero de 4 partes. El número de Hashes de Verificación se calcula en base al número de partes de un fichero (2^x >= 'número de partes', con x= Número de Hashes de Verificación).
Tras recibir el Paquete de Recuperación eMule comprueba los Hashes de Verificación con su Hash Raíz de confianza. Si coinciden, eMule comprueba los 53 bloques de la parte corrupta con los Hashes de Bloque del Paquete de Recuperación. El AICH restaura entonces todos los bloques que coincidan con su Hash de Bloque y deja únicamente el(los) bloque(s) corrupto(s) para descargar de nuevo.
Una reparación correcta se mostrará en el log de la siguiente forma:

09.09.2004 02:43:43: Parte descargada 6 corrupta sad.gif ([fichero])
09.09.2004 02:43:46: AICH recuperó 8.22 MB de 9.28 MB de la parte 6 del archivo [fichero]

Confiar en el Hash Raíz
La mejor opción es descargar de un enlace que contenga el Hash Raíz. Suponiendo que la fuente de este enlace sea de confianza el Hash Raíz se considera por tanto de confianza y se guarda para este fichero.
Si en el enlace no se proporciona un Hash Raíz entonces eMule tiene que llegar a confiar en el Hash Raíz, el cual se lo mandarán las fuentes de ese fichero. Solo confía en el Hash Raíz si al menos 10 fuentes diferentes envían el mismo valor y al menos el 92% de todas las fuentes coinciden en ese valor. Dado que este Hash Raíz no es realmente de confianza sólo es válido para la sesión actual y no se grabará a disco ni se pueden crear enlaces con dicho Hash Raíz..
Una vez que eMule construye el Conjunto de Hashes AICH completo, es decir cuando ha finalizado el fichero, comienza a enviar el Hash Raíz a otros clientes.

Notas:
Los ficheros recién lanzados o de ficheros difíciles de encontrar posiblemente no poseen suficientes fuentes completas para generar un Hash Raíz en el que confiar. Se recomienda distribuir los ficheros junto con el Hash Raíz.
Si no existe el Hash Raíz, o incluso aunque esté falsificado, eMule será capaz de descargar correctamente un fichero y finalizarlo en condiciones normales. La funcionalidad de AICH no podrá ser usada en este caso.
Dado que los Conjuntos de Hashes AICH son muy grandes no se guardan en memoria sino en el fichero known2.met y se leen únicamente cuando son necesarios..
El AICH sólo será efectivo para clientes eMule iguales o superiores a la versión 0.44a aunque mantiene compatibilidad con los clientes antiguos.

Resumen del Traductor:
Un fichero se divide en bloques de 9.28 MB que se denominan Partes, a cada parte se le aplica el MD4 y obtenemos su Hash de Parte (Part Hash). Si pones todos los hashes de Partes de un fichero juntos eso es el Conjunto de Hashes (Hashset). Si a este Conjunto de Hashes se le aplica el MD4 entonces se obtiene el Hash de Fichero (File Hash) que se usa en los enlaces eD2k.

A partir de la versión 0.44a del eMule existen unos nuevos tipos de Hash, comenzamos por las partes anteriores de 9.28 MB, las dividimos en 53 bloques y les aplicamos esta vez el SHA1, entonces obtenemos los Hashes de Bloque (Block Hashes). Estos Hashes se van combinando para obtener unos Hash parciales, y se siguen combinando hasta llegar a un solo hash combinación de todos los demás que es el Hash Raíz (Root Hash). El conjunto de todos los hashes que se han calculado es el Conjunto de Hashes AICH (AICH Hashset), que tiene una estructura de árbol. El Hash Raíz es el que se puede añadir a los enlaces eD2k a partir de la .44a, y sirve para verificar que los datos del Conjunto de Hashes AICH que nos envíe otro cliente son válidos.
Para detectar dónde se produce una corrupción en una parte le pedimos a un cliente que tiene el Hash Raíz correcto que nos envíe un Paquete de Recuperación, que contiene los 53 Hashes de Bloque de la parte que tenemos dañada, junto con otros Hashes de Verificación necesarios para comprobar que los datos que nos ha enviado son correctos y los podemos verificar con el Hash Raíz que tenemos.

Aplicable a: v.44a+


Last Update: 28.09.2004 15:15
Preguntas frecuentes
La interfaz
Información general
Preferencias
Puertos,Firewall y Router
Servidores
Funciones
 
  Ofuscación de Protocolo
Buscando archivos
Sistema de créditos
Identificación segura de usuario
Expulsión de clientes agresivos
Intercambio de fuentes
Previsualizar archivos multimedia
Firma en línea
Charla por IRC
Amigos
Filtro de IP
Categorías
Interfaz Web
Línea de comandos
MuleMRTG
Enlaces eD2K y Colecciones
Manejo de fuentes
Gestión de la corrupción
Problemas
Guias
  Guía para principiantes
Guía sobre las redes
Herramientas