Hi,

since Gtk-Gnutella does not support Tigertree-Hashes (TTH) and won't
do so anytime soon either, it might be useful to use other simpler
means to guard against corruption and poisoning. TTH is not _the_
solution either as the typical download chunk size will be smaller
than a TTH-verifiable chunk and the TTH must be retrieved from a
trusted source to be useful. So in case of corruption it's not easy to
determine which party send the corrupt data - whether it's on purpose
or due to a bug.

The good old overlap check is pretty powerful in practice. A
purposeful corruption requires that the remote has at least a part of
the data. This is certainly not impossible but it's difficult to do
this efficiently for many arbitrary files. Unfortunately, Gtk-Gnutella
selects randomized startup points in the file to be downloaded. These
are obviously not protected by overlap checks. In my opinion it would
be useful to pick as many of them from a single peer. If the peer
sends wrong data this can be detected quite early and Gtk-Gnutella may
decide to restart the download completely before much data has been
downloaded. If the first peer is truly evil, TTH cannot help either
unless we download the TTH from multiple peers in the hope that the
majority has the correct TTH. The same applies to the startup points.

The round-trip time and overhead can further be reduced with this
scheme by sending a request for multiple ranges instead of a single
range. I think this would also complement TTH.

-- 
Christian

Attachment: pgpFsshDk3A5c.pgp
Description: PGP signature

Reply via email to