Skip to content
Snippets Groups Projects
  1. Aug 31, 2014
  2. Aug 27, 2014
  3. Aug 23, 2014
    • Yawning Angel's avatar
      Change all the arguments to use base16 from base64. · 1e574942
      Yawning Angel authored
      WARNING: THIS BREAKS BACKWARD COMPATIBILITY.
      
      This is primarily to work around bug #12930.  Base16 was chosen over
      unpadded Base64 because the go runtime Base64 decoder does not handle
      omitting the padding.
      
      May $deity have mercy on anyone who needs to hand-enter an obfs4 bridge
      line because I will not.
      1e574942
  4. Aug 20, 2014
  5. Aug 18, 2014
  6. 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
  7. Jun 25, 2014
  8. Jun 20, 2014
  9. Jun 19, 2014
  10. Jun 07, 2014
  11. Jun 02, 2014
  12. 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
  13. May 28, 2014
  14. May 26, 2014
  15. May 25, 2014
  16. May 24, 2014
  17. May 23, 2014
    • Yawning Angel's avatar
      Add support for IAT obfuscation (disabled by default). · e77ddddf
      Yawning Angel authored
      When enabled, inter-packet delay will be randomized between 0 and 10
      ms in 100 usec intervals.  As experiences from ScrambleSuit (and back
      of the envelope math based on how networks work) show, this is
      extremely expensive and artificially limits the throughput of the link.
      
      When enabled, bulk transfer throughput will be limited to an average of
      278 KiB/s.
      e77ddddf
    • Yawning Angel's avatar
      Change the maximm handshake length to 8192 bytes. · 272fb852
      Yawning Angel authored
       * handhake_ntor_test now is considerably more comprehensive.
       * The padding related constants in the spec were clarified.
      
      This breaks wireprotocol compatibility.
      272fb852
  18. 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
Loading