Skip to content
GitLab
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
  • P pluggable transports
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Issues 5
    • Issues 5
    • List
    • Boards
    • Service Desk
    • Milestones
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Deployments
    • Deployments
    • Environments
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
  • Wiki
    • Wiki
  • Activity
  • Create a new issue
  • Jobs
  • Issue Boards
Collapse sidebar
  • The Tor Project
  • Anti-censorship
  • Pluggable Transports
  • pluggable transports
  • Issues
  • #17501
Closed
Open
Issue 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.
Assignee
Assign to
Time tracking