Skip to content

GitLab

  • Menu
Projects Groups Snippets
  • 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
  • #11611
Closed
Open
Created Apr 26, 2014 by Yawning Angel@yawning

obfs2/obfs3 AES counter initialization is incorrect.

From obfsproxy/common/aes.py:

        self.ctr = Counter.new(128, initial_value=long(iv.encode('hex'), 16))

From the Crypto.Util.Counter docstring:

allow_wraparound : boolean
If *True*, the counter will automatically restart from zero after
reaching the maximum value (``2**nbits-1``).
If *False* (default), the object will raise an *OverflowError*.

The docs on the pycrypto web page are incorrect (https://github.com/dlitz/pycrypto/commit/f73d0a11697e2be0a3a1819fdb91a5dadc4e6af8) and haven't been regenerated yet.

The obfs2/3 protocols uses a initial value derived from the UniformDH handshake, allow_wraparound=True should be passed to the constructor here to avoid mysterious (though extremely unlikely) connection failures.

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Assignee
Assign to
Time tracking