However, the initial version of hash trees implemented by Gnutella and DC used the same hash primitive for leaf and internal tree nodes. By 2003, I had released BCDC++ which used TTH. It smoothly, adaptively sizes a hash tree while retaining interoperability between all such sizes of files files on a hub. This Tiger Tree hash, which I thus copied from Gnutella, scales to both large and small files while depending on what was at the time a secure-looking Tiger hash function. Gnutella, though, had found an elegant, scalable solution in TTH. eDonkey2000 and eMule, with per-user shares similar to those of DC, resolved this with fixed, 9MB piecewise MD4, but this segment size scaled poorly, ensured that fixing corruption demanded at least 9MB of retransmission, and used the weak and soon-broken MD4. Since the DC share model asks that same hash function work across entire shares, this does not work. Looking for inspiration from other P2P software, I found that BitTorrent used (and uses) piecewise SHA-1 with per-torrent segment sizes. A bare cryptographic hash primitive such as SHA-1 did not suffice because not only did the files need identification as a whole but in separate parts, allowing reliable resuming and multi-source downloading, and per-segment integrity verification ( RevConnect unsuccessfully attempted to reliably use multi-source downloading precisely because it could not rely on cryptographic hashes). DC requires a cryptographic hash function to avoid the previous morass of pervasive similar, but not identical, files. NMDC and ADC rely on the Tiger Tree Hash to identify files.
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |