Opened 5 years ago

Closed 3 years ago

#17501 closed task (wontfix)

Design/implement obfsNG.

Reported by: yawning Owned by: yawning
Priority: Medium Milestone:
Component: Circumvention/Pluggable transport Version:
Severity: Normal Keywords: huggable-transport, yolo, obfsNG
Cc: Actual Points:
Parent ID: Points:
Reviewer: Sponsor:


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.


  • 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.


  • Ring-LWE is really new, and the implementation was ported to Go by some random sketchoid.

Child Tickets

Change History (2)

comment:1 Changed 5 years ago by yawning

People who wish to track the development progress, can do so here:

comment:2 Changed 3 years ago by yawning

Resolution: wontfix
Status: newclosed

This eventually became basket2, that is abandoned.

Note: See TracTickets for help on using tickets.