The request sounds relatively simple. Gnutella might be a good
guide. Every request has a unique ID. You hear it for the first time
- you decrease its TTL, increase hop number, and rebroadcast it. You
hear it again - you ignore it.
A quick suggestion to improve anonymity: a hop count of 0 reveals that
the previous hop initiated the request. It's possible to disguise this
by using a pseudorandom sequence as the hop counter. The initiator of
the request generates a random initial value for the hop counter. When a
node rebroadcasts a request, it symmetrically encrypts the hop counter
using the request's unique ID as the key, and the ciphertext becomes the
new hop counter. When a node rebroadcasts a response, it symmetrically
decrypts the hop counter. Anyone can recognise whether a response has
the same hop count as a request, but nobody can tell where the sequence
started.
The TTL leaks information in the same way, so instead of a deterministic
TTL, each node drops the request with probability 1/range instead of
rebroadcasting it.
Cheers,
Michael
_______________________________________________
p2p-hackers mailing list
[email protected]
http://lists.zooko.com/mailman/listinfo/p2p-hackers