Estoy creando un sistema que consiste en pasar lo que son esencialmente TARs de los usuarios de Linux sin comprimir, incluidos algunos archivos privados adicionales. Un archivo original (X) se envía a un trabajador, y el trabajador produce un nuevo archivo (Y) que tiene una alta probabilidad de ser similar a X . Los trabajadores tendrán un almacenamiento limitado disponible, por lo que requerir que el trabajador guarde una copia de X es algo que deseo evitar. Sin embargo, puedo calcular fácilmente un resumen del mensaje (por ejemplo, SHA512 (X) ) de X cuando el trabajador lo recibe.
Para ahorrar ancho de banda de carga, me gustaría permitir que un trabajador solicite una rdiff precomputada de X de una tienda central usando SHA512 (X) como clave, calcule un rdiff delta
contra Y y cargue el delta en un servidor donde una operación rdiff patch
se aplica a X para derivar Y . (Hasta ahora, al igual que rsync tradicional.)
Sin embargo, me gustaría evitar el seguimiento de qué trabajadores tienen qué archivos originales y, al mismo tiempo, no confío en todos los trabajadores con todos los archivos.
rdiff
calcula las firmas calculando un hash (adler32) y un par de hash "fuerte" (blake2 / md4) para cada bloque del archivo original. Transmite deltas enviando referencias a los bloques originales que permanecieron igual junto con los datos adicionales.
Entonces, puedo asumir que:
- la firma rdiff puede confirmar el contenido adivinado, pero no hace que sea más fácil adivinar el contenido de un bloque en X que contiene datos privados?
- el trabajador que proporciona un delta y SHA512 (Y) prueba que el trabajador originalmente tenía X si
rdiff patch x delta_y
produce Y , siempre que SHA512 (X)! = SHA512 (Y) ?