ImperialvioletAdam Langley's WeblogEntry 587- April 24, 2008 First Obsfucated TCP patches After a day of kernel hacking, I have a few patches which, together, make a start towards implementing ObsTCP. Add support for Jumbo TCP options, as documented here: tcp-jumbo-options.patch Add curve25519: curve25519.patch Some ObsTCP work: tcp-obsfucated-tcp.patch At the moment, it will advertise ObsTCP on all connections and, if you have two kernels which support it, you'll get a shared key setup. At the moment, the private key is generated at boot time.http://imperialviolet.org/page30.html#e587 Entry 586- April 16, 2008 After the last post explained why small curves aren't good enough for obsfucated TCP, I decided that, since I'm going to have to do some damage to the TCP header to get a bigger public key in there anyway, I might as well go the whole way and use curve25519, by djb. Now, djb has forgotten more about elliptic curves than I'll ever know and I feel much happier using a curve that's been designed by him. As you can probably guess from the name, it's a curve over 2255-19 - a prime. So the public...http://imperialviolet.org/page30.html#e586 Entry 585- April 9, 2008 Elliptic curves don't work either (For context, see my previous post on OTCP) In any Diffie-Hellman exchange based on elliptic curves, we have Q=aP where P and Q are points on an elliptic curve. The operation of multiplying a point and a scalar is well defined, but unimportant here. The problem facing the attacker is, given Q and P, find a. If they can do that, we're sunk. If you could find a pair of numbers such that: cP + dQ = eP + fQ then you're done because: (c-e)P = (f-d)Q = (f-d)aP,...http://imperialviolet.org/page30.html#e585 |