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

Reply via email to