Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Amnezia flavoured WireGuard #1437

Closed
ignoramous opened this issue May 16, 2024 · 2 comments
Closed

Amnezia flavoured WireGuard #1437

ignoramous opened this issue May 16, 2024 · 2 comments
Assignees

Comments

@ignoramous
Copy link
Collaborator

A user writes,

This will be an extremely convenient option for residents of countries such as China, Russia, Egypt, and other countries where the usual Wireguard is blocked by communication operators or supervisory authorities.

Brief information on the parameters from the developers themselves:

"AmneziaWG (AmneziaWireGuard) is a fork of the WireGuard-Go with added features to bypass blocking and reduce the probability of protocol detection. One of the key features of AmneziaWG is backward compatibility with WireGuard. This means that when using AmneziaWG, unless specific parameters for protocol obfuscation are specified in the configuration, it will work like standard WireGuard.

  • Before starting a session the client sends several packets with random data (the number of such packets Jc and their minimum and maximum size in bytes Jmin, Jmax is set in the config).
  • The header of handshake packet (Initiator to Responder) and response packet (Responder to Initiator) has been changed, these values are also set in config (H1 and H2).
  • Handshake init packets additionally have garbage at the beginning of the data, the sizes are determined by S1 and S2 values. (by default, the handshake init packet has a fixed size (148 bytes), after adding garbage its size will be 148 + size of random bytes).
  • The header of data packets and special “Under Load” packets has been changed - H4 and H3 respectively.

More details about new customizable fields:

   Jc (Junk packet count) - number of packets with random data that are sent before the start of the session
   Jmin (Junk packet minimum size) - minimum packet size for Junk packet. That is, all randomly generated packets will have a size no smaller than Jmin.
   Jmax (Junk packet maximum size) - maximum size for Junk packets
   S1 (Init packet junk size) - the size of random data that will be added to the init packet, the size of which is initially fixed.
   S2 (Response packet junk size) - the size of random data that will be added to the response packet, the size of which is initially fixed.
   H1 (Init packet magic header) - the header of the first byte of the handshake
   H2 (Response packet magic header) - header of the first byte of the handshake response
   H4 (Transport packet magic header) - header of the packet of the data packet
   H3 (Underload packet magic header) - UnderLoad packet header."

Refs:

@ignoramous
Copy link
Collaborator Author

ignoramous commented May 16, 2024

ignoramous referenced this issue in celzero/firestack Nov 16, 2024
ignoramous referenced this issue in celzero/firestack Nov 17, 2024
ignoramous referenced this issue in celzero/firestack Nov 17, 2024
@ignoramous
Copy link
Collaborator Author

This stands done, and will be part of the next version, v055o.

Amnezia-flavour WireGuard profiles will be specially marked (with a chip or a badge) in the UI, if set up.

We prioritised implementing this after seeing Amnezia banned in the country where it has been the most effective; Russia.

@ignoramous ignoramous self-assigned this Nov 17, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant