> The "man in the middle" attack that we are talking about is simply you talking > something else then the node you think you are talking to. To authenticate > means to check who you are talking to, and that that is who you expect it to > be. Obviously, stopping this "man in the middle attack" is the same as > authenticating who you are talking to.
Yes, I see your point. When I said authenticated I meant knowing who you were talking to even if they change their address and key, which would be a layer above the layer when you are sure you are talking to the address that you think you are. The first layer prevents man in the middle attacks on the key negotiation for the encryption of the stream. The second layer allows nodes to change addresses and public keys without being disassociated from the data which the other nodes have collected about its reliability, trustworthiness, etc.. > The obvious authentication method, and this is possibly what you mean, is to > pass a fingerprint/hash of the PK along with the Address, so that it looks > like > this: > > tcp/123.45.67.89:50001|98ABDFC4CE9973CC498DD9A24E4FE9F37B2609E8 I was thinking of including the actual PK along with the address and then encrypting the stream with that. Inside of that encrypted stream, key negotiation will occur. Then the stream will be encrypted with the exchanged keys. > I don't want to use the handshake for the encryption negotiation. I want to > keep this outside the message protocol and part of the carrier. The message > more complicated as well, because if you use the handshakes from crypto > negotiation, then you have to be able to change the crypto in the middle of a > connection, where as otherwise you can just decide that the negotiation is > done > when the line is set up an think no more of it. You don't _have_ to switch encryption in the middle of a stream. A handshake exchange is in the form of a request and a reply. The request can request any cipher and but the receiving node and ignore it if a cipher has already been agreed upon. Handshaking is really expected to occur in the middle of a stream of messages. It occurs occasionally with connectionless exchanges and only at the beginning of opening a keepalive stream. I don't have strong feelings on using handshakes to do the negotiation. It just seems simpler. He have them, they're subclassible, and they seemed well suited to this kind of application. _______________________________________________ Freenet-dev mailing list Freenet-dev at lists.sourceforge.net http://lists.sourceforge.net/mailman/listinfo/freenet-dev
