Skip to content
Snippets Groups Projects
  1. Oct 24, 2014
  2. Oct 03, 2014
    • Yawning Angel's avatar
      Improve the performance of the obfs4 handshake test. · 4932821b
      Yawning Angel authored
      Exhaustively testing padding combinations is really slow, and was
      causing timeouts during the Debian ARM package build process.  Attempt
      to improve the situation by:
      
       * Reusing the client and server keypair for all of the tests, to cut
         runtime down by  ~50%.
       * Splitting the client side and server side tests up, as it appears
         the timeout is per-test case.
      
      If this doesn't fix things, the next thing to try would be to reduce
      the actual number of padding lengths tested, but that is a last resort
      at the moment.
      4932821b
  3. Aug 17, 2014
    • Yawning Angel's avatar
      Massive cleanup/code reorg. · 339c63f0
      Yawning Angel authored
       * Changed obfs4proxy to be more like obfsproxy in terms of design,
         including being an easy framework for developing new TCP/IP style
         pluggable transports.
       * Added support for also acting as an obfs2/obfs3 client or bridge
         as a transition measure (and because the code itself is trivial).
       * Massively cleaned up the obfs4 and related code to be easier to
         read, and more idiomatic Go-like in style.
       * To ease deployment, obfs4proxy will now autogenerate the node-id,
         curve25519 keypair, and drbg seed if none are specified, and save
         them to a JSON file in the pt_state directory (Fixes Tor bug #12605).
      339c63f0
  4. Jun 25, 2014
  5. Jun 01, 2014
    • Yawning Angel's avatar
      Move the server keypair generation to right after Accept(). · 36228437
      Yawning Angel authored
      Instead of threading the code, move the keypair generation to right
      after Accept() is called.  This should mask the timing differential due
      to the rejection sampling with the noise from the variablity in how
      long it takes for the server to get around to pulling a connection out
      of the backlog, and the time taken for the client to send it's portion
      of the handshake.
      
      The downside is that anyone connecting to the obfs4 port does force us
      to do a bunch of math, but the obfs4 math is relatively cheap compared
      to it's precursors.
      
      Fixes #9.
      36228437
    • Yawning Angel's avatar
      Generate client keypairs before connecting, instead of after. · 2001f0b6
      Yawning Angel authored
      Part of issue #9.
      2001f0b6
  6. May 23, 2014
  7. May 22, 2014
    • Yawning Angel's avatar
      Add replay detection to handshakes. · fd4e3c7c
      Yawning Angel authored
      This is done by maintaining a map keyed off the SipHash-2-4 digest of
      the MAC_C component of the handshake.  Collisions, while possible are
      unlikely in the extreme and are thus treated as replays.
      
      In concept this is fairly similar to the ScrambleSuit `replay.py` code,
      with a few modifications:
      
       * There is a upper bound on how large the replay filter can grow.
         Currently this is set to 102400 entries, though it is unlikely that
         this limit will be hit.
      
       * A doubly linked list is also maintained parallel to the map, so the
         filter compaction process does not need to iterate over the entire
         filter.
      fd4e3c7c
  8. May 09, 2014
Loading