Skip to content

GitLab

  • Menu
Projects Groups Snippets
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • Trac Trac
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Issues 246
    • Issues 246
    • List
    • Boards
    • Service Desk
    • Milestones
  • Monitor
    • Monitor
    • Metrics
    • Incidents
  • Analytics
    • Analytics
    • Value stream
  • Wiki
    • Wiki
  • Activity
  • Create a new issue
  • Issue Boards
Collapse sidebar
  • Legacy
  • TracTrac
  • Issues
  • #17501

Closed (moved)
(moved)
Open
Created Nov 02, 2015 by Yawning Angel@yawning

Design/implement obfsNG.

Name subject to change, but for now I'm following the shining example set by the IETF and calling it obfsNG. I will likely rename it to obfs6 come deployment time (obfs5 if skipping a version will confuse users.

Current planned changes:

  • Key exchange/handshake will use Ring-LWE + Ed25519 (authentication), instead of Curve25519/Elligator2 + ntor.
  • Link crypto to likely use Poly1305 + ChaCha20 in a better designed framing format than the SipHash-2-4 + Poly1305/XSalsa20 abomination used by obfs4.
  • Inline padding negotiation to simplify bridge line formatting.

Benefits:

  • Slightly easier to use, with a slightly shorter Bridge line.
  • Indistinguishability of the key exchange is a property of the key exchange primitive used, rather than something separate that needs care when using a la Elligator2.
  • More future-proofing by adding flexibility to padding.

Downsides:

  • Ring-LWE is really new, and the implementation was ported to Go by some random sketchoid.
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Assignee
Assign to
Time tracking