summaryrefslogtreecommitdiff
path: root/transports
diff options
context:
space:
mode:
authorYawning Angel <yawning@torproject.org>2014-08-18 11:53:22 +0000
committerYawning Angel <yawning@torproject.org>2014-08-18 11:53:22 +0000
commit22c9dc3f489dd0984e431ede95f963bc1f57222c (patch)
treebd8708cbaeff5ae2d35ccf8b36d1c18183c3d45e /transports
parent339c63f0c8cd4374f6fa26484498eb6fa91b7bca (diff)
Add support for enabling IAT obfuscation and biased WDist.
Golang's command line parser is slightly cumbersome to use with subcommands, so the arguments are "obfs4-iatObufscation" and "obfs-distBias" instead of obfsproxy style subcommands.
Diffstat (limited to 'transports')
-rw-r--r--transports/obfs4/obfs4.go26
1 files changed, 17 insertions, 9 deletions
diff --git a/transports/obfs4/obfs4.go b/transports/obfs4/obfs4.go
index 7af7224..fbfea27 100644
--- a/transports/obfs4/obfs4.go
+++ b/transports/obfs4/obfs4.go
@@ -32,6 +32,7 @@ package obfs4
import (
"bytes"
"crypto/sha256"
+ "flag"
"fmt"
"math/rand"
"net"
@@ -55,25 +56,27 @@ const (
privateKeyArg = "private-key"
seedArg = "drbg-seed"
+ iatCmdArg = "obfs4-iatObfuscation"
+ biasCmdArg = "obfs4-distBias"
+
seedLength = 32
headerLength = framing.FrameOverhead + packetOverhead
clientHandshakeTimeout = time.Duration(60) * time.Second
serverHandshakeTimeout = time.Duration(30) * time.Second
replayTTL = time.Duration(3) * time.Hour
- // Use a ScrambleSuit style biased probability table.
- biasedDist = false
-
- // Use IAT obfuscation.
- iatObfuscation = false
-
- // Maximum IAT delay (100 usec increments).
- maxIATDelay = 100
-
+ maxIATDelay = 100
maxCloseDelayBytes = maxHandshakeLength
maxCloseDelay = 60
)
+// iatObfuscation controls if Inter-Arrival Time obfuscation will be enabled.
+var iatObfuscation bool
+
+// biasedDist controls if the probability table will be ScrambleSuit style or
+// uniformly distributed.
+var biasedDist bool
+
type obfs4ClientArgs struct {
nodeID *ntor.NodeID
publicKey *ntor.PublicKey
@@ -573,6 +576,11 @@ func (conn *obfs4Conn) padBurst(burst *bytes.Buffer) (err error) {
return
}
+func init() {
+ flag.BoolVar(&iatObfuscation, iatCmdArg, false, "Enable obfs4 IAT obfuscation (expensive)")
+ flag.BoolVar(&biasedDist, biasCmdArg, false, "Enable obfs4 using ScrambleSuit style table generation")
+}
+
var _ base.ClientFactory = (*obfs4ClientFactory)(nil)
var _ base.ServerFactory = (*obfs4ServerFactory)(nil)
var _ base.Transport = (*Transport)(nil)