[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

Re: [tor-dev] obfsproxy buffering



On Sun, Nov 17, 2013 at 07:33:12PM -0800, David Stainton wrote:
> Hi,
> 
> I noticed that because the obfsproxy api can sometimes buffer and
> resend smaller chunks of data. My simple use of Nacl stream_crypto to
> wrap each incoming data buffers will not work... that is because the
> client and server must keep synchronized nonce counters for the
> decrypt/encrypt to work... and in this case the client may send one
> large buffer and the server may receive many smaller buffers... trying
> to decrypt them with different nonces will of course fail.
> 
> https://github.com/david415/obfsproxy/tree/david-nacl-stream-withoutkeyexchange
> 
> It seems like the solution is to write a super simple "framing
> protocol"... which is to say that I can first send a frame length; and
> on the receiving end simply read until frame length worth of data is
> consumed... and then apply the crypto_stream cipher on that frame with
> the correct corresponding nonce.

Super-simple framing protocols often fall victim to attacks in which the
adversary messes with the length in the frame header.  See, for example,
"Plaintext Recovery Attacks Against SSH":
http://www.isg.rhul.ac.uk/~kp/SandPfinal.pdf

So be careful here.

   - Ian
_______________________________________________
tor-dev mailing list
tor-dev@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-dev