http://wiki.freenetproject.org/PreTunneling

Is this of any interest? Is it practical? Would it provide any real anonymity?
-----------------

Proposal: PreTunneling

The protocol is not really premix routing, because it lacks onion encryption 
and source routing. So an adversary would directly route requests to his 
siblings.
On the other hand the adversary does not get any advantage by pretending to be 
many nodes.
There is no defined anonymity set. However the protocol still makes 
correlation attacks a lot harder.

The tunnels are bidirectional and end-to-end encrypted to some other node. 
Messages are
authenticated in every node by a public key. Both ends use the same private 
key.

1) Node Alice wants to set up a tunnel to some unknown node that will be named 
Bob. In order to send a secret to him, she creates two requests that reveal 
it, when they are combined. She sends both to the same random destination.

The two requests are called tunnel request and decryption request. The route 
of the tunnel request will determine the route of the tunnel. Alice simply 
routes the tunnel request to an appropriate neighbour, as if she were just 
propagating it. The decryption request is send to some other neighbour or 
better through an existing tunnel, if available.

The protocol forbids sending tunnel requests through tunnels, because they 
would either lead to longer and longer tunnels or provide an adversary with 
short-cuts to the decryption request path.

2) Eventually both requests meet in one or two nodes. If there are two, then 
the one upstream on the
tunnel request path will win. Or if they are on different branches, then the 
one that first reaches their
common root will win.

For better security the first few nodes on the decryption request path should 
reject a corresponding tunnel request pretending that they detected a loop in 
the tunnel request
path.

Alice probably wants the final tunnel to be shorter by a certain number of 
nodes, in order to decrease latency, make the tunnel more reliable and reduce 
overhead for the network. This instruction is found in her secret message. 
The node that is reached by propagating the message upstream is named Bob.
(If the number that Alice has chosen is too large, then she will receive her 
own message and the tunnel set-up fails.)

3) Alices message is also part of a Diffie-Hellman key exchange. Bob completes 
it. He uses the new secret key
for generating an asymmetric key pair. The asymmetric cipher just has to be 
hard enough not be broken during the life time of the tunnel.

Bob sends the public key and his part of the DH key exchange to Alice. He 
authenticates his message to Alice using the old secret key from Alices 
message.

The nodes in the tunnel save the public key in order to authenticate later 
messages. Other upstream messages are accepted by nodes after they have seen 
the first valid downstream message.

Authentication on every node is necessary in order to prevent a malicious 
tunnel node from inserting fake messages for traffic analysis.

3) Alice verifies Bobs messages and generates the new symetric key. She also 
uses it for generating the common private key.

4) Alice can send local requests (and maybe remote decryption requests) 
through the encrypted tunnel, and Bob will send back the results. The nodes 
in the tunnel prevent replay attacks.

Alice should try to route local requests to their closest tunnel as often as 
possible. However she must make sure that she does not become vulnerable to 
correlation attacks using traffic analysis of her tunnels.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
URL: 
<https://emu.freenetproject.org/pipermail/devl/attachments/20070518/7b3a28de/attachment.pgp>

Reply via email to